From 9bc7f5c59ce1388ff07b2e33a4f5b6f86887bb8d Mon Sep 17 00:00:00 2001 From: Marcel Lambert Date: Fri, 19 Mar 2021 21:52:35 +0100 Subject: [PATCH 001/347] Project: GUI Framework Hi, I'm currently experimenting with writing a GUI Abstraction framework (meaning I want the OS to render buttons and stuff) and I made some nice progress with how I want the API to look and feel and how to make it work in rust. Yesterday I finally started on how to deal with user events (e.g. mouse clicks). My background is actually C/C++ but I recently did a few Typescript/AngularJS Frontend Projects. I really liked how Angular uses [https://rxjs.dev/guide/observable](Observables) for dealing with events and that's why I would really like to do something similar in Rust. I'm currently looking into and playing around with Streams and it looks promising. I tried to keep the project described in the PR a generic GUI frameworks with the only assumption that it uses Streams for the user event handling. I did add some example code on how such an API could be used. It's meant to give an idea and is not meant to compile. I hope this makes things a bit more clear. ## Character I do believe a new character might be useful. Someone with a background in Javascript or similar with a focus on **Frontend-Applications**. I feel the current character are more Backend/Low-Level and not Front-End Developers. I know this is not a common scenario with Rust missing a UI Framework but that hopefully changes in the future. Let me know and I can write something up. ## Note: I probably mixed up some stuff. Some parts are written from the view of someone *Developing a UI framework* in rust while other aspects come from someone *using a UI framework* in rust. I'm not sure if it's worth splitting those two up. --- src/vision/projects/StrUI | 48 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/vision/projects/StrUI diff --git a/src/vision/projects/StrUI b/src/vision/projects/StrUI new file mode 100644 index 00000000..997d27fc --- /dev/null +++ b/src/vision/projects/StrUI @@ -0,0 +1,48 @@ +# ⚡ Projects: Strui (GUI Framework) + +## What is this? +This is a sample project for use within the various "status quo" or "shiny future" stories. + +## Description +Finally a Rust GUI Framework for the masses :) + +It uses Streams as a way of Event Handling: +```rust +fn main() { + let search_field = EditField::new(); + //we want to limit the amount of HTTP requests, so we throttle it to once a second + search_field.key_pressed_handler(|s: dyn std::stream::Stream| { + s.throttle(1) + .map(|e: KeyEvent| { Actions::UpdateAutocomplete}) + }); + + let form_field = EditField::new(); + //Don't annoy the user with validation while he is typing. Delay it until 3 seconds after he's done. + search_field.key_pressed_handler(|s: dyn std::stream::Stream| { + s.debounce(3) + .map(|e: KeyEvent| { Actions::ValidateForm}) + }); +} +``` +This assumes we have something simmilar to [throttle](https://rxjs.dev/api/operators/throttle) and [debounce](https://rxjs.dev/api/operators/debounce). + +## 🤔 Frequently Asked Questions +* **What makes this project different from others?** + - It uses Streams not just for waiting for something to finish/happen but actively uses them to *control when* something should happen. + - This project exposes Streams in the API and is not just used internally. + - We use Streams to signal events. In contrast to asynchronously reading data, there is a chance you might not be interested in +events from the past but only in events from the future. This is the difference between [hot and cold]https://blog.thoughtram.io/angular/2016/06/16/cold-vs-hot-observables.html] in Observables known in the JS world. +* **Does this project require a custom tailored runtime?** + - Maybe. We don't have special requirements of the inner workings of the Runtime but we need to be able to +advance the Streams inside an external Event loop. This would require a ```fn tick()```function that ```poll``` `s all +the current awoken streams and immediately after gives control back so we can call ```tick()```again on the next iteration and poll tasks/streams that have been awoken by then. + - Another important factor is that the Streams are providing the events in the order they are being performed by the user. +* **How much of this project is likely to be built with open source components from crates.io?** + - This is meant as an open source framework so libraries it builds off of are open source as well. +* **What is of most concern to this project?** + - API surface of Strui needs to be easy for the Developer to use. + - Lag is critical. The time between a Stream is awakened and completely handled is important. Especially on events likely + Drag & Drop + - Cross-Platform support +* **What is of least concern to this project?** + - Coming from UI Frameworks running in Browsers, Memory Consumption is not that important From b6bc420af80d77363c455d7e7d9f6105ba3f9e30 Mon Sep 17 00:00:00 2001 From: Marcel Lambert Date: Mon, 22 Mar 2021 21:52:57 +0100 Subject: [PATCH 002/347] Status Quo: Draft of Alan has an Event loop story --- .../status_quo/alan_has_an_event_loop.md | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 src/vision/status_quo/alan_has_an_event_loop.md diff --git a/src/vision/status_quo/alan_has_an_event_loop.md b/src/vision/status_quo/alan_has_an_event_loop.md new file mode 100644 index 00000000..12ad86af --- /dev/null +++ b/src/vision/status_quo/alan_has_an_event_loop.md @@ -0,0 +1,104 @@ +# 😱 Status quo stories: Alan has an external event loop and wants to use futures/streams + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +As a first Rust Project, Alan decides to program his own IRC Client. + +Since it is Alans first Project in Rust, it is going to be a private one. He is going to use it on is Mac, so he decides to go with the cocoa crate to not have to learn any Framework specific quirks. This way Alan can get a feel of Rust itself. + +### Alans hopes and dreams +Despite a learning curve, he managed to creating a first window and have some buttons and menus works. After the initialisation is done, the App hand over control to [CFRunLoop::Run](https://developer.apple.com/documentation/corefoundation/1542011-cfrunlooprun?language=occ). + +Once Alan is happy whit his Mock UI, he wants to hook it up with some actual features. He is happy to learn that Rust has Features he already knows. +* Promises => Futures +* Observables => Streams. + +Alan smiles, thinking he knows what and more importantly how to do this. + +### First time dealing with runtimes + +Unfortunately, coming from frameworks like Angular or Node.js, Alan is not used that he himself is responsible for driving the progress of Async/Streams. + +After reading up about Runtimes, his mental image of a runtime is something like: + +```rust +impl Runtime { + fn run() { + while !self.tasks.is_empty() { + while let Some(task) = self.awoken_tasks.pop() { + task.poll(); + //... remove finished task from 'tasks' + } + } + } +} +``` + +Coming from Single-Threaded Angular development, Alan decides to limit his new App to Single-Threaded. He does not feel like learning about Send/Sync/Mutex as well as struggling with the borrow checker. + +On top of that, his App is not doing any heavy calculation so he feels async should be enough to not block the main thread too bad and have a hanging UI. + +### Fun time is over + +Soon Alan realises that he cannot use any of those runtimes because they all take control of the thread and block. The same as the OS Event loop. + +Alan spends quite some time to look through several runtime implementations. Ignoring most internal things, all he wants is a runtime that looks a bit like this: + +```rust +impl Runtime { + fn make_progress() { + while let Some(task) = self.awoken_tasks.pop() { + task.poll(); + //... remove finished task from 'tasks' + } + } + fn run() { + while !self.tasks.is_empty() { + self.make_progress(); + } + } +} +``` + +It could be soo easy. Unfortunately he does not find any such solution. Having already looked through quite a bit of low level documentation and runtime code, Alan thinks about implementing his own runtime... + +...but only for a very short time. Soon after looking into it, he finds out that he has to deal with ```RawWakerVTable```, ```RawWaker```, ```Pointers```. Worst of all, he has to do that without the safety net of the rust compiler, because this stuff is ```unsafe```. + +Reimplementing the OS Event Loop is also not an option he wants to take. See [here](https://developer.apple.com/documentation/appkit/nsapplication) +>Override run() if you want the app to manage the main event loop differently than it does by default. (This a critical and complex task, however, that you should only attempt with good reason). + + +### The cheap way out + +Alan gives up and uses a runtime in a seperate thread from the UI. This means he has to deal with the additional burden of syncing and he has to give up the frictionless use of some of the patterns he is accustomed to by treating UI events as ```Stream```. + +## 🤔 Frequently Asked Questions + + +* **What are the morals of the story?** + * Even though you come from a language that has async support, does not mean you are used to selecting und driving a runtime. + * It should be possible to integrate runtimes into existing Event loops. +* **What are the sources for this story?** + * The authors own experience working on a GUI Framework (very early stage) + * Blog post: [Integrating Qt events into Actix and Rust](https://www.rubdos.be/corona/qt/rust/tokio/actix/2020/05/23/actix-qt.html) +* **Why did you choose Alan to tell this story?** + * The story deals about UI event loops, but the other characters could run into similar issues when trying to combine event loops from different systems/frameworks. +* **Is this Apple specific?** + * No! You have the same issue with other OSs/Frameworks that don't already support Rust Async. +* **How would this story have played out differently for the other characters?** + * Since this is a technical and not a skill or experience issue, this would play out similar for other Characters. Although someone with deep knowledge of those Event loops, like Grace, might be more willing to re-implement them. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From 535807e5eb06a1a35f4abdc8e1cceb4efede4ba5 Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Fri, 26 Mar 2021 07:21:27 -0600 Subject: [PATCH 003/347] status quo: Carrie tries using a socket Sink --- .../status_quo/carrie_tries_a_socket_sink.md | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 src/vision/status_quo/carrie_tries_a_socket_sink.md diff --git a/src/vision/status_quo/carrie_tries_a_socket_sink.md b/src/vision/status_quo/carrie_tries_a_socket_sink.md new file mode 100644 index 00000000..c5424ace --- /dev/null +++ b/src/vision/status_quo/carrie_tries_a_socket_sink.md @@ -0,0 +1,108 @@ +# 😱 Status quo stories: Carrie tries using a socket Sink + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +Carrie is working on a project that uses an alternative popular async framework. She finds the new async framework less familiar, and as she reads through their GitHub issues, she's saddened by the project maintainer's unwelcoming attitude towards their community. She asks her teammates if they can switch to the one she's more familiar with and feels more welcome in, but the teammates are understandably resistant to changing something that important just for one feature. So, she works hard to find workarounds to accomplish her team's goals. + +One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket commands can be forwarded to a transport-agnostic RPC server. She finds an HTTP server that's similar to one she's used to using with the other async framework, and a WebSocket middleware library that goes with it. + +However, as she's working, Carrie encounters a situation where the socket needs to be written to within an async thread, and the traits just aren't working. She wants to do split the stream into a sender and receiver: + +```rust +use futures::{SinkExt, StreamExt}; +use async_std::sync::{Arc, Mutex}; +use log::{debug, info, warn}; + +/// In the connection handler: +let (ws_sender, mut ws_receiver) = ws_stream.split(); +let ws_sender = Arc::new(Mutex::new(ws_sender)); + +while let Some(msg) = ws_receiver.next().await { + debug!("Received new WS RPC message: {:?}", msg); + + // Echo the request: + match ws_sender.lock().await.send_string(msg).await { + Ok(_) => { + info!("New WS data sent."); + } + Err(_) => { + warn!("WS connection closed."); + } + }; +} +``` + +This is necessary because both sides of the stream are stateful Iterables, if they're kept as one, the lock on the receiver couldn't be released within the loop. She's seen this pattern used in other projects in the Rust community, but is frustrated to find that the Sink trait wasn't implemented in the WebSockets middleware library she's using. + +Carrie also tries creating a sort of poller worker thread using an intermediary messaging channel, but she has trouble reasoning about the code and wasn't able to get it to compile: + +```rust +use async_std::channel; +use async_std::sync::{Arc, Mutex}; +use log::{debug, info, warn}; + +/// In the connection handler: +let (ws_sender, mut ws_receiver) = channel::unbounded::(); +let ws_receiver = Arc::new(ws_receiver); + +let ws_stream = Arc::new(Mutex::new(ws_stream)); +let poller_ws_stream = ws_stream.clone(); + +async_std::task::spawn(async move { + while let Some(msg) = ws_receiver.next().await { + match poller_ws_stream.lock().await.send_string(msg).await { + Ok(msg) => { + info!("New WS data sent. {:?}", msg); + } + Err(msg) => { + warn!("WS connection closed. {:?}", msg); + } + }; + } +}); + +while let Some(msg) = ws_stream.lock().await.next().await { + // Echo the request? + ws_sender.send(msg); +} +``` + +Carrie wonders if she's thinking about it wrong, but the solution isn't as obvious as her earlier Sink approach. Looking around, she realizes a solution to her problems already exists-- as others have been in her shoes before-- within two other nearly-identical pull requests, but they were both closed by the project maintainers. She tries opening a third one with the same code, pointing to an example where it was actually found to be useful. To her joy, her original approach works with the code in the closed pull requests in her local copy! Carrie's branch is able to compile for the first time. + +However, almost immediately, her request was also shut down, and the maintainer suggested she try the complex, unobvious, and unspecific solution that she had already tried and just couldn't get it to work. + +As a result of her frustration, Carrie calls out one of the developers of the project on social media, who she believed had frequently shot down the idea of using Sink traits on projects others needed to use them on. This is not well-received, the maintainer reacts with a condescending and dismissive attitude, and she later finds out she was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and she's told to "get over it". She's given a link to a blog post with a piece [lamenting the popularity of Sink in the Rust ecosystem](https://blog.yoshuawuyts.com/rust-streams/#why-we-do-not-talk-about-the-sink-trait), and how it's complex and bad and not worth it, but the piece also unhelpfully makes no effort to provide examples of how the better alternatives would be used to replace uses of Sink. + +Because of this heated exchange, Carrie grows concerned for her own career, what these well-known community members might think or say about her to others, and her confidence in the community surrounding this language that she really enjoys using is somewhat shaken. + +Despite this, Carrie takes a walk, gathers her determination, and commits to maintaining her fork with the changes from the other pull requests that were shut down, and publishes her version to Crates.io, vowing to be more welcoming to "misfit" pull requests like the one she needed. + +A few weeks later, Carrie's work at her project at work is merged with her new forked crate. It's a big deal, her first professional open source contribution to a Rust project, but she still doesn't feel like she has a sense of closure with the community. Meanwhile, her friends say they want to try Rust, but they're worried about its async execution issues, and she doesn't know what else to say, other than to offer a sense of understanding. Maybe the situation will get better someday, she hopes. + +## 🤔 Frequently Asked Questions + +*Here are some standard FAQ to get you started. Feel free to add more!* + +* **What are the morals of the story?** + * *Talk about the major takeaways-- what do you see as the biggest problems.* +* **What are the sources for this story?** + * *Talk about what the story is based on, ideally with links to blog posts, tweets, or other evidence.* +* **Why did you choose *NAME* to tell this story?** + * *Talk about the character you used for the story and why.* +* **How would this story have played out differently for the other characters?** + * *In some cases, there are problems that only occur for people from specific backgrounds, or which play out differently. This question can be used to highlight that.* + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From f2192c437a092c9c389bbf6aad8abd4add9ac989 Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Fri, 26 Mar 2021 08:17:54 -0600 Subject: [PATCH 004/347] Switch to Alan. --- .../status_quo/carrie_tries_a_socket_sink.md | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/vision/status_quo/carrie_tries_a_socket_sink.md b/src/vision/status_quo/carrie_tries_a_socket_sink.md index c5424ace..184ae5c0 100644 --- a/src/vision/status_quo/carrie_tries_a_socket_sink.md +++ b/src/vision/status_quo/carrie_tries_a_socket_sink.md @@ -1,4 +1,4 @@ -# 😱 Status quo stories: Carrie tries using a socket Sink +# 😱 Status quo stories: Alan tries using a socket Sink ## 🚧 Warning: Draft status 🚧 @@ -8,11 +8,11 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee ## The story -Carrie is working on a project that uses an alternative popular async framework. She finds the new async framework less familiar, and as she reads through their GitHub issues, she's saddened by the project maintainer's unwelcoming attitude towards their community. She asks her teammates if they can switch to the one she's more familiar with and feels more welcome in, but the teammates are understandably resistant to changing something that important just for one feature. So, she works hard to find workarounds to accomplish her team's goals. +Alan is working on a project that uses an alternative popular async framework. He finds the new async framework less familiar, and as he reads through their GitHub issues, he's saddened by the project maintainer's unwelcoming attitude towards their community. He asks his teammates if they can switch to the one he's more familiar with and feels more welcome in, but the teammates are understandably resistant to changing something that important just for one feature. So, he works hard to find workarounds to accomplish his team's goals. -One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket commands can be forwarded to a transport-agnostic RPC server. She finds an HTTP server that's similar to one she's used to using with the other async framework, and a WebSocket middleware library that goes with it. +One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket commands can be forwarded to a transport-agnostic RPC server. He finds an HTTP server that's similar to one he's used to using with the other async framework, and a WebSocket middleware library that goes with it. -However, as she's working, Carrie encounters a situation where the socket needs to be written to within an async thread, and the traits just aren't working. She wants to do split the stream into a sender and receiver: +However, as he's working, Alan encounters a situation where the socket needs to be written to within an async thread, and the traits just aren't working. He wants to do split the stream into a sender and receiver: ```rust use futures::{SinkExt, StreamExt}; @@ -38,9 +38,9 @@ while let Some(msg) = ws_receiver.next().await { } ``` -This is necessary because both sides of the stream are stateful Iterables, if they're kept as one, the lock on the receiver couldn't be released within the loop. She's seen this pattern used in other projects in the Rust community, but is frustrated to find that the Sink trait wasn't implemented in the WebSockets middleware library she's using. +This is necessary because both sides of the stream are stateful Iterables, if they're kept as one, the lock on the receiver couldn't be released within the loop. He's seen this pattern used in other projects in the Rust community, but is frustrated to find that the Sink trait wasn't implemented in the WebSockets middleware library he's using. -Carrie also tries creating a sort of poller worker thread using an intermediary messaging channel, but she has trouble reasoning about the code and wasn't able to get it to compile: +Alan also tries creating a sort of poller worker thread using an intermediary messaging channel, but he has trouble reasoning about the code and wasn't able to get it to compile: ```rust use async_std::channel; @@ -73,30 +73,35 @@ while let Some(msg) = ws_stream.lock().await.next().await { } ``` -Carrie wonders if she's thinking about it wrong, but the solution isn't as obvious as her earlier Sink approach. Looking around, she realizes a solution to her problems already exists-- as others have been in her shoes before-- within two other nearly-identical pull requests, but they were both closed by the project maintainers. She tries opening a third one with the same code, pointing to an example where it was actually found to be useful. To her joy, her original approach works with the code in the closed pull requests in her local copy! Carrie's branch is able to compile for the first time. +Alan wonders if he's thinking about it wrong, but the solution isn't as obvious as his earlier Sink approach. Looking around, he realizes a solution to his problems already exists-- as others have been in his shoes before-- within two other nearly-identical pull requests, but they were both closed by the project maintainers. He tries opening a third one with the same code, pointing to an example where it was actually found to be useful. To his joy, his original approach works with the code in the closed pull requests in his local copy! Alan's branch is able to compile for the first time. -However, almost immediately, her request was also shut down, and the maintainer suggested she try the complex, unobvious, and unspecific solution that she had already tried and just couldn't get it to work. +However, almost immediately, his request was also shut down, and the maintainer suggested he try the complex, unobvious, and unspecific solution that he had already tried and just couldn't get it to work. -As a result of her frustration, Carrie calls out one of the developers of the project on social media, who she believed had frequently shot down the idea of using Sink traits on projects others needed to use them on. This is not well-received, the maintainer reacts with a condescending and dismissive attitude, and she later finds out she was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and she's told to "get over it". She's given a link to a blog post with a piece [lamenting the popularity of Sink in the Rust ecosystem](https://blog.yoshuawuyts.com/rust-streams/#why-we-do-not-talk-about-the-sink-trait), and how it's complex and bad and not worth it, but the piece also unhelpfully makes no effort to provide examples of how the better alternatives would be used to replace uses of Sink. +As a result of his frustration, Alan calls out one of the developers of the project on social media, who he believed had frequently shot down the idea of using Sink traits on projects others needed to use them on. This is not well-received, the maintainer reacts with a condescending and dismissive attitude, and he later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and he's told to "get over it". He's given a link to a blog post with a piece [lamenting the popularity of Sink in the Rust ecosystem](https://blog.yoshuawuyts.com/rust-streams/#why-we-do-not-talk-about-the-sink-trait), and how it's complex and bad and not worth it, but the piece also unhelpfully makes no effort to provide examples of how the better alternatives would be used to replace uses of Sink. -Because of this heated exchange, Carrie grows concerned for her own career, what these well-known community members might think or say about her to others, and her confidence in the community surrounding this language that she really enjoys using is somewhat shaken. +Because of this heated exchange, Alan grows concerned for his own career, what these well-known community members might think or say about his to others, and his confidence in the community surrounding this language that he really enjoys using is somewhat shaken. -Despite this, Carrie takes a walk, gathers her determination, and commits to maintaining her fork with the changes from the other pull requests that were shut down, and publishes her version to Crates.io, vowing to be more welcoming to "misfit" pull requests like the one she needed. +Despite this, Alan takes a walk, gathers his determination, and commits to maintaining his fork with the changes from the other pull requests that were shut down, and publihes his version to Crates.io, vowing to be more welcoming to "misfit" pull requests like the one he needed. -A few weeks later, Carrie's work at her project at work is merged with her new forked crate. It's a big deal, her first professional open source contribution to a Rust project, but she still doesn't feel like she has a sense of closure with the community. Meanwhile, her friends say they want to try Rust, but they're worried about its async execution issues, and she doesn't know what else to say, other than to offer a sense of understanding. Maybe the situation will get better someday, she hopes. +A few weeks later, Alan's work at his project at work is merged with his new forked crate. It's a big deal, his first professional open source contribution to a Rust project, but he still doesn't feel like he has a sense of closure with the community. Meanwhile, his friends say they want to try Rust, but they're worried about its async execution issues, and he doesn't know what else to say, other than to offer a sense of understanding. Maybe the situation will get better someday, he hopes. ## 🤔 Frequently Asked Questions *Here are some standard FAQ to get you started. Feel free to add more!* * **What are the morals of the story?** - * *Talk about the major takeaways-- what do you see as the biggest problems.* + * There are often many sources of opinion in the community regarding futures and async, but these opinions aren't always backed up with examples of how it should be better accomplished. Sometimes we just find a thing that works and would prefer to stick with it, but others argue that some traits make implementations unnecessarily complex, and choose to leave it out. Disagreements like these in the ecosystem can be harmful to the reputation of the project and the participants. + * If there's a source of substantial disagreement, the community becomes even further fragmented, and this may cause additional confusion in newcomers. * **What are the sources for this story?** - * *Talk about what the story is based on, ideally with links to blog posts, tweets, or other evidence.* -* **Why did you choose *NAME* to tell this story?** - * *Talk about the character you used for the story and why.* + * + * + * + * + * +* **Why did you choose [Alan](../characters/alan.md) to tell this story?** + * Alan is more representative of the original author's background in JS, TypeScript, and NodeJS. * **How would this story have played out differently for the other characters?** - * *In some cases, there are problems that only occur for people from specific backgrounds, or which play out differently. This question can be used to highlight that.* + * (I'm not sure.) [character]: ../characters.md [status quo stories]: ./status_quo.md From fa2032f89482c444cb74486e24008bfb063860da Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Fri, 26 Mar 2021 08:38:51 -0600 Subject: [PATCH 005/347] Update src/vision/status_quo/carrie_tries_a_socket_sink.md Co-authored-by: Ibraheem Ahmed --- src/vision/status_quo/carrie_tries_a_socket_sink.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/carrie_tries_a_socket_sink.md b/src/vision/status_quo/carrie_tries_a_socket_sink.md index 184ae5c0..bab97d28 100644 --- a/src/vision/status_quo/carrie_tries_a_socket_sink.md +++ b/src/vision/status_quo/carrie_tries_a_socket_sink.md @@ -12,7 +12,7 @@ Alan is working on a project that uses an alternative popular async framework. H One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket commands can be forwarded to a transport-agnostic RPC server. He finds an HTTP server that's similar to one he's used to using with the other async framework, and a WebSocket middleware library that goes with it. -However, as he's working, Alan encounters a situation where the socket needs to be written to within an async thread, and the traits just aren't working. He wants to do split the stream into a sender and receiver: +However, as he's working, Alan encounters a situation where the socket needs to be written to within an async thread, and the traits just aren't working. He wants to split the stream into a sender and receiver: ```rust use futures::{SinkExt, StreamExt}; From 83bdc33bd556745fee7d951d2868b6bc756c4c0a Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Fri, 26 Mar 2021 08:39:04 -0600 Subject: [PATCH 006/347] Update src/vision/status_quo/carrie_tries_a_socket_sink.md Co-authored-by: Ibraheem Ahmed --- src/vision/status_quo/carrie_tries_a_socket_sink.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/vision/status_quo/carrie_tries_a_socket_sink.md b/src/vision/status_quo/carrie_tries_a_socket_sink.md index bab97d28..24970d8d 100644 --- a/src/vision/status_quo/carrie_tries_a_socket_sink.md +++ b/src/vision/status_quo/carrie_tries_a_socket_sink.md @@ -28,12 +28,8 @@ while let Some(msg) = ws_receiver.next().await { // Echo the request: match ws_sender.lock().await.send_string(msg).await { - Ok(_) => { - info!("New WS data sent."); - } - Err(_) => { - warn!("WS connection closed."); - } + Ok(_) => info!("New WS data sent."), + Err(_) => warn!("WS connection closed."), }; } ``` From d7c74896edec6b92dd5af1e6ddfd80de7c26f1e1 Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Fri, 26 Mar 2021 08:39:18 -0600 Subject: [PATCH 007/347] Update src/vision/status_quo/carrie_tries_a_socket_sink.md Co-authored-by: Ibraheem Ahmed --- src/vision/status_quo/carrie_tries_a_socket_sink.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/carrie_tries_a_socket_sink.md b/src/vision/status_quo/carrie_tries_a_socket_sink.md index 24970d8d..ebf8cb04 100644 --- a/src/vision/status_quo/carrie_tries_a_socket_sink.md +++ b/src/vision/status_quo/carrie_tries_a_socket_sink.md @@ -34,7 +34,7 @@ while let Some(msg) = ws_receiver.next().await { } ``` -This is necessary because both sides of the stream are stateful Iterables, if they're kept as one, the lock on the receiver couldn't be released within the loop. He's seen this pattern used in other projects in the Rust community, but is frustrated to find that the Sink trait wasn't implemented in the WebSockets middleware library he's using. +This is necessary because both sides of the stream are stateful iterators, and if they're kept as one, the lock on the receiver can't be released within the loop. He's seen this pattern used in other projects in the Rust community, but is frustrated to find that the `Sink` trait wasn't implemented in the WebSockets middleware library he's using. Alan also tries creating a sort of poller worker thread using an intermediary messaging channel, but he has trouble reasoning about the code and wasn't able to get it to compile: From 2548488ede3f257c0b9b05413dd4c53fe9d44995 Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Fri, 26 Mar 2021 08:39:27 -0600 Subject: [PATCH 008/347] Update src/vision/status_quo/carrie_tries_a_socket_sink.md Co-authored-by: Ibraheem Ahmed --- src/vision/status_quo/carrie_tries_a_socket_sink.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/vision/status_quo/carrie_tries_a_socket_sink.md b/src/vision/status_quo/carrie_tries_a_socket_sink.md index ebf8cb04..d8798017 100644 --- a/src/vision/status_quo/carrie_tries_a_socket_sink.md +++ b/src/vision/status_quo/carrie_tries_a_socket_sink.md @@ -53,12 +53,8 @@ let poller_ws_stream = ws_stream.clone(); async_std::task::spawn(async move { while let Some(msg) = ws_receiver.next().await { match poller_ws_stream.lock().await.send_string(msg).await { - Ok(msg) => { - info!("New WS data sent. {:?}", msg); - } - Err(msg) => { - warn!("WS connection closed. {:?}", msg); - } + Ok(msg) => info!("New WS data sent. {:?}", msg), + Err(msg) => warn!("WS connection closed. {:?}", msg), }; } }); From 2e85030de64f9334c89ccfbbd48505489f55533d Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Fri, 26 Mar 2021 08:39:44 -0600 Subject: [PATCH 009/347] Update src/vision/status_quo/carrie_tries_a_socket_sink.md Co-authored-by: Ibraheem Ahmed --- src/vision/status_quo/carrie_tries_a_socket_sink.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/carrie_tries_a_socket_sink.md b/src/vision/status_quo/carrie_tries_a_socket_sink.md index d8798017..91a3a3bb 100644 --- a/src/vision/status_quo/carrie_tries_a_socket_sink.md +++ b/src/vision/status_quo/carrie_tries_a_socket_sink.md @@ -65,7 +65,7 @@ while let Some(msg) = ws_stream.lock().await.next().await { } ``` -Alan wonders if he's thinking about it wrong, but the solution isn't as obvious as his earlier Sink approach. Looking around, he realizes a solution to his problems already exists-- as others have been in his shoes before-- within two other nearly-identical pull requests, but they were both closed by the project maintainers. He tries opening a third one with the same code, pointing to an example where it was actually found to be useful. To his joy, his original approach works with the code in the closed pull requests in his local copy! Alan's branch is able to compile for the first time. +Alan wonders if he's thinking about it wrong, but the solution isn't as obvious as his earlier `Sink` approach. Looking around, he realizes a solution to his problems already exists-- as others have been in his shoes before-- within two other nearly-identical pull requests, but they were both closed by the project maintainers. He tries opening a third one with the same code, pointing to an example where it was actually found to be useful. To his joy, his original approach works with the code in the closed pull requests in his local copy! Alan's branch is able to compile for the first time. However, almost immediately, his request was also shut down, and the maintainer suggested he try the complex, unobvious, and unspecific solution that he had already tried and just couldn't get it to work. From 00073cbe9be39cf46fb8f992bd94cb62ebc1e37b Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Fri, 26 Mar 2021 08:41:17 -0600 Subject: [PATCH 010/347] Update src/vision/status_quo/carrie_tries_a_socket_sink.md Co-authored-by: Ibraheem Ahmed --- src/vision/status_quo/carrie_tries_a_socket_sink.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/carrie_tries_a_socket_sink.md b/src/vision/status_quo/carrie_tries_a_socket_sink.md index 91a3a3bb..34e8ba5b 100644 --- a/src/vision/status_quo/carrie_tries_a_socket_sink.md +++ b/src/vision/status_quo/carrie_tries_a_socket_sink.md @@ -69,7 +69,7 @@ Alan wonders if he's thinking about it wrong, but the solution isn't as obvious However, almost immediately, his request was also shut down, and the maintainer suggested he try the complex, unobvious, and unspecific solution that he had already tried and just couldn't get it to work. -As a result of his frustration, Alan calls out one of the developers of the project on social media, who he believed had frequently shot down the idea of using Sink traits on projects others needed to use them on. This is not well-received, the maintainer reacts with a condescending and dismissive attitude, and he later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and he's told to "get over it". He's given a link to a blog post with a piece [lamenting the popularity of Sink in the Rust ecosystem](https://blog.yoshuawuyts.com/rust-streams/#why-we-do-not-talk-about-the-sink-trait), and how it's complex and bad and not worth it, but the piece also unhelpfully makes no effort to provide examples of how the better alternatives would be used to replace uses of Sink. +As a result of his frustration, Alan calls out one of the developers of the project on social media, who he believed had frequently shot down the idea of using `Sink` traits. This is not well-received, the maintainer reacts with a condescending and dismissive attitude, and he later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and he's told to "get over it". He's given a link to a blog post with a piece [lamenting the popularity of Sink in the Rust ecosystem](https://blog.yoshuawuyts.com/rust-streams/#why-we-do-not-talk-about-the-sink-trait), and how it's complex, bad and not worth it. The piece unhelpfully makes no effort to provide examples of how the better alternatives would be used to replace uses of `Sink`. Because of this heated exchange, Alan grows concerned for his own career, what these well-known community members might think or say about his to others, and his confidence in the community surrounding this language that he really enjoys using is somewhat shaken. From 9a41de39d2fd4c2cb0f4bbebc626130482415737 Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Fri, 26 Mar 2021 08:41:30 -0600 Subject: [PATCH 011/347] Update src/vision/status_quo/carrie_tries_a_socket_sink.md Co-authored-by: Ibraheem Ahmed --- src/vision/status_quo/carrie_tries_a_socket_sink.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/carrie_tries_a_socket_sink.md b/src/vision/status_quo/carrie_tries_a_socket_sink.md index 34e8ba5b..8ded5e06 100644 --- a/src/vision/status_quo/carrie_tries_a_socket_sink.md +++ b/src/vision/status_quo/carrie_tries_a_socket_sink.md @@ -73,7 +73,7 @@ As a result of his frustration, Alan calls out one of the developers of the proj Because of this heated exchange, Alan grows concerned for his own career, what these well-known community members might think or say about his to others, and his confidence in the community surrounding this language that he really enjoys using is somewhat shaken. -Despite this, Alan takes a walk, gathers his determination, and commits to maintaining his fork with the changes from the other pull requests that were shut down, and publihes his version to Crates.io, vowing to be more welcoming to "misfit" pull requests like the one he needed. +Despite this, Alan takes a walk, gathers his determination, and commits to maintaining his fork with the changes from the other pull requests that were shut down, and publishes his version to crates.io, vowing to be more welcoming to "misfit" pull requests like the one he needed. A few weeks later, Alan's work at his project at work is merged with his new forked crate. It's a big deal, his first professional open source contribution to a Rust project, but he still doesn't feel like he has a sense of closure with the community. Meanwhile, his friends say they want to try Rust, but they're worried about its async execution issues, and he doesn't know what else to say, other than to offer a sense of understanding. Maybe the situation will get better someday, he hopes. From 3f65592fdea46a9ebf01cc8c02c732322879b40d Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Fri, 26 Mar 2021 08:43:17 -0600 Subject: [PATCH 012/347] Move the blog post into the story sources section. --- src/vision/status_quo/carrie_tries_a_socket_sink.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/carrie_tries_a_socket_sink.md b/src/vision/status_quo/carrie_tries_a_socket_sink.md index 8ded5e06..63db4c5e 100644 --- a/src/vision/status_quo/carrie_tries_a_socket_sink.md +++ b/src/vision/status_quo/carrie_tries_a_socket_sink.md @@ -69,7 +69,7 @@ Alan wonders if he's thinking about it wrong, but the solution isn't as obvious However, almost immediately, his request was also shut down, and the maintainer suggested he try the complex, unobvious, and unspecific solution that he had already tried and just couldn't get it to work. -As a result of his frustration, Alan calls out one of the developers of the project on social media, who he believed had frequently shot down the idea of using `Sink` traits. This is not well-received, the maintainer reacts with a condescending and dismissive attitude, and he later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and he's told to "get over it". He's given a link to a blog post with a piece [lamenting the popularity of Sink in the Rust ecosystem](https://blog.yoshuawuyts.com/rust-streams/#why-we-do-not-talk-about-the-sink-trait), and how it's complex, bad and not worth it. The piece unhelpfully makes no effort to provide examples of how the better alternatives would be used to replace uses of `Sink`. +As a result of his frustration, Alan calls out one of the developers of the project on social media, who he believed had frequently shot down the idea of using `Sink` traits. This is not well-received, the maintainer reacts with a condescending and dismissive attitude, and he later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and he's told to "get over it". He's given a link to a blog post with a piece lamenting the popularity of Sink in the Rust ecosystem, and how it's complex, bad and not worth it. The piece unhelpfully makes no effort to provide examples of how the better alternatives would be used to replace uses of `Sink`. Because of this heated exchange, Alan grows concerned for his own career, what these well-known community members might think or say about his to others, and his confidence in the community surrounding this language that he really enjoys using is somewhat shaken. @@ -90,6 +90,7 @@ A few weeks later, Alan's work at his project at work is merged with his new for * * * + * * **Why did you choose [Alan](../characters/alan.md) to tell this story?** * Alan is more representative of the original author's background in JS, TypeScript, and NodeJS. * **How would this story have played out differently for the other characters?** From dd7d6329f60e82c72a6bd985e82e55055ad2a30a Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Fri, 26 Mar 2021 08:44:40 -0600 Subject: [PATCH 013/347] Better phrasing, as suggested by @ibraheemdev. --- src/vision/status_quo/carrie_tries_a_socket_sink.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/carrie_tries_a_socket_sink.md b/src/vision/status_quo/carrie_tries_a_socket_sink.md index 63db4c5e..3fadb72f 100644 --- a/src/vision/status_quo/carrie_tries_a_socket_sink.md +++ b/src/vision/status_quo/carrie_tries_a_socket_sink.md @@ -67,7 +67,7 @@ while let Some(msg) = ws_stream.lock().await.next().await { Alan wonders if he's thinking about it wrong, but the solution isn't as obvious as his earlier `Sink` approach. Looking around, he realizes a solution to his problems already exists-- as others have been in his shoes before-- within two other nearly-identical pull requests, but they were both closed by the project maintainers. He tries opening a third one with the same code, pointing to an example where it was actually found to be useful. To his joy, his original approach works with the code in the closed pull requests in his local copy! Alan's branch is able to compile for the first time. -However, almost immediately, his request was also shut down, and the maintainer suggested he try the complex, unobvious, and unspecific solution that he had already tried and just couldn't get it to work. +However, almost immediately, his request was shut down like the others, and the maintainer suggests he try the complex, unobvious, and unspecific solution that he had already tried and just couldn't get it to work. As a result of his frustration, Alan calls out one of the developers of the project on social media, who he believed had frequently shot down the idea of using `Sink` traits. This is not well-received, the maintainer reacts with a condescending and dismissive attitude, and he later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and he's told to "get over it". He's given a link to a blog post with a piece lamenting the popularity of Sink in the Rust ecosystem, and how it's complex, bad and not worth it. The piece unhelpfully makes no effort to provide examples of how the better alternatives would be used to replace uses of `Sink`. From 15f2f7e609ababeef3f437c7b67851579e5c3d5d Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Fri, 26 Mar 2021 09:18:15 -0600 Subject: [PATCH 014/347] Rename file. --- ...{carrie_tries_a_socket_sink.md => alan_tries_a_socket_sink.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/vision/status_quo/{carrie_tries_a_socket_sink.md => alan_tries_a_socket_sink.md} (100%) diff --git a/src/vision/status_quo/carrie_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md similarity index 100% rename from src/vision/status_quo/carrie_tries_a_socket_sink.md rename to src/vision/status_quo/alan_tries_a_socket_sink.md From 86868284e5a1b1e2a91212b161540429a9490b6d Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Wed, 31 Mar 2021 10:21:29 -0600 Subject: [PATCH 015/347] Apply suggestions from code review Co-authored-by: Niko Matsakis --- src/vision/status_quo/alan_tries_a_socket_sink.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/vision/status_quo/alan_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md index 3fadb72f..138bc625 100644 --- a/src/vision/status_quo/alan_tries_a_socket_sink.md +++ b/src/vision/status_quo/alan_tries_a_socket_sink.md @@ -8,9 +8,9 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee ## The story -Alan is working on a project that uses an alternative popular async framework. He finds the new async framework less familiar, and as he reads through their GitHub issues, he's saddened by the project maintainer's unwelcoming attitude towards their community. He asks his teammates if they can switch to the one he's more familiar with and feels more welcome in, but the teammates are understandably resistant to changing something that important just for one feature. So, he works hard to find workarounds to accomplish his team's goals. +Alan is working on a project that uses async-std. He has worked a bit with tokio in the past and is more familiar with that, but he is interested to learn something how things work in async-std. -One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket commands can be forwarded to a transport-agnostic RPC server. He finds an HTTP server that's similar to one he's used to using with the other async framework, and a WebSocket middleware library that goes with it. +One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket commands can be forwarded to a transport-agnostic RPC server. He finds the HTTP server tide and it seems fairly similar to warp, which he was using with tokio. He also finds the WebSocket middleware library *foobar* that goes with it. However, as he's working, Alan encounters a situation where the socket needs to be written to within an async thread, and the traits just aren't working. He wants to split the stream into a sender and receiver: @@ -67,19 +67,18 @@ while let Some(msg) = ws_stream.lock().await.next().await { Alan wonders if he's thinking about it wrong, but the solution isn't as obvious as his earlier `Sink` approach. Looking around, he realizes a solution to his problems already exists-- as others have been in his shoes before-- within two other nearly-identical pull requests, but they were both closed by the project maintainers. He tries opening a third one with the same code, pointing to an example where it was actually found to be useful. To his joy, his original approach works with the code in the closed pull requests in his local copy! Alan's branch is able to compile for the first time. -However, almost immediately, his request was shut down like the others, and the maintainer suggests he try the complex, unobvious, and unspecific solution that he had already tried and just couldn't get it to work. +However, almost immediately, his request is closed with a comment suggesting that he try to create an intermediate polling task instead, much as he was trying before. Alan is feeling frustrated. "I already tried that approach," he thinks, "and it doesn't work!" -As a result of his frustration, Alan calls out one of the developers of the project on social media, who he believed had frequently shot down the idea of using `Sink` traits. This is not well-received, the maintainer reacts with a condescending and dismissive attitude, and he later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and he's told to "get over it". He's given a link to a blog post with a piece lamenting the popularity of Sink in the Rust ecosystem, and how it's complex, bad and not worth it. The piece unhelpfully makes no effort to provide examples of how the better alternatives would be used to replace uses of `Sink`. +As a result of his frustration, Alan calls out one developer of the project on social media. He knows this developer is opposed to the `Sink` traits. Alan's message is not well-received: the maintainer sends a short response and Alan feels dismissed. Alan later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and suggests that Alan "get over it". Alan is given a link to a blog post. The post provides a number of criticisms of `Sink` but, after reading it, Alan isn't sure what he should do instead. Because of this heated exchange, Alan grows concerned for his own career, what these well-known community members might think or say about his to others, and his confidence in the community surrounding this language that he really enjoys using is somewhat shaken. -Despite this, Alan takes a walk, gathers his determination, and commits to maintaining his fork with the changes from the other pull requests that were shut down, and publishes his version to crates.io, vowing to be more welcoming to "misfit" pull requests like the one he needed. +Despite this, Alan takes a walk, gathers his determination, and commits to maintaining his fork with the changes from the other pull requests that were shut down. He publishes his version to crates.io, vowing to be more welcoming to "misfit" pull requests like the one he needed. -A few weeks later, Alan's work at his project at work is merged with his new forked crate. It's a big deal, his first professional open source contribution to a Rust project, but he still doesn't feel like he has a sense of closure with the community. Meanwhile, his friends say they want to try Rust, but they're worried about its async execution issues, and he doesn't know what else to say, other than to offer a sense of understanding. Maybe the situation will get better someday, he hopes. +A few weeks later, Alan's work at his project at work is merged with his new forked crate. It's a big deal, his first professional open source contribution to a Rust project! Still, he doesn't feel like he has a sense of closure with the community. Meanwhile, his friends say they want to try Rust, but they're worried about its async execution issues, and he doesn't know what else to say, other than to offer a sense of understanding. Maybe the situation will get better someday, he hopes. ## 🤔 Frequently Asked Questions -*Here are some standard FAQ to get you started. Feel free to add more!* * **What are the morals of the story?** * There are often many sources of opinion in the community regarding futures and async, but these opinions aren't always backed up with examples of how it should be better accomplished. Sometimes we just find a thing that works and would prefer to stick with it, but others argue that some traits make implementations unnecessarily complex, and choose to leave it out. Disagreements like these in the ecosystem can be harmful to the reputation of the project and the participants. From abb5e7bd91dd9c856000ed61b197e8dc1c3a279e Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Wed, 31 Mar 2021 10:23:49 -0600 Subject: [PATCH 016/347] Add more specifics. --- src/vision/status_quo/alan_tries_a_socket_sink.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/alan_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md index 138bc625..f5d95b50 100644 --- a/src/vision/status_quo/alan_tries_a_socket_sink.md +++ b/src/vision/status_quo/alan_tries_a_socket_sink.md @@ -8,9 +8,9 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee ## The story -Alan is working on a project that uses async-std. He has worked a bit with tokio in the past and is more familiar with that, but he is interested to learn something how things work in async-std. +Alan is working on a project that uses `async-std`. He has worked a bit with `tokio` in the past and is more familiar with that, but he is interested to learn something how things work in `async-std`. -One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket commands can be forwarded to a transport-agnostic RPC server. He finds the HTTP server tide and it seems fairly similar to warp, which he was using with tokio. He also finds the WebSocket middleware library *foobar* that goes with it. +One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket commands can be forwarded to a transport-agnostic RPC server. He finds the HTTP server `tide` and it seems fairly similar to `warp`, which he was using with `tokio`. He also finds the WebSocket middleware library `tide-websockets` that goes with it. However, as he's working, Alan encounters a situation where the socket needs to be written to within an async thread, and the traits just aren't working. He wants to split the stream into a sender and receiver: From 5e5cacc827379a6dc0d70ae3abe1b982e269f1a5 Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Wed, 31 Mar 2021 10:35:55 -0600 Subject: [PATCH 017/347] Add more links and improve examples. --- .../status_quo/alan_tries_a_socket_sink.md | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/vision/status_quo/alan_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md index f5d95b50..8cdc9e3a 100644 --- a/src/vision/status_quo/alan_tries_a_socket_sink.md +++ b/src/vision/status_quo/alan_tries_a_socket_sink.md @@ -26,11 +26,14 @@ let ws_sender = Arc::new(Mutex::new(ws_sender)); while let Some(msg) = ws_receiver.next().await { debug!("Received new WS RPC message: {:?}", msg); - // Echo the request: - match ws_sender.lock().await.send_string(msg).await { - Ok(_) => info!("New WS data sent."), - Err(_) => warn!("WS connection closed."), - }; + async_std::task::spawn(async move { + let res = call_rpc(msg).await?; + + match ws_sender.lock().await.send_string(res).await { + Ok(_) => info!("New WS data sent."), + Err(_) => warn!("WS connection closed."), + }; + }); } ``` @@ -60,8 +63,10 @@ async_std::task::spawn(async move { }); while let Some(msg) = ws_stream.lock().await.next().await { - // Echo the request? - ws_sender.send(msg); + async_std::task::spawn(async move { + let res = call_rpc(msg).await?; + ws_sender.send(res); + }); } ``` @@ -85,7 +90,10 @@ A few weeks later, Alan's work at his project at work is merged with his new for * If there's a source of substantial disagreement, the community becomes even further fragmented, and this may cause additional confusion in newcomers. * **What are the sources for this story?** * - * + * - Third pull request + * - Suggestion to use a broadcast channel + * - Where some of the original polling work is replaced + * - File with Sink solution * * * From f27c77ed4e40829d256f67a1d21f8747b72bfeb1 Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Wed, 31 Mar 2021 10:40:11 -0600 Subject: [PATCH 018/347] Add interop morals as per @eminence's suggestion --- src/vision/status_quo/alan_tries_a_socket_sink.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/vision/status_quo/alan_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md index 8cdc9e3a..08a75e14 100644 --- a/src/vision/status_quo/alan_tries_a_socket_sink.md +++ b/src/vision/status_quo/alan_tries_a_socket_sink.md @@ -88,6 +88,8 @@ A few weeks later, Alan's work at his project at work is merged with his new for * **What are the morals of the story?** * There are often many sources of opinion in the community regarding futures and async, but these opinions aren't always backed up with examples of how it should be better accomplished. Sometimes we just find a thing that works and would prefer to stick with it, but others argue that some traits make implementations unnecessarily complex, and choose to leave it out. Disagreements like these in the ecosystem can be harmful to the reputation of the project and the participants. * If there's a source of substantial disagreement, the community becomes even further fragmented, and this may cause additional confusion in newcomers. + * Alan is used to fragmentation from the communities he comes from, so this isn't too discouraging, but what's difficult is that there's enough functionality overlap in async libraries that it's tempting to get them to interop with each other as-needed, and this can lead to architectural challenges resulting from a difference in design philosophies. + * It's also unclear if Futures are core to the Rust asynchronous experience, much as Promises are in JavaScript, or if the situation is actually more complex. * **What are the sources for this story?** * * - Third pull request From 9138f725321ee4d1ce2c89e1c035fe0650c15de9 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Wed, 31 Mar 2021 19:45:04 +0200 Subject: [PATCH 019/347] Add Barbara anguishes over HTTP --- .../status_quo/barbara_anguishes_over_http.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/vision/status_quo/barbara_anguishes_over_http.md diff --git a/src/vision/status_quo/barbara_anguishes_over_http.md b/src/vision/status_quo/barbara_anguishes_over_http.md new file mode 100644 index 00000000..382e59d6 --- /dev/null +++ b/src/vision/status_quo/barbara_anguishes_over_http.md @@ -0,0 +1,47 @@ +# 😱 Status quo stories: Barbara Anguishes Over HTTP + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect people's experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +Barbara is starting a new project, working together with Alan. They want to write a Rust library and as part of it they will need to make a few HTTP calls to various web services. While HTTP is part of the responsibilities of the library it is by no means the only thing the library will need to do. + +As they are pair programming, they get the part of the library where HTTP will be involved and Alan asks Barbara, "OK, how do I make an HTTP request?". + +As an experienced async Rust developer Barbara has been dreading this question from the start of the project. She's tempted to ask "How long do you have?", but she quickly gathers herself and sstarts to outline the various considerations. She starts with a relatively simple question: "Should we use an HTTP library with a sync interface or an async interface?". + +Alan, somewhat confused by the question since this isn't a concern in the languages he's used to, replies with his own question: "I don't know, what do you think?". Barbara thinks for a second. She knows that bridging sync and async can be difficult, and so there's another question they need to answer first: "Well, are we going to expose a sync or an async interface to the users of our library?". + +Alan, now feeling completely out of his element, replies as confident as he can: "Everybody wants to use async these days. Let's do that.". He braces for Barbara's answer as he's not even sure what he said is actually true. + +Barbara replies, "If we expose async API then we need to decide which async HTTP implementation we we will use". As she finishes saying this, Barbara feels slightly uneasy. She knows that it is possible to use a sync HTTP library and expose it through an async API, but she fears totally confusing Alan and so decides to not mention this fact. + +Barbara looks over at Alan and sees a blank stare on his face. She repeats the question: "So, which async HTTP implementation should we use?". Alan responds with the only thing that comes to his mind: "which one is the best?" to which Barbara responds "Well, it depends on which async runtime you're using". + +* Alan, feeling utterly dejected and hoping that the considerations will soon end tries a new route out of this conversation: "Can we allow the user of the library to decide?". + +Barbara thinks to herself, "Oh boy, we could provide a trait that abstracts over the HTTP request and response and allow the user to provide the implementation for whatever HTTP library they want... BUT, if we ever need any additional functionality that an async runtime needs to expose - like async locks or async timers - we might be forced to pick an actual runtime implementation on behalf of the user... Perhaps, we can put the most popular runtime implementations behind feature flags and let the user chose that way... BUT what if we want to allow plugging in of different runtimes?" + +Alan, having watched Barbara stare off into the distance for what felt like a half-hour, feels bad for his colleague. All he can think to himself is how Rust is so much more complicated that C#. + +## 🤔 Frequently Asked Questions + +* **What are the morals of the story?** + * What is a very mundane and simple decision in many other languages, picking an HTTP library, requires users to contemplate *many* different considerations. + * There is no practical way to choose an HTTP library that will serve most of the ecosystem. Sync/Async, competing runtimes, etc. - someone will always be left out. + * HTTP is a small implementation detail of this library, but it is a HUGE decision that will ultimately be the biggest factor in who can adopt their library. +* **What are the sources for this story?** + * Based on the author's personal experience of taking newcomers to Rust through the decision making process of picking an HTTP implementation for a library. +* **Why did you choose [Barbara][] to tell this story?** + * Barbara knows all the considerations and their consequences. A less experienced Rust developer might just make a choice even if that choice isn't the right one for them. + +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From 27a9a529e72c1f207a01630bded8468b31c6a03a Mon Sep 17 00:00:00 2001 From: Yilin Chen Date: Sat, 3 Apr 2021 01:32:25 +0800 Subject: [PATCH 020/347] Create barbara_builds_an_async_executor.md --- .../barbara_builds_an_async_executor.md | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 src/vision/status_quo/barbara_builds_an_async_executor.md diff --git a/src/vision/status_quo/barbara_builds_an_async_executor.md b/src/vision/status_quo/barbara_builds_an_async_executor.md new file mode 100644 index 00000000..51e1d1f1 --- /dev/null +++ b/src/vision/status_quo/barbara_builds_an_async_executor.md @@ -0,0 +1,161 @@ +# 😱 Status quo stories: Barbara builds an async executor + + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +## The story + +Barbara wants to set priorities to the tasks spawned to the executor. However, she finds no existing async executor provides such a feature so she decided to build her own async executor. + +First, Barbara found [crossbeam-deque](https://crates.io/crates/crossbeam-deque) provides work-stealing deques of good quality. She could use it to build task schedulers. It is not the main part of the story. Each working thread can get a task from the scheduler and poll it in loop. + +But wait, what is a "task"? + +At first, Barbara thought it must contain the `Future` itself and the additional priority which was used by the scheduler. So she first wrote: + +```rust +pub struct Task { + future: Pin + Send + 'static>>, + priority: u8 +} +``` + +And the working thread loop should run something like: + +```rust +pub fn poll_task(task: Task) { + let waker = todo!(); + let mut cx = Context::from_waker(&waker); + task.future.as_mut().poll(&mut cx); +} +``` + +"How to create a waker?" Barbara asked herself. Quickly, she found the `Wake` trait. After reading the documentation, she realized the task in the scheduler should be stored in an `Arc`. And to implement `Wake`, the `Task` should also contain the sender of the scheduler. She changed the code to something like this: + +```rust +pub struct Task { + future: Pin + Send + 'static>>, + scheduler: SchedulerSender, + priority: u8, +} + +unsafe impl Sync for Task {} + +impl Wake for Task { + fn wake(self: Arc) { + self.scheduler.send(self.clone()); + } +} + +pub fn poll_task(task: Arc) { + let waker = Waker::from(task.clone()); + let mut cx = Context::from_waker(&waker); + task.future.as_mut().poll(&mut cx); +// ^^^^^^^^^^^ cannot borrow as mutable +} +``` + +The code still needed some change because the `future` in the `Arc` became immutable. + +"Okay. I can guarantee `Task` is created from a `Pin>` and I think the same future will not be polled concurrently in two threads. So let me bypass the safety checks." Barbara confidently used some `unsafe` blocks to make it compile. + +```rust +pub struct Task { + future: *mut (dyn Future + Send + 'static), + ... +} + +unsafe impl Send for Task {} +unsafe impl Sync for Task {} + +pub fn poll_task(task: Arc) { + ... + unsafe { + Pin::new_unchecked(&mut *task.future).poll(&mut cx); + } +} +``` + +Luckily, a colleague of Barbara noticed something wrong. The `wake` method could be called multiple times so multiple copies of the task could exist in the scheduler. The scheduler might not work correctly because of it and a more severe problem was that multiple threads might get copies of the same task from the scheduler and cause a race in polling the future. + +Barbara soon got a idea to solve it. She added a state field to the `Task`. By carefully maintaining the state of the task, she could guarantee there are no duplicate tasks in the scheduler and no race can happen when polling the future: + +```rust +const NOTIFIED: u64 = 1; +const IDLE: u64 = 2; +const POLLING: u64 = 3; +const COMPLETED: u64 = 4; + +pub struct Task { + ... + state: AtomicU64, +} + +impl Wake for Task { + fn wake(self: Arc) { + let mut state = self.state.load(Relaxed); + loop { + match state { + IDLE => match self + .state + .compare_exchange_weak(IDLE, NOTIFIED, AcqRel, Acquire) + { + Ok(_) => self.scheduler.send(self.clone()), + Err(s) => state = s, + }, + POLLING => match self + .state + .compare_exchange_weak(POLLING, NOTIFIED, AcqRel, Acquire) + { + Ok(_) => break, + Err(s) => state = s, + }, + _ => break, + } + } + } +} +pub fn poll_task(task: Arc) { + let waker = Waker::from(task.clone()); + let mut cx = Context::from_waker(&waker); + loop { + task.state.store(POLLING, Release); + if let Poll::Ready(()) = unsafe { Pin::new_unchecked(&mut *task.future).poll(&mut cx) } { + task.state.store(COMPLETED, Release); + } + match task.state.compare_exchange(POLLING, IDLE, AcqRel, Acquire) { + Ok(_) => break, + Err(NOTIFIED) => continue, + _ => unreachable!(), + } + } +} +``` + +Barbara finished her initial implementation of the async executor. Despite there were a lot more possible optimizations, Barbara already felt it is a bit complex. She was also confused about why she needed to care so much about polling and waking while her initial requirement was just adding additional information to the task for customizing scheduling. + +## 🤔 Frequently Asked Questions + +*Here are some standard FAQ to get you started. Feel free to add more!* + +* **What are the morals of the story?** + * It is difficult to customize any of the current async executors (to my knowledge). To have any bit of special requirement forces building an async executor from scratch. + * It is also not easy to build an async executor. It needs quite some exploration and is error-prone. [`async-task`](https://github.com/smol-rs/async-task) is a good attempt to simplify the process but it could not satisfy all kinds of needs of customizing the executor (it does not give you the chance to extend the task itself). +* **What are the sources for this story?** + * The story was from my own experience about writing a new thread pool supporting futures: https://github.com/tikv/yatp. + * People may feel strange about why we want to set priorities for tasks. Currently, the futures in the thread pool are like user-space threads. They are mostly CPU intensive. But I think people doing async I/O may have the same problem. +* **Why did you choose Barbara to tell this story?** + * At the time of the story, I had written Rust for years but I was new to the concepts for async/await like `Pin` and `Waker`. +* **How would this story have played out differently for the other characters?** + * People with less experience in Rust may be less likely to build their own executor. If they try, I think the story is probably similar. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From 66a515cdf2ef4f85515187c92f29b2bde89f1891 Mon Sep 17 00:00:00 2001 From: Frederik Baetens Date: Fri, 2 Apr 2021 22:29:51 +0200 Subject: [PATCH 021/347] prep for shiny future --- .../-shiny-vision--story-issue.md | 31 +++++++++++++++++++ src/vision/how_to_vision.md | 2 +- src/vision/how_to_vision/shiny_future.md | 4 +-- src/vision/shiny_future.md | 8 +++-- src/vision/shiny_future/template.md | 9 ++++-- 5 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/-shiny-vision--story-issue.md diff --git a/.github/ISSUE_TEMPLATE/-shiny-vision--story-issue.md b/.github/ISSUE_TEMPLATE/-shiny-vision--story-issue.md new file mode 100644 index 00000000..d4bd7d34 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/-shiny-vision--story-issue.md @@ -0,0 +1,31 @@ +--- +name: '"Shiny future" story issue' +about: Propose a "shiny future" story idea or look for someone to write it +title: '' +labels: good first issue, help wanted, shiny-vision-story-ideas +assignees: '' + +--- + +### Brief summary + +*Give a brief summary of the story or vision here* + +### Optional details + +* (Optional) Which [character(s)] would be the best fit and why? + * [ ] [Alan]: the experienced "GC'd language" developer, new to Rust + * [ ] [Grace]: the systems programming expert, new to Rust + * [ ] [Niklaus]: new programmer from an unconventional background + * [ ] [Barbara]: the experienced Rust developer +* (Optional) Which [project(s)] would be the best fit and why? + * *List some projects here.* +* (Optional) What are the key points or morals to emphasize? + * *Write some morals here.* + +[character(s)]: https://rust-lang.github.io/wg-async-foundations/vision/characters.html +[project(s)]: https://rust-lang.github.io/wg-async-foundations/vision/projects.html +[Alan]: https://rust-lang.github.io/wg-async-foundations/vision/characters/alan.html +[Grace]: https://rust-lang.github.io/wg-async-foundations/vision/characters/grace.html +[Niklaus]: https://rust-lang.github.io/wg-async-foundations/vision/characters/niklaus.html +[Barbara]: https://rust-lang.github.io/wg-async-foundations/vision/characters/barbara.html diff --git a/src/vision/how_to_vision.md b/src/vision/how_to_vision.md index 21af8641..d1c20101 100644 --- a/src/vision/how_to_vision.md +++ b/src/vision/how_to_vision.md @@ -6,7 +6,7 @@ | --- | --- | | ✅ **Now** till 2021-04-30 | Improve the [sample projects][hvp] | | ✅ **Now** till 2021-04-30 | Propose new ["status quo" stories][hvsq] or [comment] on existing PRs | -| 🛑 Starting 2021-04-02 | Propose new ["shiny future" stories][hvsf] or [comment] on existing PRs | +| ✅ **Now** till 2021-04-30 | Propose new ["shiny future" stories][hvsf] or [comment] on existing PRs | | 🛑 Starting 2021-04-30 | Vote for the [awards] on the status quo and shiny future stories! | ## The big picture diff --git a/src/vision/how_to_vision/shiny_future.md b/src/vision/how_to_vision/shiny_future.md index e23e73af..fe01b6af 100644 --- a/src/vision/how_to_vision/shiny_future.md +++ b/src/vision/how_to_vision/shiny_future.md @@ -1,8 +1,6 @@ # ❓ How to vision: "Shiny future" stories -## 🛑 Not time for this yet 🛑 - -We're not ready for this yet! See the [how to vision](../how_to_vision.md) page for details on the phasing. +We want all Async Rust users and their hopes and dreams for what Async Rust should be in the future to be reflected in the async vision doc, so please help us by writing 'shiny future' stories about what you would like async Rust to look like! Remember, **shiny future visions can be personal and may differ greatly from person to person. Therefore it's impossible for these visions to be wrong.** [character]: ../characters.md [comment]: ./comment.md diff --git a/src/vision/shiny_future.md b/src/vision/shiny_future.md index 05fa467e..a2ddcff9 100644 --- a/src/vision/shiny_future.md +++ b/src/vision/shiny_future.md @@ -1,8 +1,10 @@ # ✨ Shiny future: Where we want to get to -### 🛑 Not time for this yet 🛑 +## 🚧 Under construction! Help needed! 🚧 -We're not really ready to work on this section yet. We're still focused on writing out the [status quo](./status_quo.md). +We are still in the process of drafting the vision document. The stories you see on this page are examples meant to give a feeling for how a shiny future story looks; you can expect them to change. We encourage you to propose your own by opening a PR -- see the ["How to vision"][htv] page for instructions and details. + +[htv]: ./how_to_vision.md ## What it this @@ -18,4 +20,4 @@ We fully expect that the designs and stories described in this document will cha ## Where are the stories? -We haven't written these yet! \ No newline at end of file +We haven't written these yet! diff --git a/src/vision/shiny_future/template.md b/src/vision/shiny_future/template.md index 79ee7e18..37c2be10 100644 --- a/src/vision/shiny_future/template.md +++ b/src/vision/shiny_future/template.md @@ -12,9 +12,12 @@ [`shiny_future`]: https://github.com/rust-lang/wg-async-foundations/tree/master/src/vision/shiny_future [`SUMMARY.md`]: https://github.com/rust-lang/wg-async-foundations/blob/master/src/SUMMARY.md -### 🛑 Not time for this yet 🛑 -We are not yet accepting shiny future story ideas! +## 🚧 Warning: Draft status 🚧 + +This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories [cannot be wrong]. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to [add your own shiny vision story][htvsq]! ## The story @@ -60,3 +63,5 @@ We are not yet accepting shiny future story ideas! [Niklaus]: ../characters/niklaus.md [Barbara]: ../characters/barbara.md [projects]: ../projects.md +[htvsq]: ../how_to_vision/shiny_future.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From e4368b23f6380a8e49c9639c894115fa73ad21af Mon Sep 17 00:00:00 2001 From: Frederik-Baetens Date: Sat, 3 Apr 2021 18:23:22 +0200 Subject: [PATCH 022/347] Update src/vision/how_to_vision/shiny_future.md Co-authored-by: Niko Matsakis --- src/vision/how_to_vision/shiny_future.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/how_to_vision/shiny_future.md b/src/vision/how_to_vision/shiny_future.md index fe01b6af..4f0b4ef1 100644 --- a/src/vision/how_to_vision/shiny_future.md +++ b/src/vision/how_to_vision/shiny_future.md @@ -1,6 +1,6 @@ # ❓ How to vision: "Shiny future" stories -We want all Async Rust users and their hopes and dreams for what Async Rust should be in the future to be reflected in the async vision doc, so please help us by writing 'shiny future' stories about what you would like async Rust to look like! Remember, **shiny future visions can be personal and may differ greatly from person to person. Therefore it's impossible for these visions to be wrong.** +We want all Async Rust users and their hopes and dreams for what Async Rust should be in the future to be reflected in the async vision doc, so please help us by writing 'shiny future' stories about what you would like async Rust to look like! **Remember: we are in a brainstorming period.** Please feel free to leave comments in an effort to help someone improve their PRs, but if you would prefer a different approach, you are better off writing your own story. (In fact, you should write your own story even if you like their approach but just have a few alternatives that are worth thinking over.) [character]: ../characters.md [comment]: ./comment.md From 798e1d569047cd51dac46bf88f913eb4d434bcdf Mon Sep 17 00:00:00 2001 From: Frederik Baetens Date: Sat, 3 Apr 2021 20:26:02 +0200 Subject: [PATCH 023/347] remove starting from parenthical --- src/vision/how_to_vision.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/how_to_vision.md b/src/vision/how_to_vision.md index d1c20101..bec83eb3 100644 --- a/src/vision/how_to_vision.md +++ b/src/vision/how_to_vision.md @@ -21,7 +21,7 @@ Once the brainstorming period is complete, the working group leads will begin wo The brainstorming period runs until 2021-04-30: -* Folks open "status quo" and (starting 2021-04-02) "shiny future" story PRs against the [wg-async-foundations repo][repo]. +* Folks open "status quo" and "shiny future" story PRs against the [wg-async-foundations repo][repo]. * [Templates and instructions for status quo stories can be found here.][hvsq] * You can also browse the [open "status quo" issues] for ideas! * [Templates and instructions for shiny future stories can be found here.][hvsf] From af07d8e79be28803dc300ad6941b25bd04e2cece Mon Sep 17 00:00:00 2001 From: Emmanuel Antony Date: Mon, 5 Apr 2021 00:18:47 +0530 Subject: [PATCH 024/347] Added Barbara needs async helpers --- .../status_quo/barbara_needs_async_helpers.md | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/vision/status_quo/barbara_needs_async_helpers.md diff --git a/src/vision/status_quo/barbara_needs_async_helpers.md b/src/vision/status_quo/barbara_needs_async_helpers.md new file mode 100644 index 00000000..1ccbee38 --- /dev/null +++ b/src/vision/status_quo/barbara_needs_async_helpers.md @@ -0,0 +1,64 @@ +# 😱 Status quo stories: Barbara needs Async Helpers + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +[Barbara], an experienced Rust user, is prototyping an async Rust service for work. To get things working quickly, she decides to prototype in tokio, since it is unclear which runtime her work will use. + +She starts adding warp and tokio to her dependencies list. She notices that warp suggests using tokio with the `full` feature. She's a bit concerned about how this might affect the compile times and also that *all* of tokio is needed for her little project, but she pushes forward. + +As she builds out functionality, she's pleased to see tokio provides a bunch of helpers like `join!` and async versions of the standard library types like channels and mutexes. + +After completing one endpoint, she moves to a new one which requires streaming http responses to the client. Barbara quickly finds out that tokio does not provide a stream type, and so she adds `tokio-stream` to her dependencies. + +Moving on she tries to make some functions generic over the web framework underneath, so she tries to abstract off the functionality to a trait. But Rust doesn't support async functions in traits yet, so she adds `async_trait` to her dependencies. + +Some of her functions are recursive, so to make them async she starts boxing her futures. Then she learns about `async-recursion` and then adds it to the dependencies. + +Her stream implementation needed `pin_project` so she brings that also as a dependency. + +"Finally!", Barbara says, breathing a sigh of relief. She is done with her prototype, and shows it off at work, but to her dismay, the team decides that tokio is not an appropriate runtime for their use case. Barbara's heart skips a beat. "Oh no, what to do now," she thinks. + +So now Barbara starts the journey of replacing tokio with a myriad of off the shelf and custom helpers. She can't use warp so now she has to find an alternative. She also has to find a new channel implementations and there are a few: +* In `futures` +* `async-std` has one, but it seems to be tied to another runtime so she can't use that. +* `smol` has one that is independent. + +This process of "figure out which alternative is an option" is repeated many times. She also tries to use the `select!` macro from `futures` but it requires more pinning and workarounds (and then her stack overflows). + +But Barbara fights through all of it. In the end, she gets it to work, but she realizes that she has a ton of random dependencies and associated compilation time. She wonders if all that dependencies will have a negative effect on the binary size. She also had to rewrite some bits of functionality on her own. + +## 🤔 Frequently Asked Questions + +### **What are the morals of the story?** +* Functionality is found either in "framework"-like crates (e.g., tokio) *and* spread around many different ecosystem crates. +* It's sometimes difficult to discover where this functionality lives. +* Additionally, the trouble of non runtime-agnostic libraries becomes very apparent. +* Helpers and utilities might have analogues across the ecosystem, but they are different in subtle ways. +* Some patterns are clean if you know the right utility crate and very painful otherwise. + +### **What are the sources for this story?** +[Issue 105](https://github.com/rust-lang/wg-async-foundations/issues/105) + +### **What are helper functions/macros?** +They are functions/macros that helps with certain basic pieces of functionality and features. Like to await on multiple futures concurrently (`join!` in tokio), or else race the futures and take the result of the one that finishes first. + +### **Why did you choose [Barbara] to tell this story?** +This particular issue impacts all users of Rust even (and sometimes especially) experienced ones. + +### **How would this story have played out differently for the other characters?** +Other characters may not know all their options and hence might have fewer problems as a result. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From d97472eeaa5bc42f07be0efa6386dda88f2881a6 Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Mon, 5 Apr 2021 15:41:20 -0600 Subject: [PATCH 025/347] Additional changes based on feedback. --- src/vision/status_quo/alan_tries_a_socket_sink.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md index 08a75e14..321f9d43 100644 --- a/src/vision/status_quo/alan_tries_a_socket_sink.md +++ b/src/vision/status_quo/alan_tries_a_socket_sink.md @@ -26,6 +26,8 @@ let ws_sender = Arc::new(Mutex::new(ws_sender)); while let Some(msg) = ws_receiver.next().await { debug!("Received new WS RPC message: {:?}", msg); + let ws_sender = ws_sender.clone(); + async_std::task::spawn(async move { let res = call_rpc(msg).await?; @@ -72,7 +74,7 @@ while let Some(msg) = ws_stream.lock().await.next().await { Alan wonders if he's thinking about it wrong, but the solution isn't as obvious as his earlier `Sink` approach. Looking around, he realizes a solution to his problems already exists-- as others have been in his shoes before-- within two other nearly-identical pull requests, but they were both closed by the project maintainers. He tries opening a third one with the same code, pointing to an example where it was actually found to be useful. To his joy, his original approach works with the code in the closed pull requests in his local copy! Alan's branch is able to compile for the first time. -However, almost immediately, his request is closed with a comment suggesting that he try to create an intermediate polling task instead, much as he was trying before. Alan is feeling frustrated. "I already tried that approach," he thinks, "and it doesn't work!" +However, almost immediately, his request is closed [with a comment suggesting that he try to create an intermediate polling task instead](https://github.com/http-rs/tide-websockets/issues/15#issuecomment-797090892), much as he was trying before. Alan is feeling frustrated. "I already tried that approach," he thinks, "and it doesn't work!" As a result of his frustration, Alan calls out one developer of the project on social media. He knows this developer is opposed to the `Sink` traits. Alan's message is not well-received: the maintainer sends a short response and Alan feels dismissed. Alan later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and suggests that Alan "get over it". Alan is given a link to a blog post. The post provides a number of criticisms of `Sink` but, after reading it, Alan isn't sure what he should do instead. @@ -90,6 +92,9 @@ A few weeks later, Alan's work at his project at work is merged with his new for * If there's a source of substantial disagreement, the community becomes even further fragmented, and this may cause additional confusion in newcomers. * Alan is used to fragmentation from the communities he comes from, so this isn't too discouraging, but what's difficult is that there's enough functionality overlap in async libraries that it's tempting to get them to interop with each other as-needed, and this can lead to architectural challenges resulting from a difference in design philosophies. * It's also unclear if Futures are core to the Rust asynchronous experience, much as Promises are in JavaScript, or if the situation is actually more complex. + * The `Sink` trait is complex but it solves a real problem, and the workarounds required to solve problems without it can be unsatisfactory. + * Disagreement about core abstractions like `Sink` can make interoperability between runtimes more difficult; it also makes it harder for people to reproduce patterns they are used to from one runtime to another. + * It is all too easy for technical discussions like this to become heated; it's important for all participants to try and provide each other with the "benefit of the doubt". * **What are the sources for this story?** * * - Third pull request From 2d51fe4bee7fd59eaf4fe37914516a5f02ad547c Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Mon, 5 Apr 2021 16:27:14 -0600 Subject: [PATCH 026/347] Add clarification of the task --- src/vision/status_quo/alan_tries_a_socket_sink.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md index 321f9d43..7e014b4c 100644 --- a/src/vision/status_quo/alan_tries_a_socket_sink.md +++ b/src/vision/status_quo/alan_tries_a_socket_sink.md @@ -10,7 +10,17 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee Alan is working on a project that uses `async-std`. He has worked a bit with `tokio` in the past and is more familiar with that, but he is interested to learn something how things work in `async-std`. -One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket commands can be forwarded to a transport-agnostic RPC server. He finds the HTTP server `tide` and it seems fairly similar to `warp`, which he was using with `tokio`. He also finds the WebSocket middleware library `tide-websockets` that goes with it. +One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket RPC calls can be forwarded to a transport-agnostic RPC server. + +In this server implementation: + +* RPC call strings can be received over a WebSocket +* The strings are decoded and sent to an RPC router that calls the methods specified in the RPC call +* Some of the methods that are called can take some time to return a result, so they are spawned separately + * RPC has built-in properties to organize call IDs and methods, so results can be sent in any order +* Since WebSockets are bidirectional streams (duplex sockets), the response is sent back through the same client socket + +He finds the HTTP server `tide` and it seems fairly similar to `warp`, which he was using with `tokio`. He also finds the WebSocket middleware library `tide-websockets` that goes with it. However, as he's working, Alan encounters a situation where the socket needs to be written to within an async thread, and the traits just aren't working. He wants to split the stream into a sender and receiver: From 2857f1aaded16a2127f9180b136005b460ddfa15 Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Mon, 5 Apr 2021 16:47:39 -0600 Subject: [PATCH 027/347] Add rpc_ws_handler / WebSocketConnection function signature for context. --- .../status_quo/alan_tries_a_socket_sink.md | 48 ++++++++++--------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/src/vision/status_quo/alan_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md index 7e014b4c..a69d1037 100644 --- a/src/vision/status_quo/alan_tries_a_socket_sink.md +++ b/src/vision/status_quo/alan_tries_a_socket_sink.md @@ -33,19 +33,21 @@ use log::{debug, info, warn}; let (ws_sender, mut ws_receiver) = ws_stream.split(); let ws_sender = Arc::new(Mutex::new(ws_sender)); -while let Some(msg) = ws_receiver.next().await { - debug!("Received new WS RPC message: {:?}", msg); +async fn rpc_ws_handler(ws_stream: WebSocketConnection) { + while let Some(msg) = ws_receiver.next().await { + debug!("Received new WS RPC message: {:?}", msg); - let ws_sender = ws_sender.clone(); + let ws_sender = ws_sender.clone(); - async_std::task::spawn(async move { - let res = call_rpc(msg).await?; + async_std::task::spawn(async move { + let res = call_rpc(msg).await?; - match ws_sender.lock().await.send_string(res).await { - Ok(_) => info!("New WS data sent."), - Err(_) => warn!("WS connection closed."), - }; - }); + match ws_sender.lock().await.send_string(res).await { + Ok(_) => info!("New WS data sent."), + Err(_) => warn!("WS connection closed."), + }; + }); + } } ``` @@ -65,20 +67,22 @@ let ws_receiver = Arc::new(ws_receiver); let ws_stream = Arc::new(Mutex::new(ws_stream)); let poller_ws_stream = ws_stream.clone(); -async_std::task::spawn(async move { - while let Some(msg) = ws_receiver.next().await { - match poller_ws_stream.lock().await.send_string(msg).await { - Ok(msg) => info!("New WS data sent. {:?}", msg), - Err(msg) => warn!("WS connection closed. {:?}", msg), - }; - } -}); - -while let Some(msg) = ws_stream.lock().await.next().await { +async fn rpc_ws_handler(ws_stream: WebSocketConnection) { async_std::task::spawn(async move { - let res = call_rpc(msg).await?; - ws_sender.send(res); + while let Some(msg) = ws_receiver.next().await { + match poller_ws_stream.lock().await.send_string(msg).await { + Ok(msg) => info!("New WS data sent. {:?}", msg), + Err(msg) => warn!("WS connection closed. {:?}", msg), + }; + } }); + + while let Some(msg) = ws_stream.lock().await.next().await { + async_std::task::spawn(async move { + let res = call_rpc(msg).await?; + ws_sender.send(res); + }); + } } ``` From 1b66a32380ebac136931ee33c67b5fdcbc9b8ff5 Mon Sep 17 00:00:00 2001 From: Hunter Trujillo Date: Mon, 5 Apr 2021 16:48:36 -0600 Subject: [PATCH 028/347] lol whoops --- .../status_quo/alan_tries_a_socket_sink.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/vision/status_quo/alan_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md index a69d1037..f4a3eaa4 100644 --- a/src/vision/status_quo/alan_tries_a_socket_sink.md +++ b/src/vision/status_quo/alan_tries_a_socket_sink.md @@ -29,11 +29,10 @@ use futures::{SinkExt, StreamExt}; use async_std::sync::{Arc, Mutex}; use log::{debug, info, warn}; -/// In the connection handler: -let (ws_sender, mut ws_receiver) = ws_stream.split(); -let ws_sender = Arc::new(Mutex::new(ws_sender)); - async fn rpc_ws_handler(ws_stream: WebSocketConnection) { + let (ws_sender, mut ws_receiver) = ws_stream.split(); + let ws_sender = Arc::new(Mutex::new(ws_sender)); + while let Some(msg) = ws_receiver.next().await { debug!("Received new WS RPC message: {:?}", msg); @@ -60,14 +59,13 @@ use async_std::channel; use async_std::sync::{Arc, Mutex}; use log::{debug, info, warn}; -/// In the connection handler: -let (ws_sender, mut ws_receiver) = channel::unbounded::(); -let ws_receiver = Arc::new(ws_receiver); +async fn rpc_ws_handler(ws_stream: WebSocketConnection) { + let (ws_sender, mut ws_receiver) = channel::unbounded::(); + let ws_receiver = Arc::new(ws_receiver); -let ws_stream = Arc::new(Mutex::new(ws_stream)); -let poller_ws_stream = ws_stream.clone(); + let ws_stream = Arc::new(Mutex::new(ws_stream)); + let poller_ws_stream = ws_stream.clone(); -async fn rpc_ws_handler(ws_stream: WebSocketConnection) { async_std::task::spawn(async move { while let Some(msg) = ws_receiver.next().await { match poller_ws_stream.lock().await.send_string(msg).await { From 2774f93b35a14c485c985328dd3606337146d9ed Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 5 Apr 2021 18:54:35 -0400 Subject: [PATCH 029/347] run mdbook-mermaid install --- book.toml | 4 ++++ mermaid-init.js | 1 + mermaid.min.js | 32 ++++++++++++++++++++++++++++++++ src/vision.md | 8 ++++++++ 4 files changed, 45 insertions(+) create mode 100644 mermaid-init.js create mode 100644 mermaid.min.js diff --git a/book.toml b/book.toml index 104200b2..b9497680 100644 --- a/book.toml +++ b/book.toml @@ -11,7 +11,11 @@ edition = "2018" [output.html] site-url = "/wg-async-foundations/" git-repository-url = "https://github.com/rust-lang/wg-async-foundations" +additional-js =["mermaid.min.js", "mermaid-init.js"] [output.html.fold] enable = true level = 0 +[preprocessor] +[preprocessor.mermaid] +command = "mdbook-mermaid" diff --git a/mermaid-init.js b/mermaid-init.js new file mode 100644 index 00000000..313a6e8b --- /dev/null +++ b/mermaid-init.js @@ -0,0 +1 @@ +mermaid.initialize({startOnLoad:true}); diff --git a/mermaid.min.js b/mermaid.min.js new file mode 100644 index 00000000..14ef691f --- /dev/null +++ b/mermaid.min.js @@ -0,0 +1,32 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.mermaid=e():t.mermaid=e()}("undefined"!=typeof self?self:this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=383)}([function(t,e,n){"use strict";n.r(e);var r=function(t,e){return te?1:t>=e?0:NaN},i=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return r(e(t),n)}),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r>>1;t(e[a],n)<0?r=a+1:i=a}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r>>1;t(e[a],n)>0?i=a:r=a+1}return r}}};var a=i(r),o=a.right,s=a.left,c=o,u=function(t,e){null==e&&(e=l);for(var n=0,r=t.length-1,i=t[0],a=new Array(r<0?0:r);nt?1:e>=t?0:NaN},d=function(t){return null===t?NaN:+t},p=function(t,e){var n,r,i=t.length,a=0,o=-1,s=0,c=0;if(null==e)for(;++o1)return c/(a-1)},g=function(t,e){var n=p(t,e);return n?Math.sqrt(n):n},y=function(t,e){var n,r,i,a=t.length,o=-1;if(null==e){for(;++o=n)for(r=i=n;++on&&(r=n),i=n)for(r=i=n;++on&&(r=n),i0)return[t];if((r=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s=0?(a>=w?10:a>=E?5:a>=T?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=w?10:a>=E?5:a>=T?2:1)}function S(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=w?i*=10:a>=E?i*=5:a>=T&&(i*=2),eh;)f.pop(),--d;var p,g=new Array(d+1);for(i=0;i<=d;++i)(p=g[i]=[]).x0=i>0?f[i-1]:l,p.x1=i=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,a=Math.floor(i),o=+n(t[a],a,t);return o+(+n(t[a+1],a+1,t)-o)*(i-a)}},N=function(t,e,n){return t=b.call(t,d).sort(r),Math.ceil((n-e)/(2*(D(t,.75)-D(t,.25))*Math.pow(t.length,-1/3)))},B=function(t,e,n){return Math.ceil((n-e)/(3.5*g(t)*Math.pow(t.length,-1/3)))},L=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a=n)for(r=n;++ar&&(r=n)}else for(;++a=n)for(r=n;++ar&&(r=n);return r},F=function(t,e){var n,r=t.length,i=r,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(r=t[i]).length;--e>=0;)n[--o]=r[e];return n},j=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a=n)for(r=n;++an&&(r=n)}else for(;++a=n)for(r=n;++an&&(r=n);return r},R=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]];return r},Y=function(t,e){if(n=t.length){var n,i,a=0,o=0,s=t[o];for(null==e&&(e=r);++a=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function ct(t,e){for(var n,r=0,i=t.length;r0)for(var n,r,i=new Array(n),a=0;ae?1:t>=e?0:NaN}var _t="http://www.w3.org/1999/xhtml",kt={svg:"http://www.w3.org/2000/svg",xhtml:_t,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},wt=function(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),kt.hasOwnProperty(e)?{space:kt[e],local:t}:t};function Et(t){return function(){this.removeAttribute(t)}}function Tt(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ct(t,e){return function(){this.setAttribute(t,e)}}function At(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function St(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function Mt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}var Ot=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};function Dt(t){return function(){this.style.removeProperty(t)}}function Nt(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Bt(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Lt(t,e){return t.style.getPropertyValue(e)||Ot(t).getComputedStyle(t,null).getPropertyValue(e)}function Ft(t){return function(){delete this[t]}}function Pt(t,e){return function(){this[t]=e}}function It(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function jt(t){return t.trim().split(/^|\s+/)}function Rt(t){return t.classList||new Yt(t)}function Yt(t){this._node=t,this._names=jt(t.getAttribute("class")||"")}function zt(t,e){for(var n=Rt(t),r=-1,i=e.length;++r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Vt(){this.textContent=""}function Gt(t){return function(){this.textContent=t}}function qt(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function Xt(){this.innerHTML=""}function Zt(t){return function(){this.innerHTML=t}}function Jt(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function Kt(){this.nextSibling&&this.parentNode.appendChild(this)}function Qt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function te(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===_t&&e.documentElement.namespaceURI===_t?e.createElement(t):e.createElementNS(n,t)}}function ee(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}var ne=function(t){var e=wt(t);return(e.local?ee:te)(e)};function re(){return null}function ie(){var t=this.parentNode;t&&t.removeChild(this)}function ae(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function oe(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}var se={},ce=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(se={mouseenter:"mouseover",mouseleave:"mouseout"}));function ue(t,e,n){return t=le(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function le(t,e,n){return function(r){var i=ce;ce=r;try{t.call(this,this.__data__,e,n)}finally{ce=i}}}function he(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function fe(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r=_&&(_=x+1);!(b=v[_])&&++_=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=xt);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a1?this.each((null==e?Dt:"function"==typeof e?Bt:Nt)(t,e,null==n?"":n)):Lt(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?Ft:"function"==typeof e?It:Pt)(t,e)):this.node()[t]},classed:function(t,e){var n=jt(t+"");if(arguments.length<2){for(var r=Rt(this.node()),i=-1,a=n.length;++i>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?new qe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?new qe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Le.exec(t))?new qe(e[1],e[2],e[3],1):(e=Fe.exec(t))?new qe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Pe.exec(t))?He(e[1],e[2],e[3],e[4]):(e=Ie.exec(t))?He(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=je.exec(t))?Ke(e[1],e[2]/100,e[3]/100,1):(e=Re.exec(t))?Ke(e[1],e[2]/100,e[3]/100,e[4]):Ye.hasOwnProperty(t)?We(Ye[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function We(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function He(t,e,n,r){return r<=0&&(t=e=n=NaN),new qe(t,e,n,r)}function Ve(t){return t instanceof Me||(t=$e(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function Ge(t,e,n,r){return 1===arguments.length?Ve(t):new qe(t,e,n,null==r?1:r)}function qe(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function Xe(){return"#"+Je(this.r)+Je(this.g)+Je(this.b)}function Ze(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Je(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Ke(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new en(t,e,n,r)}function Qe(t){if(t instanceof en)return new en(t.h,t.s,t.l,t.opacity);if(t instanceof Me||(t=$e(t)),!t)return new en;if(t instanceof en)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n0&&c<1?0:o,new en(o,s,c,t.opacity)}function tn(t,e,n,r){return 1===arguments.length?Qe(t):new en(t,e,n,null==r?1:r)}function en(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function nn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function rn(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}Ae(Me,$e,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:ze,formatHex:ze,formatHsl:function(){return Qe(this).formatHsl()},formatRgb:Ue,toString:Ue}),Ae(qe,Ge,Se(Me,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Xe,formatHex:Xe,formatRgb:Ze,toString:Ze})),Ae(en,tn,Se(Me,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new en(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new en(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new qe(nn(t>=240?t-240:t+120,i,r),nn(t,i,r),nn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var an=function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=r180||n<-180?n-360*Math.round(n/360):n):sn(isNaN(t)?e:t)}function ln(t){return 1==(t=+t)?hn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):sn(isNaN(e)?n:e)}}function hn(t,e){var n=e-t;return n?cn(t,n):sn(isNaN(t)?e:t)}var fn=function t(e){var n=ln(e);function r(t,e){var r=n((t=Ge(t)).r,(e=Ge(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=hn(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function dn(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;na&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,c.push({i:o,x:_n(n,r)})),a=En.lastIndex;return a=0&&e._call.call(null,t),e=e._next;--Bn}function Vn(){In=(Pn=Rn.now())+jn,Bn=Ln=0;try{Hn()}finally{Bn=0,function(){var t,e,n=Tn,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Tn=e);Cn=t,qn(r)}(),In=0}}function Gn(){var t=Rn.now(),e=t-Pn;e>1e3&&(jn-=e,Pn=t)}function qn(t){Bn||(Ln&&(Ln=clearTimeout(Ln)),t-In>24?(t<1/0&&(Ln=setTimeout(Vn,t-Rn.now()-jn)),Fn&&(Fn=clearInterval(Fn))):(Fn||(Pn=Rn.now(),Fn=setInterval(Gn,1e3)),Bn=1,Yn(Vn)))}$n.prototype=Wn.prototype={constructor:$n,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?zn():+n)+(null==e?0:+e),this._next||Cn===this||(Cn?Cn._next=this:Tn=this,Cn=this),this._call=t,this._time=n,qn()},stop:function(){this._call&&(this._call=null,this._time=1/0,qn())}};var Xn=function(t,e,n){var r=new $n;return e=null==e?0:+e,r.restart((function(n){r.stop(),t(n+e)}),e,n),r},Zn=lt("start","end","cancel","interrupt"),Jn=[],Kn=function(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(c){var u,l,h,f;if(1!==n.state)return s();for(u in i)if((f=i[u]).name===n.name){if(3===f.state)return Xn(a);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[u]):+u0)throw new Error("too late; already scheduled");return n}function tr(t,e){var n=er(t,e);if(n.state>3)throw new Error("too late; already running");return n}function er(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}var nr,rr,ir,ar,or=function(t,e){var n,r,i,a=t.__transition,o=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}},sr=180/Math.PI,cr={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},ur=function(t,e,n,r,i,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:_n(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,c),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:_n(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,c),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:_n(t,n)},{i:s-2,x:_n(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,c),a=o=null,function(t){for(var e,n=-1,r=c.length;++n=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Qn:tr;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var Br=_e.prototype.constructor;function Lr(t){return function(){this.style.removeProperty(t)}}function Fr(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function Pr(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&Fr(t,a,n)),r}return a._value=e,a}function Ir(t){return function(e){this.textContent=t.call(this,e)}}function jr(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&Ir(r)),e}return r._value=t,r}var Rr=0;function Yr(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function zr(t){return _e().transition(t)}function Ur(){return++Rr}var $r=_e.prototype;function Wr(t){return t*t*t}function Hr(t){return--t*t*t+1}function Vr(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}Yr.prototype=zr.prototype={constructor:Yr,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=ft(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o1&&n.name===e)return new Yr([[t]],Xr,e,+r);return null},Jr=function(t){return function(){return t}},Kr=function(t,e,n){this.target=t,this.type=e,this.selection=n};function Qr(){ce.stopImmediatePropagation()}var ti=function(){ce.preventDefault(),ce.stopImmediatePropagation()},ei={name:"drag"},ni={name:"space"},ri={name:"handle"},ii={name:"center"};function ai(t){return[+t[0],+t[1]]}function oi(t){return[ai(t[0]),ai(t[1])]}function si(t){return function(e){return Dn(e,ce.touches,t)}}var ci={name:"x",handles:["w","e"].map(yi),input:function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},ui={name:"y",handles:["n","s"].map(yi),input:function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},li={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(yi),input:function(t){return null==t?null:oi(t)},output:function(t){return t}},hi={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},fi={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},di={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},pi={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},gi={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function yi(t){return{type:t}}function vi(){return!ce.ctrlKey&&!ce.button}function mi(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function bi(){return navigator.maxTouchPoints||"ontouchstart"in this}function xi(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function _i(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function ki(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function wi(){return Ci(ci)}function Ei(){return Ci(ui)}var Ti=function(){return Ci(li)};function Ci(t){var e,n=mi,r=vi,i=bi,a=!0,o=lt("start","brush","end"),s=6;function c(e){var n=e.property("__brush",g).selectAll(".overlay").data([yi("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",hi.overlay).merge(n).each((function(){var t=xi(this).extent;ke(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),e.selectAll(".selection").data([yi("selection")]).enter().append("rect").attr("class","selection").attr("cursor",hi.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=e.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return hi[t.type]})),e.each(u).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",f).filter(i).on("touchstart.brush",f).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function u(){var t=ke(this),e=xi(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?e[1][0]-s/2:e[0][0]-s/2})).attr("y",(function(t){return"s"===t.type[0]?e[1][1]-s/2:e[0][1]-s/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+s:s})).attr("height",(function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+s:s}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function l(t,e,n){return!n&&t.__brush.emitter||new h(t,e)}function h(t,e){this.that=t,this.args=e,this.state=t.__brush,this.active=0}function f(){if((!e||ce.touches)&&r.apply(this,arguments)){var n,i,o,s,c,h,f,d,p,g,y,v=this,m=ce.target.__data__.type,b="selection"===(a&&ce.metaKey?m="overlay":m)?ei:a&&ce.altKey?ii:ri,x=t===ui?null:pi[m],_=t===ci?null:gi[m],k=xi(v),w=k.extent,E=k.selection,T=w[0][0],C=w[0][1],A=w[1][0],S=w[1][1],M=0,O=0,D=x&&_&&a&&ce.shiftKey,N=ce.touches?si(ce.changedTouches[0].identifier):Nn,B=N(v),L=B,F=l(v,arguments,!0).beforestart();"overlay"===m?(E&&(p=!0),k.selection=E=[[n=t===ui?T:B[0],o=t===ci?C:B[1]],[c=t===ui?A:n,f=t===ci?S:o]]):(n=E[0][0],o=E[0][1],c=E[1][0],f=E[1][1]),i=n,s=o,h=c,d=f;var P=ke(v).attr("pointer-events","none"),I=P.selectAll(".overlay").attr("cursor",hi[m]);if(ce.touches)F.moved=R,F.ended=z;else{var j=ke(ce.view).on("mousemove.brush",R,!0).on("mouseup.brush",z,!0);a&&j.on("keydown.brush",U,!0).on("keyup.brush",$,!0),Te(ce.view)}Qr(),or(v),u.call(v),F.start()}function R(){var t=N(v);!D||g||y||(Math.abs(t[0]-L[0])>Math.abs(t[1]-L[1])?y=!0:g=!0),L=t,p=!0,ti(),Y()}function Y(){var t;switch(M=L[0]-B[0],O=L[1]-B[1],b){case ni:case ei:x&&(M=Math.max(T-n,Math.min(A-c,M)),i=n+M,h=c+M),_&&(O=Math.max(C-o,Math.min(S-f,O)),s=o+O,d=f+O);break;case ri:x<0?(M=Math.max(T-n,Math.min(A-n,M)),i=n+M,h=c):x>0&&(M=Math.max(T-c,Math.min(A-c,M)),i=n,h=c+M),_<0?(O=Math.max(C-o,Math.min(S-o,O)),s=o+O,d=f):_>0&&(O=Math.max(C-f,Math.min(S-f,O)),s=o,d=f+O);break;case ii:x&&(i=Math.max(T,Math.min(A,n-M*x)),h=Math.max(T,Math.min(A,c+M*x))),_&&(s=Math.max(C,Math.min(S,o-O*_)),d=Math.max(C,Math.min(S,f+O*_)))}h0&&(n=i-M),_<0?f=d-O:_>0&&(o=s-O),b=ni,I.attr("cursor",hi.selection),Y());break;default:return}ti()}function $(){switch(ce.keyCode){case 16:D&&(g=y=D=!1,Y());break;case 18:b===ii&&(x<0?c=h:x>0&&(n=i),_<0?f=d:_>0&&(o=s),b=ri,Y());break;case 32:b===ni&&(ce.altKey?(x&&(c=h-M*x,n=i+M*x),_&&(f=d-O*_,o=s+O*_),b=ii):(x<0?c=h:x>0&&(n=i),_<0?f=d:_>0&&(o=s),b=ri),I.attr("cursor",hi[m]),Y());break;default:return}ti()}}function d(){l(this,arguments).moved()}function p(){l(this,arguments).ended()}function g(){var e=this.__brush||{selection:null};return e.extent=oi(n.apply(this,arguments)),e.dim=t,e}return c.move=function(e,n){e.selection?e.on("start.brush",(function(){l(this,arguments).beforestart().start()})).on("interrupt.brush end.brush",(function(){l(this,arguments).end()})).tween("brush",(function(){var e=this,r=e.__brush,i=l(e,arguments),a=r.selection,o=t.input("function"==typeof n?n.apply(this,arguments):n,r.extent),s=Sn(a,o);function c(t){r.selection=1===t&&null===o?null:s(t),u.call(e),i.brush()}return null!==a&&null!==o?c:c(1)})):e.each((function(){var e=this,r=arguments,i=e.__brush,a=t.input("function"==typeof n?n.apply(e,r):n,i.extent),o=l(e,r).beforestart();or(e),i.selection=null===a?null:a,u.call(e),o.start().brush().end()}))},c.clear=function(t){c.move(t,null)},h.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(e){pe(new Kr(c,e,t.output(this.state.selection)),o.apply,o,[e,this.that,this.args])}},c.extent=function(t){return arguments.length?(n="function"==typeof t?t:Jr(oi(t)),c):n},c.filter=function(t){return arguments.length?(r="function"==typeof t?t:Jr(!!t),c):r},c.touchable=function(t){return arguments.length?(i="function"==typeof t?t:Jr(!!t),c):i},c.handleSize=function(t){return arguments.length?(s=+t,c):s},c.keyModifiers=function(t){return arguments.length?(a=!!t,c):a},c.on=function(){var t=o.on.apply(o,arguments);return t===o?c:t},c}var Ai=Math.cos,Si=Math.sin,Mi=Math.PI,Oi=Mi/2,Di=2*Mi,Ni=Math.max;function Bi(t){return function(e,n){return t(e.source.value+e.target.value,n.source.value+n.target.value)}}var Li=function(){var t=0,e=null,n=null,r=null;function i(i){var a,o,s,c,u,l,h=i.length,f=[],d=k(h),p=[],g=[],y=g.groups=new Array(h),v=new Array(h*h);for(a=0,u=-1;++u1e-6)if(Math.abs(l*s-c*u)>1e-6&&i){var f=n-a,d=r-o,p=s*s+c*c,g=f*f+d*d,y=Math.sqrt(p),v=Math.sqrt(h),m=i*Math.tan((Ii-Math.acos((p+h-g)/(2*y*v)))/2),b=m/v,x=m/y;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*u)+","+(e+b*l)),this._+="A"+i+","+i+",0,0,"+ +(l*f>u*d)+","+(this._x1=t+x*s)+","+(this._y1=e+x*c)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,r,i,a){t=+t,e=+e,a=!!a;var o=(n=+n)*Math.cos(r),s=n*Math.sin(r),c=t+o,u=e+s,l=1^a,h=a?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+c+","+u:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-u)>1e-6)&&(this._+="L"+c+","+u),n&&(h<0&&(h=h%ji+ji),h>Ri?this._+="A"+n+","+n+",0,1,"+l+","+(t-o)+","+(e-s)+"A"+n+","+n+",0,1,"+l+","+(this._x1=c)+","+(this._y1=u):h>1e-6&&(this._+="A"+n+","+n+",0,"+ +(h>=Ii)+","+l+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var Ui=zi;function $i(t){return t.source}function Wi(t){return t.target}function Hi(t){return t.radius}function Vi(t){return t.startAngle}function Gi(t){return t.endAngle}var qi=function(){var t=$i,e=Wi,n=Hi,r=Vi,i=Gi,a=null;function o(){var o,s=Fi.call(arguments),c=t.apply(this,s),u=e.apply(this,s),l=+n.apply(this,(s[0]=c,s)),h=r.apply(this,s)-Oi,f=i.apply(this,s)-Oi,d=l*Ai(h),p=l*Si(h),g=+n.apply(this,(s[0]=u,s)),y=r.apply(this,s)-Oi,v=i.apply(this,s)-Oi;if(a||(a=o=Ui()),a.moveTo(d,p),a.arc(0,0,l,h,f),h===y&&f===v||(a.quadraticCurveTo(0,0,g*Ai(y),g*Si(y)),a.arc(0,0,g,y,v)),a.quadraticCurveTo(0,0,d,p),a.closePath(),o)return a=null,o+""||null}return o.radius=function(t){return arguments.length?(n="function"==typeof t?t:Pi(+t),o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:Pi(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:Pi(+t),o):i},o.source=function(e){return arguments.length?(t=e,o):t},o.target=function(t){return arguments.length?(e=t,o):e},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o};function Xi(){}function Zi(t,e){var n=new Xi;if(t instanceof Xi)t.each((function(t,e){n.set(e,t)}));else if(Array.isArray(t)){var r,i=-1,a=t.length;if(null==e)for(;++i=r.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var c,u,l,h=-1,f=n.length,d=r[i++],p=Ji(),g=o();++hr.length)return n;var o,s=i[a-1];return null!=e&&a>=r.length?o=n.entries():(o=[],n.each((function(e,n){o.push({key:n,values:t(e,a)})}))),null!=s?o.sort((function(t,e){return s(t.key,e.key)})):o}(a(t,0,ea,na),0)},key:function(t){return r.push(t),n},sortKeys:function(t){return i[r.length-1]=t,n},sortValues:function(e){return t=e,n},rollup:function(t){return e=t,n}}};function Qi(){return{}}function ta(t,e,n){t[e]=n}function ea(){return Ji()}function na(t,e,n){t.set(e,n)}function ra(){}var ia=Ji.prototype;function aa(t,e){var n=new ra;if(t instanceof ra)t.each((function(t){n.add(t)}));else if(t){var r=-1,i=t.length;if(null==e)for(;++r6/29*(6/29)*(6/29)?Math.pow(t,1/3):t/(6/29*3*(6/29))+4/29}function va(t){return t>6/29?t*t*t:6/29*3*(6/29)*(t-4/29)}function ma(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ba(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function xa(t){if(t instanceof wa)return new wa(t.h,t.c,t.l,t.opacity);if(t instanceof ga||(t=fa(t)),0===t.a&&0===t.b)return new wa(NaN,0r!=d>r&&n<(f-u)*(r-l)/(d-l)+u&&(i=-i)}return i}function Ia(t,e,n){var r,i,a,o;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[r=+(t[0]===e[0])],a=n[r],o=e[r],i<=a&&a<=o||o<=a&&a<=i)}var ja=function(){},Ra=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]],Ya=function(){var t=1,e=1,n=M,r=s;function i(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort(Ba);else{var r=y(t),i=r[0],o=r[1];e=S(i,o,e),e=k(Math.floor(i/e)*e,Math.floor(o/e)*e,e)}return e.map((function(e){return a(t,e)}))}function a(n,i){var a=[],s=[];return function(n,r,i){var a,s,c,u,l,h,f=new Array,d=new Array;a=s=-1,u=n[0]>=r,Ra[u<<1].forEach(p);for(;++a=r,Ra[c|u<<1].forEach(p);Ra[u<<0].forEach(p);for(;++s=r,l=n[s*t]>=r,Ra[u<<1|l<<2].forEach(p);++a=r,h=l,l=n[s*t+a+1]>=r,Ra[c|u<<1|l<<2|h<<3].forEach(p);Ra[u|l<<3].forEach(p)}a=-1,l=n[s*t]>=r,Ra[l<<2].forEach(p);for(;++a=r,Ra[l<<2|h<<3].forEach(p);function p(t){var e,n,r=[t[0][0]+a,t[0][1]+s],c=[t[1][0]+a,t[1][1]+s],u=o(r),l=o(c);(e=d[u])?(n=f[l])?(delete d[e.end],delete f[n.start],e===n?(e.ring.push(c),i(e.ring)):f[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete d[e.end],e.ring.push(c),d[e.end=l]=e):(e=f[l])?(n=d[u])?(delete f[e.start],delete d[n.end],e===n?(e.ring.push(c),i(e.ring)):f[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete f[e.start],e.ring.unshift(r),f[e.start=u]=e):f[u]=d[l]={start:u,end:l,ring:[r,c]}}Ra[l<<3].forEach(p)}(n,i,(function(t){r(t,n,i),function(t){for(var e=0,n=t.length,r=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];++e0?a.push([t]):s.push(t)})),s.forEach((function(t){for(var e,n=0,r=a.length;n0&&o0&&s0&&a>0))throw new Error("invalid size");return t=r,e=a,i},i.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?La(Na.call(t)):La(t),i):n},i.smooth=function(t){return arguments.length?(r=t?s:ja,i):r===s},i};function za(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o=n&&(s>=a&&(c-=t.data[s-a+o*r]),e.data[s-n+o*r]=c/Math.min(s+1,r-1+a-s,a))}function Ua(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o=n&&(s>=a&&(c-=t.data[o+(s-a)*r]),e.data[o+(s-n)*r]=c/Math.min(s+1,i-1+a-s,a))}function $a(t){return t[0]}function Wa(t){return t[1]}function Ha(){return 1}var Va=function(){var t=$a,e=Wa,n=Ha,r=960,i=500,a=20,o=2,s=3*a,c=r+2*s>>o,u=i+2*s>>o,l=La(20);function h(r){var i=new Float32Array(c*u),h=new Float32Array(c*u);r.forEach((function(r,a,l){var h=+t(r,a,l)+s>>o,f=+e(r,a,l)+s>>o,d=+n(r,a,l);h>=0&&h=0&&f>o),Ua({width:c,height:u,data:h},{width:c,height:u,data:i},a>>o),za({width:c,height:u,data:i},{width:c,height:u,data:h},a>>o),Ua({width:c,height:u,data:h},{width:c,height:u,data:i},a>>o),za({width:c,height:u,data:i},{width:c,height:u,data:h},a>>o),Ua({width:c,height:u,data:h},{width:c,height:u,data:i},a>>o);var d=l(i);if(!Array.isArray(d)){var p=L(i);d=S(0,p,d),(d=k(0,Math.floor(p/d)*d,d)).shift()}return Ya().thresholds(d).size([c,u])(i).map(f)}function f(t){return t.value*=Math.pow(2,-2*o),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,o)-s,t[1]=t[1]*Math.pow(2,o)-s}function y(){return c=r+2*(s=3*a)>>o,u=i+2*s>>o,h}return h.x=function(e){return arguments.length?(t="function"==typeof e?e:La(+e),h):t},h.y=function(t){return arguments.length?(e="function"==typeof t?t:La(+t),h):e},h.weight=function(t){return arguments.length?(n="function"==typeof t?t:La(+t),h):n},h.size=function(t){if(!arguments.length)return[r,i];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return r=e,i=n,y()},h.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(t)/Math.LN2),y()},h.thresholds=function(t){return arguments.length?(l="function"==typeof t?t:Array.isArray(t)?La(Na.call(t)):La(t),h):l},h.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},h},Ga=function(t){return function(){return t}};function qa(t,e,n,r,i,a,o,s,c,u){this.target=t,this.type=e,this.subject=n,this.identifier=r,this.active=i,this.x=a,this.y=o,this.dx=s,this.dy=c,this._=u}function Xa(){return!ce.ctrlKey&&!ce.button}function Za(){return this.parentNode}function Ja(t){return null==t?{x:ce.x,y:ce.y}:t}function Ka(){return navigator.maxTouchPoints||"ontouchstart"in this}qa.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var Qa=function(){var t,e,n,r,i=Xa,a=Za,o=Ja,s=Ka,c={},u=lt("start","drag","end"),l=0,h=0;function f(t){t.on("mousedown.drag",d).filter(s).on("touchstart.drag",y).on("touchmove.drag",v).on("touchend.drag touchcancel.drag",m).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(){if(!r&&i.apply(this,arguments)){var o=b("mouse",a.apply(this,arguments),Nn,this,arguments);o&&(ke(ce.view).on("mousemove.drag",p,!0).on("mouseup.drag",g,!0),Te(ce.view),we(),n=!1,t=ce.clientX,e=ce.clientY,o("start"))}}function p(){if(Ee(),!n){var r=ce.clientX-t,i=ce.clientY-e;n=r*r+i*i>h}c.mouse("drag")}function g(){ke(ce.view).on("mousemove.drag mouseup.drag",null),Ce(ce.view,n),Ee(),c.mouse("end")}function y(){if(i.apply(this,arguments)){var t,e,n=ce.changedTouches,r=a.apply(this,arguments),o=n.length;for(t=0;t9999?"+"+io(e,6):io(e,4))+"-"+io(t.getUTCMonth()+1,2)+"-"+io(t.getUTCDate(),2)+(a?"T"+io(n,2)+":"+io(r,2)+":"+io(i,2)+"."+io(a,3)+"Z":i?"T"+io(n,2)+":"+io(r,2)+":"+io(i,2)+"Z":r||n?"T"+io(n,2)+":"+io(r,2)+"Z":"")}var oo=function(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function r(t,e){var r,i=[],a=t.length,o=0,s=0,c=a<=0,u=!1;function l(){if(c)return eo;if(u)return u=!1,to;var e,r,i=o;if(34===t.charCodeAt(i)){for(;o++=a?c=!0:10===(r=t.charCodeAt(o++))?u=!0:13===r&&(u=!0,10===t.charCodeAt(o)&&++o),t.slice(i+1,e-1).replace(/""/g,'"')}for(;o=(a=(g+v)/2))?g=a:v=a,(l=n>=(o=(y+m)/2))?y=o:m=o,i=d,!(d=d[h=l<<1|u]))return i[h]=p,t;if(s=+t._x.call(null,d.data),c=+t._y.call(null,d.data),e===s&&n===c)return p.next=d,i?i[h]=p:t._root=p,t;do{i=i?i[h]=new Array(4):t._root=new Array(4),(u=e>=(a=(g+v)/2))?g=a:v=a,(l=n>=(o=(y+m)/2))?y=o:m=o}while((h=l<<1|u)==(f=(c>=o)<<1|s>=a));return i[f]=d,i[h]=p,t}var _s=function(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i};function ks(t){return t[0]}function ws(t){return t[1]}function Es(t,e,n){var r=new Ts(null==e?ks:e,null==n?ws:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Ts(t,e,n,r,i,a){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function Cs(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var As=Es.prototype=Ts.prototype;function Ss(t){return t.x+t.vx}function Ms(t){return t.y+t.vy}As.copy=function(){var t,e,n=new Ts(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=Cs(r),n;for(t=[{source:r,target:n._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(e=r.source[i])&&(e.length?t.push({source:e,target:r.target[i]=new Array(4)}):r.target[i]=Cs(e));return n},As.add=function(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return xs(this.cover(e,n),e,n,t)},As.addAll=function(t){var e,n,r,i,a=t.length,o=new Array(a),s=new Array(a),c=1/0,u=1/0,l=-1/0,h=-1/0;for(n=0;nl&&(l=r),ih&&(h=i));if(c>l||u>h)return this;for(this.cover(c,u).cover(l,h),n=0;nt||t>=i||r>e||e>=a;)switch(s=(ef||(a=c.y0)>d||(o=c.x1)=v)<<1|t>=y)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-u],p[p.length-1-u]=c)}else{var m=t-+this._x.call(null,g.data),b=e-+this._y.call(null,g.data),x=m*m+b*b;if(x=(s=(p+y)/2))?p=s:y=s,(l=o>=(c=(g+v)/2))?g=c:v=c,e=d,!(d=d[h=l<<1|u]))return this;if(!d.length)break;(e[h+1&3]||e[h+2&3]||e[h+3&3])&&(n=e,f=h)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[h]=i:delete e[h],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[f]=d:this._root=d),this):(this._root=i,this)},As.removeAll=function(t){for(var e=0,n=t.length;ec+d||iu+d||as.index){var p=c-o.x-o.vx,g=u-o.y-o.vy,y=p*p+g*g;yt.r&&(t.r=t[e].r)}function s(){if(e){var r,i,a=e.length;for(n=new Array(a),r=0;r1?(null==n?s.remove(t):s.set(t,d(n)),e):s.get(t)},find:function(e,n,r){var i,a,o,s,c,u=0,l=t.length;for(null==r?r=1/0:r*=r,u=0;u1?(u.on(t,n),e):u.on(t)}}},js=function(){var t,e,n,r,i=ms(-30),a=1,o=1/0,s=.81;function c(r){var i,a=t.length,o=Es(t,Ls,Fs).visitAfter(l);for(n=r,i=0;i=o)){(t.data!==e||t.next)&&(0===l&&(d+=(l=bs())*l),0===h&&(d+=(h=bs())*h),d1?r[0]+r.slice(2):r,+t.slice(n+1)]},$s=function(t){return(t=Us(Math.abs(t)))?t[1]:NaN},Ws=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Hs(t){if(!(e=Ws.exec(t)))throw new Error("invalid format: "+t);var e;return new Vs({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Vs(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}Hs.prototype=Vs.prototype,Vs.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Gs,qs,Xs,Zs,Js=function(t,e){var n=Us(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},Ks={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return Js(100*t,e)},r:Js,s:function(t,e){var n=Us(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(Gs=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Us(t,Math.max(0,e+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},Qs=function(t){return t},tc=Array.prototype.map,ec=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],nc=function(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Qs:(e=tc.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(t.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Qs:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(tc.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",u=void 0===t.minus?"-":t.minus+"",l=void 0===t.nan?"NaN":t.nan+"";function h(t){var e=(t=Hs(t)).fill,n=t.align,h=t.sign,f=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,v=t.trim,m=t.type;"n"===m?(g=!0,m="g"):Ks[m]||(void 0===y&&(y=12),v=!0,m="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===f?i:"#"===f&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",x="$"===f?a:/[%p]/.test(m)?c:"",_=Ks[m],k=/[defgprs%]/.test(m);function w(t){var i,a,c,f=b,w=x;if("c"===m)w=_(t)+w,t="";else{var E=(t=+t)<0;if(t=isNaN(t)?l:_(Math.abs(t),y),v&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),E&&0==+t&&(E=!1),f=(E?"("===h?h:u:"-"===h||"("===h?"":h)+f,w=("s"===m?ec[8+Gs/3]:"")+w+(E&&"("===h?")":""),k)for(i=-1,a=t.length;++i(c=t.charCodeAt(i))||c>57){w=(46===c?o+t.slice(i+1):t.slice(i))+w,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var T=f.length+t.length+w.length,C=T>1)+f+t+w+C.slice(T);break;default:t=C+f+t+w}return s(t)}return y=void 0===y?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),w.toString=function(){return t+""},w}return{format:h,formatPrefix:function(t,e){var n=h(((t=Hs(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor($s(e)/3))),i=Math.pow(10,-r),a=ec[8+r/3];return function(t){return n(i*t)+a}}}};function rc(t){return qs=nc(t),Xs=qs.format,Zs=qs.formatPrefix,qs}rc({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"});var ic=function(t){return Math.max(0,-$s(Math.abs(t)))},ac=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor($s(e)/3)))-$s(Math.abs(t)))},oc=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,$s(e)-$s(t))+1},sc=function(){return new cc};function cc(){this.reset()}cc.prototype={constructor:cc,reset:function(){this.s=this.t=0},add:function(t){lc(uc,t,this.t),lc(this,uc.s,this.s),this.s?this.t+=uc.t:this.s=uc.t},valueOf:function(){return this.s}};var uc=new cc;function lc(t,e,n){var r=t.s=e+n,i=r-e,a=r-i;t.t=e-a+(n-i)}var hc=Math.PI,fc=hc/2,dc=hc/4,pc=2*hc,gc=180/hc,yc=hc/180,vc=Math.abs,mc=Math.atan,bc=Math.atan2,xc=Math.cos,_c=Math.ceil,kc=Math.exp,wc=(Math.floor,Math.log),Ec=Math.pow,Tc=Math.sin,Cc=Math.sign||function(t){return t>0?1:t<0?-1:0},Ac=Math.sqrt,Sc=Math.tan;function Mc(t){return t>1?0:t<-1?hc:Math.acos(t)}function Oc(t){return t>1?fc:t<-1?-fc:Math.asin(t)}function Dc(t){return(t=Tc(t/2))*t}function Nc(){}function Bc(t,e){t&&Fc.hasOwnProperty(t.type)&&Fc[t.type](t,e)}var Lc={Feature:function(t,e){Bc(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r=0?1:-1,i=r*n,a=xc(e=(e*=yc)/2+dc),o=Tc(e),s=Uc*o,c=zc*a+s*xc(i),u=s*r*Tc(i);Wc.add(bc(u,c)),Yc=t,zc=a,Uc=o}var Jc=function(t){return Hc.reset(),$c(t,Vc),2*Hc};function Kc(t){return[bc(t[1],t[0]),Oc(t[2])]}function Qc(t){var e=t[0],n=t[1],r=xc(n);return[r*xc(e),r*Tc(e),Tc(n)]}function tu(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function eu(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function nu(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function ru(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function iu(t){var e=Ac(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var au,ou,su,cu,uu,lu,hu,fu,du,pu,gu=sc(),yu={point:vu,lineStart:bu,lineEnd:xu,polygonStart:function(){yu.point=_u,yu.lineStart=ku,yu.lineEnd=wu,gu.reset(),Vc.polygonStart()},polygonEnd:function(){Vc.polygonEnd(),yu.point=vu,yu.lineStart=bu,yu.lineEnd=xu,Wc<0?(au=-(su=180),ou=-(cu=90)):gu>1e-6?cu=90:gu<-1e-6&&(ou=-90),pu[0]=au,pu[1]=su},sphere:function(){au=-(su=180),ou=-(cu=90)}};function vu(t,e){du.push(pu=[au=t,su=t]),ecu&&(cu=e)}function mu(t,e){var n=Qc([t*yc,e*yc]);if(fu){var r=eu(fu,n),i=eu([r[1],-r[0],0],r);iu(i),i=Kc(i);var a,o=t-uu,s=o>0?1:-1,c=i[0]*gc*s,u=vc(o)>180;u^(s*uucu&&(cu=a):u^(s*uu<(c=(c+360)%360-180)&&ccu&&(cu=e)),u?tEu(au,su)&&(su=t):Eu(t,su)>Eu(au,su)&&(au=t):su>=au?(tsu&&(su=t)):t>uu?Eu(au,t)>Eu(au,su)&&(su=t):Eu(t,su)>Eu(au,su)&&(au=t)}else du.push(pu=[au=t,su=t]);ecu&&(cu=e),fu=n,uu=t}function bu(){yu.point=mu}function xu(){pu[0]=au,pu[1]=su,yu.point=vu,fu=null}function _u(t,e){if(fu){var n=t-uu;gu.add(vc(n)>180?n+(n>0?360:-360):n)}else lu=t,hu=e;Vc.point(t,e),mu(t,e)}function ku(){Vc.lineStart()}function wu(){_u(lu,hu),Vc.lineEnd(),vc(gu)>1e-6&&(au=-(su=180)),pu[0]=au,pu[1]=su,fu=null}function Eu(t,e){return(e-=t)<0?e+360:e}function Tu(t,e){return t[0]-e[0]}function Cu(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:eEu(r[0],r[1])&&(r[1]=i[1]),Eu(i[0],r[1])>Eu(r[0],r[1])&&(r[0]=i[0])):a.push(r=i);for(o=-1/0,e=0,r=a[n=a.length-1];e<=n;r=i,++e)i=a[e],(s=Eu(r[1],i[0]))>o&&(o=s,au=i[0],su=r[1])}return du=pu=null,au===1/0||ou===1/0?[[NaN,NaN],[NaN,NaN]]:[[au,ou],[su,cu]]},Wu={sphere:Nc,point:Hu,lineStart:Gu,lineEnd:Zu,polygonStart:function(){Wu.lineStart=Ju,Wu.lineEnd=Ku},polygonEnd:function(){Wu.lineStart=Gu,Wu.lineEnd=Zu}};function Hu(t,e){t*=yc;var n=xc(e*=yc);Vu(n*xc(t),n*Tc(t),Tc(e))}function Vu(t,e,n){++Au,Mu+=(t-Mu)/Au,Ou+=(e-Ou)/Au,Du+=(n-Du)/Au}function Gu(){Wu.point=qu}function qu(t,e){t*=yc;var n=xc(e*=yc);Yu=n*xc(t),zu=n*Tc(t),Uu=Tc(e),Wu.point=Xu,Vu(Yu,zu,Uu)}function Xu(t,e){t*=yc;var n=xc(e*=yc),r=n*xc(t),i=n*Tc(t),a=Tc(e),o=bc(Ac((o=zu*a-Uu*i)*o+(o=Uu*r-Yu*a)*o+(o=Yu*i-zu*r)*o),Yu*r+zu*i+Uu*a);Su+=o,Nu+=o*(Yu+(Yu=r)),Bu+=o*(zu+(zu=i)),Lu+=o*(Uu+(Uu=a)),Vu(Yu,zu,Uu)}function Zu(){Wu.point=Hu}function Ju(){Wu.point=Qu}function Ku(){tl(ju,Ru),Wu.point=Hu}function Qu(t,e){ju=t,Ru=e,t*=yc,e*=yc,Wu.point=tl;var n=xc(e);Yu=n*xc(t),zu=n*Tc(t),Uu=Tc(e),Vu(Yu,zu,Uu)}function tl(t,e){t*=yc;var n=xc(e*=yc),r=n*xc(t),i=n*Tc(t),a=Tc(e),o=zu*a-Uu*i,s=Uu*r-Yu*a,c=Yu*i-zu*r,u=Ac(o*o+s*s+c*c),l=Oc(u),h=u&&-l/u;Fu+=h*o,Pu+=h*s,Iu+=h*c,Su+=l,Nu+=l*(Yu+(Yu=r)),Bu+=l*(zu+(zu=i)),Lu+=l*(Uu+(Uu=a)),Vu(Yu,zu,Uu)}var el=function(t){Au=Su=Mu=Ou=Du=Nu=Bu=Lu=Fu=Pu=Iu=0,$c(t,Wu);var e=Fu,n=Pu,r=Iu,i=e*e+n*n+r*r;return i<1e-12&&(e=Nu,n=Bu,r=Lu,Su<1e-6&&(e=Mu,n=Ou,r=Du),(i=e*e+n*n+r*r)<1e-12)?[NaN,NaN]:[bc(n,e)*gc,Oc(r/Ac(i))*gc]},nl=function(t){return function(){return t}},rl=function(t,e){function n(n,r){return n=t(n,r),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,r){return(n=e.invert(n,r))&&t.invert(n[0],n[1])}),n};function il(t,e){return[vc(t)>hc?t+Math.round(-t/pc)*pc:t,e]}function al(t,e,n){return(t%=pc)?e||n?rl(sl(t),cl(e,n)):sl(t):e||n?cl(e,n):il}function ol(t){return function(e,n){return[(e+=t)>hc?e-pc:e<-hc?e+pc:e,n]}}function sl(t){var e=ol(t);return e.invert=ol(-t),e}function cl(t,e){var n=xc(t),r=Tc(t),i=xc(e),a=Tc(e);function o(t,e){var o=xc(e),s=xc(t)*o,c=Tc(t)*o,u=Tc(e),l=u*n+s*r;return[bc(c*i-l*a,s*n-u*r),Oc(l*i+c*a)]}return o.invert=function(t,e){var o=xc(e),s=xc(t)*o,c=Tc(t)*o,u=Tc(e),l=u*i-c*a;return[bc(c*i+u*a,s*n+l*r),Oc(l*n-s*r)]},o}il.invert=il;var ul=function(t){function e(e){return(e=t(e[0]*yc,e[1]*yc))[0]*=gc,e[1]*=gc,e}return t=al(t[0]*yc,t[1]*yc,t.length>2?t[2]*yc:0),e.invert=function(e){return(e=t.invert(e[0]*yc,e[1]*yc))[0]*=gc,e[1]*=gc,e},e};function ll(t,e,n,r,i,a){if(n){var o=xc(e),s=Tc(e),c=r*n;null==i?(i=e+r*pc,a=e-c/2):(i=hl(o,i),a=hl(o,a),(r>0?ia)&&(i+=r*pc));for(var u,l=i;r>0?l>a:l1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}},pl=function(t,e){return vc(t[0]-e[0])<1e-6&&vc(t[1]-e[1])<1e-6};function gl(t,e,n,r){this.x=t,this.z=e,this.o=n,this.e=r,this.v=!1,this.n=this.p=null}var yl=function(t,e,n,r,i){var a,o,s=[],c=[];if(t.forEach((function(t){if(!((e=t.length-1)<=0)){var e,n,r=t[0],o=t[e];if(pl(r,o)){for(i.lineStart(),a=0;a=0;--a)i.point((l=u[a])[0],l[1]);else r(f.x,f.p.x,-1,i);f=f.p}u=(f=f.o).z,d=!d}while(!f.v);i.lineEnd()}}};function vl(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r=0?1:-1,T=E*w,C=T>hc,A=g*_;if(ml.add(bc(A*E*Tc(T),y*k+A*xc(T))),o+=C?w+E*pc:w,C^d>=n^b>=n){var S=eu(Qc(f),Qc(m));iu(S);var M=eu(a,S);iu(M);var O=(C^w>=0?-1:1)*Oc(M[2]);(r>O||r===O&&(S[0]||S[1]))&&(s+=C^w>=0?1:-1)}}return(o<-1e-6||o<1e-6&&ml<-1e-6)^1&s},_l=function(t,e,n,r){return function(i){var a,o,s,c=e(i),u=dl(),l=e(u),h=!1,f={point:d,lineStart:g,lineEnd:y,polygonStart:function(){f.point=v,f.lineStart=m,f.lineEnd=b,o=[],a=[]},polygonEnd:function(){f.point=d,f.lineStart=g,f.lineEnd=y,o=I(o);var t=xl(a,r);o.length?(h||(i.polygonStart(),h=!0),yl(o,wl,t,n,i)):t&&(h||(i.polygonStart(),h=!0),i.lineStart(),n(null,null,1,i),i.lineEnd()),h&&(i.polygonEnd(),h=!1),o=a=null},sphere:function(){i.polygonStart(),i.lineStart(),n(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(e,n){t(e,n)&&i.point(e,n)}function p(t,e){c.point(t,e)}function g(){f.point=p,c.lineStart()}function y(){f.point=d,c.lineEnd()}function v(t,e){s.push([t,e]),l.point(t,e)}function m(){l.lineStart(),s=[]}function b(){v(s[0][0],s[0][1]),l.lineEnd();var t,e,n,r,c=l.clean(),f=u.result(),d=f.length;if(s.pop(),a.push(s),s=null,d)if(1&c){if((e=(n=f[0]).length-1)>0){for(h||(i.polygonStart(),h=!0),i.lineStart(),t=0;t1&&2&c&&f.push(f.pop().concat(f.shift())),o.push(f.filter(kl))}return f}};function kl(t){return t.length>1}function wl(t,e){return((t=t.x)[0]<0?t[1]-fc-1e-6:fc-t[1])-((e=e.x)[0]<0?e[1]-fc-1e-6:fc-e[1])}var El=_l((function(){return!0}),(function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var s=a>0?hc:-hc,c=vc(a-n);vc(c-hc)<1e-6?(t.point(n,r=(r+o)/2>0?fc:-fc),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),t.point(a,r),e=0):i!==s&&c>=hc&&(vc(n-i)<1e-6&&(n-=1e-6*i),vc(a-s)<1e-6&&(a-=1e-6*s),r=function(t,e,n,r){var i,a,o=Tc(t-n);return vc(o)>1e-6?mc((Tc(e)*(a=xc(r))*Tc(n)-Tc(r)*(i=xc(e))*Tc(t))/(i*a*o)):(e+r)/2}(n,r,a,o),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),e=0),t.point(n=a,r=o),i=s},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}}),(function(t,e,n,r){var i;if(null==t)i=n*fc,r.point(-hc,i),r.point(0,i),r.point(hc,i),r.point(hc,0),r.point(hc,-i),r.point(0,-i),r.point(-hc,-i),r.point(-hc,0),r.point(-hc,i);else if(vc(t[0]-e[0])>1e-6){var a=t[0]0,i=vc(e)>1e-6;function a(t,n){return xc(t)*xc(n)>e}function o(t,n,r){var i=[1,0,0],a=eu(Qc(t),Qc(n)),o=tu(a,a),s=a[0],c=o-s*s;if(!c)return!r&&t;var u=e*o/c,l=-e*s/c,h=eu(i,a),f=ru(i,u);nu(f,ru(a,l));var d=h,p=tu(f,d),g=tu(d,d),y=p*p-g*(tu(f,f)-1);if(!(y<0)){var v=Ac(y),m=ru(d,(-p-v)/g);if(nu(m,f),m=Kc(m),!r)return m;var b,x=t[0],_=n[0],k=t[1],w=n[1];_0^m[1]<(vc(m[0]-x)<1e-6?k:w):k<=m[1]&&m[1]<=w:E>hc^(x<=m[0]&&m[0]<=_)){var C=ru(d,(-p+v)/g);return nu(C,f),[m,Kc(C)]}}}function s(e,n){var i=r?t:hc-t,a=0;return e<-i?a|=1:e>i&&(a|=2),n<-i?a|=4:n>i&&(a|=8),a}return _l(a,(function(t){var e,n,c,u,l;return{lineStart:function(){u=c=!1,l=1},point:function(h,f){var d,p=[h,f],g=a(h,f),y=r?g?0:s(h,f):g?s(h+(h<0?hc:-hc),f):0;if(!e&&(u=c=g)&&t.lineStart(),g!==c&&(!(d=o(e,p))||pl(e,d)||pl(p,d))&&(p[0]+=1e-6,p[1]+=1e-6,g=a(p[0],p[1])),g!==c)l=0,g?(t.lineStart(),d=o(p,e),t.point(d[0],d[1])):(d=o(e,p),t.point(d[0],d[1]),t.lineEnd()),e=d;else if(i&&e&&r^g){var v;y&n||!(v=o(p,e,!0))||(l=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||e&&pl(e,p)||t.point(p[0],p[1]),e=p,c=g,n=y},lineEnd:function(){c&&t.lineEnd(),e=null},clean:function(){return l|(u&&c)<<1}}}),(function(e,r,i,a){ll(a,t,n,i,e,r)}),r?[0,-t]:[-hc,t-hc])};function Cl(t,e,n,r){function i(i,a){return t<=i&&i<=n&&e<=a&&a<=r}function a(i,a,s,u){var l=0,h=0;if(null==i||(l=o(i,s))!==(h=o(a,s))||c(i,a)<0^s>0)do{u.point(0===l||3===l?t:n,l>1?r:e)}while((l=(l+s+4)%4)!==h);else u.point(a[0],a[1])}function o(r,i){return vc(r[0]-t)<1e-6?i>0?0:3:vc(r[0]-n)<1e-6?i>0?2:1:vc(r[1]-e)<1e-6?i>0?1:0:i>0?3:2}function s(t,e){return c(t.x,e.x)}function c(t,e){var n=o(t,1),r=o(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(o){var c,u,l,h,f,d,p,g,y,v,m,b=o,x=dl(),_={point:k,lineStart:function(){_.point=w,u&&u.push(l=[]);v=!0,y=!1,p=g=NaN},lineEnd:function(){c&&(w(h,f),d&&y&&x.rejoin(),c.push(x.result()));_.point=k,y&&b.lineEnd()},polygonStart:function(){b=x,c=[],u=[],m=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=u.length;nr&&(f-a)*(r-o)>(d-o)*(t-a)&&++e:d<=r&&(f-a)*(r-o)<(d-o)*(t-a)&&--e;return e}(),n=m&&e,i=(c=I(c)).length;(n||i)&&(o.polygonStart(),n&&(o.lineStart(),a(null,null,1,o),o.lineEnd()),i&&yl(c,s,e,a,o),o.polygonEnd());b=o,c=u=l=null}};function k(t,e){i(t,e)&&b.point(t,e)}function w(a,o){var s=i(a,o);if(u&&l.push([a,o]),v)h=a,f=o,d=s,v=!1,s&&(b.lineStart(),b.point(a,o));else if(s&&y)b.point(a,o);else{var c=[p=Math.max(-1e9,Math.min(1e9,p)),g=Math.max(-1e9,Math.min(1e9,g))],x=[a=Math.max(-1e9,Math.min(1e9,a)),o=Math.max(-1e9,Math.min(1e9,o))];!function(t,e,n,r,i,a){var o,s=t[0],c=t[1],u=0,l=1,h=e[0]-s,f=e[1]-c;if(o=n-s,h||!(o>0)){if(o/=h,h<0){if(o0){if(o>l)return;o>u&&(u=o)}if(o=i-s,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>u&&(u=o)}else if(h>0){if(o0)){if(o/=f,f<0){if(o0){if(o>l)return;o>u&&(u=o)}if(o=a-c,f||!(o<0)){if(o/=f,f<0){if(o>l)return;o>u&&(u=o)}else if(f>0){if(o0&&(t[0]=s+u*h,t[1]=c+u*f),l<1&&(e[0]=s+l*h,e[1]=c+l*f),!0}}}}}(c,x,t,e,n,r)?s&&(b.lineStart(),b.point(a,o),m=!1):(y||(b.lineStart(),b.point(c[0],c[1])),b.point(x[0],x[1]),s||b.lineEnd(),m=!1)}p=a,g=o,y=s}return _}}var Al,Sl,Ml,Ol=function(){var t,e,n,r=0,i=0,a=960,o=500;return n={stream:function(n){return t&&e===n?t:t=Cl(r,i,a,o)(e=n)},extent:function(s){return arguments.length?(r=+s[0][0],i=+s[0][1],a=+s[1][0],o=+s[1][1],t=e=null,n):[[r,i],[a,o]]}}},Dl=sc(),Nl={sphere:Nc,point:Nc,lineStart:function(){Nl.point=Ll,Nl.lineEnd=Bl},lineEnd:Nc,polygonStart:Nc,polygonEnd:Nc};function Bl(){Nl.point=Nl.lineEnd=Nc}function Ll(t,e){Al=t*=yc,Sl=Tc(e*=yc),Ml=xc(e),Nl.point=Fl}function Fl(t,e){t*=yc;var n=Tc(e*=yc),r=xc(e),i=vc(t-Al),a=xc(i),o=r*Tc(i),s=Ml*n-Sl*r*a,c=Sl*n+Ml*r*a;Dl.add(bc(Ac(o*o+s*s),c)),Al=t,Sl=n,Ml=r}var Pl=function(t){return Dl.reset(),$c(t,Nl),+Dl},Il=[null,null],jl={type:"LineString",coordinates:Il},Rl=function(t,e){return Il[0]=t,Il[1]=e,Pl(jl)},Yl={Feature:function(t,e){return Ul(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r0&&(i=Rl(t[a],t[a-1]))>0&&n<=i&&r<=i&&(n+r-i)*(1-Math.pow((n-r)/i,2))<1e-12*i)return!0;n=r}return!1}function Hl(t,e){return!!xl(t.map(Vl),Gl(e))}function Vl(t){return(t=t.map(Gl)).pop(),t}function Gl(t){return[t[0]*yc,t[1]*yc]}var ql=function(t,e){return(t&&Yl.hasOwnProperty(t.type)?Yl[t.type]:Ul)(t,e)};function Xl(t,e,n){var r=k(t,e-1e-6,n).concat(e);return function(t){return r.map((function(e){return[t,e]}))}}function Zl(t,e,n){var r=k(t,e-1e-6,n).concat(e);return function(t){return r.map((function(e){return[e,t]}))}}function Jl(){var t,e,n,r,i,a,o,s,c,u,l,h,f=10,d=f,p=90,g=360,y=2.5;function v(){return{type:"MultiLineString",coordinates:m()}}function m(){return k(_c(r/p)*p,n,p).map(l).concat(k(_c(s/g)*g,o,g).map(h)).concat(k(_c(e/f)*f,t,f).filter((function(t){return vc(t%p)>1e-6})).map(c)).concat(k(_c(a/d)*d,i,d).filter((function(t){return vc(t%g)>1e-6})).map(u))}return v.lines=function(){return m().map((function(t){return{type:"LineString",coordinates:t}}))},v.outline=function(){return{type:"Polygon",coordinates:[l(r).concat(h(o).slice(1),l(n).reverse().slice(1),h(s).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],n=+t[1][0],s=+t[0][1],o=+t[1][1],r>n&&(t=r,r=n,n=t),s>o&&(t=s,s=o,o=t),v.precision(y)):[[r,s],[n,o]]},v.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],a=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),a>i&&(n=a,a=i,i=n),v.precision(y)):[[e,a],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(f=+t[0],d=+t[1],v):[f,d]},v.precision=function(f){return arguments.length?(y=+f,c=Xl(a,i,90),u=Zl(e,t,y),l=Xl(s,o,90),h=Zl(r,n,y),v):y},v.extentMajor([[-180,1e-6-90],[180,90-1e-6]]).extentMinor([[-180,-80-1e-6],[180,80+1e-6]])}function Kl(){return Jl()()}var Ql,th,eh,nh,rh=function(t,e){var n=t[0]*yc,r=t[1]*yc,i=e[0]*yc,a=e[1]*yc,o=xc(r),s=Tc(r),c=xc(a),u=Tc(a),l=o*xc(n),h=o*Tc(n),f=c*xc(i),d=c*Tc(i),p=2*Oc(Ac(Dc(a-r)+o*c*Dc(i-n))),g=Tc(p),y=p?function(t){var e=Tc(t*=p)/g,n=Tc(p-t)/g,r=n*l+e*f,i=n*h+e*d,a=n*s+e*u;return[bc(i,r)*gc,bc(a,Ac(r*r+i*i))*gc]}:function(){return[n*gc,r*gc]};return y.distance=p,y},ih=function(t){return t},ah=sc(),oh=sc(),sh={point:Nc,lineStart:Nc,lineEnd:Nc,polygonStart:function(){sh.lineStart=ch,sh.lineEnd=hh},polygonEnd:function(){sh.lineStart=sh.lineEnd=sh.point=Nc,ah.add(vc(oh)),oh.reset()},result:function(){var t=ah/2;return ah.reset(),t}};function ch(){sh.point=uh}function uh(t,e){sh.point=lh,Ql=eh=t,th=nh=e}function lh(t,e){oh.add(nh*t-eh*e),eh=t,nh=e}function hh(){lh(Ql,th)}var fh=sh,dh=1/0,ph=dh,gh=-dh,yh=gh;var vh,mh,bh,xh,_h={point:function(t,e){tgh&&(gh=t);eyh&&(yh=e)},lineStart:Nc,lineEnd:Nc,polygonStart:Nc,polygonEnd:Nc,result:function(){var t=[[dh,ph],[gh,yh]];return gh=yh=-(ph=dh=1/0),t}},kh=0,wh=0,Eh=0,Th=0,Ch=0,Ah=0,Sh=0,Mh=0,Oh=0,Dh={point:Nh,lineStart:Bh,lineEnd:Ph,polygonStart:function(){Dh.lineStart=Ih,Dh.lineEnd=jh},polygonEnd:function(){Dh.point=Nh,Dh.lineStart=Bh,Dh.lineEnd=Ph},result:function(){var t=Oh?[Sh/Oh,Mh/Oh]:Ah?[Th/Ah,Ch/Ah]:Eh?[kh/Eh,wh/Eh]:[NaN,NaN];return kh=wh=Eh=Th=Ch=Ah=Sh=Mh=Oh=0,t}};function Nh(t,e){kh+=t,wh+=e,++Eh}function Bh(){Dh.point=Lh}function Lh(t,e){Dh.point=Fh,Nh(bh=t,xh=e)}function Fh(t,e){var n=t-bh,r=e-xh,i=Ac(n*n+r*r);Th+=i*(bh+t)/2,Ch+=i*(xh+e)/2,Ah+=i,Nh(bh=t,xh=e)}function Ph(){Dh.point=Nh}function Ih(){Dh.point=Rh}function jh(){Yh(vh,mh)}function Rh(t,e){Dh.point=Yh,Nh(vh=bh=t,mh=xh=e)}function Yh(t,e){var n=t-bh,r=e-xh,i=Ac(n*n+r*r);Th+=i*(bh+t)/2,Ch+=i*(xh+e)/2,Ah+=i,Sh+=(i=xh*t-bh*e)*(bh+t),Mh+=i*(xh+e),Oh+=3*i,Nh(bh=t,xh=e)}var zh=Dh;function Uh(t){this._context=t}Uh.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,pc)}},result:Nc};var $h,Wh,Hh,Vh,Gh,qh=sc(),Xh={point:Nc,lineStart:function(){Xh.point=Zh},lineEnd:function(){$h&&Jh(Wh,Hh),Xh.point=Nc},polygonStart:function(){$h=!0},polygonEnd:function(){$h=null},result:function(){var t=+qh;return qh.reset(),t}};function Zh(t,e){Xh.point=Jh,Wh=Vh=t,Hh=Gh=e}function Jh(t,e){Vh-=t,Gh-=e,qh.add(Ac(Vh*Vh+Gh*Gh)),Vh=t,Gh=e}var Kh=Xh;function Qh(){this._string=[]}function tf(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}Qh.prototype={_radius:4.5,_circle:tf(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=tf(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};var ef=function(t,e){var n,r,i=4.5;function a(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),$c(t,n(r))),r.result()}return a.area=function(t){return $c(t,n(fh)),fh.result()},a.measure=function(t){return $c(t,n(Kh)),Kh.result()},a.bounds=function(t){return $c(t,n(_h)),_h.result()},a.centroid=function(t){return $c(t,n(zh)),zh.result()},a.projection=function(e){return arguments.length?(n=null==e?(t=null,ih):(t=e).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(e=null,new Qh):new Uh(e=t),"function"!=typeof i&&r.pointRadius(i),a):e},a.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),a):i},a.projection(t).context(e)},nf=function(t){return{stream:rf(t)}};function rf(t){return function(e){var n=new af;for(var r in t)n[r]=t[r];return n.stream=e,n}}function af(){}function of(t,e,n){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),$c(n,t.stream(_h)),e(_h.result()),null!=r&&t.clipExtent(r),t}function sf(t,e,n){return of(t,(function(n){var r=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(r/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),o=+e[0][0]+(r-a*(n[1][0]+n[0][0]))/2,s=+e[0][1]+(i-a*(n[1][1]+n[0][1]))/2;t.scale(150*a).translate([o,s])}),n)}function cf(t,e,n){return sf(t,[[0,0],e],n)}function uf(t,e,n){return of(t,(function(n){var r=+e,i=r/(n[1][0]-n[0][0]),a=(r-i*(n[1][0]+n[0][0]))/2,o=-i*n[0][1];t.scale(150*i).translate([a,o])}),n)}function lf(t,e,n){return of(t,(function(n){var r=+e,i=r/(n[1][1]-n[0][1]),a=-i*n[0][0],o=(r-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([a,o])}),n)}af.prototype={constructor:af,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var hf=xc(30*yc),ff=function(t,e){return+e?function(t,e){function n(r,i,a,o,s,c,u,l,h,f,d,p,g,y){var v=u-r,m=l-i,b=v*v+m*m;if(b>4*e&&g--){var x=o+f,_=s+d,k=c+p,w=Ac(x*x+_*_+k*k),E=Oc(k/=w),T=vc(vc(k)-1)<1e-6||vc(a-h)<1e-6?(a+h)/2:bc(_,x),C=t(T,E),A=C[0],S=C[1],M=A-r,O=S-i,D=m*M-v*O;(D*D/b>e||vc((v*M+m*O)/b-.5)>.3||o*f+s*d+c*p2?t[2]%360*yc:0,A()):[y*gc,v*gc,m*gc]},T.angle=function(t){return arguments.length?(b=t%360*yc,A()):b*gc},T.precision=function(t){return arguments.length?(o=ff(s,E=t*t),S()):Ac(E)},T.fitExtent=function(t,e){return sf(T,t,e)},T.fitSize=function(t,e){return cf(T,t,e)},T.fitWidth=function(t,e){return uf(T,t,e)},T.fitHeight=function(t,e){return lf(T,t,e)},function(){return e=t.apply(this,arguments),T.invert=e.invert&&C,A()}}function mf(t){var e=0,n=hc/3,r=vf(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*yc,n=t[1]*yc):[e*gc,n*gc]},i}function bf(t,e){var n=Tc(t),r=(n+Tc(e))/2;if(vc(r)<1e-6)return function(t){var e=xc(t);function n(t,n){return[t*e,Tc(n)/e]}return n.invert=function(t,n){return[t/e,Oc(n*e)]},n}(t);var i=1+n*(2*r-n),a=Ac(i)/r;function o(t,e){var n=Ac(i-2*r*Tc(e))/r;return[n*Tc(t*=r),a-n*xc(t)]}return o.invert=function(t,e){var n=a-e;return[bc(t,vc(n))/r*Cc(n),Oc((i-(t*t+n*n)*r*r)/(2*r))]},o}var xf=function(){return mf(bf).scale(155.424).center([0,33.6442])},_f=function(){return xf().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])};var kf=function(){var t,e,n,r,i,a,o=_f(),s=xf().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=xf().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){a=[t,e]}};function l(t){var e=t[0],o=t[1];return a=null,n.point(e,o),a||(r.point(e,o),a)||(i.point(e,o),a)}function h(){return t=e=null,l}return l.invert=function(t){var e=o.scale(),n=o.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?s:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:o).invert(t)},l.stream=function(n){return t&&e===n?t:(r=[o.stream(e=n),s.stream(n),c.stream(n)],i=r.length,t={point:function(t,e){for(var n=-1;++n0?e<1e-6-fc&&(e=1e-6-fc):e>fc-1e-6&&(e=fc-1e-6);var n=i/Ec(Nf(e),r);return[n*Tc(r*t),i-n*xc(r*t)]}return a.invert=function(t,e){var n=i-e,a=Cc(r)*Ac(t*t+n*n);return[bc(t,vc(n))/r*Cc(n),2*mc(Ec(i/a,1/r))-fc]},a}var Lf=function(){return mf(Bf).scale(109.5).parallels([30,30])};function Ff(t,e){return[t,e]}Ff.invert=Ff;var Pf=function(){return yf(Ff).scale(152.63)};function If(t,e){var n=xc(t),r=t===e?Tc(t):(n-xc(e))/(e-t),i=n/r+t;if(vc(r)<1e-6)return Ff;function a(t,e){var n=i-e,a=r*t;return[n*Tc(a),i-n*xc(a)]}return a.invert=function(t,e){var n=i-e;return[bc(t,vc(n))/r*Cc(n),i-Cc(r)*Ac(t*t+n*n)]},a}var jf=function(){return mf(If).scale(131.154).center([0,13.9389])},Rf=1.340264,Yf=-.081106,zf=893e-6,Uf=.003796,$f=Ac(3)/2;function Wf(t,e){var n=Oc($f*Tc(e)),r=n*n,i=r*r*r;return[t*xc(n)/($f*(Rf+3*Yf*r+i*(7*zf+9*Uf*r))),n*(Rf+Yf*r+i*(zf+Uf*r))]}Wf.invert=function(t,e){for(var n,r=e,i=r*r,a=i*i*i,o=0;o<12&&(a=(i=(r-=n=(r*(Rf+Yf*i+a*(zf+Uf*i))-e)/(Rf+3*Yf*i+a*(7*zf+9*Uf*i)))*r)*i*i,!(vc(n)<1e-12));++o);return[$f*t*(Rf+3*Yf*i+a*(7*zf+9*Uf*i))/xc(r),Oc(Tc(r)/$f)]};var Hf=function(){return yf(Wf).scale(177.158)};function Vf(t,e){var n=xc(e),r=xc(t)*n;return[n*Tc(t)/r,Tc(e)/r]}Vf.invert=Ef(mc);var Gf=function(){return yf(Vf).scale(144.049).clipAngle(60)};function qf(t,e,n,r){return 1===t&&1===e&&0===n&&0===r?ih:rf({point:function(i,a){this.stream.point(i*t+n,a*e+r)}})}var Xf=function(){var t,e,n,r,i,a,o=1,s=0,c=0,u=1,l=1,h=ih,f=null,d=ih;function p(){return r=i=null,a}return a={stream:function(t){return r&&i===t?r:r=h(d(i=t))},postclip:function(r){return arguments.length?(d=r,f=t=e=n=null,p()):d},clipExtent:function(r){return arguments.length?(d=null==r?(f=t=e=n=null,ih):Cl(f=+r[0][0],t=+r[0][1],e=+r[1][0],n=+r[1][1]),p()):null==f?null:[[f,t],[e,n]]},scale:function(t){return arguments.length?(h=qf((o=+t)*u,o*l,s,c),p()):o},translate:function(t){return arguments.length?(h=qf(o*u,o*l,s=+t[0],c=+t[1]),p()):[s,c]},reflectX:function(t){return arguments.length?(h=qf(o*(u=t?-1:1),o*l,s,c),p()):u<0},reflectY:function(t){return arguments.length?(h=qf(o*u,o*(l=t?-1:1),s,c),p()):l<0},fitExtent:function(t,e){return sf(a,t,e)},fitSize:function(t,e){return cf(a,t,e)},fitWidth:function(t,e){return uf(a,t,e)},fitHeight:function(t,e){return lf(a,t,e)}}};function Zf(t,e){var n=e*e,r=n*n;return[t*(.8707-.131979*n+r*(r*(.003971*n-.001529*r)-.013791)),e*(1.007226+n*(.015085+r*(.028874*n-.044475-.005916*r)))]}Zf.invert=function(t,e){var n,r=e,i=25;do{var a=r*r,o=a*a;r-=n=(r*(1.007226+a*(.015085+o*(.028874*a-.044475-.005916*o)))-e)/(1.007226+a*(.045255+o*(.259866*a-.311325-.005916*11*o)))}while(vc(n)>1e-6&&--i>0);return[t/(.8707+(a=r*r)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),r]};var Jf=function(){return yf(Zf).scale(175.295)};function Kf(t,e){return[xc(e)*Tc(t),Tc(e)]}Kf.invert=Ef(Oc);var Qf=function(){return yf(Kf).scale(249.5).clipAngle(90+1e-6)};function td(t,e){var n=xc(e),r=1+xc(t)*n;return[n*Tc(t)/r,Tc(e)/r]}td.invert=Ef((function(t){return 2*mc(t)}));var ed=function(){return yf(td).scale(250).clipAngle(142)};function nd(t,e){return[wc(Sc((fc+e)/2)),-t]}nd.invert=function(t,e){return[-e,2*mc(kc(t))-fc]};var rd=function(){var t=Df(nd),e=t.center,n=t.rotate;return t.center=function(t){return arguments.length?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return arguments.length?n([t[0],t[1],t.length>2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)};function id(t,e){return t.parent===e.parent?1:2}function ad(t,e){return t+e.x}function od(t,e){return Math.max(t,e.y)}var sd=function(){var t=id,e=1,n=1,r=!1;function i(i){var a,o=0;i.eachAfter((function(e){var n=e.children;n?(e.x=function(t){return t.reduce(ad,0)/t.length}(n),e.y=function(t){return 1+t.reduce(od,0)}(n)):(e.x=a?o+=t(e,a):0,e.y=0,a=e)}));var s=function(t){for(var e;e=t.children;)t=e[0];return t}(i),c=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),u=s.x-t(s,c)/2,l=c.x+t(c,s)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-u)/(l-u)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i};function cd(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n[r].value;else e=1;t.value=e}function ud(t,e){var n,r,i,a,o,s=new dd(t),c=+t.value&&(s.value=t.value),u=[s];for(null==e&&(e=ld);n=u.pop();)if(c&&(n.value=+n.data.value),(i=e(n.data))&&(o=i.length))for(n.children=new Array(o),a=o-1;a>=0;--a)u.push(r=n.children[a]=new dd(i[a])),r.parent=n,r.depth=n.depth+1;return s.eachBefore(fd)}function ld(t){return t.children}function hd(t){t.data=t.data.data}function fd(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function dd(t){this.data=t,this.depth=this.height=0,this.parent=null}dd.prototype=ud.prototype={constructor:dd,count:function(){return this.eachAfter(cd)},each:function(t){var e,n,r,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),n=a.children)for(r=0,i=n.length;r=0;--n)i.push(e[n]);return this},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;t=n.pop(),e=r.pop();for(;t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return ud(this).eachBefore(hd)}};var pd=Array.prototype.slice;var gd=function(t){for(var e,n,r=0,i=(t=function(t){for(var e,n,r=t.length;r;)n=Math.random()*r--|0,e=t[r],t[r]=t[n],t[n]=e;return t}(pd.call(t))).length,a=[];r0&&n*n>r*r+i*i}function bd(t,e){for(var n=0;n(o*=o)?(r=(u+o-i)/(2*u),a=Math.sqrt(Math.max(0,o/u-r*r)),n.x=t.x-r*s-a*c,n.y=t.y-r*c+a*s):(r=(u+i-o)/(2*u),a=Math.sqrt(Math.max(0,i/u-r*r)),n.x=e.x+r*s-a*c,n.y=e.y+r*c+a*s)):(n.x=e.x+n.r,n.y=e.y)}function Ed(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function Td(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,a=(e.y*n.r+n.y*e.r)/r;return i*i+a*a}function Cd(t){this._=t,this.next=null,this.previous=null}function Ad(t){if(!(i=t.length))return 0;var e,n,r,i,a,o,s,c,u,l,h;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;wd(n,e,r=t[2]),e=new Cd(e),n=new Cd(n),r=new Cd(r),e.next=r.previous=n,n.next=e.previous=r,r.next=n.previous=e;t:for(s=3;s0)throw new Error("cycle");return a}return n.id=function(e){return arguments.length?(t=Od(e),n):t},n.parentId=function(t){return arguments.length?(e=Od(t),n):e},n};function Vd(t,e){return t.parent===e.parent?1:2}function Gd(t){var e=t.children;return e?e[0]:t.t}function qd(t){var e=t.children;return e?e[e.length-1]:t.t}function Xd(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function Zd(t,e,n){return t.a.parent===e.parent?t.a:n}function Jd(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}Jd.prototype=Object.create(dd.prototype);var Kd=function(){var t=Vd,e=1,n=1,r=null;function i(i){var c=function(t){for(var e,n,r,i,a,o=new Jd(t,0),s=[o];e=s.pop();)if(r=e._.children)for(e.children=new Array(a=r.length),i=a-1;i>=0;--i)s.push(n=e.children[i]=new Jd(r[i],i)),n.parent=e;return(o.parent=new Jd(null,0)).children=[o],o}(i);if(c.eachAfter(a),c.parent.m=-c.z,c.eachBefore(o),r)i.eachBefore(s);else{var u=i,l=i,h=i;i.eachBefore((function(t){t.xl.x&&(l=t),t.depth>h.depth&&(h=t)}));var f=u===l?1:t(u,l)/2,d=f-u.x,p=e/(l.x+f+d),g=n/(h.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*g}))}return i}function a(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var a=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,a=e,o=e,s=n,c=a.parent.children[0],u=a.m,l=o.m,h=s.m,f=c.m;s=qd(s),a=Gd(a),s&&a;)c=Gd(c),(o=qd(o)).a=e,(i=s.z+h-a.z-u+t(s._,a._))>0&&(Xd(Zd(s,e,r),e,i),u+=i,l+=i),h+=s.m,u+=a.m,f+=c.m,l+=o.m;s&&!qd(o)&&(o.t=s,o.m+=h-l),a&&!Gd(c)&&(c.t=a,c.m+=u-f,r=e)}return r}(e,i,e.parent.A||r[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i},Qd=function(t,e,n,r,i){for(var a,o=t.children,s=-1,c=o.length,u=t.value&&(i-n)/t.value;++sf&&(f=s),y=l*l*g,(d=Math.max(f/y,y/h))>p){l-=s;break}p=d}v.push(o={value:l,dice:c1?e:1)},n}(tp),rp=function(){var t=np,e=!1,n=1,r=1,i=[0],a=Dd,o=Dd,s=Dd,c=Dd,u=Dd;function l(t){return t.x0=t.y0=0,t.x1=n,t.y1=r,t.eachBefore(h),i=[0],e&&t.eachBefore(jd),t}function h(e){var n=i[e.depth],r=e.x0+n,l=e.y0+n,h=e.x1-n,f=e.y1-n;h=n-1){var l=s[e];return l.x0=i,l.y0=a,l.x1=o,void(l.y1=c)}var h=u[e],f=r/2+h,d=e+1,p=n-1;for(;d>>1;u[g]c-a){var m=(i*v+o*y)/r;t(e,d,y,i,a,m,c),t(d,n,v,m,a,o,c)}else{var b=(a*v+c*y)/r;t(e,d,y,i,a,o,b),t(d,n,v,i,b,o,c)}}(0,c,t.value,e,n,r,i)},ap=function(t,e,n,r,i){(1&t.depth?Qd:Rd)(t,e,n,r,i)},op=function t(e){function n(t,n,r,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,c,u,l,h=-1,f=o.length,d=t.value;++h1?e:1)},n}(tp),sp=function(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}},cp=function(t,e){var n=un(+t,+e);return function(t){var e=n(t);return e-360*Math.floor(e/360)}},up=function(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}},lp=Math.SQRT2;function hp(t){return((t=Math.exp(t))+1/t)/2}var fp=function(t,e){var n,r,i=t[0],a=t[1],o=t[2],s=e[0],c=e[1],u=e[2],l=s-i,h=c-a,f=l*l+h*h;if(f<1e-12)r=Math.log(u/o)/lp,n=function(t){return[i+t*l,a+t*h,o*Math.exp(lp*t*r)]};else{var d=Math.sqrt(f),p=(u*u-o*o+4*f)/(2*o*2*d),g=(u*u-o*o-4*f)/(2*u*2*d),y=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);r=(v-y)/lp,n=function(t){var e,n=t*r,s=hp(y),c=o/(2*d)*(s*(e=lp*n+y,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(y));return[i+c*l,a+c*h,o*s/hp(lp*n+y)]}}return n.duration=1e3*r,n};function dp(t){return function(e,n){var r=t((e=tn(e)).h,(n=tn(n)).h),i=hn(e.s,n.s),a=hn(e.l,n.l),o=hn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.s=i(t),e.l=a(t),e.opacity=o(t),e+""}}}var pp=dp(un),gp=dp(hn);function yp(t,e){var n=hn((t=pa(t)).l,(e=pa(e)).l),r=hn(t.a,e.a),i=hn(t.b,e.b),a=hn(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=r(e),t.b=i(e),t.opacity=a(e),t+""}}function vp(t){return function(e,n){var r=t((e=ka(e)).h,(n=ka(n)).h),i=hn(e.c,n.c),a=hn(e.l,n.l),o=hn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=a(t),e.opacity=o(t),e+""}}}var mp=vp(un),bp=vp(hn);function xp(t){return function e(n){function r(e,r){var i=t((e=Oa(e)).h,(r=Oa(r)).h),a=hn(e.s,r.s),o=hn(e.l,r.l),s=hn(e.opacity,r.opacity);return function(t){return e.h=i(t),e.s=a(t),e.l=o(Math.pow(t,n)),e.opacity=s(t),e+""}}return n=+n,r.gamma=e,r}(1)}var _p=xp(un),kp=xp(hn);function wp(t,e){for(var n=0,r=e.length-1,i=e[0],a=new Array(r<0?0:r);n1&&(e=t[a[o-2]],n=t[a[o-1]],r=t[s],(n[0]-e[0])*(r[1]-e[1])-(n[1]-e[1])*(r[0]-e[0])<=0);)--o;a[o++]=s}return a.slice(0,o)}var Mp=function(t){if((n=t.length)<3)return null;var e,n,r=new Array(n),i=new Array(n);for(e=0;e=0;--e)u.push(t[r[a[e]][2]]);for(e=+s;es!=u>s&&o<(c-n)*(s-r)/(u-r)+n&&(l=!l),c=n,u=r;return l},Dp=function(t){for(var e,n,r=-1,i=t.length,a=t[i-1],o=a[0],s=a[1],c=0;++r1);return t+n*a*Math.sqrt(-2*Math.log(i)/i)}}return n.source=t,n}(Np),Fp=function t(e){function n(){var t=Lp.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(Np),Pp=function t(e){function n(t){return function(){for(var n=0,r=0;rr&&(e=n,n=r,r=e),function(t){return Math.max(n,Math.min(r,t))}}function tg(t,e,n){var r=t[0],i=t[1],a=e[0],o=e[1];return i2?eg:tg,i=a=null,h}function h(e){return isNaN(e=+e)?n:(i||(i=r(o.map(t),s,c)))(t(u(e)))}return h.invert=function(n){return u(e((a||(a=r(s,o.map(t),_n)))(n)))},h.domain=function(t){return arguments.length?(o=Up.call(t,Xp),u===Jp||(u=Qp(o)),l()):o.slice()},h.range=function(t){return arguments.length?(s=$p.call(t),l()):s.slice()},h.rangeRound=function(t){return s=$p.call(t),c=up,l()},h.clamp=function(t){return arguments.length?(u=t?Qp(o):Jp,h):u!==Jp},h.interpolate=function(t){return arguments.length?(c=t,l()):c},h.unknown=function(t){return arguments.length?(n=t,h):n},function(n,r){return t=n,e=r,l()}}function ig(t,e){return rg()(t,e)}var ag=function(t,e,n,r){var i,a=S(t,e,n);switch((r=Hs(null==r?",f":r)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=ac(a,o))||(r.precision=i),Zs(r,o);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=oc(a,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=ic(a))||(r.precision=i-2*("%"===r.type))}return Xs(r)};function og(t){var e=t.domain;return t.ticks=function(t){var n=e();return C(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return ag(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i=e(),a=0,o=i.length-1,s=i[a],c=i[o];return c0?r=A(s=Math.floor(s/r)*r,c=Math.ceil(c/r)*r,n):r<0&&(r=A(s=Math.ceil(s*r)/r,c=Math.floor(c*r)/r,n)),r>0?(i[a]=Math.floor(s/r)*r,i[o]=Math.ceil(c/r)*r,e(i)):r<0&&(i[a]=Math.ceil(s*r)/r,i[o]=Math.floor(c*r)/r,e(i)),t},t}function sg(){var t=ig(Jp,Jp);return t.copy=function(){return ng(t,sg())},Rp.apply(t,arguments),og(t)}function cg(t){var e;function n(t){return isNaN(t=+t)?e:t}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=Up.call(e,Xp),n):t.slice()},n.unknown=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return cg(t).unknown(e)},t=arguments.length?Up.call(t,Xp):[0,1],og(n)}var ug=function(t,e){var n,r=0,i=(t=t.slice()).length-1,a=t[r],o=t[i];return o0){for(;fc)break;g.push(h)}}else for(;f=1;--l)if(!((h=u*l)c)break;g.push(h)}}else g=C(f,d,Math.min(d-f,p)).map(n);return r?g.reverse():g},r.tickFormat=function(t,i){if(null==i&&(i=10===a?".0e":","),"function"!=typeof i&&(i=Xs(i)),t===1/0)return i;null==t&&(t=10);var o=Math.max(1,a*t/r.ticks().length);return function(t){var r=t/n(Math.round(e(t)));return r*a0?i[r-1]:e[0],r=r?[i[r-1],n]:[i[o-1],i[o]]},o.unknown=function(e){return arguments.length?(t=e,o):o},o.thresholds=function(){return i.slice()},o.copy=function(){return Mg().domain([e,n]).range(a).unknown(t)},Rp.apply(og(o),arguments)}function Og(){var t,e=[.5],n=[0,1],r=1;function i(i){return i<=i?n[c(e,i,0,r)]:t}return i.domain=function(t){return arguments.length?(e=$p.call(t),r=Math.min(e.length,n.length-1),i):e.slice()},i.range=function(t){return arguments.length?(n=$p.call(t),r=Math.min(e.length,n.length-1),i):n.slice()},i.invertExtent=function(t){var r=n.indexOf(t);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(t=e,i):t},i.copy=function(){return Og().domain(e).range(n).unknown(t)},Rp.apply(i,arguments)}var Dg=new Date,Ng=new Date;function Bg(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return Dg.setTime(+e),Ng.setTime(+r),t(Dg),t(Ng),Math.floor(n(Dg,Ng))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var Lg=Bg((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Lg.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Bg((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};var Fg=Lg,Pg=Lg.range,Ig=Bg((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),jg=Ig,Rg=Ig.range;function Yg(t){return Bg((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var zg=Yg(0),Ug=Yg(1),$g=Yg(2),Wg=Yg(3),Hg=Yg(4),Vg=Yg(5),Gg=Yg(6),qg=zg.range,Xg=Ug.range,Zg=$g.range,Jg=Wg.range,Kg=Hg.range,Qg=Vg.range,ty=Gg.range,ey=Bg((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),ny=ey,ry=ey.range,iy=Bg((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()})),ay=iy,oy=iy.range,sy=Bg((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()})),cy=sy,uy=sy.range,ly=Bg((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()})),hy=ly,fy=ly.range,dy=Bg((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));dy.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Bg((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):dy:null};var py=dy,gy=dy.range;function yy(t){return Bg((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}var vy=yy(0),my=yy(1),by=yy(2),xy=yy(3),_y=yy(4),ky=yy(5),wy=yy(6),Ey=vy.range,Ty=my.range,Cy=by.range,Ay=xy.range,Sy=_y.range,My=ky.range,Oy=wy.range,Dy=Bg((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1})),Ny=Dy,By=Dy.range,Ly=Bg((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Ly.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Bg((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};var Fy=Ly,Py=Ly.range;function Iy(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function jy(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Ry(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Yy(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,o=t.shortDays,s=t.months,c=t.shortMonths,u=Ky(i),l=Qy(i),h=Ky(a),f=Qy(a),d=Ky(o),p=Qy(o),g=Ky(s),y=Qy(s),v=Ky(c),m=Qy(c),b={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:xv,e:xv,f:Tv,H:_v,I:kv,j:wv,L:Ev,m:Cv,M:Av,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:em,s:nm,S:Sv,u:Mv,U:Ov,V:Dv,w:Nv,W:Bv,x:null,X:null,y:Lv,Y:Fv,Z:Pv,"%":tm},x={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:Iv,e:Iv,f:Uv,H:jv,I:Rv,j:Yv,L:zv,m:$v,M:Wv,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:em,s:nm,S:Hv,u:Vv,U:Gv,V:qv,w:Xv,W:Zv,x:null,X:null,y:Jv,Y:Kv,Z:Qv,"%":tm},_={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(t,e,n){var r=h.exec(e.slice(n));return r?(t.w=f[r[0].toLowerCase()],n+r[0].length):-1},b:function(t,e,n){var r=v.exec(e.slice(n));return r?(t.m=m[r[0].toLowerCase()],n+r[0].length):-1},B:function(t,e,n){var r=g.exec(e.slice(n));return r?(t.m=y[r[0].toLowerCase()],n+r[0].length):-1},c:function(t,n,r){return E(t,e,n,r)},d:lv,e:lv,f:yv,H:fv,I:fv,j:hv,L:gv,m:uv,M:dv,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=l[r[0].toLowerCase()],n+r[0].length):-1},q:cv,Q:mv,s:bv,S:pv,u:ev,U:nv,V:rv,w:tv,W:iv,x:function(t,e,r){return E(t,n,e,r)},X:function(t,e,n){return E(t,r,e,n)},y:ov,Y:av,Z:sv,"%":vv};function k(t,e){return function(n){var r,i,a,o=[],s=-1,c=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++s53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=jy(Ry(a.y,0,1))).getUTCDay(),r=i>4||0===i?my.ceil(r):my(r),r=Ny.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=Iy(Ry(a.y,0,1))).getDay(),r=i>4||0===i?Ug.ceil(r):Ug(r),r=ny.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?jy(Ry(a.y,0,1)).getUTCDay():Iy(Ry(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,jy(a)):Iy(a)}}function E(t,e,n,r){for(var i,a,o=0,s=e.length,c=n.length;o=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=_[i in Vy?e.charAt(o++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return(b.x=k(n,b),b.X=k(r,b),b.c=k(e,b),x.x=k(n,x),x.X=k(r,x),x.c=k(e,x),{format:function(t){var e=k(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=w(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=k(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=w(t+="",!0);return e.toString=function(){return t},e}})}var zy,Uy,$y,Wy,Hy,Vy={"-":"",_:" ",0:"0"},Gy=/^\s*\d+/,qy=/^%/,Xy=/[\\^$*+?|[\]().{}]/g;function Zy(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a68?1900:2e3),n+r[0].length):-1}function sv(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function cv(t,e,n){var r=Gy.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function uv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function lv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function hv(t,e,n){var r=Gy.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function fv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function dv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function pv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function gv(t,e,n){var r=Gy.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function yv(t,e,n){var r=Gy.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function vv(t,e,n){var r=qy.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function mv(t,e,n){var r=Gy.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function bv(t,e,n){var r=Gy.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function xv(t,e){return Zy(t.getDate(),e,2)}function _v(t,e){return Zy(t.getHours(),e,2)}function kv(t,e){return Zy(t.getHours()%12||12,e,2)}function wv(t,e){return Zy(1+ny.count(Fg(t),t),e,3)}function Ev(t,e){return Zy(t.getMilliseconds(),e,3)}function Tv(t,e){return Ev(t,e)+"000"}function Cv(t,e){return Zy(t.getMonth()+1,e,2)}function Av(t,e){return Zy(t.getMinutes(),e,2)}function Sv(t,e){return Zy(t.getSeconds(),e,2)}function Mv(t){var e=t.getDay();return 0===e?7:e}function Ov(t,e){return Zy(zg.count(Fg(t)-1,t),e,2)}function Dv(t,e){var n=t.getDay();return t=n>=4||0===n?Hg(t):Hg.ceil(t),Zy(Hg.count(Fg(t),t)+(4===Fg(t).getDay()),e,2)}function Nv(t){return t.getDay()}function Bv(t,e){return Zy(Ug.count(Fg(t)-1,t),e,2)}function Lv(t,e){return Zy(t.getFullYear()%100,e,2)}function Fv(t,e){return Zy(t.getFullYear()%1e4,e,4)}function Pv(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Zy(e/60|0,"0",2)+Zy(e%60,"0",2)}function Iv(t,e){return Zy(t.getUTCDate(),e,2)}function jv(t,e){return Zy(t.getUTCHours(),e,2)}function Rv(t,e){return Zy(t.getUTCHours()%12||12,e,2)}function Yv(t,e){return Zy(1+Ny.count(Fy(t),t),e,3)}function zv(t,e){return Zy(t.getUTCMilliseconds(),e,3)}function Uv(t,e){return zv(t,e)+"000"}function $v(t,e){return Zy(t.getUTCMonth()+1,e,2)}function Wv(t,e){return Zy(t.getUTCMinutes(),e,2)}function Hv(t,e){return Zy(t.getUTCSeconds(),e,2)}function Vv(t){var e=t.getUTCDay();return 0===e?7:e}function Gv(t,e){return Zy(vy.count(Fy(t)-1,t),e,2)}function qv(t,e){var n=t.getUTCDay();return t=n>=4||0===n?_y(t):_y.ceil(t),Zy(_y.count(Fy(t),t)+(4===Fy(t).getUTCDay()),e,2)}function Xv(t){return t.getUTCDay()}function Zv(t,e){return Zy(my.count(Fy(t)-1,t),e,2)}function Jv(t,e){return Zy(t.getUTCFullYear()%100,e,2)}function Kv(t,e){return Zy(t.getUTCFullYear()%1e4,e,4)}function Qv(){return"+0000"}function tm(){return"%"}function em(t){return+t}function nm(t){return Math.floor(+t/1e3)}function rm(t){return zy=Yy(t),Uy=zy.format,$y=zy.parse,Wy=zy.utcFormat,Hy=zy.utcParse,zy}rm({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function im(t){return new Date(t)}function am(t){return t instanceof Date?+t:+new Date(+t)}function om(t,e,n,r,a,o,s,c,u){var l=ig(Jp,Jp),h=l.invert,f=l.domain,d=u(".%L"),p=u(":%S"),g=u("%I:%M"),y=u("%I %p"),v=u("%a %d"),m=u("%b %d"),b=u("%B"),x=u("%Y"),_=[[s,1,1e3],[s,5,5e3],[s,15,15e3],[s,30,3e4],[o,1,6e4],[o,5,3e5],[o,15,9e5],[o,30,18e5],[a,1,36e5],[a,3,108e5],[a,6,216e5],[a,12,432e5],[r,1,864e5],[r,2,1728e5],[n,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,31536e6]];function k(i){return(s(i)1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return qb.h=360*t-100,qb.s=1.5-1.5*e,qb.l=.8-.9*e,qb+""},Zb=Ge(),Jb=Math.PI/3,Kb=2*Math.PI/3,Qb=function(t){var e;return t=(.5-t)*Math.PI,Zb.r=255*(e=Math.sin(t))*e,Zb.g=255*(e=Math.sin(t+Jb))*e,Zb.b=255*(e=Math.sin(t+Kb))*e,Zb+""},tx=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"};function ex(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}var nx=ex(Nm("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),rx=ex(Nm("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),ix=ex(Nm("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),ax=ex(Nm("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),ox=function(t){return ke(ne(t).call(document.documentElement))},sx=0;function cx(){return new ux}function ux(){this._="@"+(++sx).toString(36)}ux.prototype=cx.prototype={constructor:ux,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var lx=function(t){return"string"==typeof t?new be([document.querySelectorAll(t)],[document.documentElement]):new be([null==t?[]:t],me)},hx=function(t,e){null==e&&(e=Mn().touches);for(var n=0,r=e?e.length:0,i=new Array(r);n1?0:t<-1?xx:Math.acos(t)}function Ex(t){return t>=1?_x:t<=-1?-_x:Math.asin(t)}function Tx(t){return t.innerRadius}function Cx(t){return t.outerRadius}function Ax(t){return t.startAngle}function Sx(t){return t.endAngle}function Mx(t){return t&&t.padAngle}function Ox(t,e,n,r,i,a,o,s){var c=n-t,u=r-e,l=o-i,h=s-a,f=h*c-l*u;if(!(f*f<1e-12))return[t+(f=(l*(e-a)-h*(t-i))/f)*c,e+f*u]}function Dx(t,e,n,r,i,a,o){var s=t-n,c=e-r,u=(o?a:-a)/bx(s*s+c*c),l=u*c,h=-u*s,f=t+l,d=e+h,p=n+l,g=r+h,y=(f+p)/2,v=(d+g)/2,m=p-f,b=g-d,x=m*m+b*b,_=i-a,k=f*g-p*d,w=(b<0?-1:1)*bx(yx(0,_*_*x-k*k)),E=(k*b-m*w)/x,T=(-k*m-b*w)/x,C=(k*b+m*w)/x,A=(-k*m+b*w)/x,S=E-y,M=T-v,O=C-y,D=A-v;return S*S+M*M>O*O+D*D&&(E=C,T=A),{cx:E,cy:T,x01:-l,y01:-h,x11:E*(i/_-1),y11:T*(i/_-1)}}var Nx=function(){var t=Tx,e=Cx,n=fx(0),r=null,i=Ax,a=Sx,o=Mx,s=null;function c(){var c,u,l=+t.apply(this,arguments),h=+e.apply(this,arguments),f=i.apply(this,arguments)-_x,d=a.apply(this,arguments)-_x,p=dx(d-f),g=d>f;if(s||(s=c=Ui()),h1e-12)if(p>kx-1e-12)s.moveTo(h*gx(f),h*mx(f)),s.arc(0,0,h,f,d,!g),l>1e-12&&(s.moveTo(l*gx(d),l*mx(d)),s.arc(0,0,l,d,f,g));else{var y,v,m=f,b=d,x=f,_=d,k=p,w=p,E=o.apply(this,arguments)/2,T=E>1e-12&&(r?+r.apply(this,arguments):bx(l*l+h*h)),C=vx(dx(h-l)/2,+n.apply(this,arguments)),A=C,S=C;if(T>1e-12){var M=Ex(T/l*mx(E)),O=Ex(T/h*mx(E));(k-=2*M)>1e-12?(x+=M*=g?1:-1,_-=M):(k=0,x=_=(f+d)/2),(w-=2*O)>1e-12?(m+=O*=g?1:-1,b-=O):(w=0,m=b=(f+d)/2)}var D=h*gx(m),N=h*mx(m),B=l*gx(_),L=l*mx(_);if(C>1e-12){var F,P=h*gx(b),I=h*mx(b),j=l*gx(x),R=l*mx(x);if(p1e-12?S>1e-12?(y=Dx(j,R,D,N,h,S,g),v=Dx(P,I,B,L,h,S,g),s.moveTo(y.cx+y.x01,y.cy+y.y01),S1e-12&&k>1e-12?A>1e-12?(y=Dx(B,L,P,I,l,-A,g),v=Dx(D,N,j,R,l,-A,g),s.lineTo(y.cx+y.x01,y.cy+y.y01),A=l;--h)s.point(y[h],v[h]);s.lineEnd(),s.areaEnd()}g&&(y[u]=+t(f,u,c),v[u]=+n(f,u,c),s.point(e?+e(f,u,c):y[u],r?+r(f,u,c):v[u]))}if(d)return s=null,d+""||null}function u(){return Ix().defined(i).curve(o).context(a)}return c.x=function(n){return arguments.length?(t="function"==typeof n?n:fx(+n),e=null,c):t},c.x0=function(e){return arguments.length?(t="function"==typeof e?e:fx(+e),c):t},c.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:fx(+t),c):e},c.y=function(t){return arguments.length?(n="function"==typeof t?t:fx(+t),r=null,c):n},c.y0=function(t){return arguments.length?(n="function"==typeof t?t:fx(+t),c):n},c.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:fx(+t),c):r},c.lineX0=c.lineY0=function(){return u().x(t).y(n)},c.lineY1=function(){return u().x(t).y(r)},c.lineX1=function(){return u().x(e).y(n)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:fx(!!t),c):i},c.curve=function(t){return arguments.length?(o=t,null!=a&&(s=o(a)),c):o},c.context=function(t){return arguments.length?(null==t?a=s=null:s=o(a=t),c):a},c},Rx=function(t,e){return et?1:e>=t?0:NaN},Yx=function(t){return t},zx=function(){var t=Yx,e=Rx,n=null,r=fx(0),i=fx(kx),a=fx(0);function o(o){var s,c,u,l,h,f=o.length,d=0,p=new Array(f),g=new Array(f),y=+r.apply(this,arguments),v=Math.min(kx,Math.max(-kx,i.apply(this,arguments)-y)),m=Math.min(Math.abs(v)/f,a.apply(this,arguments)),b=m*(v<0?-1:1);for(s=0;s0&&(d+=h);for(null!=e?p.sort((function(t,n){return e(g[t],g[n])})):null!=n&&p.sort((function(t,e){return n(o[t],o[e])})),s=0,u=d?(v-f*b)/d:0;s0?h*u:0)+b,g[c]={data:o[c],index:s,value:h,startAngle:y,endAngle:l,padAngle:m};return g}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:fx(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:fx(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:fx(+t),o):i},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:fx(+t),o):a},o},Ux=Wx(Lx);function $x(t){this._curve=t}function Wx(t){function e(e){return new $x(t(e))}return e._curve=t,e}function Hx(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(Wx(t)):e()._curve},t}$x.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var Vx=function(){return Hx(Ix().curve(Ux))},Gx=function(){var t=jx().curve(Ux),e=t.curve,n=t.lineX0,r=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Hx(n())},delete t.lineX0,t.lineEndAngle=function(){return Hx(r())},delete t.lineX1,t.lineInnerRadius=function(){return Hx(i())},delete t.lineY0,t.lineOuterRadius=function(){return Hx(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(Wx(t)):e()._curve},t},qx=function(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]},Xx=Array.prototype.slice;function Zx(t){return t.source}function Jx(t){return t.target}function Kx(t){var e=Zx,n=Jx,r=Fx,i=Px,a=null;function o(){var o,s=Xx.call(arguments),c=e.apply(this,s),u=n.apply(this,s);if(a||(a=o=Ui()),t(a,+r.apply(this,(s[0]=c,s)),+i.apply(this,s),+r.apply(this,(s[0]=u,s)),+i.apply(this,s)),o)return a=null,o+""||null}return o.source=function(t){return arguments.length?(e=t,o):e},o.target=function(t){return arguments.length?(n=t,o):n},o.x=function(t){return arguments.length?(r="function"==typeof t?t:fx(+t),o):r},o.y=function(t){return arguments.length?(i="function"==typeof t?t:fx(+t),o):i},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o}function Qx(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e=(e+r)/2,n,e,i,r,i)}function t_(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+i)/2,r,n,r,i)}function e_(t,e,n,r,i){var a=qx(e,n),o=qx(e,n=(n+i)/2),s=qx(r,n),c=qx(r,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],c[0],c[1])}function n_(){return Kx(Qx)}function r_(){return Kx(t_)}function i_(){var t=Kx(e_);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}var a_={draw:function(t,e){var n=Math.sqrt(e/xx);t.moveTo(n,0),t.arc(0,0,n,0,kx)}},o_={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}},s_=Math.sqrt(1/3),c_=2*s_,u_={draw:function(t,e){var n=Math.sqrt(e/c_),r=n*s_;t.moveTo(0,-n),t.lineTo(r,0),t.lineTo(0,n),t.lineTo(-r,0),t.closePath()}},l_=Math.sin(xx/10)/Math.sin(7*xx/10),h_=Math.sin(kx/10)*l_,f_=-Math.cos(kx/10)*l_,d_={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),r=h_*n,i=f_*n;t.moveTo(0,-n),t.lineTo(r,i);for(var a=1;a<5;++a){var o=kx*a/5,s=Math.cos(o),c=Math.sin(o);t.lineTo(c*n,-s*n),t.lineTo(s*r-c*i,c*r+s*i)}t.closePath()}},p_={draw:function(t,e){var n=Math.sqrt(e),r=-n/2;t.rect(r,r,n,n)}},g_=Math.sqrt(3),y_={draw:function(t,e){var n=-Math.sqrt(e/(3*g_));t.moveTo(0,2*n),t.lineTo(-g_*n,-n),t.lineTo(g_*n,-n),t.closePath()}},v_=Math.sqrt(3)/2,m_=1/Math.sqrt(12),b_=3*(m_/2+1),x_={draw:function(t,e){var n=Math.sqrt(e/b_),r=n/2,i=n*m_,a=r,o=n*m_+n,s=-a,c=o;t.moveTo(r,i),t.lineTo(a,o),t.lineTo(s,c),t.lineTo(-.5*r-v_*i,v_*r+-.5*i),t.lineTo(-.5*a-v_*o,v_*a+-.5*o),t.lineTo(-.5*s-v_*c,v_*s+-.5*c),t.lineTo(-.5*r+v_*i,-.5*i-v_*r),t.lineTo(-.5*a+v_*o,-.5*o-v_*a),t.lineTo(-.5*s+v_*c,-.5*c-v_*s),t.closePath()}},__=[a_,o_,u_,p_,d_,y_,x_],k_=function(){var t=fx(a_),e=fx(64),n=null;function r(){var r;if(n||(n=r=Ui()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),r)return n=null,r+""||null}return r.type=function(e){return arguments.length?(t="function"==typeof e?e:fx(e),r):t},r.size=function(t){return arguments.length?(e="function"==typeof t?t:fx(+t),r):e},r.context=function(t){return arguments.length?(n=null==t?null:t,r):n},r},w_=function(){};function E_(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function T_(t){this._context=t}T_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:E_(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var C_=function(t){return new T_(t)};function A_(t){this._context=t}A_.prototype={areaStart:w_,areaEnd:w_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var S_=function(t){return new A_(t)};function M_(t){this._context=t}M_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var O_=function(t){return new M_(t)};function D_(t,e){this._basis=new T_(t),this._beta=e}D_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],a=e[0],o=t[n]-i,s=e[n]-a,c=-1;++c<=n;)r=c/n,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*o),this._beta*e[c]+(1-this._beta)*(a+r*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var N_=function t(e){function n(t){return 1===e?new T_(t):new D_(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function B_(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function L_(t,e){this._context=t,this._k=(1-e)/6}L_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:B_(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:B_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var F_=function t(e){function n(t){return new L_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function P_(t,e){this._context=t,this._k=(1-e)/6}P_.prototype={areaStart:w_,areaEnd:w_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:B_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var I_=function t(e){function n(t){return new P_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function j_(t,e){this._context=t,this._k=(1-e)/6}j_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:B_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var R_=function t(e){function n(t){return new j_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Y_(t,e,n){var r=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>1e-12){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>1e-12){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*u+t._x1*t._l23_2a-e*t._l12_2a)/l,o=(o*u+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(r,i,a,o,t._x2,t._y2)}function z_(t,e){this._context=t,this._alpha=e}z_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var U_=function t(e){function n(t){return e?new z_(t,e):new L_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function $_(t,e){this._context=t,this._alpha=e}$_.prototype={areaStart:w_,areaEnd:w_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var W_=function t(e){function n(t){return e?new $_(t,e):new P_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function H_(t,e){this._context=t,this._alpha=e}H_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var V_=function t(e){function n(t){return e?new H_(t,e):new j_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function G_(t){this._context=t}G_.prototype={areaStart:w_,areaEnd:w_,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};var q_=function(t){return new G_(t)};function X_(t){return t<0?-1:1}function Z_(t,e,n){var r=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),o=(n-t._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(X_(a)+X_(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function J_(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function K_(t,e,n){var r=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-r)/3;t._context.bezierCurveTo(r+s,i+s*e,a-s,o-s*n,a,o)}function Q_(t){this._context=t}function tk(t){this._context=new ek(t)}function ek(t){this._context=t}function nk(t){return new Q_(t)}function rk(t){return new tk(t)}function ik(t){this._context=t}function ak(t){var e,n,r=t.length-1,i=new Array(r),a=new Array(r),o=new Array(r);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var ck=function(t){return new sk(t,.5)};function uk(t){return new sk(t,0)}function lk(t){return new sk(t,1)}var hk=function(t,e){if((i=t.length)>1)for(var n,r,i,a=1,o=t[e[0]],s=o.length;a=0;)n[e]=e;return n};function dk(t,e){return t[e]}var pk=function(){var t=fx([]),e=fk,n=hk,r=dk;function i(i){var a,o,s=t.apply(this,arguments),c=i.length,u=s.length,l=new Array(u);for(a=0;a0){for(var n,r,i,a=0,o=t[0].length;a0)for(var n,r,i,a,o,s,c=0,u=t[e[0]].length;c0?(r[0]=a,r[1]=a+=i):i<0?(r[1]=o,r[0]=o+=i):(r[0]=0,r[1]=i)},vk=function(t,e){if((n=t.length)>0){for(var n,r=0,i=t[e[0]],a=i.length;r0&&(r=(n=t[e[0]]).length)>0){for(var n,r,i,a=0,o=1;oa&&(a=e,r=n);return r}var _k=function(t){var e=t.map(kk);return fk(t).sort((function(t,n){return e[t]-e[n]}))};function kk(t){for(var e,n=0,r=-1,i=t.length;++r0)){if(a/=f,f<0){if(a0){if(a>h)return;a>l&&(l=a)}if(a=r-c,f||!(a<0)){if(a/=f,f<0){if(a>h)return;a>l&&(l=a)}else if(f>0){if(a0)){if(a/=d,d<0){if(a0){if(a>h)return;a>l&&(l=a)}if(a=i-u,d||!(a<0)){if(a/=d,d<0){if(a>h)return;a>l&&(l=a)}else if(d>0){if(a0||h<1)||(l>0&&(t[0]=[c+l*f,u+l*d]),h<1&&(t[1]=[c+h*f,u+h*d]),!0)}}}}}function Uk(t,e,n,r,i){var a=t[1];if(a)return!0;var o,s,c=t[0],u=t.left,l=t.right,h=u[0],f=u[1],d=l[0],p=l[1],g=(h+d)/2,y=(f+p)/2;if(p===f){if(g=r)return;if(h>d){if(c){if(c[1]>=i)return}else c=[g,n];a=[g,i]}else{if(c){if(c[1]1)if(h>d){if(c){if(c[1]>=i)return}else c=[(n-s)/o,n];a=[(i-s)/o,i]}else{if(c){if(c[1]=r)return}else c=[e,o*e+s];a=[r,o*r+s]}else{if(c){if(c[0]=-lw)){var d=c*c+u*u,p=l*l+h*h,g=(h*d-u*p)/f,y=(c*p-l*d)/f,v=Gk.pop()||new qk;v.arc=t,v.site=i,v.x=g+o,v.y=(v.cy=y+s)+Math.sqrt(g*g+y*y),t.circle=v;for(var m=null,b=sw._;b;)if(v.yuw)s=s.L;else{if(!((i=a-iw(s,o))>uw)){r>-uw?(e=s.P,n=s):i>-uw?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}!function(t){ow[t.index]={site:t,halfedges:[]}}(t);var c=Qk(t);if(aw.insert(e,c),e||n){if(e===n)return Zk(e),n=Qk(e.site),aw.insert(c,n),c.edge=n.edge=jk(e.site,c.site),Xk(e),void Xk(n);if(n){Zk(e),Zk(n);var u=e.site,l=u[0],h=u[1],f=t[0]-l,d=t[1]-h,p=n.site,g=p[0]-l,y=p[1]-h,v=2*(f*y-d*g),m=f*f+d*d,b=g*g+y*y,x=[(y*m-d*b)/v+l,(f*b-g*m)/v+h];Yk(n.edge,u,p,x),c.edge=jk(u,t,null,x),n.edge=jk(t,p,null,x),Xk(e),Xk(n)}else c.edge=jk(e.site,c.site)}}function rw(t,e){var n=t.site,r=n[0],i=n[1],a=i-e;if(!a)return r;var o=t.P;if(!o)return-1/0;var s=(n=o.site)[0],c=n[1],u=c-e;if(!u)return s;var l=s-r,h=1/a-1/u,f=l/u;return h?(-f+Math.sqrt(f*f-2*h*(l*l/(-2*u)-c+u/2+i-a/2)))/h+r:(r+s)/2}function iw(t,e){var n=t.N;if(n)return rw(n,e);var r=t.site;return r[1]===e?r[0]:1/0}var aw,ow,sw,cw,uw=1e-6,lw=1e-12;function hw(t,e){return e[1]-t[1]||e[0]-t[0]}function fw(t,e){var n,r,i,a=t.sort(hw).pop();for(cw=[],ow=new Array(t.length),aw=new Ik,sw=new Ik;;)if(i=Vk,a&&(!i||a[1]uw||Math.abs(i[0][1]-i[1][1])>uw)||delete cw[a]}(o,s,c,u),function(t,e,n,r){var i,a,o,s,c,u,l,h,f,d,p,g,y=ow.length,v=!0;for(i=0;iuw||Math.abs(g-f)>uw)&&(c.splice(s,0,cw.push(Rk(o,d,Math.abs(p-t)uw?[t,Math.abs(h-t)uw?[Math.abs(f-r)uw?[n,Math.abs(h-n)uw?[Math.abs(f-e)=s)return null;var c=t-i.site[0],u=e-i.site[1],l=c*c+u*u;do{i=a.cells[r=o],o=null,i.halfedges.forEach((function(n){var r=a.edges[n],s=r.left;if(s!==i.site&&s||(s=r.right)){var c=t-s[0],u=e-s[1],h=c*c+u*u;hr?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}var Aw=function(){var t,e,n=_w,r=kw,i=Cw,a=Ew,o=Tw,s=[0,1/0],c=[[-1/0,-1/0],[1/0,1/0]],u=250,l=fp,h=lt("start","zoom","end"),f=0;function d(t){t.property("__zoom",ww).on("wheel.zoom",x).on("mousedown.zoom",_).on("dblclick.zoom",k).filter(o).on("touchstart.zoom",w).on("touchmove.zoom",E).on("touchend.zoom touchcancel.zoom",T).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(t,e){return(e=Math.max(s[0],Math.min(s[1],e)))===t.k?t:new yw(e,t.x,t.y)}function g(t,e,n){var r=e[0]-n[0]*t.k,i=e[1]-n[1]*t.k;return r===t.x&&i===t.y?t:new yw(t.k,r,i)}function y(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function v(t,e,n){t.on("start.zoom",(function(){m(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){m(this,arguments).end()})).tween("zoom",(function(){var t=this,i=arguments,a=m(t,i),o=r.apply(t,i),s=null==n?y(o):"function"==typeof n?n.apply(t,i):n,c=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),u=t.__zoom,h="function"==typeof e?e.apply(t,i):e,f=l(u.invert(s).concat(c/u.k),h.invert(s).concat(c/h.k));return function(t){if(1===t)t=h;else{var e=f(t),n=c/e[2];t=new yw(n,s[0]-e[0]*n,s[1]-e[1]*n)}a.zoom(null,t)}}))}function m(t,e,n){return!n&&t.__zooming||new b(t,e)}function b(t,e){this.that=t,this.args=e,this.active=0,this.extent=r.apply(t,e),this.taps=0}function x(){if(n.apply(this,arguments)){var t=m(this,arguments),e=this.__zoom,r=Math.max(s[0],Math.min(s[1],e.k*Math.pow(2,a.apply(this,arguments)))),o=Nn(this);if(t.wheel)t.mouse[0][0]===o[0]&&t.mouse[0][1]===o[1]||(t.mouse[1]=e.invert(t.mouse[0]=o)),clearTimeout(t.wheel);else{if(e.k===r)return;t.mouse=[o,e.invert(o)],or(this),t.start()}xw(),t.wheel=setTimeout(u,150),t.zoom("mouse",i(g(p(e,r),t.mouse[0],t.mouse[1]),t.extent,c))}function u(){t.wheel=null,t.end()}}function _(){if(!e&&n.apply(this,arguments)){var t=m(this,arguments,!0),r=ke(ce.view).on("mousemove.zoom",u,!0).on("mouseup.zoom",l,!0),a=Nn(this),o=ce.clientX,s=ce.clientY;Te(ce.view),bw(),t.mouse=[a,this.__zoom.invert(a)],or(this),t.start()}function u(){if(xw(),!t.moved){var e=ce.clientX-o,n=ce.clientY-s;t.moved=e*e+n*n>f}t.zoom("mouse",i(g(t.that.__zoom,t.mouse[0]=Nn(t.that),t.mouse[1]),t.extent,c))}function l(){r.on("mousemove.zoom mouseup.zoom",null),Ce(ce.view,t.moved),xw(),t.end()}}function k(){if(n.apply(this,arguments)){var t=this.__zoom,e=Nn(this),a=t.invert(e),o=t.k*(ce.shiftKey?.5:2),s=i(g(p(t,o),e,a),r.apply(this,arguments),c);xw(),u>0?ke(this).transition().duration(u).call(v,s,e):ke(this).call(d.transform,s)}}function w(){if(n.apply(this,arguments)){var e,r,i,a,o=ce.touches,s=o.length,c=m(this,arguments,ce.changedTouches.length===s);for(bw(),r=0;rh&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},M={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),56;case 1:return this.begin("type_directive"),57;case 2:return this.popState(),this.begin("arg_directive"),14;case 3:return this.popState(),this.popState(),59;case 4:return 58;case 5:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return this.begin("ID"),16;case 12:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),48;case 13:return this.popState(),this.popState(),this.begin("LINE"),18;case 14:return this.popState(),this.popState(),5;case 15:return this.begin("LINE"),27;case 16:return this.begin("LINE"),29;case 17:return this.begin("LINE"),30;case 18:return this.begin("LINE"),31;case 19:return this.begin("LINE"),36;case 20:return this.begin("LINE"),33;case 21:return this.begin("LINE"),35;case 22:return this.popState(),19;case 23:return 28;case 24:return 43;case 25:return 44;case 26:return 39;case 27:return 37;case 28:return this.begin("ID"),22;case 29:return this.begin("ID"),23;case 30:return 25;case 31:return 7;case 32:return 21;case 33:return 42;case 34:return 5;case 35:return e.yytext=e.yytext.trim(),48;case 36:return 51;case 37:return 52;case 38:return 49;case 39:return 50;case 40:return 53;case 41:return 54;case 42:return 55;case 43:return 46;case 44:return 47;case 45:return 5;case 46:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:participant\b)/i,/^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\b)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,12],inclusive:!1},ALIAS:{rules:[7,8,13,14],inclusive:!1},LINE:{rules:[7,8,22],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}};function O(){this.yy={}}return S.lexer=M,O.prototype=S,S.Parser=O,new O}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){var r=n(198);t.exports={Graph:r.Graph,json:n(301),alg:n(302),version:r.version}},function(t,e,n){var r;try{r={cloneDeep:n(313),constant:n(86),defaults:n(154),each:n(87),filter:n(128),find:n(314),flatten:n(156),forEach:n(126),forIn:n(319),has:n(93),isUndefined:n(139),last:n(320),map:n(140),mapValues:n(321),max:n(322),merge:n(324),min:n(329),minBy:n(330),now:n(331),pick:n(161),range:n(162),reduce:n(142),sortBy:n(338),uniqueId:n(163),values:n(147),zipObject:n(343)}}catch(t){}r||(r=window._),t.exports=r},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){ +/** + * @license + * Copyright (c) 2012-2013 Chris Pettitt + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +t.exports={graphlib:n(311),dagre:n(153),intersect:n(368),render:n(370),util:n(12),version:n(382)}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";var r=n(4),i=n(17).Graph;function a(t,e,n,i){var a;do{a=r.uniqueId(i)}while(t.hasNode(a));return n.dummy=e,t.setNode(a,n),a}function o(t){return r.max(r.map(t.nodes(),(function(e){var n=t.node(e).rank;if(!r.isUndefined(n))return n})))}t.exports={addDummyNode:a,simplify:function(t){var e=(new i).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){var r=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})})),e},asNonCompoundGraph:function(t){var e=new i({multigraph:t.isMultigraph()}).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){t.children(n).length||e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){e.setEdge(n,t.edge(n))})),e},successorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.outEdges(e),(function(e){n[e.w]=(n[e.w]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},predecessorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.inEdges(e),(function(e){n[e.v]=(n[e.v]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},intersectRect:function(t,e){var n,r,i=t.x,a=t.y,o=e.x-i,s=e.y-a,c=t.width/2,u=t.height/2;if(!o&&!s)throw new Error("Not possible to find intersection inside of the rectangle");Math.abs(s)*c>Math.abs(o)*u?(s<0&&(u=-u),n=u*o/s,r=u):(o<0&&(c=-c),n=c,r=c*s/o);return{x:i+n,y:a+r}},buildLayerMatrix:function(t){var e=r.map(r.range(o(t)+1),(function(){return[]}));return r.forEach(t.nodes(),(function(n){var i=t.node(n),a=i.rank;r.isUndefined(a)||(e[a][i.order]=n)})),e},normalizeRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank})));r.forEach(t.nodes(),(function(n){var i=t.node(n);r.has(i,"rank")&&(i.rank-=e)}))},removeEmptyRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank}))),n=[];r.forEach(t.nodes(),(function(r){var i=t.node(r).rank-e;n[i]||(n[i]=[]),n[i].push(r)}));var i=0,a=t.graph().nodeRankFactor;r.forEach(n,(function(e,n){r.isUndefined(e)&&n%a!=0?--i:i&&r.forEach(e,(function(e){t.node(e).rank+=i}))}))},addBorderNode:function(t,e,n,r){var i={width:0,height:0};arguments.length>=4&&(i.rank=n,i.order=r);return a(t,"border",i,e)},maxRank:o,partition:function(t,e){var n={lhs:[],rhs:[]};return r.forEach(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n},time:function(t,e){var n=r.now();try{return e()}finally{console.log(t+" time: "+(r.now()-n)+"ms")}},notime:function(t,e){return e()}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(173),i=n(174),a=n(175),o={channel:r.default,lang:i.default,unit:a.default};e.default=o},function(t,e,n){var r;try{r={clone:n(199),constant:n(86),each:n(87),filter:n(128),has:n(93),isArray:n(5),isEmpty:n(276),isFunction:n(37),isUndefined:n(139),keys:n(30),map:n(140),reduce:n(142),size:n(279),transform:n(285),union:n(286),values:n(147)}}catch(t){}r||(r=window._),t.exports=r},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e,n){var r=n(43);t.exports={isSubgraph:function(t,e){return!!t.children(e).length},edgeToId:function(t){return a(t.v)+":"+a(t.w)+":"+a(t.name)},applyStyle:function(t,e){e&&t.attr("style",e)},applyClass:function(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))},applyTransition:function(t,e){var n=e.graph();if(r.isPlainObject(n)){var i=n.transition;if(r.isFunction(i))return i(t)}return t}};var i=/:/g;function a(t){return t?String(t).replace(i,"\\:"):""}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,7],n=[1,6],r=[1,14],i=[1,25],a=[1,28],o=[1,26],s=[1,27],c=[1,29],u=[1,30],l=[1,31],h=[1,32],f=[1,34],d=[1,35],p=[1,36],g=[10,19],y=[1,48],v=[1,49],m=[1,50],b=[1,51],x=[1,52],_=[1,53],k=[10,19,25,32,33,41,44,45,46,47,48,49,54,56],w=[10,19,23,25,32,33,37,41,44,45,46,47,48,49,54,56,71,72,73],E=[10,13,17,19],T=[41,71,72,73],C=[41,48,49,71,72,73],A=[41,44,45,46,47,71,72,73],S=[10,19,25],M=[1,85],O={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,graphConfig:6,openDirective:7,typeDirective:8,closeDirective:9,NEWLINE:10,":":11,argDirective:12,open_directive:13,type_directive:14,arg_directive:15,close_directive:16,CLASS_DIAGRAM:17,statements:18,EOF:19,statement:20,className:21,alphaNumToken:22,GENERICTYPE:23,relationStatement:24,LABEL:25,classStatement:26,methodStatement:27,annotationStatement:28,clickStatement:29,cssClassStatement:30,CLASS:31,STYLE_SEPARATOR:32,STRUCT_START:33,members:34,STRUCT_STOP:35,ANNOTATION_START:36,ANNOTATION_END:37,MEMBER:38,SEPARATOR:39,relation:40,STR:41,relationType:42,lineType:43,AGGREGATION:44,EXTENSION:45,COMPOSITION:46,DEPENDENCY:47,LINE:48,DOTTED_LINE:49,CALLBACK:50,LINK:51,LINK_TARGET:52,CLICK:53,CALLBACK_NAME:54,CALLBACK_ARGS:55,HREF:56,CSSCLASS:57,commentToken:58,textToken:59,graphCodeTokens:60,textNoTagsToken:61,TAGSTART:62,TAGEND:63,"==":64,"--":65,PCT:66,DEFAULT:67,SPACE:68,MINUS:69,keywords:70,UNICODE_TEXT:71,NUM:72,ALPHA:73,$accept:0,$end:1},terminals_:{2:"error",10:"NEWLINE",11:":",13:"open_directive",14:"type_directive",15:"arg_directive",16:"close_directive",17:"CLASS_DIAGRAM",19:"EOF",23:"GENERICTYPE",25:"LABEL",31:"CLASS",32:"STYLE_SEPARATOR",33:"STRUCT_START",35:"STRUCT_STOP",36:"ANNOTATION_START",37:"ANNOTATION_END",38:"MEMBER",39:"SEPARATOR",41:"STR",44:"AGGREGATION",45:"EXTENSION",46:"COMPOSITION",47:"DEPENDENCY",48:"LINE",49:"DOTTED_LINE",50:"CALLBACK",51:"LINK",52:"LINK_TARGET",53:"CLICK",54:"CALLBACK_NAME",55:"CALLBACK_ARGS",56:"HREF",57:"CSSCLASS",60:"graphCodeTokens",62:"TAGSTART",63:"TAGEND",64:"==",65:"--",66:"PCT",67:"DEFAULT",68:"SPACE",69:"MINUS",70:"keywords",71:"UNICODE_TEXT",72:"NUM",73:"ALPHA"},productions_:[0,[3,1],[3,2],[4,1],[5,4],[5,6],[7,1],[8,1],[12,1],[9,1],[6,4],[18,1],[18,2],[18,3],[21,1],[21,2],[21,3],[21,2],[20,1],[20,2],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[26,2],[26,4],[26,5],[26,7],[28,4],[34,1],[34,2],[27,1],[27,2],[27,1],[27,1],[24,3],[24,4],[24,4],[24,5],[40,3],[40,2],[40,2],[40,1],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[29,3],[29,4],[29,3],[29,4],[29,4],[29,5],[29,3],[29,4],[29,4],[29,5],[29,3],[29,4],[29,4],[29,5],[30,3],[58,1],[58,1],[59,1],[59,1],[59,1],[59,1],[59,1],[59,1],[59,1],[61,1],[61,1],[61,1],[61,1],[22,1],[22,1],[22,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 6:r.parseDirective("%%{","open_directive");break;case 7:r.parseDirective(a[s],"type_directive");break;case 8:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 9:r.parseDirective("}%%","close_directive","class");break;case 14:this.$=a[s];break;case 15:this.$=a[s-1]+a[s];break;case 16:this.$=a[s-2]+"~"+a[s-1]+a[s];break;case 17:this.$=a[s-1]+"~"+a[s];break;case 18:r.addRelation(a[s]);break;case 19:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 26:r.addClass(a[s]);break;case 27:r.addClass(a[s-2]),r.setCssClass(a[s-2],a[s]);break;case 28:r.addClass(a[s-3]),r.addMembers(a[s-3],a[s-1]);break;case 29:r.addClass(a[s-5]),r.setCssClass(a[s-5],a[s-3]),r.addMembers(a[s-5],a[s-1]);break;case 30:r.addAnnotation(a[s],a[s-2]);break;case 31:this.$=[a[s]];break;case 32:a[s].push(a[s-1]),this.$=a[s];break;case 33:break;case 34:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 35:case 36:break;case 37:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 38:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:"none"};break;case 39:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:"none",relationTitle2:a[s-1]};break;case 40:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 41:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 42:this.$={type1:"none",type2:a[s],lineType:a[s-1]};break;case 43:this.$={type1:a[s-1],type2:"none",lineType:a[s]};break;case 44:this.$={type1:"none",type2:"none",lineType:a[s]};break;case 45:this.$=r.relationType.AGGREGATION;break;case 46:this.$=r.relationType.EXTENSION;break;case 47:this.$=r.relationType.COMPOSITION;break;case 48:this.$=r.relationType.DEPENDENCY;break;case 49:this.$=r.lineType.LINE;break;case 50:this.$=r.lineType.DOTTED_LINE;break;case 51:case 57:this.$=a[s-2],r.setClickEvent(a[s-1],a[s]);break;case 52:case 58:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 53:case 61:this.$=a[s-2],r.setLink(a[s-1],a[s]);break;case 54:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s]);break;case 55:case 63:this.$=a[s-3],r.setLink(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 56:case 64:this.$=a[s-4],r.setLink(a[s-3],a[s-2],a[s]),r.setTooltip(a[s-3],a[s-1]);break;case 59:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 60:this.$=a[s-4],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setTooltip(a[s-3],a[s]);break;case 62:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s]);break;case 65:r.setCssClass(a[s-1],a[s])}},table:[{3:1,4:2,5:3,6:4,7:5,13:e,17:n},{1:[3]},{1:[2,1]},{3:8,4:2,5:3,6:4,7:5,13:e,17:n},{1:[2,3]},{8:9,14:[1,10]},{10:[1,11]},{14:[2,6]},{1:[2,2]},{9:12,11:[1,13],16:r},t([11,16],[2,7]),{5:23,7:5,13:e,18:15,20:16,21:24,22:33,24:17,26:18,27:19,28:20,29:21,30:22,31:i,36:a,38:o,39:s,50:c,51:u,53:l,57:h,71:f,72:d,73:p},{10:[1,37]},{12:38,15:[1,39]},{10:[2,9]},{19:[1,40]},{10:[1,41],19:[2,11]},t(g,[2,18],{25:[1,42]}),t(g,[2,20]),t(g,[2,21]),t(g,[2,22]),t(g,[2,23]),t(g,[2,24]),t(g,[2,25]),t(g,[2,33],{40:43,42:46,43:47,25:[1,45],41:[1,44],44:y,45:v,46:m,47:b,48:x,49:_}),{21:54,22:33,71:f,72:d,73:p},t(g,[2,35]),t(g,[2,36]),{22:55,71:f,72:d,73:p},{21:56,22:33,71:f,72:d,73:p},{21:57,22:33,71:f,72:d,73:p},{21:58,22:33,71:f,72:d,73:p},{41:[1,59]},t(k,[2,14],{22:33,21:60,23:[1,61],71:f,72:d,73:p}),t(w,[2,79]),t(w,[2,80]),t(w,[2,81]),t(E,[2,4]),{9:62,16:r},{16:[2,8]},{1:[2,10]},{5:23,7:5,13:e,18:63,19:[2,12],20:16,21:24,22:33,24:17,26:18,27:19,28:20,29:21,30:22,31:i,36:a,38:o,39:s,50:c,51:u,53:l,57:h,71:f,72:d,73:p},t(g,[2,19]),{21:64,22:33,41:[1,65],71:f,72:d,73:p},{40:66,42:46,43:47,44:y,45:v,46:m,47:b,48:x,49:_},t(g,[2,34]),{43:67,48:x,49:_},t(T,[2,44],{42:68,44:y,45:v,46:m,47:b}),t(C,[2,45]),t(C,[2,46]),t(C,[2,47]),t(C,[2,48]),t(A,[2,49]),t(A,[2,50]),t(g,[2,26],{32:[1,69],33:[1,70]}),{37:[1,71]},{41:[1,72]},{41:[1,73]},{54:[1,74],56:[1,75]},{22:76,71:f,72:d,73:p},t(k,[2,15]),t(k,[2,17],{22:33,21:77,71:f,72:d,73:p}),{10:[1,78]},{19:[2,13]},t(S,[2,37]),{21:79,22:33,71:f,72:d,73:p},{21:80,22:33,41:[1,81],71:f,72:d,73:p},t(T,[2,43],{42:82,44:y,45:v,46:m,47:b}),t(T,[2,42]),{22:83,71:f,72:d,73:p},{34:84,38:M},{21:86,22:33,71:f,72:d,73:p},t(g,[2,51],{41:[1,87]}),t(g,[2,53],{41:[1,89],52:[1,88]}),t(g,[2,57],{41:[1,90],55:[1,91]}),t(g,[2,61],{41:[1,93],52:[1,92]}),t(g,[2,65]),t(k,[2,16]),t(E,[2,5]),t(S,[2,39]),t(S,[2,38]),{21:94,22:33,71:f,72:d,73:p},t(T,[2,41]),t(g,[2,27],{33:[1,95]}),{35:[1,96]},{34:97,35:[2,31],38:M},t(g,[2,30]),t(g,[2,52]),t(g,[2,54]),t(g,[2,55],{52:[1,98]}),t(g,[2,58]),t(g,[2,59],{41:[1,99]}),t(g,[2,62]),t(g,[2,63],{52:[1,100]}),t(S,[2,40]),{34:101,38:M},t(g,[2,28]),{35:[2,32]},t(g,[2,56]),t(g,[2,60]),t(g,[2,64]),{35:[1,102]},t(g,[2,29])],defaultActions:{2:[2,1],4:[2,3],7:[2,6],8:[2,2],14:[2,9],39:[2,8],40:[2,10],63:[2,13],97:[2,32]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},D={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),13;case 1:return this.begin("type_directive"),14;case 2:return this.popState(),this.begin("arg_directive"),11;case 3:return this.popState(),this.popState(),16;case 4:return 15;case 5:case 6:break;case 7:return 10;case 8:break;case 9:case 10:return 17;case 11:return this.begin("struct"),33;case 12:return"EOF_IN_STRUCT";case 13:return"OPEN_IN_STRUCT";case 14:return this.popState(),35;case 15:break;case 16:return"MEMBER";case 17:return 31;case 18:return 57;case 19:return 50;case 20:return 51;case 21:return 53;case 22:return 36;case 23:return 37;case 24:this.begin("generic");break;case 25:this.popState();break;case 26:return"GENERICTYPE";case 27:this.begin("string");break;case 28:this.popState();break;case 29:return"STR";case 30:this.begin("href");break;case 31:this.popState();break;case 32:return 56;case 33:this.begin("callback_name");break;case 34:this.popState();break;case 35:this.popState(),this.begin("callback_args");break;case 36:return 54;case 37:this.popState();break;case 38:return 55;case 39:case 40:case 41:case 42:return 52;case 43:case 44:return 45;case 45:case 46:return 47;case 47:return 46;case 48:return 44;case 49:return 48;case 50:return 49;case 51:return 25;case 52:return 32;case 53:return 69;case 54:return"DOT";case 55:return"PLUS";case 56:return 66;case 57:case 58:return"EQUALS";case 59:return 73;case 60:return"PUNCTUATION";case 61:return 72;case 62:return 71;case 63:return 68;case 64:return 19}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callback_args:{rules:[37,38],inclusive:!1},callback_name:{rules:[34,35,36],inclusive:!1},href:{rules:[31,32],inclusive:!1},struct:{rules:[12,13,14,15,16],inclusive:!1},generic:{rules:[25,26],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,17,18,19,20,21,22,23,24,27,30,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64],inclusive:!0}}};function N(){this.yy={}}return O.lexer=D,N.prototype=O,O.Parser=N,new N}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e){var n,r,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var c,u=[],l=!1,h=-1;function f(){l&&c&&(l=!1,c.length?u=c.concat(u):h=-1,u.length&&d())}function d(){if(!l){var t=s(f);l=!0;for(var e=u.length;e;){for(c=u,u=[];++h1)for(var n=1;n=0;r--){var i=t[r];"."===i?t.splice(r,1):".."===i?(t.splice(r,1),n++):n&&(t.splice(r,1),n--)}if(e)for(;n--;n)t.unshift("..");return t}function r(t,e){if(t.filter)return t.filter(e);for(var n=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:t.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(e=o+"/"+e,i="/"===o.charAt(0))}return(i?"/":"")+(e=n(r(e.split("/"),(function(t){return!!t})),!i).join("/"))||"."},e.normalize=function(t){var a=e.isAbsolute(t),o="/"===i(t,-1);return(t=n(r(t.split("/"),(function(t){return!!t})),!a).join("/"))||a||(t="."),t&&o&&(t+="/"),(a?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(r(t,(function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,n){function r(t){for(var e=0;e=0&&""===t[n];n--);return e>n?[]:t.slice(e,n-e+1)}t=e.resolve(t).substr(1),n=e.resolve(n).substr(1);for(var i=r(t.split("/")),a=r(n.split("/")),o=Math.min(i.length,a.length),s=o,c=0;c=1;--a)if(47===(e=t.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?n?"/":".":n&&1===r?"/":t.slice(0,r)},e.basename=function(t,e){var n=function(t){"string"!=typeof t&&(t+="");var e,n=0,r=-1,i=!0;for(e=t.length-1;e>=0;--e)if(47===t.charCodeAt(e)){if(!i){n=e+1;break}}else-1===r&&(i=!1,r=e+1);return-1===r?"":t.slice(n,r)}(t);return e&&n.substr(-1*e.length)===e&&(n=n.substr(0,n.length-e.length)),n},e.extname=function(t){"string"!=typeof t&&(t+="");for(var e=-1,n=0,r=-1,i=!0,a=0,o=t.length-1;o>=0;--o){var s=t.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===e?e=o:1!==a&&(a=1):-1!==e&&(a=-1);else if(!i){n=o+1;break}}return-1===e||-1===r||0===a||1===a&&e===r-1&&e===n+1?"":t.slice(e,r)};var i="b"==="ab".substr(-1)?function(t,e,n){return t.substr(e,n)}:function(t,e,n){return e<0&&(e=t.length+e),t.substr(e,n)}}).call(this,n(14))},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,3],r=[1,5],i=[1,7],a=[2,5],o=[1,15],s=[1,17],c=[1,19],u=[1,20],l=[1,21],h=[1,22],f=[1,28],d=[1,23],p=[1,24],g=[1,25],y=[1,26],v=[1,29],m=[1,32],b=[1,4,5,14,15,17,19,20,22,23,24,25,26,36,39],x=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,36,39],_=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,36,39],k=[4,5,14,15,17,19,20,22,23,24,25,26,36,39],w={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,idStatement:11,DESCR:12,"--\x3e":13,HIDE_EMPTY:14,scale:15,WIDTH:16,COMPOSIT_STATE:17,STRUCT_START:18,STRUCT_STOP:19,STATE_DESCR:20,AS:21,ID:22,FORK:23,JOIN:24,CONCURRENT:25,note:26,notePosition:27,NOTE_TEXT:28,openDirective:29,typeDirective:30,closeDirective:31,":":32,argDirective:33,eol:34,";":35,EDGE_STATE:36,left_of:37,right_of:38,open_directive:39,type_directive:40,arg_directive:41,close_directive:42,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",12:"DESCR",13:"--\x3e",14:"HIDE_EMPTY",15:"scale",16:"WIDTH",17:"COMPOSIT_STATE",18:"STRUCT_START",19:"STRUCT_STOP",20:"STATE_DESCR",21:"AS",22:"ID",23:"FORK",24:"JOIN",25:"CONCURRENT",26:"note",28:"NOTE_TEXT",32:":",35:";",36:"EDGE_STATE",37:"left_of",38:"right_of",39:"open_directive",40:"type_directive",41:"arg_directive",42:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[6,3],[6,5],[34,1],[34,1],[11,1],[11,1],[27,1],[27,1],[29,1],[30,1],[33,1],[31,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:return r.setRootDoc(a[s]),a[s];case 5:this.$=[];break;case 6:"nl"!=a[s]&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 7:case 8:this.$=a[s];break;case 9:this.$="nl";break;case 10:this.$={stmt:"state",id:a[s],type:"default",description:""};break;case 11:this.$={stmt:"state",id:a[s-1],type:"default",description:r.trimColon(a[s])};break;case 12:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-2],type:"default",description:""},state2:{stmt:"state",id:a[s],type:"default",description:""}};break;case 13:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-3],type:"default",description:""},state2:{stmt:"state",id:a[s-1],type:"default",description:""},description:a[s].substr(1).trim()};break;case 17:this.$={stmt:"state",id:a[s-3],type:"default",description:"",doc:a[s-1]};break;case 18:var c=a[s],u=a[s-2].trim();if(a[s].match(":")){var l=a[s].split(":");c=l[0],u=[u,l[1]]}this.$={stmt:"state",id:c,type:"default",description:u};break;case 19:this.$={stmt:"state",id:a[s-3],type:"default",description:a[s-5],doc:a[s-1]};break;case 20:this.$={stmt:"state",id:a[s],type:"fork"};break;case 21:this.$={stmt:"state",id:a[s],type:"join"};break;case 22:this.$={stmt:"state",id:r.getDividerId(),type:"divider"};break;case 23:this.$={stmt:"state",id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 30:case 31:this.$=a[s];break;case 34:r.parseDirective("%%{","open_directive");break;case 35:r.parseDirective(a[s],"type_directive");break;case 36:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 37:r.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:e,5:n,6:4,7:r,29:6,39:i},{1:[3]},{3:8,4:e,5:n,6:4,7:r,29:6,39:i},{3:9,4:e,5:n,6:4,7:r,29:6,39:i},{3:10,4:e,5:n,6:4,7:r,29:6,39:i},t([1,4,5,14,15,17,20,22,23,24,25,26,36,39],a,{8:11}),{30:12,40:[1,13]},{40:[2,34]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:s,6:27,9:14,10:16,11:18,14:c,15:u,17:l,20:h,22:f,23:d,24:p,25:g,26:y,29:6,36:v,39:i},{31:30,32:[1,31],42:m},t([32,42],[2,35]),t(b,[2,6]),{6:27,10:33,11:18,14:c,15:u,17:l,20:h,22:f,23:d,24:p,25:g,26:y,29:6,36:v,39:i},t(b,[2,8]),t(b,[2,9]),t(b,[2,10],{12:[1,34],13:[1,35]}),t(b,[2,14]),{16:[1,36]},t(b,[2,16],{18:[1,37]}),{21:[1,38]},t(b,[2,20]),t(b,[2,21]),t(b,[2,22]),{27:39,28:[1,40],37:[1,41],38:[1,42]},t(b,[2,25]),t(x,[2,30]),t(x,[2,31]),t(_,[2,26]),{33:43,41:[1,44]},t(_,[2,37]),t(b,[2,7]),t(b,[2,11]),{11:45,22:f,36:v},t(b,[2,15]),t(k,a,{8:46}),{22:[1,47]},{22:[1,48]},{21:[1,49]},{22:[2,32]},{22:[2,33]},{31:50,42:m},{42:[2,36]},t(b,[2,12],{12:[1,51]}),{4:o,5:s,6:27,9:14,10:16,11:18,14:c,15:u,17:l,19:[1,52],20:h,22:f,23:d,24:p,25:g,26:y,29:6,36:v,39:i},t(b,[2,18],{18:[1,53]}),{28:[1,54]},{22:[1,55]},t(_,[2,27]),t(b,[2,13]),t(b,[2,17]),t(k,a,{8:56}),t(b,[2,23]),t(b,[2,24]),{4:o,5:s,6:27,9:14,10:16,11:18,14:c,15:u,17:l,19:[1,57],20:h,22:f,23:d,24:p,25:g,26:y,29:6,36:v,39:i},t(b,[2,19])],defaultActions:{7:[2,34],8:[2,1],9:[2,2],10:[2,3],41:[2,32],42:[2,33],44:[2,36]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},E={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),39;case 1:return this.begin("type_directive"),40;case 2:return this.popState(),this.begin("arg_directive"),32;case 3:return this.popState(),this.popState(),42;case 4:return 41;case 5:break;case 6:console.log("Crap after close");break;case 7:return 5;case 8:case 9:case 10:case 11:break;case 12:return this.pushState("SCALE"),15;case 13:return 16;case 14:this.popState();break;case 15:this.pushState("STATE");break;case 16:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 17:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),24;case 18:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 19:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),24;case 20:this.begin("STATE_STRING");break;case 21:return this.popState(),this.pushState("STATE_ID"),"AS";case 22:return this.popState(),"ID";case 23:this.popState();break;case 24:return"STATE_DESCR";case 25:return 17;case 26:this.popState();break;case 27:return this.popState(),this.pushState("struct"),18;case 28:return this.popState(),19;case 29:break;case 30:return this.begin("NOTE"),26;case 31:return this.popState(),this.pushState("NOTE_ID"),37;case 32:return this.popState(),this.pushState("NOTE_ID"),38;case 33:this.popState(),this.pushState("FLOATING_NOTE");break;case 34:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 35:break;case 36:return"NOTE_TEXT";case 37:return this.popState(),"ID";case 38:return this.popState(),this.pushState("NOTE_TEXT"),22;case 39:return this.popState(),e.yytext=e.yytext.substr(2).trim(),28;case 40:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),28;case 41:case 42:return 7;case 43:return 14;case 44:return 36;case 45:return 22;case 46:return e.yytext=e.yytext.trim(),12;case 47:return 13;case 48:return 25;case 49:return 5;case 50:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},close_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[3,4,9,10],inclusive:!1},type_directive:{rules:[2,3,9,10],inclusive:!1},open_directive:{rules:[1,9,10],inclusive:!1},struct:{rules:[9,10,15,28,29,30,44,45,46,47,48],inclusive:!1},FLOATING_NOTE_ID:{rules:[37],inclusive:!1},FLOATING_NOTE:{rules:[34,35,36],inclusive:!1},NOTE_TEXT:{rules:[39,40],inclusive:!1},NOTE_ID:{rules:[38],inclusive:!1},NOTE:{rules:[31,32,33],inclusive:!1},SCALE:{rules:[13,14],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[22],inclusive:!1},STATE_STRING:{rules:[23,24],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,16,17,18,19,20,21,25,26,27],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,10,11,12,15,27,30,41,42,43,44,45,46,47,49,50],inclusive:!0}}};function T(){this.yy={}}return w.lexer=E,T.prototype=w,w.Parser=T,new T}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t){t.exports=function(){"use strict";var e,r;function i(){return e.apply(null,arguments)}function a(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function c(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function u(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function l(t,e){var n,r=[];for(n=0;n>>0,r=0;ryt(t)?(a=t+1,s-yt(t)):(a=t,s),{year:a,dayOfYear:o}}function Ft(t,e,n){var r,i,a=Bt(t.year(),e,n),o=Math.floor((t.dayOfYear()-a-1)/7)+1;return o<1?r=o+Pt(i=t.year()-1,e,n):o>Pt(t.year(),e,n)?(r=o-Pt(t.year(),e,n),i=t.year()+1):(i=t.year(),r=o),{week:r,year:i}}function Pt(t,e,n){var r=Bt(t,e,n),i=Bt(t+1,e,n);return(yt(t)-r+i)/7}function It(t,e){return t.slice(e,7).concat(t.slice(0,e))}W("w",["ww",2],"wo","week"),W("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),j("week",5),j("isoWeek",5),lt("w",K),lt("ww",K,q),lt("W",K),lt("WW",K,q),gt(["w","ww","W","WW"],(function(t,e,n,r){e[r.substr(0,1)]=w(t)})),W("d",0,"do","day"),W("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),W("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),W("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),W("e",0,0,"weekday"),W("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),j("day",11),j("weekday",11),j("isoWeekday",11),lt("d",K),lt("e",K),lt("E",K),lt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),lt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),lt("dddd",(function(t,e){return e.weekdaysRegex(t)})),gt(["dd","ddd","dddd"],(function(t,e,n,r){var i=n._locale.weekdaysParse(t,r,n._strict);null!=i?e.d=i:p(n).invalidWeekday=t})),gt(["d","e","E"],(function(t,e,n,r){e[r]=w(t)}));var jt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Rt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Yt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),zt=ct,Ut=ct,$t=ct;function Wt(){function t(t,e){return e.length-t.length}var e,n,r,i,a,o=[],s=[],c=[],u=[];for(e=0;e<7;e++)n=d([2e3,1]).day(e),r=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),a=this.weekdays(n,""),o.push(r),s.push(i),c.push(a),u.push(r),u.push(i),u.push(a);for(o.sort(t),s.sort(t),c.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ft(s[e]),c[e]=ft(c[e]),u[e]=ft(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Ht(){return this.hours()%12||12}function Vt(t,e){W(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Gt(t,e){return e._meridiemParse}W("H",["HH",2],0,"hour"),W("h",["hh",2],0,Ht),W("k",["kk",2],0,(function(){return this.hours()||24})),W("hmm",0,0,(function(){return""+Ht.apply(this)+R(this.minutes(),2)})),W("hmmss",0,0,(function(){return""+Ht.apply(this)+R(this.minutes(),2)+R(this.seconds(),2)})),W("Hmm",0,0,(function(){return""+this.hours()+R(this.minutes(),2)})),W("Hmmss",0,0,(function(){return""+this.hours()+R(this.minutes(),2)+R(this.seconds(),2)})),Vt("a",!0),Vt("A",!1),L("hour","h"),j("hour",13),lt("a",Gt),lt("A",Gt),lt("H",K),lt("h",K),lt("k",K),lt("HH",K,q),lt("hh",K,q),lt("kk",K,q),lt("hmm",Q),lt("hmmss",tt),lt("Hmm",Q),lt("Hmmss",tt),pt(["H","HH"],3),pt(["k","kk"],(function(t,e,n){var r=w(t);e[3]=24===r?0:r})),pt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),pt(["h","hh"],(function(t,e,n){e[3]=w(t),p(n).bigHour=!0})),pt("hmm",(function(t,e,n){var r=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r)),p(n).bigHour=!0})),pt("hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r,2)),e[5]=w(t.substr(i)),p(n).bigHour=!0})),pt("Hmm",(function(t,e,n){var r=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r))})),pt("Hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r,2)),e[5]=w(t.substr(i))}));var qt,Xt=xt("Hours",!0),Zt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Tt,monthsShort:Ct,week:{dow:0,doy:6},weekdays:jt,weekdaysMin:Yt,weekdaysShort:Rt,meridiemParse:/[ap]\.?m?\.?/i},Jt={},Kt={};function Qt(t){return t?t.toLowerCase().replace("_","-"):t}function te(e){var r=null;if(!Jt[e]&&void 0!==t&&t&&t.exports)try{r=qt._abbr,n(171)("./"+e),ee(r)}catch(e){}return Jt[e]}function ee(t,e){var n;return t&&((n=s(e)?re(t):ne(t,e))?qt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),qt._abbr}function ne(t,e){if(null===e)return delete Jt[t],null;var n,r=Zt;if(e.abbr=t,null!=Jt[t])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=Jt[t]._config;else if(null!=e.parentLocale)if(null!=Jt[e.parentLocale])r=Jt[e.parentLocale]._config;else{if(null==(n=te(e.parentLocale)))return Kt[e.parentLocale]||(Kt[e.parentLocale]=[]),Kt[e.parentLocale].push({name:t,config:e}),null;r=n._config}return Jt[t]=new N(D(r,e)),Kt[t]&&Kt[t].forEach((function(t){ne(t.name,t.config)})),ee(t),Jt[t]}function re(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return qt;if(!a(t)){if(e=te(t))return e;t=[t]}return function(t){for(var e,n,r,i,a=0;a=e&&E(i,n,!0)>=e-1)break;e--}a++}return qt}(t)}function ie(t){var e,n=t._a;return n&&-2===p(t).overflow&&(e=n[1]<0||11wt(n[0],n[1])?2:n[3]<0||24Pt(n,a,o)?p(t)._overflowWeeks=!0:null!=c?p(t)._overflowWeekday=!0:(s=Lt(n,r,i,a,o),t._a[0]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=ae(t._a[0],r[0]),(t._dayOfYear>yt(o)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),n=Nt(o,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=r[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Nt:function(t,e,n,r,i,a,o){var s;return t<100&&0<=t?(s=new Date(t+400,e,n,r,i,a,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,r,i,a,o),s}).apply(null,s),a=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==a&&(p(t).weekdayMismatch=!0)}}var se=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ce=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ue=/Z|[+-]\d\d(?::?\d\d)?/,le=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],he=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],fe=/^\/?Date\((\-?\d+)/i;function de(t){var e,n,r,i,a,o,s=t._i,c=se.exec(s)||ce.exec(s);if(c){for(p(t).iso=!0,e=0,n=le.length;en.valueOf():n.valueOf()this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},on.isLocal=function(){return!!this.isValid()&&!this._isUTC},on.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},on.isUtc=Be,on.isUTC=Be,on.zoneAbbr=function(){return this._isUTC?"UTC":""},on.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},on.dates=C("dates accessor is deprecated. Use date instead.",Qe),on.months=C("months accessor is deprecated. Use month instead",St),on.years=C("years accessor is deprecated. Use year instead",bt),on.zone=C("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),on.isDSTShifted=C("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(m(t,this),(t=me(t))._a){var e=t._isUTC?d(t._a):xe(t._a);this._isDSTShifted=this.isValid()&&0h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},qt={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:case 6:break;case 7:this.begin("string");break;case 8:this.popState();break;case 9:return"STR";case 10:return 75;case 11:return 84;case 12:return 76;case 13:return 93;case 14:return 77;case 15:return 78;case 16:this.begin("href");break;case 17:this.popState();break;case 18:return 89;case 19:this.begin("callbackname");break;case 20:this.popState();break;case 21:this.popState(),this.begin("callbackargs");break;case 22:return 87;case 23:this.popState();break;case 24:return 88;case 25:this.begin("click");break;case 26:this.popState();break;case 27:return 79;case 28:case 29:return t.lex.firstGraph()&&this.begin("dir"),24;case 30:return 38;case 31:return 42;case 32:case 33:case 34:case 35:return 90;case 36:return this.popState(),25;case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:return this.popState(),26;case 47:return 94;case 48:return 102;case 49:return 47;case 50:return 99;case 51:return 46;case 52:return 20;case 53:return 95;case 54:return 113;case 55:case 56:case 57:return 70;case 58:case 59:case 60:return 69;case 61:return 51;case 62:return 52;case 63:return 53;case 64:return 54;case 65:return 55;case 66:return 56;case 67:return 57;case 68:return 58;case 69:return 100;case 70:return 103;case 71:return 114;case 72:return 111;case 73:return 104;case 74:case 75:return 112;case 76:return 105;case 77:return 61;case 78:return 81;case 79:return"SEP";case 80:return 80;case 81:return 98;case 82:return 63;case 83:return 62;case 84:return 65;case 85:return 64;case 86:return 109;case 87:return 110;case 88:return 71;case 89:return 49;case 90:return 50;case 91:return 40;case 92:return 41;case 93:return 59;case 94:return 60;case 95:return 120;case 96:return 21;case 97:return 22;case 98:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)[^\n]*)/,/^(?:[^\}]%%[^\n]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\()/,/^(?:\)\])/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[23,24],inclusive:!1},callbackname:{rules:[20,21,22],inclusive:!1},href:{rules:[17,18],inclusive:!1},click:{rules:[26,27],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[36,37,38,39,40,41,42,43,44,45,46],inclusive:!1},string:{rules:[8,9],inclusive:!1},INITIAL:{rules:[0,5,6,7,10,11,12,13,14,15,16,19,25,28,29,30,31,32,33,34,35,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],inclusive:!0}}};function Xt(){this.yy={}}return Gt.lexer=qt,Xt.prototype=Gt,Gt.Parser=Xt,new Xt}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,3],n=[1,5],r=[7,9,11,12,13,14,15,16,17,18,20,27,32],i=[1,15],a=[1,16],o=[1,17],s=[1,18],c=[1,19],u=[1,20],l=[1,21],h=[1,23],f=[1,25],d=[1,28],p=[5,7,9,11,12,13,14,15,16,17,18,20,27,32],g={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,axisFormat:14,excludes:15,todayMarker:16,title:17,section:18,clickStatement:19,taskTxt:20,taskData:21,openDirective:22,typeDirective:23,closeDirective:24,":":25,argDirective:26,click:27,callbackname:28,callbackargs:29,href:30,clickStatementDebug:31,open_directive:32,type_directive:33,arg_directive:34,close_directive:35,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"axisFormat",15:"excludes",16:"todayMarker",17:"title",18:"section",20:"taskTxt",21:"taskData",25:":",27:"click",28:"callbackname",29:"callbackargs",30:"href",32:"open_directive",33:"type_directive",34:"arg_directive",35:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[19,2],[19,3],[19,3],[19,4],[19,3],[19,4],[19,2],[31,2],[31,3],[31,3],[31,4],[31,3],[31,4],[31,2],[22,1],[23,1],[26,1],[24,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 2:return a[s-1];case 3:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 7:case 8:this.$=[];break;case 9:r.setDateFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 10:r.enableInclusiveEndDates(),this.$=a[s].substr(18);break;case 11:r.setAxisFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 12:r.setExcludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 13:r.setTodayMarker(a[s].substr(12)),this.$=a[s].substr(12);break;case 14:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 15:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 17:r.addTask(a[s-1],a[s]),this.$="task";break;case 21:this.$=a[s-1],r.setClickEvent(a[s-1],a[s],null);break;case 22:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 23:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],null),r.setLink(a[s-2],a[s]);break;case 24:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setLink(a[s-3],a[s]);break;case 25:this.$=a[s-2],r.setClickEvent(a[s-2],a[s],null),r.setLink(a[s-2],a[s-1]);break;case 26:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-1],a[s]),r.setLink(a[s-3],a[s-2]);break;case 27:this.$=a[s-1],r.setLink(a[s-1],a[s]);break;case 28:case 34:this.$=a[s-1]+" "+a[s];break;case 29:case 30:case 32:this.$=a[s-2]+" "+a[s-1]+" "+a[s];break;case 31:case 33:this.$=a[s-3]+" "+a[s-2]+" "+a[s-1]+" "+a[s];break;case 35:r.parseDirective("%%{","open_directive");break;case 36:r.parseDirective(a[s],"type_directive");break;case 37:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 38:r.parseDirective("}%%","close_directive","gantt")}},table:[{3:1,4:2,5:e,22:4,32:n},{1:[3]},{3:6,4:2,5:e,22:4,32:n},t(r,[2,3],{6:7}),{23:8,33:[1,9]},{33:[2,35]},{1:[2,1]},{4:24,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:i,13:a,14:o,15:s,16:c,17:u,18:l,19:22,20:h,22:4,27:f,32:n},{24:26,25:[1,27],35:d},t([25,35],[2,36]),t(r,[2,8],{1:[2,2]}),t(r,[2,4]),{4:24,10:29,12:i,13:a,14:o,15:s,16:c,17:u,18:l,19:22,20:h,22:4,27:f,32:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,9]),t(r,[2,10]),t(r,[2,11]),t(r,[2,12]),t(r,[2,13]),t(r,[2,14]),t(r,[2,15]),t(r,[2,16]),{21:[1,30]},t(r,[2,18]),{28:[1,31],30:[1,32]},{11:[1,33]},{26:34,34:[1,35]},{11:[2,38]},t(r,[2,5]),t(r,[2,17]),t(r,[2,21],{29:[1,36],30:[1,37]}),t(r,[2,27],{28:[1,38]}),t(p,[2,19]),{24:39,35:d},{35:[2,37]},t(r,[2,22],{30:[1,40]}),t(r,[2,23]),t(r,[2,25],{29:[1,41]}),{11:[1,42]},t(r,[2,24]),t(r,[2,26]),t(p,[2,20])],defaultActions:{5:[2,35],6:[2,1],28:[2,38],35:[2,37]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},y={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),32;case 1:return this.begin("type_directive"),33;case 2:return this.popState(),this.begin("arg_directive"),25;case 3:return this.popState(),this.popState(),35;case 4:return 34;case 5:case 6:case 7:break;case 8:return 11;case 9:case 10:case 11:break;case 12:this.begin("href");break;case 13:this.popState();break;case 14:return 30;case 15:this.begin("callbackname");break;case 16:this.popState();break;case 17:this.popState(),this.begin("callbackargs");break;case 18:return 28;case 19:this.popState();break;case 20:return 29;case 21:this.begin("click");break;case 22:this.popState();break;case 23:return 27;case 24:return 5;case 25:return 12;case 26:return 13;case 27:return 14;case 28:return 15;case 29:return 16;case 30:return"date";case 31:return 17;case 32:return 18;case 33:return 20;case 34:return 21;case 35:return 25;case 36:return 7;case 37:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[19,20],inclusive:!1},callbackname:{rules:[16,17,18],inclusive:!1},href:{rules:[13,14],inclusive:!1},click:{rules:[22,23],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37],inclusive:!0}}};function v(){this.yy={}}return g.lexer=y,v.prototype=g,g.Parser=v,new v}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,5],r=[6,9,11,17,18,19,21],i=[1,15],a=[1,16],o=[1,17],s=[1,21],c=[4,6,9,11,17,18,19,21],u={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,section:18,taskName:19,taskData:20,open_directive:21,type_directive:22,arg_directive:23,close_directive:24,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"section",19:"taskName",20:"taskData",21:"open_directive",22:"type_directive",23:"arg_directive",24:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 3:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 7:case 8:this.$=[];break;case 11:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 12:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 13:r.addTask(a[s-1],a[s]),this.$="task";break;case 15:r.parseDirective("%%{","open_directive");break;case 16:r.parseDirective(a[s],"type_directive");break;case 17:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 18:r.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:e,7:3,12:4,21:n},{1:[3]},t(r,[2,3],{5:6}),{3:7,4:e,7:3,12:4,21:n},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:i,18:a,19:o,21:n},{1:[2,2]},{14:19,15:[1,20],24:s},t([15,24],[2,16]),t(r,[2,8],{1:[2,1]}),t(r,[2,4]),{7:18,10:22,12:4,17:i,18:a,19:o,21:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,11]),t(r,[2,12]),{20:[1,23]},t(r,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},t(r,[2,5]),t(r,[2,13]),t(c,[2,9]),{14:27,24:s},{24:[2,17]},{11:[1,28]},t(c,[2,10])],defaultActions:{5:[2,15],7:[2,2],21:[2,18],26:[2,17]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},l={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),21;case 1:return this.begin("type_directive"),22;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),24;case 4:return 23;case 5:case 6:break;case 7:return 11;case 8:case 9:break;case 10:return 4;case 11:return 17;case 12:return 18;case 13:return 19;case 14:return 20;case 15:return 15;case 16:return 6;case 17:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,13,14,15,16,17],inclusive:!0}}};function h(){this.yy={}}return u.lexer=l,h.prototype=u,u.Parser=h,new h}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(15);e.default=function(t,e){return r.default.lang.round(i.default.parse(t)[e])}},function(t,e,n){var r=n(112),i=n(82),a=n(24);t.exports=function(t){return a(t)?r(t):i(t)}},function(t,e,n){var r;if(!r)try{r=n(0)}catch(t){}r||(r=window.d3),t.exports=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(15);e.default=function(t,e,n){var a=i.default.parse(t),o=a[e],s=r.default.channel.clamp[e](o+n);return o!==s&&(a[e]=s),i.default.stringify(a)}},function(t,e,n){var r=n(210),i=n(216);t.exports=function(t,e){var n=i(t,e);return r(n)?n:void 0}},function(t,e,n){var r=n(38),i=n(212),a=n(213),o=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":o&&o in Object(t)?i(t):a(t)}},function(t,e){t.exports=function(t){return t}},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,n){var r=n(34),i=n(11);t.exports=function(t){if(!i(t))return!1;var e=r(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},function(t,e,n){var r=n(16).Symbol;t.exports=r},function(t,e,n){(function(t){var r=n(16),i=n(232),a=e&&!e.nodeType&&e,o=a&&"object"==typeof t&&t&&!t.nodeType&&t,s=o&&o.exports===a?r.Buffer:void 0,c=(s?s.isBuffer:void 0)||i;t.exports=c}).call(this,n(7)(t))},function(t,e,n){var r=n(112),i=n(236),a=n(24);t.exports=function(t){return a(t)?r(t,!0):i(t)}},function(t,e,n){var r=n(241),i=n(77),a=n(242),o=n(121),s=n(243),c=n(34),u=n(110),l=u(r),h=u(i),f=u(a),d=u(o),p=u(s),g=c;(r&&"[object DataView]"!=g(new r(new ArrayBuffer(1)))||i&&"[object Map]"!=g(new i)||a&&"[object Promise]"!=g(a.resolve())||o&&"[object Set]"!=g(new o)||s&&"[object WeakMap]"!=g(new s))&&(g=function(t){var e=c(t),n="[object Object]"==e?t.constructor:void 0,r=n?u(n):"";if(r)switch(r){case l:return"[object DataView]";case h:return"[object Map]";case f:return"[object Promise]";case d:return"[object Set]";case p:return"[object WeakMap]"}return e}),t.exports=g},function(t,e,n){var r=n(34),i=n(21);t.exports=function(t){return"symbol"==typeof t||i(t)&&"[object Symbol]"==r(t)}},function(t,e,n){var r;try{r={defaults:n(154),each:n(87),isFunction:n(37),isPlainObject:n(158),pick:n(161),has:n(93),range:n(162),uniqueId:n(163)}}catch(t){}r||(r=window._),t.exports=r},function(t){t.exports=JSON.parse('{"name":"mermaid","version":"8.8.4","description":"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.","main":"dist/mermaid.core.js","keywords":["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph"],"scripts":{"build:development":"webpack --progress --colors","build:production":"yarn build:development -p --config webpack.config.prod.babel.js","build":"yarn build:development && yarn build:production","postbuild":"documentation build src/mermaidAPI.js src/config.js --shallow -f md --markdown-toc false > docs/Setup.md","build:watch":"yarn build --watch","minify":"minify ./dist/mermaid.js > ./dist/mermaid.min.js","release":"yarn build","lint":"eslint src","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"percy exec -- cypress run","e2e":"start-server-and-test dev http://localhost:9000/ cypress","e2e-upd":"yarn lint && jest e2e -u --config e2e/jest.config.js","dev":"webpack-dev-server --config webpack.config.e2e.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn test","prepare":"yarn build"},"repository":{"type":"git","url":"https://github.com/knsv/mermaid"},"author":"Knut Sveidqvist","license":"MIT","standard":{"ignore":["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],"globals":["page"]},"dependencies":{"@braintree/sanitize-url":"^3.1.0","d3":"^5.7.0","dagre":"^0.8.4","dagre-d3":"^0.6.4","entity-decode":"^2.0.2","graphlib":"^2.1.7","he":"^1.2.0","khroma":"^1.1.0","minify":"^4.1.1","moment-mini":"^2.22.1","stylis":"^3.5.2"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.8.4","@babel/register":"^7.0.0","@percy/cypress":"*","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.1.0","babel-jest":"^24.9.0","babel-loader":"^8.0.4","coveralls":"^3.0.2","css-loader":"^2.0.1","css-to-string-loader":"^0.1.3","cypress":"4.0.1","documentation":"^12.0.1","eslint":"^6.3.0","eslint-config-prettier":"^6.3.0","eslint-plugin-prettier":"^3.1.0","husky":"^1.2.1","identity-obj-proxy":"^3.0.0","jest":"^24.9.0","jison":"^0.4.18","moment":"^2.23.0","node-sass":"^4.12.0","prettier":"^1.18.2","puppeteer":"^1.17.0","sass-loader":"^7.1.0","start-server-and-test":"^1.10.6","terser-webpack-plugin":"^2.2.2","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.7.0","webpack-cli":"^3.1.2","webpack-dev-server":"^3.4.1","webpack-node-externals":"^1.7.2","yarn-upgrade-all":"^0.5.0"},"files":["dist"],"yarn-upgrade-all":{"ignore":["babel-core"]},"sideEffects":["**/*.css","**/*.scss"],"husky":{"hooks":{"pre-push":"yarn test"}}}')},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=new(n(176).default)({r:0,g:0,b:0,a:0},"transparent");e.default=r},function(t,e,n){var r=n(58),i=n(59);t.exports=function(t,e,n,a){var o=!n;n||(n={});for(var s=-1,c=e.length;++s-1&&t%1==0&&t-1}(s)?s:(n=s.match(a))?(e=n[0],r.test(e)?"about:blank":s):"about:blank"}}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[2,3],n=[1,7],r=[7,12,15,17,19,20,21],i=[7,11,12,15,17,19,20,21],a=[2,20],o=[1,32],s={trace:function(){},yy:{},symbols_:{error:2,start:3,GG:4,":":5,document:6,EOF:7,DIR:8,options:9,body:10,OPT:11,NL:12,line:13,statement:14,COMMIT:15,commit_arg:16,BRANCH:17,ID:18,CHECKOUT:19,MERGE:20,RESET:21,reset_arg:22,STR:23,HEAD:24,reset_parents:25,CARET:26,$accept:0,$end:1},terminals_:{2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"OPT",12:"NL",15:"COMMIT",17:"BRANCH",18:"ID",19:"CHECKOUT",20:"MERGE",21:"RESET",23:"STR",24:"HEAD",26:"CARET"},productions_:[0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:return r.setDirection(a[s-3]),a[s-1];case 4:r.setOptions(a[s-1]),this.$=a[s];break;case 5:a[s-1]+=a[s],this.$=a[s-1];break;case 7:this.$=[];break;case 8:a[s-1].push(a[s]),this.$=a[s-1];break;case 9:this.$=a[s-1];break;case 11:r.commit(a[s]);break;case 12:r.branch(a[s]);break;case 13:r.checkout(a[s]);break;case 14:r.merge(a[s]);break;case 15:r.reset(a[s]);break;case 16:this.$="";break;case 17:this.$=a[s];break;case 18:this.$=a[s-1]+":"+a[s];break;case 19:this.$=a[s-1]+":"+r.count,r.count=0;break;case 20:r.count=0;break;case 21:r.count+=1}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:e,9:6,12:n},{5:[1,8]},{7:[1,9]},t(r,[2,7],{10:10,11:[1,11]}),t(i,[2,6]),{6:12,7:e,9:6,12:n},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},t(i,[2,5]),{7:[1,21]},t(r,[2,8]),{12:[1,22]},t(r,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},t(r,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:a,25:31,26:o},{12:a,25:33,26:o},{12:[2,18]},{12:a,25:34,26:o},{12:[2,19]},{12:[2,21]}],defaultActions:{9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},c={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 12;case 1:case 2:case 3:break;case 4:return 4;case 5:return 15;case 6:return 17;case 7:return 20;case 8:return 21;case 9:return 19;case 10:case 11:return 8;case 12:return 5;case 13:return 26;case 14:this.begin("options");break;case 15:this.popState();break;case 16:return 11;case 17:this.begin("string");break;case 18:this.popState();break;case 19:return 23;case 20:return 18;case 21:return 7}},rules:[/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:end\r?\n)/i,/^(?:[^\n]+\r?\n)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][-_\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],conditions:{options:{rules:[15,16],inclusive:!1},string:{rules:[18,19],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],inclusive:!0}}};function u(){this.yy={}}return s.lexer=c,u.prototype=s,s.Parser=u,new u}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,r,i,a,o){a.length;switch(i){case 1:return r;case 4:break;case 6:r.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},r={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function i(){this.yy={}}return n.lexer=r,i.prototype=n,n.Parser=i,new i}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,4],n=[1,5],r=[1,6],i=[1,7],a=[1,9],o=[1,10,12,19,20,21,22],s=[1,6,10,12,19,20,21,22],c=[19,20,21],u=[1,22],l=[6,19,20,21,22],h={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,line:8,statement:9,txt:10,value:11,title:12,title_value:13,openDirective:14,typeDirective:15,closeDirective:16,":":17,argDirective:18,NEWLINE:19,";":20,EOF:21,open_directive:22,type_directive:23,arg_directive:24,close_directive:25,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",10:"txt",11:"value",12:"title",13:"title_value",17:":",19:"NEWLINE",20:";",21:"EOF",22:"open_directive",23:"type_directive",24:"arg_directive",25:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[9,0],[9,2],[9,2],[9,1],[5,3],[5,5],[4,1],[4,1],[4,1],[14,1],[15,1],[18,1],[16,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 6:this.$=a[s-1];break;case 8:r.addSection(a[s-1],r.cleanupValue(a[s]));break;case 9:this.$=a[s].trim(),r.setTitle(this.$);break;case 16:r.parseDirective("%%{","open_directive");break;case 17:r.parseDirective(a[s],"type_directive");break;case 18:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 19:r.parseDirective("}%%","close_directive","pie")}},table:[{3:1,4:2,5:3,6:e,14:8,19:n,20:r,21:i,22:a},{1:[3]},{3:10,4:2,5:3,6:e,14:8,19:n,20:r,21:i,22:a},{3:11,4:2,5:3,6:e,14:8,19:n,20:r,21:i,22:a},t(o,[2,4],{7:12}),t(s,[2,13]),t(s,[2,14]),t(s,[2,15]),{15:13,23:[1,14]},{23:[2,16]},{1:[2,1]},{1:[2,2]},t(c,[2,7],{14:8,8:15,9:16,5:19,1:[2,3],10:[1,17],12:[1,18],22:a}),{16:20,17:[1,21],25:u},t([17,25],[2,17]),t(o,[2,5]),{4:23,19:n,20:r,21:i},{11:[1,24]},{13:[1,25]},t(c,[2,10]),t(l,[2,11]),{18:26,24:[1,27]},t(l,[2,19]),t(o,[2,6]),t(c,[2,8]),t(c,[2,9]),{16:28,25:u},{25:[2,18]},t(l,[2,12])],defaultActions:{9:[2,16],10:[2,1],11:[2,2],27:[2,18]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},f={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),22;case 1:return this.begin("type_directive"),23;case 2:return this.popState(),this.begin("arg_directive"),17;case 3:return this.popState(),this.popState(),25;case 4:return 24;case 5:case 6:break;case 7:return 19;case 8:case 9:break;case 10:return this.begin("title"),12;case 11:return this.popState(),"title_value";case 12:this.begin("string");break;case 13:this.popState();break;case 14:return"txt";case 15:return 6;case 16:return"value";case 17:return 21}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[13,14],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,15,16,17],inclusive:!0}}};function d(){this.yy={}}return h.lexer=f,d.prototype=h,h.Parser=d,new d}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,5],r=[6,9,11,23,37],i=[1,17],a=[1,20],o=[1,25],s=[1,26],c=[1,27],u=[1,28],l=[1,37],h=[23,34,35],f=[4,6,9,11,23,37],d=[30,31,32,33],p=[22,27],g={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,ALPHANUM:23,attribute:24,attributeType:25,attributeName:26,ATTRIBUTE_WORD:27,cardinality:28,relType:29,ZERO_OR_ONE:30,ZERO_OR_MORE:31,ONE_OR_MORE:32,ONLY_ONE:33,NON_IDENTIFYING:34,IDENTIFYING:35,WORD:36,open_directive:37,type_directive:38,arg_directive:39,close_directive:40,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"ALPHANUM",27:"ATTRIBUTE_WORD",30:"ZERO_OR_ONE",31:"ZERO_OR_MORE",32:"ONE_OR_MORE",33:"ONLY_ONE",34:"NON_IDENTIFYING",35:"IDENTIFYING",36:"WORD",37:"open_directive",38:"type_directive",39:"arg_directive",40:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[17,1],[21,1],[21,2],[24,2],[25,1],[26,1],[18,3],[28,1],[28,1],[28,1],[28,1],[29,1],[29,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:break;case 3:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 7:case 8:this.$=[];break;case 12:r.addEntity(a[s-4]),r.addEntity(a[s-2]),r.addRelationship(a[s-4],a[s],a[s-2],a[s-3]);break;case 13:r.addEntity(a[s-3]),r.addAttributes(a[s-3],a[s-1]);break;case 14:r.addEntity(a[s-2]);break;case 15:r.addEntity(a[s]);break;case 16:this.$=a[s];break;case 17:this.$=[a[s]];break;case 18:a[s].push(a[s-1]),this.$=a[s];break;case 19:this.$={attributeType:a[s-1],attributeName:a[s]};break;case 20:case 21:this.$=a[s];break;case 22:this.$={cardA:a[s],relType:a[s-1],cardB:a[s-2]};break;case 23:this.$=r.Cardinality.ZERO_OR_ONE;break;case 24:this.$=r.Cardinality.ZERO_OR_MORE;break;case 25:this.$=r.Cardinality.ONE_OR_MORE;break;case 26:this.$=r.Cardinality.ONLY_ONE;break;case 27:this.$=r.Identification.NON_IDENTIFYING;break;case 28:this.$=r.Identification.IDENTIFYING;break;case 29:this.$=a[s].replace(/"/g,"");break;case 30:this.$=a[s];break;case 31:r.parseDirective("%%{","open_directive");break;case 32:r.parseDirective(a[s],"type_directive");break;case 33:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 34:r.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:e,7:3,12:4,37:n},{1:[3]},t(r,[2,3],{5:6}),{3:7,4:e,7:3,12:4,37:n},{13:8,38:[1,9]},{38:[2,31]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:i,37:n},{1:[2,2]},{14:18,15:[1,19],40:a},t([15,40],[2,32]),t(r,[2,8],{1:[2,1]}),t(r,[2,4]),{7:15,10:21,12:4,17:16,23:i,37:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,11]),t(r,[2,15],{18:22,28:24,20:[1,23],30:o,31:s,32:c,33:u}),t([6,9,11,15,20,23,30,31,32,33,37],[2,16]),{11:[1,29]},{16:30,39:[1,31]},{11:[2,34]},t(r,[2,5]),{17:32,23:i},{21:33,22:[1,34],24:35,25:36,27:l},{29:38,34:[1,39],35:[1,40]},t(h,[2,23]),t(h,[2,24]),t(h,[2,25]),t(h,[2,26]),t(f,[2,9]),{14:41,40:a},{40:[2,33]},{15:[1,42]},{22:[1,43]},t(r,[2,14]),{21:44,22:[2,17],24:35,25:36,27:l},{26:45,27:[1,46]},{27:[2,20]},{28:47,30:o,31:s,32:c,33:u},t(d,[2,27]),t(d,[2,28]),{11:[1,48]},{19:49,23:[1,51],36:[1,50]},t(r,[2,13]),{22:[2,18]},t(p,[2,19]),t(p,[2,21]),{23:[2,22]},t(f,[2,10]),t(r,[2,12]),t(r,[2,29]),t(r,[2,30])],defaultActions:{5:[2,31],7:[2,2],20:[2,34],31:[2,33],37:[2,20],44:[2,18],47:[2,22]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},y={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),37;case 1:return this.begin("type_directive"),38;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),40;case 4:return 39;case 5:case 6:break;case 7:return 11;case 8:break;case 9:return 9;case 10:return 36;case 11:return 4;case 12:return this.begin("block"),20;case 13:break;case 14:return 27;case 15:break;case 16:return this.popState(),22;case 17:return e.yytext[0];case 18:return 30;case 19:return 31;case 20:return 32;case 21:return 33;case 22:return 30;case 23:return 31;case 24:return 32;case 25:return 34;case 26:return 35;case 27:case 28:return 34;case 29:return 23;case 30:return e.yytext[0];case 31:return 6}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:\s+)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\|o\b)/i,/^(?:\}o\b)/i,/^(?:\}\|)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},block:{rules:[13,14,15,16,17],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,18,19,20,21,22,23,24,25,26,27,28,29,30,31],inclusive:!0}}};function v(){this.yy={}}return g.lexer=y,v.prototype=g,g.Parser=v,new v}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){"use strict";var r;Object.defineProperty(e,"__esModule",{value:!0}),function(t){t[t.ALL=0]="ALL",t[t.RGB=1]="RGB",t[t.HSL=2]="HSL"}(r||(r={})),e.TYPE=r},function(t,e,n){"use strict";var r=n(10);t.exports=i;function i(t){this._isDirected=!r.has(t,"directed")||t.directed,this._isMultigraph=!!r.has(t,"multigraph")&&t.multigraph,this._isCompound=!!r.has(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=r.constant(void 0),this._defaultEdgeLabelFn=r.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children["\0"]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function a(t,e){t[e]?t[e]++:t[e]=1}function o(t,e){--t[e]||delete t[e]}function s(t,e,n,i){var a=""+e,o=""+n;if(!t&&a>o){var s=a;a=o,o=s}return a+""+o+""+(r.isUndefined(i)?"\0":i)}function c(t,e,n,r){var i=""+e,a=""+n;if(!t&&i>a){var o=i;i=a,a=o}var s={v:i,w:a};return r&&(s.name=r),s}function u(t,e){return s(t,e.v,e.w,e.name)}i.prototype._nodeCount=0,i.prototype._edgeCount=0,i.prototype.isDirected=function(){return this._isDirected},i.prototype.isMultigraph=function(){return this._isMultigraph},i.prototype.isCompound=function(){return this._isCompound},i.prototype.setGraph=function(t){return this._label=t,this},i.prototype.graph=function(){return this._label},i.prototype.setDefaultNodeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultNodeLabelFn=t,this},i.prototype.nodeCount=function(){return this._nodeCount},i.prototype.nodes=function(){return r.keys(this._nodes)},i.prototype.sources=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._in[e])}))},i.prototype.sinks=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._out[e])}))},i.prototype.setNodes=function(t,e){var n=arguments,i=this;return r.each(t,(function(t){n.length>1?i.setNode(t,e):i.setNode(t)})),this},i.prototype.setNode=function(t,e){return r.has(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]="\0",this._children[t]={},this._children["\0"][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)},i.prototype.node=function(t){return this._nodes[t]},i.prototype.hasNode=function(t){return r.has(this._nodes,t)},i.prototype.removeNode=function(t){var e=this;if(r.has(this._nodes,t)){var n=function(t){e.removeEdge(e._edgeObjs[t])};delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],r.each(this.children(t),(function(t){e.setParent(t)})),delete this._children[t]),r.each(r.keys(this._in[t]),n),delete this._in[t],delete this._preds[t],r.each(r.keys(this._out[t]),n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this},i.prototype.setParent=function(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(r.isUndefined(e))e="\0";else{for(var n=e+="";!r.isUndefined(n);n=this.parent(n))if(n===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this},i.prototype._removeFromParentsChildList=function(t){delete this._children[this._parent[t]][t]},i.prototype.parent=function(t){if(this._isCompound){var e=this._parent[t];if("\0"!==e)return e}},i.prototype.children=function(t){if(r.isUndefined(t)&&(t="\0"),this._isCompound){var e=this._children[t];if(e)return r.keys(e)}else{if("\0"===t)return this.nodes();if(this.hasNode(t))return[]}},i.prototype.predecessors=function(t){var e=this._preds[t];if(e)return r.keys(e)},i.prototype.successors=function(t){var e=this._sucs[t];if(e)return r.keys(e)},i.prototype.neighbors=function(t){var e=this.predecessors(t);if(e)return r.union(e,this.successors(t))},i.prototype.isLeaf=function(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length},i.prototype.filterNodes=function(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;r.each(this._nodes,(function(n,r){t(r)&&e.setNode(r,n)})),r.each(this._edgeObjs,(function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))}));var i={};return this._isCompound&&r.each(e.nodes(),(function(t){e.setParent(t,function t(r){var a=n.parent(r);return void 0===a||e.hasNode(a)?(i[r]=a,a):a in i?i[a]:t(a)}(t))})),e},i.prototype.setDefaultEdgeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultEdgeLabelFn=t,this},i.prototype.edgeCount=function(){return this._edgeCount},i.prototype.edges=function(){return r.values(this._edgeObjs)},i.prototype.setPath=function(t,e){var n=this,i=arguments;return r.reduce(t,(function(t,r){return i.length>1?n.setEdge(t,r,e):n.setEdge(t,r),r})),this},i.prototype.setEdge=function(){var t,e,n,i,o=!1,u=arguments[0];"object"==typeof u&&null!==u&&"v"in u?(t=u.v,e=u.w,n=u.name,2===arguments.length&&(i=arguments[1],o=!0)):(t=u,e=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],o=!0)),t=""+t,e=""+e,r.isUndefined(n)||(n=""+n);var l=s(this._isDirected,t,e,n);if(r.has(this._edgeLabels,l))return o&&(this._edgeLabels[l]=i),this;if(!r.isUndefined(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[l]=o?i:this._defaultEdgeLabelFn(t,e,n);var h=c(this._isDirected,t,e,n);return t=h.v,e=h.w,Object.freeze(h),this._edgeObjs[l]=h,a(this._preds[e],t),a(this._sucs[t],e),this._in[e][l]=h,this._out[t][l]=h,this._edgeCount++,this},i.prototype.edge=function(t,e,n){var r=1===arguments.length?u(this._isDirected,arguments[0]):s(this._isDirected,t,e,n);return this._edgeLabels[r]},i.prototype.hasEdge=function(t,e,n){var i=1===arguments.length?u(this._isDirected,arguments[0]):s(this._isDirected,t,e,n);return r.has(this._edgeLabels,i)},i.prototype.removeEdge=function(t,e,n){var r=1===arguments.length?u(this._isDirected,arguments[0]):s(this._isDirected,t,e,n),i=this._edgeObjs[r];return i&&(t=i.v,e=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],o(this._preds[e],t),o(this._sucs[t],e),delete this._in[e][r],delete this._out[t][r],this._edgeCount--),this},i.prototype.inEdges=function(t,e){var n=this._in[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.v===e})):i}},i.prototype.outEdges=function(t,e){var n=this._out[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.w===e})):i}},i.prototype.nodeEdges=function(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}},function(t,e,n){var r=n(33)(n(16),"Map");t.exports=r},function(t,e,n){var r=n(217),i=n(224),a=n(226),o=n(227),s=n(228);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=9007199254740991}},function(t,e,n){(function(t){var r=n(109),i=e&&!e.nodeType&&e,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=a&&a.exports===i&&r.process,s=function(){try{var t=a&&a.require&&a.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(t){}}();t.exports=s}).call(this,n(7)(t))},function(t,e,n){var r=n(62),i=n(234),a=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return i(t);var e=[];for(var n in Object(t))a.call(t,n)&&"constructor"!=n&&e.push(n);return e}},function(t,e,n){var r=n(116),i=n(117),a=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,s=o?function(t){return null==t?[]:(t=Object(t),r(o(t),(function(e){return a.call(t,e)})))}:i;t.exports=s},function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,i=t.length;++n0&&a(l)?n>1?t(l,n-1,a,o,s):r(s,l):o||(s[s.length]=l)}return s}},function(t,e,n){var r=n(42);t.exports=function(t,e,n){for(var i=-1,a=t.length;++i4,u=c?1:17,l=c?8:4,h=s?0:-1,f=c?255:15;return i.default.set({r:(r>>l*(h+3)&f)*u,g:(r>>l*(h+2)&f)*u,b:(r>>l*(h+1)&f)*u,a:s?(r&f)*u/255:1},t)}}},stringify:function(t){return t.a<1?"#"+a.DEC2HEX[Math.round(t.r)]+a.DEC2HEX[Math.round(t.g)]+a.DEC2HEX[Math.round(t.b)]+r.default.unit.frac2hex(t.a):"#"+a.DEC2HEX[Math.round(t.r)]+a.DEC2HEX[Math.round(t.g)]+a.DEC2HEX[Math.round(t.b)]}};e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(45),a=n(15);e.default=function(t,e,n,o){void 0===o&&(o=1);var s=i.default.set({h:r.default.channel.clamp.h(t),s:r.default.channel.clamp.s(e),l:r.default.channel.clamp.l(n),a:r.default.channel.clamp.a(o)});return a.default.stringify(s)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"a")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(15);e.default=function(t){var e=i.default.parse(t),n=e.r,a=e.g,o=e.b,s=.2126*r.default.channel.toLinear(n)+.7152*r.default.channel.toLinear(a)+.0722*r.default.channel.toLinear(o);return r.default.lang.round(s)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(102);e.default=function(t){return r.default(t)>=.5}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"a",e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"a",-e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(15),i=n(52);e.default=function(t,e){var n=r.default.parse(t),a={};for(var o in e)e[o]&&(a[o]=n[o]+e[o]);return i.default(t,a)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(15),i=n(51);e.default=function(t,e,n){void 0===n&&(n=50);var a=r.default.parse(t),o=a.r,s=a.g,c=a.b,u=a.a,l=r.default.parse(e),h=l.r,f=l.g,d=l.b,p=l.a,g=n/100,y=2*g-1,v=u-p,m=((y*v==-1?y:(y+v)/(1+y*v))+1)/2,b=1-m,x=o*m+h*b,_=s*m+f*b,k=c*m+d*b,w=u*g+p*(1-g);return i.default(x,_,k,w)}},function(t,e,n){var r=n(53),i=n(79),a=n(58),o=n(229),s=n(235),c=n(114),u=n(115),l=n(238),h=n(239),f=n(119),d=n(240),p=n(41),g=n(244),y=n(245),v=n(124),m=n(5),b=n(39),x=n(249),_=n(11),k=n(251),w=n(30),E={};E["[object Arguments]"]=E["[object Array]"]=E["[object ArrayBuffer]"]=E["[object DataView]"]=E["[object Boolean]"]=E["[object Date]"]=E["[object Float32Array]"]=E["[object Float64Array]"]=E["[object Int8Array]"]=E["[object Int16Array]"]=E["[object Int32Array]"]=E["[object Map]"]=E["[object Number]"]=E["[object Object]"]=E["[object RegExp]"]=E["[object Set]"]=E["[object String]"]=E["[object Symbol]"]=E["[object Uint8Array]"]=E["[object Uint8ClampedArray]"]=E["[object Uint16Array]"]=E["[object Uint32Array]"]=!0,E["[object Error]"]=E["[object Function]"]=E["[object WeakMap]"]=!1,t.exports=function t(e,n,T,C,A,S){var M,O=1&n,D=2&n,N=4&n;if(T&&(M=A?T(e,C,A,S):T(e)),void 0!==M)return M;if(!_(e))return e;var B=m(e);if(B){if(M=g(e),!O)return u(e,M)}else{var L=p(e),F="[object Function]"==L||"[object GeneratorFunction]"==L;if(b(e))return c(e,O);if("[object Object]"==L||"[object Arguments]"==L||F&&!A){if(M=D||F?{}:v(e),!O)return D?h(e,s(M,e)):l(e,o(M,e))}else{if(!E[L])return A?e:{};M=y(e,L,O)}}S||(S=new r);var P=S.get(e);if(P)return P;S.set(e,M),k(e)?e.forEach((function(r){M.add(t(r,n,T,r,e,S))})):x(e)&&e.forEach((function(r,i){M.set(i,t(r,n,T,i,e,S))}));var I=N?D?d:f:D?keysIn:w,j=B?void 0:I(e);return i(j||e,(function(r,i){j&&(r=e[i=r]),a(M,i,t(r,n,T,i,e,S))})),M}},function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n(211))},function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},function(t,e,n){var r=n(33),i=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=i},function(t,e,n){var r=n(230),i=n(47),a=n(5),o=n(39),s=n(60),c=n(48),u=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=a(t),l=!n&&i(t),h=!n&&!l&&o(t),f=!n&&!l&&!h&&c(t),d=n||l||h||f,p=d?r(t.length,String):[],g=p.length;for(var y in t)!e&&!u.call(t,y)||d&&("length"==y||h&&("offset"==y||"parent"==y)||f&&("buffer"==y||"byteLength"==y||"byteOffset"==y)||s(y,g))||p.push(y);return p}},function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},function(t,e,n){(function(t){var r=n(16),i=e&&!e.nodeType&&e,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=a&&a.exports===i?r.Buffer:void 0,s=o?o.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,r=s?s(n):new t.constructor(n);return t.copy(r),r}}).call(this,n(7)(t))},function(t,e){t.exports=function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++nl))return!1;var f=c.get(t);if(f&&c.get(e))return f==e;var d=-1,p=!0,g=2&n?new r:void 0;for(c.set(t,e),c.set(e,t);++d0&&(a=c.removeMin(),(o=s[a]).distance!==Number.POSITIVE_INFINITY);)r(a).forEach(u);return s}(t,String(e),n||a,r||function(e){return t.outEdges(e)})};var a=r.constant(1)},function(t,e,n){var r=n(10);function i(){this._arr=[],this._keyIndices={}}t.exports=i,i.prototype.size=function(){return this._arr.length},i.prototype.keys=function(){return this._arr.map((function(t){return t.key}))},i.prototype.has=function(t){return r.has(this._keyIndices,t)},i.prototype.priority=function(t){var e=this._keyIndices[t];if(void 0!==e)return this._arr[e].priority},i.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},i.prototype.add=function(t,e){var n=this._keyIndices;if(t=String(t),!r.has(n,t)){var i=this._arr,a=i.length;return n[t]=a,i.push({key:t,priority:e}),this._decrease(a),!0}return!1},i.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},i.prototype.decrease=function(t,e){var n=this._keyIndices[t];if(e>this._arr[n].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[n].priority+" New: "+e);this._arr[n].priority=e,this._decrease(n)},i.prototype._heapify=function(t){var e=this._arr,n=2*t,r=n+1,i=t;n>1].priority2?e[2]:void 0;for(u&&a(e[0],e[1],u)&&(r=1);++n1&&o.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,c=Math.sqrt(o*o+s*s);return aMath.abs(o)*u?(s<0&&(u=-u),n=0===s?0:u*o/s,r=u):(o<0&&(c=-c),n=c,r=0===o?0:c*s/o);return{x:i+n,y:a+r}}},function(t,e,n){t.exports=function t(e){"use strict";var n=/^\0+/g,r=/[\0\r\f]/g,i=/: */g,a=/zoo|gra/,o=/([,: ])(transform)/g,s=/,+\s*(?![^(]*[)])/g,c=/ +\s*(?![^(]*[)])/g,u=/ *[\0] */g,l=/,\r+?/g,h=/([\t\r\n ])*\f?&/g,f=/:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g,d=/\W+/g,p=/@(k\w+)\s*(\S*)\s*/,g=/::(place)/g,y=/:(read-only)/g,v=/\s+(?=[{\];=:>])/g,m=/([[}=:>])\s+/g,b=/(\{[^{]+?);(?=\})/g,x=/\s{2,}/g,_=/([^\(])(:+) */g,k=/[svh]\w+-[tblr]{2}/,w=/\(\s*(.*)\s*\)/g,E=/([\s\S]*?);/g,T=/-self|flex-/g,C=/[^]*?(:[rp][el]a[\w-]+)[^]*/,A=/stretch|:\s*\w+\-(?:conte|avail)/,S=/([^-])(image-set\()/,M="-webkit-",O="-moz-",D="-ms-",N=1,B=1,L=0,F=1,P=1,I=1,j=0,R=0,Y=0,z=[],U=[],$=0,W=null,H=0,V=1,G="",q="",X="";function Z(t,e,i,a,o){for(var s,c,l=0,h=0,f=0,d=0,v=0,m=0,b=0,x=0,k=0,E=0,T=0,C=0,A=0,S=0,O=0,D=0,j=0,U=0,W=0,K=i.length,it=K-1,at="",ot="",st="",ct="",ut="",lt="";O0&&(ot=ot.replace(r,"")),ot.trim().length>0)){switch(b){case 32:case 9:case 59:case 13:case 10:break;default:ot+=i.charAt(O)}b=59}if(1===j)switch(b){case 123:case 125:case 59:case 34:case 39:case 40:case 41:case 44:j=0;case 9:case 13:case 10:case 32:break;default:for(j=0,W=O,v=b,O--,b=59;W0&&(++O,b=v);case 123:W=K}}switch(b){case 123:for(v=(ot=ot.trim()).charCodeAt(0),T=1,W=++O;O0&&(ot=ot.replace(r,"")),m=ot.charCodeAt(1)){case 100:case 109:case 115:case 45:s=e;break;default:s=z}if(W=(st=Z(e,s,st,m,o+1)).length,Y>0&&0===W&&(W=ot.length),$>0&&(c=nt(3,st,s=J(z,ot,U),e,B,N,W,m,o,a),ot=s.join(""),void 0!==c&&0===(W=(st=c.trim()).length)&&(m=0,st="")),W>0)switch(m){case 115:ot=ot.replace(w,et);case 100:case 109:case 45:st=ot+"{"+st+"}";break;case 107:st=(ot=ot.replace(p,"$1 $2"+(V>0?G:"")))+"{"+st+"}",st=1===P||2===P&&tt("@"+st,3)?"@"+M+st+"@"+st:"@"+st;break;default:st=ot+st,112===a&&(ct+=st,st="")}else st="";break;default:st=Z(e,J(e,ot,U),st,a,o+1)}ut+=st,C=0,j=0,S=0,D=0,U=0,A=0,ot="",st="",b=i.charCodeAt(++O);break;case 125:case 59:if((W=(ot=(D>0?ot.replace(r,""):ot).trim()).length)>1)switch(0===S&&(45===(v=ot.charCodeAt(0))||v>96&&v<123)&&(W=(ot=ot.replace(" ",":")).length),$>0&&void 0!==(c=nt(1,ot,e,t,B,N,ct.length,a,o,a))&&0===(W=(ot=c.trim()).length)&&(ot="\0\0"),v=ot.charCodeAt(0),m=ot.charCodeAt(1),v){case 0:break;case 64:if(105===m||99===m){lt+=ot+i.charAt(O);break}default:if(58===ot.charCodeAt(W-1))break;ct+=Q(ot,v,m,ot.charCodeAt(2))}C=0,j=0,S=0,D=0,U=0,ot="",b=i.charCodeAt(++O)}}switch(b){case 13:case 10:if(h+d+f+l+R===0)switch(E){case 41:case 39:case 34:case 64:case 126:case 62:case 42:case 43:case 47:case 45:case 58:case 44:case 59:case 123:case 125:break;default:S>0&&(j=1)}47===h?h=0:F+C===0&&107!==a&&ot.length>0&&(D=1,ot+="\0"),$*H>0&&nt(0,ot,e,t,B,N,ct.length,a,o,a),N=1,B++;break;case 59:case 125:if(h+d+f+l===0){N++;break}default:switch(N++,at=i.charAt(O),b){case 9:case 32:if(d+l+h===0)switch(x){case 44:case 58:case 9:case 32:at="";break;default:32!==b&&(at=" ")}break;case 0:at="\\0";break;case 12:at="\\f";break;case 11:at="\\v";break;case 38:d+h+l===0&&F>0&&(U=1,D=1,at="\f"+at);break;case 108:if(d+h+l+L===0&&S>0)switch(O-S){case 2:112===x&&58===i.charCodeAt(O-3)&&(L=x);case 8:111===k&&(L=k)}break;case 58:d+h+l===0&&(S=O);break;case 44:h+f+d+l===0&&(D=1,at+="\r");break;case 34:case 39:0===h&&(d=d===b?0:0===d?b:d);break;case 91:d+h+f===0&&l++;break;case 93:d+h+f===0&&l--;break;case 41:d+h+l===0&&f--;break;case 40:if(d+h+l===0){if(0===C)switch(2*x+3*k){case 533:break;default:T=0,C=1}f++}break;case 64:h+f+d+l+S+A===0&&(A=1);break;case 42:case 47:if(d+l+f>0)break;switch(h){case 0:switch(2*b+3*i.charCodeAt(O+1)){case 235:h=47;break;case 220:W=O,h=42}break;case 42:47===b&&42===x&&W+2!==O&&(33===i.charCodeAt(W+2)&&(ct+=i.substring(W,O+1)),at="",h=0)}}if(0===h){if(F+d+l+A===0&&107!==a&&59!==b)switch(b){case 44:case 126:case 62:case 43:case 41:case 40:if(0===C){switch(x){case 9:case 32:case 10:case 13:at+="\0";break;default:at="\0"+at+(44===b?"":"\0")}D=1}else switch(b){case 40:S+7===O&&108===x&&(S=0),C=++T;break;case 41:0==(C=--T)&&(D=1,at+="\0")}break;case 9:case 32:switch(x){case 0:case 123:case 125:case 59:case 44:case 12:case 9:case 32:case 10:case 13:break;default:0===C&&(D=1,at+="\0")}}ot+=at,32!==b&&9!==b&&(E=b)}}k=x,x=b,O++}if(W=ct.length,Y>0&&0===W&&0===ut.length&&0===e[0].length==0&&(109!==a||1===e.length&&(F>0?q:X)===e[0])&&(W=e.join(",").length+2),W>0){if(s=0===F&&107!==a?function(t){for(var e,n,i=0,a=t.length,o=Array(a);i1)){if(f=c.charCodeAt(c.length-1),d=n.charCodeAt(0),e="",0!==l)switch(f){case 42:case 126:case 62:case 43:case 32:case 40:break;default:e=" "}switch(d){case 38:n=e+q;case 126:case 62:case 43:case 32:case 41:case 40:break;case 91:n=e+n+q;break;case 58:switch(2*n.charCodeAt(1)+3*n.charCodeAt(2)){case 530:if(I>0){n=e+n.substring(8,h-1);break}default:(l<1||s[l-1].length<1)&&(n=e+q+n)}break;case 44:e="";default:n=h>1&&n.indexOf(":")>0?e+n.replace(_,"$1"+q+"$2"):e+n+q}c+=n}o[i]=c.replace(r,"").trim()}return o}(e):e,$>0&&void 0!==(c=nt(2,ct,s,t,B,N,W,a,o,a))&&0===(ct=c).length)return lt+ct+ut;if(ct=s.join(",")+"{"+ct+"}",P*L!=0){switch(2!==P||tt(ct,2)||(L=0),L){case 111:ct=ct.replace(y,":-moz-$1")+ct;break;case 112:ct=ct.replace(g,"::-webkit-input-$1")+ct.replace(g,"::-moz-$1")+ct.replace(g,":-ms-input-$1")+ct}L=0}}return lt+ct+ut}function J(t,e,n){var r=e.trim().split(l),i=r,a=r.length,o=t.length;switch(o){case 0:case 1:for(var s=0,c=0===o?"":t[0]+" ";s0&&F>0)return i.replace(f,"$1").replace(h,"$1"+X);break;default:return t.trim()+i.replace(h,"$1"+t.trim())}default:if(n*F>0&&i.indexOf("\f")>0)return i.replace(h,(58===t.charCodeAt(0)?"":"$1")+t.trim())}return t+i}function Q(t,e,n,r){var u,l=0,h=t+";",f=2*e+3*n+4*r;if(944===f)return function(t){var e=t.length,n=t.indexOf(":",9)+1,r=t.substring(0,n).trim(),i=t.substring(n,e-1).trim();switch(t.charCodeAt(9)*V){case 0:break;case 45:if(110!==t.charCodeAt(10))break;default:var a=i.split((i="",s)),o=0;for(n=0,e=a.length;o64&&h<90||h>96&&h<123||95===h||45===h&&45!==u.charCodeAt(1)))switch(isNaN(parseFloat(u))+(-1!==u.indexOf("("))){case 1:switch(u){case"infinite":case"alternate":case"backwards":case"running":case"normal":case"forwards":case"both":case"none":case"linear":case"ease":case"ease-in":case"ease-out":case"ease-in-out":case"paused":case"reverse":case"alternate-reverse":case"inherit":case"initial":case"unset":case"step-start":case"step-end":break;default:u+=G}}l[n++]=u}i+=(0===o?"":",")+l.join(" ")}}return i=r+i+";",1===P||2===P&&tt(i,1)?M+i+i:i}(h);if(0===P||2===P&&!tt(h,1))return h;switch(f){case 1015:return 97===h.charCodeAt(10)?M+h+h:h;case 951:return 116===h.charCodeAt(3)?M+h+h:h;case 963:return 110===h.charCodeAt(5)?M+h+h:h;case 1009:if(100!==h.charCodeAt(4))break;case 969:case 942:return M+h+h;case 978:return M+h+O+h+h;case 1019:case 983:return M+h+O+h+D+h+h;case 883:return 45===h.charCodeAt(8)?M+h+h:h.indexOf("image-set(",11)>0?h.replace(S,"$1-webkit-$2")+h:h;case 932:if(45===h.charCodeAt(4))switch(h.charCodeAt(5)){case 103:return M+"box-"+h.replace("-grow","")+M+h+D+h.replace("grow","positive")+h;case 115:return M+h+D+h.replace("shrink","negative")+h;case 98:return M+h+D+h.replace("basis","preferred-size")+h}return M+h+D+h+h;case 964:return M+h+D+"flex-"+h+h;case 1023:if(99!==h.charCodeAt(8))break;return u=h.substring(h.indexOf(":",15)).replace("flex-","").replace("space-between","justify"),M+"box-pack"+u+M+h+D+"flex-pack"+u+h;case 1005:return a.test(h)?h.replace(i,":"+M)+h.replace(i,":"+O)+h:h;case 1e3:switch(l=(u=h.substring(13).trim()).indexOf("-")+1,u.charCodeAt(0)+u.charCodeAt(l)){case 226:u=h.replace(k,"tb");break;case 232:u=h.replace(k,"tb-rl");break;case 220:u=h.replace(k,"lr");break;default:return h}return M+h+D+u+h;case 1017:if(-1===h.indexOf("sticky",9))return h;case 975:switch(l=(h=t).length-10,f=(u=(33===h.charCodeAt(l)?h.substring(0,l):h).substring(t.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|u.charCodeAt(7))){case 203:if(u.charCodeAt(8)<111)break;case 115:h=h.replace(u,M+u)+";"+h;break;case 207:case 102:h=h.replace(u,M+(f>102?"inline-":"")+"box")+";"+h.replace(u,M+u)+";"+h.replace(u,D+u+"box")+";"+h}return h+";";case 938:if(45===h.charCodeAt(5))switch(h.charCodeAt(6)){case 105:return u=h.replace("-items",""),M+h+M+"box-"+u+D+"flex-"+u+h;case 115:return M+h+D+"flex-item-"+h.replace(T,"")+h;default:return M+h+D+"flex-line-pack"+h.replace("align-content","").replace(T,"")+h}break;case 973:case 989:if(45!==h.charCodeAt(3)||122===h.charCodeAt(4))break;case 931:case 953:if(!0===A.test(t))return 115===(u=t.substring(t.indexOf(":")+1)).charCodeAt(0)?Q(t.replace("stretch","fill-available"),e,n,r).replace(":fill-available",":stretch"):h.replace(u,M+u)+h.replace(u,O+u.replace("fill-",""))+h;break;case 962:if(h=M+h+(102===h.charCodeAt(5)?D+h:"")+h,n+r===211&&105===h.charCodeAt(13)&&h.indexOf("transform",10)>0)return h.substring(0,h.indexOf(";",27)+1).replace(o,"$1-webkit-$2")+h}return h}function tt(t,e){var n=t.indexOf(1===e?":":"{"),r=t.substring(0,3!==e?n:10),i=t.substring(n+1,t.length-1);return W(2!==e?r:r.replace(C,"$1"),i,e)}function et(t,e){var n=Q(e,e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2));return n!==e+";"?n.replace(E," or ($1)").substring(4):"("+e+")"}function nt(t,e,n,r,i,a,o,s,c,u){for(var l,h=0,f=e;h<$;++h)switch(l=U[h].call(at,t,f,n,r,i,a,o,s,c,u)){case void 0:case!1:case!0:case null:break;default:f=l}if(f!==e)return f}function rt(t,e,n,r){for(var i=e+1;i0&&(G=i.replace(d,91===a?"":"-")),a=1,1===F?X=i:q=i;var o,s=[X];$>0&&void 0!==(o=nt(-1,n,s,s,B,N,0,0,0,0))&&"string"==typeof o&&(n=o);var c=Z(z,s,n,0,0);return $>0&&void 0!==(o=nt(-2,c,s,s,B,N,c.length,0,0,0))&&"string"!=typeof(c=o)&&(a=0),G="",X="",q="",L=0,B=1,N=1,j*a==0?c:function(t){return t.replace(r,"").replace(v,"").replace(m,"$1").replace(b,"$1").replace(x," ")}(c)}return at.use=function t(e){switch(e){case void 0:case null:$=U.length=0;break;default:if("function"==typeof e)U[$++]=e;else if("object"==typeof e)for(var n=0,r=e.length;n=255?255:t<0?0:t},g:function(t){return t>=255?255:t<0?0:t},b:function(t){return t>=255?255:t<0?0:t},h:function(t){return t%360},s:function(t){return t>=100?100:t<0?0:t},l:function(t){return t>=100?100:t<0?0:t},a:function(t){return t>=1?1:t<0?0:t}},toLinear:function(t){var e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:function(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t},hsl2rgb:function(t,e){var n=t.h,i=t.s,a=t.l;if(100===i)return 2.55*a;n/=360,i/=100;var o=(a/=100)<.5?a*(1+i):a+i-a*i,s=2*a-o;switch(e){case"r":return 255*r.hue2rgb(s,o,n+1/3);case"g":return 255*r.hue2rgb(s,o,n);case"b":return 255*r.hue2rgb(s,o,n-1/3)}},rgb2hsl:function(t,e){var n=t.r,r=t.g,i=t.b;n/=255,r/=255,i/=255;var a=Math.max(n,r,i),o=Math.min(n,r,i),s=(a+o)/2;if("l"===e)return 100*s;if(a===o)return 0;var c=a-o;if("s"===e)return 100*(s>.5?c/(2-a-o):c/(a+o));switch(a){case n:return 60*((r-i)/c+(r1?e:"0"+e},dec2hex:function(t){var e=Math.round(t).toString(16);return e.length>1?e:"0"+e}};e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(75),a=n(177),o=function(){function t(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new a.default}return t.prototype.set=function(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=i.TYPE.ALL,this},t.prototype._ensureHSL=function(){void 0===this.data.h&&(this.data.h=r.default.channel.rgb2hsl(this.data,"h")),void 0===this.data.s&&(this.data.s=r.default.channel.rgb2hsl(this.data,"s")),void 0===this.data.l&&(this.data.l=r.default.channel.rgb2hsl(this.data,"l"))},t.prototype._ensureRGB=function(){void 0===this.data.r&&(this.data.r=r.default.channel.hsl2rgb(this.data,"r")),void 0===this.data.g&&(this.data.g=r.default.channel.hsl2rgb(this.data,"g")),void 0===this.data.b&&(this.data.b=r.default.channel.hsl2rgb(this.data,"b"))},Object.defineProperty(t.prototype,"r",{get:function(){return this.type.is(i.TYPE.HSL)||void 0===this.data.r?(this._ensureHSL(),r.default.channel.hsl2rgb(this.data,"r")):this.data.r},set:function(t){this.type.set(i.TYPE.RGB),this.changed=!0,this.data.r=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"g",{get:function(){return this.type.is(i.TYPE.HSL)||void 0===this.data.g?(this._ensureHSL(),r.default.channel.hsl2rgb(this.data,"g")):this.data.g},set:function(t){this.type.set(i.TYPE.RGB),this.changed=!0,this.data.g=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"b",{get:function(){return this.type.is(i.TYPE.HSL)||void 0===this.data.b?(this._ensureHSL(),r.default.channel.hsl2rgb(this.data,"b")):this.data.b},set:function(t){this.type.set(i.TYPE.RGB),this.changed=!0,this.data.b=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"h",{get:function(){return this.type.is(i.TYPE.RGB)||void 0===this.data.h?(this._ensureRGB(),r.default.channel.rgb2hsl(this.data,"h")):this.data.h},set:function(t){this.type.set(i.TYPE.HSL),this.changed=!0,this.data.h=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"s",{get:function(){return this.type.is(i.TYPE.RGB)||void 0===this.data.s?(this._ensureRGB(),r.default.channel.rgb2hsl(this.data,"s")):this.data.s},set:function(t){this.type.set(i.TYPE.HSL),this.changed=!0,this.data.s=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"l",{get:function(){return this.type.is(i.TYPE.RGB)||void 0===this.data.l?(this._ensureRGB(),r.default.channel.rgb2hsl(this.data,"l")):this.data.l},set:function(t){this.type.set(i.TYPE.HSL),this.changed=!0,this.data.l=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"a",{get:function(){return this.data.a},set:function(t){this.changed=!0,this.data.a=t},enumerable:!0,configurable:!0}),t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(75),i=function(){function t(){this.type=r.TYPE.ALL}return t.prototype.get=function(){return this.type},t.prototype.set=function(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t},t.prototype.reset=function(){this.type=r.TYPE.ALL},t.prototype.is=function(t){return this.type===t},t}();e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i={};e.DEC2HEX=i;for(var a=0;a<=255;a++)i[a]=r.default.unit.dec2hex(a)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(99),i={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:function(t){t=t.toLowerCase();var e=i.colors[t];if(e)return r.default.parse(e)},stringify:function(t){var e=r.default.stringify(t);for(var n in i.colors)if(i.colors[n]===e)return n}};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(45),a={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:function(t){var e=t.charCodeAt(0);if(114===e||82===e){var n=t.match(a.re);if(n){var o=n[1],s=n[2],c=n[3],u=n[4],l=n[5],h=n[6],f=n[7],d=n[8];return i.default.set({r:r.default.channel.clamp.r(s?2.55*parseFloat(o):parseFloat(o)),g:r.default.channel.clamp.g(u?2.55*parseFloat(c):parseFloat(c)),b:r.default.channel.clamp.b(h?2.55*parseFloat(l):parseFloat(l)),a:f?r.default.channel.clamp.a(d?parseFloat(f)/100:parseFloat(f)):1},t)}}},stringify:function(t){return t.a<1?"rgba("+r.default.lang.round(t.r)+", "+r.default.lang.round(t.g)+", "+r.default.lang.round(t.b)+", "+r.default.lang.round(t.a)+")":"rgb("+r.default.lang.round(t.r)+", "+r.default.lang.round(t.g)+", "+r.default.lang.round(t.b)+")"}};e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(45),a={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:function(t){var e=t.match(a.hueRe);if(e){var n=e[1];switch(e[2]){case"grad":return r.default.channel.clamp.h(.9*parseFloat(n));case"rad":return r.default.channel.clamp.h(180*parseFloat(n)/Math.PI);case"turn":return r.default.channel.clamp.h(360*parseFloat(n))}}return r.default.channel.clamp.h(parseFloat(t))},parse:function(t){var e=t.charCodeAt(0);if(104===e||72===e){var n=t.match(a.re);if(n){var o=n[1],s=n[2],c=n[3],u=n[4],l=n[5];return i.default.set({h:a._hue2deg(o),s:r.default.channel.clamp.s(parseFloat(s)),l:r.default.channel.clamp.l(parseFloat(c)),a:u?r.default.channel.clamp.a(l?parseFloat(u)/100:parseFloat(u)):1},t)}}},stringify:function(t){return t.a<1?"hsla("+r.default.lang.round(t.h)+", "+r.default.lang.round(t.s)+"%, "+r.default.lang.round(t.l)+"%, "+t.a+")":"hsl("+r.default.lang.round(t.h)+", "+r.default.lang.round(t.s)+"%, "+r.default.lang.round(t.l)+"%)"}};e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"r")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"g")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"b")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"h")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"s")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"l")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(103);e.default=function(t){return!r.default(t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(15);e.default=function(t){try{return r.default.parse(t),!0}catch(t){return!1}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"s",e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"s",-e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"l",e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"l",-e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t){return r.default(t,"h",180)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(52);e.default=function(t){return r.default(t,{s:0})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(15),i=n(107);e.default=function(t,e){void 0===e&&(e=100);var n=r.default.parse(t);return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,i.default(n,t,e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(15),a=n(106);e.default=function(t,e){var n,o,s,c=i.default.parse(t),u={};for(var l in e)u[l]=(n=c[l],o=e[l],s=r.default.channel.max[l],o>0?(s-n)*o/100:n*o/100);return a.default(t,u)}},function(t,e,n){t.exports={Graph:n(76),version:n(300)}},function(t,e,n){var r=n(108);t.exports=function(t){return r(t,4)}},function(t,e){t.exports=function(){this.__data__=[],this.size=0}},function(t,e,n){var r=n(55),i=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=r(e,t);return!(n<0)&&(n==e.length-1?e.pop():i.call(e,n,1),--this.size,!0)}},function(t,e,n){var r=n(55);t.exports=function(t){var e=this.__data__,n=r(e,t);return n<0?void 0:e[n][1]}},function(t,e,n){var r=n(55);t.exports=function(t){return r(this.__data__,t)>-1}},function(t,e,n){var r=n(55);t.exports=function(t,e){var n=this.__data__,i=r(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this}},function(t,e,n){var r=n(54);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(54),i=n(77),a=n(78);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!i||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new a(o)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(37),i=n(214),a=n(11),o=n(110),s=/^\[object .+?Constructor\]$/,c=Function.prototype,u=Object.prototype,l=c.toString,h=u.hasOwnProperty,f=RegExp("^"+l.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!a(t)||i(t))&&(r(t)?f:s).test(o(t))}},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var r=n(38),i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=a.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(t){}var i=o.call(t);return r&&(e?t[s]=n:delete t[s]),i}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r,i=n(215),a=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!a&&a in t}},function(t,e,n){var r=n(16)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(218),i=n(54),a=n(77);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||i),string:new r}}},function(t,e,n){var r=n(219),i=n(220),a=n(221),o=n(222),s=n(223);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(131),i=n(292),a=n(296),o=n(132),s=n(297),c=n(90);t.exports=function(t,e,n){var u=-1,l=i,h=t.length,f=!0,d=[],p=d;if(n)f=!1,l=a;else if(h>=200){var g=e?null:s(t);if(g)return c(g);f=!1,l=o,p=new r}else p=e?[]:d;t:for(;++u-1}},function(t,e,n){var r=n(145),i=n(294),a=n(295);t.exports=function(t,e,n){return e==e?a(t,e,n):r(t,i,n)}},function(t,e){t.exports=function(t){return t!=t}},function(t,e){t.exports=function(t,e,n){for(var r=n-1,i=t.length;++r1||1===e.length&&t.hasEdge(e[0],e[0])}))}},function(t,e,n){var r=n(10);t.exports=function(t,e,n){return function(t,e,n){var r={},i=t.nodes();return i.forEach((function(t){r[t]={},r[t][t]={distance:0},i.forEach((function(e){t!==e&&(r[t][e]={distance:Number.POSITIVE_INFINITY})})),n(t).forEach((function(n){var i=n.v===t?n.w:n.v,a=e(n);r[t][i]={distance:a,predecessor:t}}))})),i.forEach((function(t){var e=r[t];i.forEach((function(n){var a=r[n];i.forEach((function(n){var r=a[t],i=e[n],o=a[n],s=r.distance+i.distance;s0;){if(n=c.removeMin(),r.has(s,n))o.setEdge(n,s[n]);else{if(l)throw new Error("Input graph is not connected: "+t);l=!0}t.nodeEdges(n).forEach(u)}return o}},function(t,e,n){var r;try{r=n(3)}catch(t){}r||(r=window.graphlib),t.exports=r},function(t,e,n){"use strict";var r=n(4),i=n(345),a=n(348),o=n(349),s=n(8).normalizeRanks,c=n(351),u=n(8).removeEmptyRanks,l=n(352),h=n(353),f=n(354),d=n(355),p=n(364),g=n(8),y=n(17).Graph;t.exports=function(t,e){var n=e&&e.debugTiming?g.time:g.notime;n("layout",(function(){var e=n(" buildLayoutGraph",(function(){return function(t){var e=new y({multigraph:!0,compound:!0}),n=C(t.graph());return e.setGraph(r.merge({},m,T(n,v),r.pick(n,b))),r.forEach(t.nodes(),(function(n){var i=C(t.node(n));e.setNode(n,r.defaults(T(i,x),_)),e.setParent(n,t.parent(n))})),r.forEach(t.edges(),(function(n){var i=C(t.edge(n));e.setEdge(n,r.merge({},w,T(i,k),r.pick(i,E)))})),e}(t)}));n(" runLayout",(function(){!function(t,e){e(" makeSpaceForEdgeLabels",(function(){!function(t){var e=t.graph();e.ranksep/=2,r.forEach(t.edges(),(function(n){var r=t.edge(n);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(t)})),e(" removeSelfEdges",(function(){!function(t){r.forEach(t.edges(),(function(e){if(e.v===e.w){var n=t.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:e,label:t.edge(e)}),t.removeEdge(e)}}))}(t)})),e(" acyclic",(function(){i.run(t)})),e(" nestingGraph.run",(function(){l.run(t)})),e(" rank",(function(){o(g.asNonCompoundGraph(t))})),e(" injectEdgeLabelProxies",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.width&&n.height){var r=t.node(e.v),i={rank:(t.node(e.w).rank-r.rank)/2+r.rank,e:e};g.addDummyNode(t,"edge-proxy",i,"_ep")}}))}(t)})),e(" removeEmptyRanks",(function(){u(t)})),e(" nestingGraph.cleanup",(function(){l.cleanup(t)})),e(" normalizeRanks",(function(){s(t)})),e(" assignRankMinMax",(function(){!function(t){var e=0;r.forEach(t.nodes(),(function(n){var i=t.node(n);i.borderTop&&(i.minRank=t.node(i.borderTop).rank,i.maxRank=t.node(i.borderBottom).rank,e=r.max(e,i.maxRank))})),t.graph().maxRank=e}(t)})),e(" removeEdgeLabelProxies",(function(){!function(t){r.forEach(t.nodes(),(function(e){var n=t.node(e);"edge-proxy"===n.dummy&&(t.edge(n.e).labelRank=n.rank,t.removeNode(e))}))}(t)})),e(" normalize.run",(function(){a.run(t)})),e(" parentDummyChains",(function(){c(t)})),e(" addBorderSegments",(function(){h(t)})),e(" order",(function(){d(t)})),e(" insertSelfEdges",(function(){!function(t){var e=g.buildLayerMatrix(t);r.forEach(e,(function(e){var n=0;r.forEach(e,(function(e,i){var a=t.node(e);a.order=i+n,r.forEach(a.selfEdges,(function(e){g.addDummyNode(t,"selfedge",{width:e.label.width,height:e.label.height,rank:a.rank,order:i+ ++n,e:e.e,label:e.label},"_se")})),delete a.selfEdges}))}))}(t)})),e(" adjustCoordinateSystem",(function(){f.adjust(t)})),e(" position",(function(){p(t)})),e(" positionSelfEdges",(function(){!function(t){r.forEach(t.nodes(),(function(e){var n=t.node(e);if("selfedge"===n.dummy){var r=t.node(n.e.v),i=r.x+r.width/2,a=r.y,o=n.x-i,s=r.height/2;t.setEdge(n.e,n.label),t.removeNode(e),n.label.points=[{x:i+2*o/3,y:a-s},{x:i+5*o/6,y:a-s},{x:i+o,y:a},{x:i+5*o/6,y:a+s},{x:i+2*o/3,y:a+s}],n.label.x=n.x,n.label.y=n.y}}))}(t)})),e(" removeBorderNodes",(function(){!function(t){r.forEach(t.nodes(),(function(e){if(t.children(e).length){var n=t.node(e),i=t.node(n.borderTop),a=t.node(n.borderBottom),o=t.node(r.last(n.borderLeft)),s=t.node(r.last(n.borderRight));n.width=Math.abs(s.x-o.x),n.height=Math.abs(a.y-i.y),n.x=o.x+n.width/2,n.y=i.y+n.height/2}})),r.forEach(t.nodes(),(function(e){"border"===t.node(e).dummy&&t.removeNode(e)}))}(t)})),e(" normalize.undo",(function(){a.undo(t)})),e(" fixupEdgeLabelCoords",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(r.has(n,"x"))switch("l"!==n.labelpos&&"r"!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset}}))}(t)})),e(" undoCoordinateSystem",(function(){f.undo(t)})),e(" translateGraph",(function(){!function(t){var e=Number.POSITIVE_INFINITY,n=0,i=Number.POSITIVE_INFINITY,a=0,o=t.graph(),s=o.marginx||0,c=o.marginy||0;function u(t){var r=t.x,o=t.y,s=t.width,c=t.height;e=Math.min(e,r-s/2),n=Math.max(n,r+s/2),i=Math.min(i,o-c/2),a=Math.max(a,o+c/2)}r.forEach(t.nodes(),(function(e){u(t.node(e))})),r.forEach(t.edges(),(function(e){var n=t.edge(e);r.has(n,"x")&&u(n)})),e-=s,i-=c,r.forEach(t.nodes(),(function(n){var r=t.node(n);r.x-=e,r.y-=i})),r.forEach(t.edges(),(function(n){var a=t.edge(n);r.forEach(a.points,(function(t){t.x-=e,t.y-=i})),r.has(a,"x")&&(a.x-=e),r.has(a,"y")&&(a.y-=i)})),o.width=n-e+s,o.height=a-i+c}(t)})),e(" assignNodeIntersects",(function(){!function(t){r.forEach(t.edges(),(function(e){var n,r,i=t.edge(e),a=t.node(e.v),o=t.node(e.w);i.points?(n=i.points[0],r=i.points[i.points.length-1]):(i.points=[],n=o,r=a),i.points.unshift(g.intersectRect(a,n)),i.points.push(g.intersectRect(o,r))}))}(t)})),e(" reversePoints",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);n.reversed&&n.points.reverse()}))}(t)})),e(" acyclic.undo",(function(){i.undo(t)}))}(e,n)})),n(" updateInputGraph",(function(){!function(t,e){r.forEach(t.nodes(),(function(n){var r=t.node(n),i=e.node(n);r&&(r.x=i.x,r.y=i.y,e.children(n).length&&(r.width=i.width,r.height=i.height))})),r.forEach(t.edges(),(function(n){var i=t.edge(n),a=e.edge(n);i.points=a.points,r.has(a,"x")&&(i.x=a.x,i.y=a.y)})),t.graph().width=e.graph().width,t.graph().height=e.graph().height}(t,e)}))}))};var v=["nodesep","edgesep","ranksep","marginx","marginy"],m={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},b=["acyclicer","ranker","rankdir","align"],x=["width","height"],_={width:0,height:0},k=["minlen","weight","width","height","labeloffset"],w={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},E=["labelpos"];function T(t,e){return r.mapValues(r.pick(t,e),Number)}function C(t){var e={};return r.forEach(t,(function(t,n){e[n.toLowerCase()]=t})),e}},function(t,e,n){var r=n(108);t.exports=function(t){return r(t,5)}},function(t,e,n){var r=n(315)(n(316));t.exports=r},function(t,e,n){var r=n(25),i=n(24),a=n(30);t.exports=function(t){return function(e,n,o){var s=Object(e);if(!i(e)){var c=r(n,3);e=a(e),n=function(t){return c(s[t],t,s)}}var u=t(e,n,o);return u>-1?s[c?e[u]:u]:void 0}}},function(t,e,n){var r=n(145),i=n(25),a=n(317),o=Math.max;t.exports=function(t,e,n){var s=null==t?0:t.length;if(!s)return-1;var c=null==n?0:a(n);return c<0&&(c=o(s+c,0)),r(t,i(e,3),c)}},function(t,e,n){var r=n(155);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},function(t,e,n){var r=n(11),i=n(42),a=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(i(t))return NaN;if(r(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=r(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(a,"");var n=s.test(t);return n||c.test(t)?u(t.slice(2),n?2:8):o.test(t)?NaN:+t}},function(t,e,n){var r=n(89),i=n(127),a=n(40);t.exports=function(t,e){return null==t?t:r(t,i(e),a)}},function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},function(t,e,n){var r=n(59),i=n(88),a=n(25);t.exports=function(t,e){var n={};return e=a(e,3),i(t,(function(t,i,a){r(n,i,e(t,i,a))})),n}},function(t,e,n){var r=n(95),i=n(323),a=n(35);t.exports=function(t){return t&&t.length?r(t,a,i):void 0}},function(t,e){t.exports=function(t,e){return t>e}},function(t,e,n){var r=n(325),i=n(328)((function(t,e,n){r(t,e,n)}));t.exports=i},function(t,e,n){var r=n(53),i=n(157),a=n(89),o=n(326),s=n(11),c=n(40),u=n(159);t.exports=function t(e,n,l,h,f){e!==n&&a(n,(function(a,c){if(f||(f=new r),s(a))o(e,n,c,l,t,h,f);else{var d=h?h(u(e,c),a,c+"",e,n,f):void 0;void 0===d&&(d=a),i(e,c,d)}}),c)}},function(t,e,n){var r=n(157),i=n(114),a=n(123),o=n(115),s=n(124),c=n(47),u=n(5),l=n(146),h=n(39),f=n(37),d=n(11),p=n(158),g=n(48),y=n(159),v=n(327);t.exports=function(t,e,n,m,b,x,_){var k=y(t,n),w=y(e,n),E=_.get(w);if(E)r(t,n,E);else{var T=x?x(k,w,n+"",t,e,_):void 0,C=void 0===T;if(C){var A=u(w),S=!A&&h(w),M=!A&&!S&&g(w);T=w,A||S||M?u(k)?T=k:l(k)?T=o(k):S?(C=!1,T=i(w,!0)):M?(C=!1,T=a(w,!0)):T=[]:p(w)||c(w)?(T=k,c(k)?T=v(k):d(k)&&!f(k)||(T=s(w))):C=!1}C&&(_.set(w,T),b(T,w,m,x,_),_.delete(w)),r(t,n,T)}}},function(t,e,n){var r=n(46),i=n(40);t.exports=function(t){return r(t,i(t))}},function(t,e,n){var r=n(67),i=n(68);t.exports=function(t){return r((function(e,n){var r=-1,a=n.length,o=a>1?n[a-1]:void 0,s=a>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(a--,o):void 0,s&&i(n[0],n[1],s)&&(o=a<3?void 0:o,a=1),e=Object(e);++r1&&o(t,e[0],e[1])?e=[]:n>2&&o(e[0],e[1],e[2])&&(e=[e[0]]),i(t,r(e,1),[])}));t.exports=s},function(t,e,n){var r=n(66),i=n(25),a=n(141),o=n(340),s=n(61),c=n(341),u=n(35);t.exports=function(t,e,n){var l=-1;e=r(e.length?e:[u],s(i));var h=a(t,(function(t,n,i){return{criteria:r(e,(function(e){return e(t)})),index:++l,value:t}}));return o(h,(function(t,e){return c(t,e,n)}))}},function(t,e){t.exports=function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}},function(t,e,n){var r=n(342);t.exports=function(t,e,n){for(var i=-1,a=t.criteria,o=e.criteria,s=a.length,c=n.length;++i=c?u:u*("desc"==n[i]?-1:1)}return t.index-e.index}},function(t,e,n){var r=n(42);t.exports=function(t,e){if(t!==e){var n=void 0!==t,i=null===t,a=t==t,o=r(t),s=void 0!==e,c=null===e,u=e==e,l=r(e);if(!c&&!l&&!o&&t>e||o&&s&&u&&!c&&!l||i&&s&&u||!n&&u||!a)return 1;if(!i&&!o&&!l&&t0;--c)if(r=e[c].dequeue()){i=i.concat(s(t,e,n,r,!0));break}}return i}(n.graph,n.buckets,n.zeroIdx);return r.flatten(r.map(u,(function(e){return t.outEdges(e.v,e.w)})),!0)};var o=r.constant(1);function s(t,e,n,i,a){var o=a?[]:void 0;return r.forEach(t.inEdges(i.v),(function(r){var i=t.edge(r),s=t.node(r.v);a&&o.push({v:r.v,w:r.w}),s.out-=i,c(e,n,s)})),r.forEach(t.outEdges(i.v),(function(r){var i=t.edge(r),a=r.w,o=t.node(a);o.in-=i,c(e,n,o)})),t.removeNode(i.v),o}function c(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}},function(t,e){function n(){var t={};t._next=t._prev=t,this._sentinel=t}function r(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function i(t,e){if("_next"!==t&&"_prev"!==t)return e}t.exports=n,n.prototype.dequeue=function(){var t=this._sentinel,e=t._prev;if(e!==t)return r(e),e},n.prototype.enqueue=function(t){var e=this._sentinel;t._prev&&t._next&&r(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e},n.prototype.toString=function(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,i)),n=n._prev;return"["+t.join(", ")+"]"}},function(t,e,n){"use strict";var r=n(4),i=n(8);t.exports={run:function(t){t.graph().dummyChains=[],r.forEach(t.edges(),(function(e){!function(t,e){var n,r,a,o=e.v,s=t.node(o).rank,c=e.w,u=t.node(c).rank,l=e.name,h=t.edge(e),f=h.labelRank;if(u===s+1)return;for(t.removeEdge(e),a=0,++s;sc.lim&&(u=c,l=!0);var h=r.filter(e.edges(),(function(e){return l===m(t,t.node(e.v),u)&&l!==m(t,t.node(e.w),u)}));return r.minBy(h,(function(t){return a(e,t)}))}function v(t,e,n,i){var a=n.v,o=n.w;t.removeEdge(a,o),t.setEdge(i.v,i.w,{}),d(t),h(t,e),function(t,e){var n=r.find(t.nodes(),(function(t){return!e.node(t).parent})),i=s(t,n);i=i.slice(1),r.forEach(i,(function(n){var r=t.node(n).parent,i=e.edge(n,r),a=!1;i||(i=e.edge(r,n),a=!0),e.node(n).rank=e.node(r).rank+(a?i.minlen:-i.minlen)}))}(t,e)}function m(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}t.exports=l,l.initLowLimValues=d,l.initCutValues=h,l.calcCutValue=f,l.leaveEdge=g,l.enterEdge=y,l.exchangeEdges=v},function(t,e,n){var r=n(4);t.exports=function(t){var e=function(t){var e={},n=0;function i(a){var o=n;r.forEach(t.children(a),i),e[a]={low:o,lim:n++}}return r.forEach(t.children(),i),e}(t);r.forEach(t.graph().dummyChains,(function(n){for(var r=t.node(n),i=r.edgeObj,a=function(t,e,n,r){var i,a,o=[],s=[],c=Math.min(e[n].low,e[r].low),u=Math.max(e[n].lim,e[r].lim);i=n;do{i=t.parent(i),o.push(i)}while(i&&(e[i].low>c||u>e[i].lim));a=i,i=r;for(;(i=t.parent(i))!==a;)s.push(i);return{path:o.concat(s.reverse()),lca:a}}(t,e,i.v,i.w),o=a.path,s=a.lca,c=0,u=o[c],l=!0;n!==i.w;){if(r=t.node(n),l){for(;(u=o[c])!==s&&t.node(u).maxRank=2),s=l.buildLayerMatrix(t);var y=a(t,s);y0;)e%2&&(n+=c[e+1]),c[e=e-1>>1]+=t.weight;u+=t.weight*n}))),u}t.exports=function(t,e){for(var n=0,r=1;r=t.barycenter)&&function(t,e){var n=0,r=0;t.weight&&(n+=t.barycenter*t.weight,r+=t.weight);e.weight&&(n+=e.barycenter*e.weight,r+=e.weight);t.vs=e.vs.concat(t.vs),t.barycenter=n/r,t.weight=r,t.i=Math.min(e.i,t.i),e.merged=!0}(t,e)}}function i(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),r.forEach(a.in.reverse(),n(a)),r.forEach(a.out,i(a))}return r.map(r.filter(e,(function(t){return!t.merged})),(function(t){return r.pick(t,["vs","i","barycenter","weight"])}))}(r.filter(n,(function(t){return!t.indegree})))}},function(t,e,n){var r=n(4),i=n(8);function a(t,e,n){for(var i;e.length&&(i=r.last(e)).i<=n;)e.pop(),t.push(i.vs),n++;return n}t.exports=function(t,e){var n=i.partition(t,(function(t){return r.has(t,"barycenter")})),o=n.lhs,s=r.sortBy(n.rhs,(function(t){return-t.i})),c=[],u=0,l=0,h=0;o.sort((f=!!e,function(t,e){return t.barycentere.barycenter?1:f?e.i-t.i:t.i-e.i})),h=a(c,s,h),r.forEach(o,(function(t){h+=t.vs.length,c.push(t.vs),u+=t.barycenter*t.weight,l+=t.weight,h=a(c,s,h)}));var f;var d={vs:r.flatten(c,!0)};l&&(d.barycenter=u/l,d.weight=l);return d}},function(t,e,n){var r=n(4),i=n(17).Graph;t.exports=function(t,e,n){var a=function(t){var e;for(;t.hasNode(e=r.uniqueId("_root")););return e}(t),o=new i({compound:!0}).setGraph({root:a}).setDefaultNodeLabel((function(e){return t.node(e)}));return r.forEach(t.nodes(),(function(i){var s=t.node(i),c=t.parent(i);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(o.setNode(i),o.setParent(i,c||a),r.forEach(t[n](i),(function(e){var n=e.v===i?e.w:e.v,a=o.edge(n,i),s=r.isUndefined(a)?0:a.weight;o.setEdge(n,i,{weight:t.edge(e).weight+s})})),r.has(s,"minRank")&&o.setNode(i,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))})),o}},function(t,e,n){var r=n(4);t.exports=function(t,e,n){var i,a={};r.forEach(n,(function(n){for(var r,o,s=t.parent(n);s;){if((r=t.parent(s))?(o=a[r],a[r]=s):(o=i,i=s),o&&o!==s)return void e.setEdge(o,s);s=r}}))}},function(t,e,n){"use strict";var r=n(4),i=n(8),a=n(365).positionX;t.exports=function(t){(function(t){var e=i.buildLayerMatrix(t),n=t.graph().ranksep,a=0;r.forEach(e,(function(e){var i=r.max(r.map(e,(function(e){return t.node(e).height})));r.forEach(e,(function(e){t.node(e).y=a+i/2})),a+=i+n}))})(t=i.asNonCompoundGraph(t)),r.forEach(a(t),(function(e,n){t.node(n).x=e}))}},function(t,e,n){"use strict";var r=n(4),i=n(17).Graph,a=n(8);function o(t,e){var n={};return r.reduce(e,(function(e,i){var a=0,o=0,s=e.length,u=r.last(i);return r.forEach(i,(function(e,l){var h=function(t,e){if(t.node(e).dummy)return r.find(t.predecessors(e),(function(e){return t.node(e).dummy}))}(t,e),f=h?t.node(h).order:s;(h||e===u)&&(r.forEach(i.slice(o,l+1),(function(e){r.forEach(t.predecessors(e),(function(r){var i=t.node(r),o=i.order;!(os)&&c(n,e,u)}))}))}return r.reduce(e,(function(e,n){var a,o=-1,s=0;return r.forEach(n,(function(r,c){if("border"===t.node(r).dummy){var u=t.predecessors(r);u.length&&(a=t.node(u[0]).order,i(n,s,c,o,a),s=c,o=a)}i(n,s,n.length,a,e.length)})),n})),n}function c(t,e,n){if(e>n){var r=e;e=n,n=r}var i=t[e];i||(t[e]=i={}),i[n]=!0}function u(t,e,n){if(e>n){var i=e;e=n,n=i}return r.has(t[e],n)}function l(t,e,n,i){var a={},o={},s={};return r.forEach(e,(function(t){r.forEach(t,(function(t,e){a[t]=t,o[t]=t,s[t]=e}))})),r.forEach(e,(function(t){var e=-1;r.forEach(t,(function(t){var c=i(t);if(c.length)for(var l=((c=r.sortBy(c,(function(t){return s[t]}))).length-1)/2,h=Math.floor(l),f=Math.ceil(l);h<=f;++h){var d=c[h];o[t]===t&&e0}t.exports=function(t,e,r,i){var a,o,s,c,u,l,h,f,d,p,g,y,v;if(a=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,d=a*r.x+s*r.y+u,p=a*i.x+s*i.y+u,0!==d&&0!==p&&n(d,p))return;if(o=i.y-r.y,c=r.x-i.x,l=i.x*r.y-r.x*i.y,h=o*t.x+c*t.y+l,f=o*e.x+c*e.y+l,0!==h&&0!==f&&n(h,f))return;if(0===(g=a*c-o*s))return;return y=Math.abs(g/2),{x:(v=s*l-c*u)<0?(v-y)/g:(v+y)/g,y:(v=o*u-a*l)<0?(v-y)/g:(v+y)/g}}},function(t,e,n){var r=n(43),i=n(31),a=n(153).layout;t.exports=function(){var t=n(371),e=n(374),i=n(375),u=n(376),l=n(377),h=n(378),f=n(379),d=n(380),p=n(381),g=function(n,g){!function(t){t.nodes().forEach((function(e){var n=t.node(e);r.has(n,"label")||t.children(e).length||(n.label=e),r.has(n,"paddingX")&&r.defaults(n,{paddingLeft:n.paddingX,paddingRight:n.paddingX}),r.has(n,"paddingY")&&r.defaults(n,{paddingTop:n.paddingY,paddingBottom:n.paddingY}),r.has(n,"padding")&&r.defaults(n,{paddingLeft:n.padding,paddingRight:n.padding,paddingTop:n.padding,paddingBottom:n.padding}),r.defaults(n,o),r.each(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(t){n[t]=Number(n[t])})),r.has(n,"width")&&(n._prevWidth=n.width),r.has(n,"height")&&(n._prevHeight=n.height)})),t.edges().forEach((function(e){var n=t.edge(e);r.has(n,"label")||(n.label=""),r.defaults(n,s)}))}(g);var y=c(n,"output"),v=c(y,"clusters"),m=c(y,"edgePaths"),b=i(c(y,"edgeLabels"),g),x=t(c(y,"nodes"),g,d);a(g),l(x,g),h(b,g),u(m,g,p);var _=e(v,g);f(_,g),function(t){r.each(t.nodes(),(function(e){var n=t.node(e);r.has(n,"_prevWidth")?n.width=n._prevWidth:delete n.width,r.has(n,"_prevHeight")?n.height=n._prevHeight:delete n.height,delete n._prevWidth,delete n._prevHeight}))}(g)};return g.createNodes=function(e){return arguments.length?(t=e,g):t},g.createClusters=function(t){return arguments.length?(e=t,g):e},g.createEdgeLabels=function(t){return arguments.length?(i=t,g):i},g.createEdgePaths=function(t){return arguments.length?(u=t,g):u},g.shapes=function(t){return arguments.length?(d=t,g):d},g.arrows=function(t){return arguments.length?(p=t,g):p},g};var o={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},s={arrowhead:"normal",curve:i.curveLinear};function c(t,e){var n=t.select("g."+e);return n.empty()&&(n=t.append("g").attr("class",e)),n}},function(t,e,n){"use strict";var r=n(43),i=n(97),a=n(12),o=n(31);t.exports=function(t,e,n){var s,c=e.nodes().filter((function(t){return!a.isSubgraph(e,t)})),u=t.selectAll("g.node").data(c,(function(t){return t})).classed("update",!0);u.exit().remove(),u.enter().append("g").attr("class","node").style("opacity",0),(u=t.selectAll("g.node")).each((function(t){var s=e.node(t),c=o.select(this);a.applyClass(c,s.class,(c.classed("update")?"update ":"")+"node"),c.select("g.label").remove();var u=c.append("g").attr("class","label"),l=i(u,s),h=n[s.shape],f=r.pick(l.node().getBBox(),"width","height");s.elem=this,s.id&&c.attr("id",s.id),s.labelId&&u.attr("id",s.labelId),r.has(s,"width")&&(f.width=s.width),r.has(s,"height")&&(f.height=s.height),f.width+=s.paddingLeft+s.paddingRight,f.height+=s.paddingTop+s.paddingBottom,u.attr("transform","translate("+(s.paddingLeft-s.paddingRight)/2+","+(s.paddingTop-s.paddingBottom)/2+")");var d=o.select(this);d.select(".label-container").remove();var p=h(d,f,s).classed("label-container",!0);a.applyStyle(p,s.style);var g=p.node().getBBox();s.width=g.width,s.height=g.height})),s=u.exit?u.exit():u.selectAll(null);return a.applyTransition(s,e).style("opacity",0).remove(),u}},function(t,e,n){var r=n(12);t.exports=function(t,e){for(var n=t.append("text"),i=function(t){for(var e,n="",r=!1,i=0;i0&&void 0!==arguments[0]?arguments[0]:"fatal";isNaN(t)&&(t=t.toLowerCase(),void 0!==s[t]&&(t=s[t])),c.trace=function(){},c.debug=function(){},c.info=function(){},c.warn=function(){},c.error=function(){},c.fatal=function(){},t<=s.fatal&&(c.fatal=console.error?console.error.bind(console,l("FATAL"),"color: orange"):console.log.bind(console,"",l("FATAL"))),t<=s.error&&(c.error=console.error?console.error.bind(console,l("ERROR"),"color: orange"):console.log.bind(console,"",l("ERROR"))),t<=s.warn&&(c.warn=console.warn?console.warn.bind(console,l("WARN"),"color: orange"):console.log.bind(console,"",l("WARN"))),t<=s.info&&(c.info=console.info?console.info.bind(console,l("INFO"),"color: lightblue"):console.log.bind(console,"",l("INFO"))),t<=s.debug&&(c.debug=console.debug?console.debug.bind(console,l("DEBUG"),"color: lightgreen"):console.log.bind(console,"",l("DEBUG")))},l=function(t){var e=o()().format("ss.SSS");return"%c".concat(e," : ").concat(t," : ")},h=n(169),f=n.n(h),d=n(0),p=n(44),g=n(70),y=function(t){for(var e="",n=0;n>=0;){if(!((n=t.indexOf("=0)){e+=t,n=-1;break}e+=t.substr(0,n),(n=(t=t.substr(n+1)).indexOf("<\/script>"))>=0&&(n+=9,t=t.substr(n))}return e},v=//gi,m=function(t){return t.replace(v,"#br#")},b=function(t){return t.replace(/#br#/g,"
")},x={getRows:function(t){if(!t)return 1;var e=m(t);return(e=e.replace(/\\n/g,"#br#")).split("#br#")},sanitizeText:function(t,e){var n=t,r=!0;if(!e.flowchart||!1!==e.flowchart.htmlLabels&&"false"!==e.flowchart.htmlLabels||(r=!1),r){var i=e.securityLevel;"antiscript"===i?n=y(n):"loose"!==i&&(n=(n=(n=m(n)).replace(//g,">")).replace(/=/g,"="),n=b(n))}return n},hasBreaks:function(t){return//gi.test(t)},splitBreaks:function(t){return t.split(//gi)},lineBreakRegex:v,removeScript:y};function _(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:null;try{var n=new RegExp("[%]{2}(?![{]".concat(C.source,")(?=[}][%]{2}).*\n"),"ig");t=t.trim().replace(n,"").replace(/'/gm,'"'),c.debug("Detecting diagram directive".concat(null!==e?" type:"+e:""," based on the text:").concat(t));for(var r,i=[];null!==(r=T.exec(t));)if(r.index===T.lastIndex&&T.lastIndex++,r&&!e||e&&r[1]&&r[1].match(e)||e&&r[2]&&r[2].match(e)){var a=r[1]?r[1]:r[2],o=r[3]?r[3].trim():r[4]?JSON.parse(r[4].trim()):null;i.push({type:a,args:o})}return 0===i.length&&i.push({type:t,args:null}),1===i.length?i[0]:i}catch(n){return c.error("ERROR: ".concat(n.message," - Unable to parse directive").concat(null!==e?" type:"+e:""," based on the text:").concat(t)),{type:null,args:null}}},M=function(t){return t=t.replace(T,"").replace(A,"\n"),c.debug("Detecting diagram type based on the text "+t),t.match(/^\s*sequenceDiagram/)?"sequence":t.match(/^\s*gantt/)?"gantt":t.match(/^\s*classDiagram-v2/)?"classDiagram":t.match(/^\s*classDiagram/)?"class":t.match(/^\s*stateDiagram-v2/)?"stateDiagram":t.match(/^\s*stateDiagram/)?"state":t.match(/^\s*gitGraph/)?"git":t.match(/^\s*flowchart/)?"flowchart-v2":t.match(/^\s*info/)?"info":t.match(/^\s*pie/)?"pie":t.match(/^\s*erDiagram/)?"er":t.match(/^\s*journey/)?"journey":"flowchart"},O=function(t,e){var n={};return function(){for(var r=arguments.length,i=new Array(r),a=0;a"},n),x.lineBreakRegex.test(t))return t;var r=t.split(" "),i=[],a="";return r.forEach((function(t,o){var s=z("".concat(t," "),n),c=z(a,n);if(s>e){var u=Y(t,e,"-",n),l=u.hyphenatedStrings,h=u.remainingWord;i.push.apply(i,[a].concat(w(l))),a=h}else c+s>=e?(i.push(a),a=t):a=[a,t].filter(Boolean).join(" ");o+1===r.length&&i.push(a)})),i.filter((function(t){return""!==t})).join(n.joinWith)}),(function(t,e,n){return"".concat(t,"-").concat(e,"-").concat(n.fontSize,"-").concat(n.fontWeight,"-").concat(n.fontFamily,"-").concat(n.joinWith)})),Y=O((function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"-",r=arguments.length>3?arguments[3]:void 0;r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},r);var i=t.split(""),a=[],o="";return i.forEach((function(t,s){var c="".concat(o).concat(t);if(z(c,r)>=e){var u=s+1,l=i.length===u,h="".concat(c).concat(n);a.push(l?c:h),o=""}else o=c})),{hyphenatedStrings:a,remainingWord:o}}),(function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"-",r=arguments.length>3?arguments[3]:void 0;return"".concat(t,"-").concat(e,"-").concat(n,"-").concat(r.fontSize,"-").concat(r.fontWeight,"-").concat(r.fontFamily)})),z=function(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),U(t,e).width},U=O((function(t,e){var n=e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),r=n.fontSize,i=n.fontFamily,a=n.fontWeight;if(!t)return{width:0,height:0};var o=["sans-serif",i],s=t.split(x.lineBreakRegex),c=[],u=Object(d.select)("body");if(!u.remove)return{width:0,height:0,lineHeight:0};for(var l=u.append("svg"),h=0,f=o;hc[1].height&&c[0].width>c[1].width&&c[0].lineHeight>c[1].lineHeight?0:1]}),(function(t,e){return"".concat(t,"-").concat(e.fontSize,"-").concat(e.fontWeight,"-").concat(e.fontFamily)})),$=function(t,e,n){var r=new Map;return r.set("height",t),n?(r.set("width","100%"),r.set("style","max-width: ".concat(e,"px;"))):r.set("width",e),r},W=function(t,e,n,r){!function(t,e){var n=!0,r=!1,i=void 0;try{for(var a,o=e[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var s=a.value;t.attr(s[0],s[1])}}catch(t){r=!0,i=t}finally{try{n||null==o.return||o.return()}finally{if(r)throw i}}}(t,$(e,n,r))},H={assignWithDepth:I,wrapLabel:R,calculateTextHeight:function(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:15},e),U(t,e).height},calculateTextWidth:z,calculateTextDimensions:U,calculateSvgSizeAttrs:$,configureSvgSize:W,detectInit:function(t){var e=S(t,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(e)){var r=e.map((function(t){return t.args}));n=I(n,w(r))}else n=e.args;if(n){var i=M(t);["config"].forEach((function(t){void 0!==n[t]&&("flowchart-v2"===i&&(i="flowchart"),n[i]=n[t],delete n[t])}))}return n},detectDirective:S,detectType:M,isSubstringInArray:function(t,e){for(var n=0;n=1&&(i={x:t.x,y:t.y}),a>0&&a<1&&(i={x:(1-a)*e.x+a*t.x,y:(1-a)*e.y+a*t.y})}}e=t})),i}(t)},calcCardinalityPosition:function(t,e,n){var r;c.info("our points",e),e[0]!==n&&(e=e.reverse()),e.forEach((function(t){N(t,r),r=t}));var i,a=25;r=void 0,e.forEach((function(t){if(r&&!i){var e=N(t,r);if(e=1&&(i={x:t.x,y:t.y}),n>0&&n<1&&(i={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));var o=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),u={x:0,y:0};return u.x=Math.sin(s)*o+(e[0].x+i.x)/2,u.y=-Math.cos(s)*o+(e[0].y+i.y)/2,u},calcTerminalLabelPosition:function(t,e,n){var r,i=JSON.parse(JSON.stringify(n));c.info("our points",i),"start_left"!==e&&"start_right"!==e&&(i=i.reverse()),i.forEach((function(t){N(t,r),r=t}));var a,o=25;r=void 0,i.forEach((function(t){if(r&&!a){var e=N(t,r);if(e=1&&(a={x:t.x,y:t.y}),n>0&&n<1&&(a={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));var s=10,u=Math.atan2(i[0].y-a.y,i[0].x-a.x),l={x:0,y:0};return l.x=Math.sin(u)*s+(i[0].x+a.x)/2,l.y=-Math.cos(u)*s+(i[0].y+a.y)/2,"start_left"===e&&(l.x=Math.sin(u+Math.PI)*s+(i[0].x+a.x)/2,l.y=-Math.cos(u+Math.PI)*s+(i[0].y+a.y)/2),"end_right"===e&&(l.x=Math.sin(u-Math.PI)*s+(i[0].x+a.x)/2-5,l.y=-Math.cos(u-Math.PI)*s+(i[0].y+a.y)/2-5),"end_left"===e&&(l.x=Math.sin(u)*s+(i[0].x+a.x)/2-5,l.y=-Math.cos(u)*s+(i[0].y+a.y)/2-5),l},formatUrl:function(t,e){var n=t.trim();if(n)return"loose"!==e.securityLevel?Object(g.sanitizeUrl)(n):n},getStylesFromArray:B,generateId:F,random:P,memoize:O,runFunc:function(t){for(var e,n=t.split("."),r=n.length-1,i=n[r],a=window,o=0;o1?s-1:0),u=1;u=0&&(n=!0)})),n},qt=function(t,e){var n=[];return t.nodes.forEach((function(r,i){Gt(e,r)||n.push(t.nodes[i])})),{nodes:n}},Xt={parseDirective:function(t,e,n){Go.parseDirective(this,t,e,n)},defaultConfig:function(){return gt.flowchart},addVertex:function(t,e,n,r,i){var a,o=t;void 0!==o&&0!==o.trim().length&&(void 0===Dt[o]&&(Dt[o]={id:o,domId:"flowchart-"+o+"-"+Mt,styles:[],classes:[]}),Mt++,void 0!==e?(Ot=_t(),'"'===(a=x.sanitizeText(e.trim(),Ot))[0]&&'"'===a[a.length-1]&&(a=a.substring(1,a.length-1)),Dt[o].text=a):void 0===Dt[o].text&&(Dt[o].text=t),void 0!==n&&(Dt[o].type=n),null!=r&&r.forEach((function(t){Dt[o].styles.push(t)})),null!=i&&i.forEach((function(t){Dt[o].classes.push(t)})))},lookUpDomId:Yt,addLink:function(t,e,n,r){var i,a;for(i=0;i/)&&(At="LR"),At.match(/.*v/)&&(At="TB")},setClass:Ut,setTooltip:function(t,e){t.split(",").forEach((function(t){void 0!==e&&(Pt["gen-1"===St?Yt(t):t]=x.sanitizeText(e,Ot))}))},getTooltip:function(t){return Pt[t]},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){!function(t,e,n){var r=Yt(t);if("loose"===_t().securityLevel&&void 0!==e){var i=[];if("string"==typeof n){i=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(var a=0;a=0)&&s.push(t))})),"gen-1"===St){c.warn("LOOKING UP");for(var l=0;l0&&function t(e,n){var r=Lt[n].nodes;if(!((Ht+=1)>2e3)){if(Vt[Ht]=n,Lt[n].id===e)return{result:!0,count:0};for(var i=0,a=1;i=0){var s=t(e,o);if(s.result)return{result:!0,count:a+s.count};a+=s.count}i+=1}return{result:!1,count:a}}}("none",Lt.length-1)},getSubGraphs:function(){return Lt},destructLink:function(t,e){var n,r=function(t){var e=t.trim(),n=e.slice(0,-1),r="arrow_open";switch(e.slice(-1)){case"x":r="arrow_cross","x"===e[0]&&(r="double_"+r,n=n.slice(1));break;case">":r="arrow_point","<"===e[0]&&(r="double_"+r,n=n.slice(1));break;case"o":r="arrow_circle","o"===e[0]&&(r="double_"+r,n=n.slice(1))}var i="normal",a=n.length-1;"="===n[0]&&(i="thick");var o=function(t,e){for(var n=e.length,r=0,i=0;in.height/2-a)){var o=a*a*(1-r*r/(i*i));0!=o&&(o=Math.sqrt(o)),o=a-o,t.y-n.y>0&&(o=-o),e.y+=o}return e},c}function de(t,e,n,r){return t.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("transform","translate("+-e/2+","+n/2+")")}var pe={addToRender:function(t){t.shapes().question=ne,t.shapes().hexagon=re,t.shapes().stadium=le,t.shapes().subroutine=he,t.shapes().cylinder=fe,t.shapes().rect_left_inv_arrow=ie,t.shapes().lean_right=ae,t.shapes().lean_left=oe,t.shapes().trapezoid=se,t.shapes().inv_trapezoid=ce,t.shapes().rect_right_inv_arrow=ue},addToRenderV2:function(t){t({question:ne}),t({hexagon:re}),t({stadium:le}),t({subroutine:he}),t({cylinder:fe}),t({rect_left_inv_arrow:ie}),t({lean_right:ae}),t({lean_left:oe}),t({trapezoid:se}),t({inv_trapezoid:ce}),t({rect_right_inv_arrow:ue})}},ge={},ye=function(t,e,n){var r=Object(d.select)('[id="'.concat(n,'"]'));Object.keys(t).forEach((function(n){var i=t[n],a="default";i.classes.length>0&&(a=i.classes.join(" "));var o,s=B(i.styles),u=void 0!==i.text?i.text:i.id;if(_t().flowchart.htmlLabels){var l={label:u.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")}))};(o=ee()(r,l).node()).parentNode.removeChild(o)}else{var h=document.createElementNS("http://www.w3.org/2000/svg","text");h.setAttribute("style",s.labelStyle.replace("color:","fill:"));for(var f=u.split(x.lineBreakRegex),d=0;d').concat(a.text.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")})),"")):(u.labelType="text",u.label=a.text.replace(x.lineBreakRegex,"\n"),void 0===a.style&&(u.style=u.style||"stroke: #333; stroke-width: 1.5px;fill:none"),u.labelStyle=u.labelStyle.replace("color:","fill:"))),u.id=o,u.class=s+" "+c,u.minlen=a.length||1,e.setEdge(Xt.lookUpDomId(a.start),Xt.lookUpDomId(a.end),u,i)}))},me=function(t){for(var e=Object.keys(t),n=0;n=0;h--)i=l[h],Xt.addVertex(i.id,i.title,"group",void 0,i.classes);var f=Xt.getVertices();c.warn("Get vertices",f);var p=Xt.getEdges(),g=0;for(g=l.length-1;g>=0;g--){i=l[g],Object(d.selectAll)("cluster").append("text");for(var y=0;y"),c.info("vertexText"+i),function(t){var e,n,r=Object(d.select)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),i=r.append("xhtml:div"),a=t.label,o=t.isNode?"nodeLabel":"edgeLabel";return i.html(''+a+""),e=i,(n=t.labelStyle)&&e.attr("style",n),i.style("display","inline-block"),i.style("white-space","nowrap"),i.attr("xmlns","http://www.w3.org/1999/xhtml"),r.node()}({isNode:r,label:i.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")})),labelStyle:e.replace("fill:","color:")});var a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));var o=[];o="string"==typeof i?i.split(/\\n|\n|/gi):Array.isArray(i)?i:[];for(var s=0;s0)t(a,n,r,i);else{var o=n.node(a);c.info("cp ",a," to ",i," with parent ",e),r.setNode(a,o),i!==n.parent(a)&&(c.warn("Setting parent",a,n.parent(a)),r.setParent(a,n.parent(a))),e!==i&&a!==e?(c.debug("Setting parent",a,e),r.setParent(a,e)):(c.info("In copy ",e,"root",i,"data",n.node(e),i),c.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==i,"node!==clusterId",a!==e));var s=n.edges(a);c.debug("Copying Edges",s),s.forEach((function(t){c.info("Edge",t);var a=n.edge(t.v,t.w,t.name);c.info("Edge data",a,i);try{!function(t,e){return c.info("Decendants of ",e," is ",Oe[e]),c.info("Edge is ",t),t.v!==e&&(t.w!==e&&(Oe[e]?(c.info("Here "),Oe[e].indexOf(t.v)>=0||(!!Ne(t.v,e)||(!!Ne(t.w,e)||Oe[e].indexOf(t.w)>=0))):(c.debug("Tilt, ",e,",not in decendants"),!1)))}(t,i)?c.info("Skipping copy of edge ",t.v,"--\x3e",t.w," rootId: ",i," clusterId:",e):(c.info("Copying as ",t.v,t.w,a,t.name),r.setEdge(t.v,t.w,a,t.name),c.info("newGraph edges ",r.edges(),r.edge(r.edges()[0])))}catch(t){c.error(t)}}))}c.debug("Removing node",a),n.removeNode(a)}))},Le=function t(e,n){c.trace("Searching",e);var r=n.children(e);if(c.trace("Searching children of id ",e,r),r.length<1)return c.trace("This is a valid node",e),e;for(var i=0;i ",a),a}},Fe=function(t){return Me[t]&&Me[t].externalConnections&&Me[t]?Me[t].id:t},Pe=function(t,e){!t||e>10?c.debug("Opting out, no graph "):(c.debug("Opting in, graph "),t.nodes().forEach((function(e){t.children(e).length>0&&(c.warn("Cluster identified",e," Replacement id in edges: ",Le(e,t)),Oe[e]=function t(e,n){for(var r=n.children(e),i=[].concat(r),a=0;a0?(c.debug("Cluster identified",e,Oe),r.forEach((function(t){t.v!==e&&t.w!==e&&(Ne(t.v,e)^Ne(t.w,e)&&(c.warn("Edge: ",t," leaves cluster ",e),c.warn("Decendants of XXX ",e,": ",Oe[e]),Me[e].externalConnections=!0))}))):c.debug("Not a cluster ",e,Oe)})),t.edges().forEach((function(e){var n=t.edge(e);c.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),c.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(t.edge(e)));var r=e.v,i=e.w;c.warn("Fix XXX",Me,"ids:",e.v,e.w,"Translateing: ",Me[e.v]," --- ",Me[e.w]),(Me[e.v]||Me[e.w])&&(c.warn("Fixing and trixing - removing XXX",e.v,e.w,e.name),r=Fe(e.v),i=Fe(e.w),t.removeEdge(e.v,e.w,e.name),r!==e.v&&(n.fromCluster=e.v),i!==e.w&&(n.toCluster=e.w),c.warn("Fix Replacing with XXX",r,i,e.name),t.setEdge(r,i,n,e.name))})),c.warn("Adjusted Graph",G.a.json.write(t)),Ie(t,0),c.trace(Me))},Ie=function t(e,n){if(c.warn("extractor - ",n,G.a.json.write(e),e.children("D")),n>10)c.error("Bailing out");else{for(var r=e.nodes(),i=!1,a=0;a0}if(i){c.debug("Nodes = ",r,n);for(var u=0;u0){c.warn("Cluster without external connections, without a parent and with children",l,n);var h=e.graph(),f=new G.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:"TB"===h.rankdir?"LR":"TB",nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));c.warn("Old graph before copy",G.a.json.write(e)),Be(l,e,f,l),e.setNode(l,{clusterNode:!0,id:l,clusterData:Me[l].clusterData,labelText:Me[l].labelText,graph:f}),c.warn("New graph after copy node: (",l,")",G.a.json.write(f)),c.debug("Old graph after copy",G.a.json.write(e))}else c.warn("Cluster ** ",l," **not meeting the criteria !externalConnections:",!Me[l].externalConnections," no parent: ",!e.parent(l)," children ",e.children(l)&&e.children(l).length>0,e.children("D"),n),c.debug(Me);else c.debug("Not a cluster",l,n)}r=e.nodes(),c.warn("New list of nodes",r);for(var d=0;d0}var $e=function(t,e,n,r){var i,a,o,s,c,u,l,h,f,d,p,g,y;if(i=e.y-t.y,o=t.x-e.x,c=e.x*t.y-t.x*e.y,f=i*n.x+o*n.y+c,d=i*r.x+o*r.y+c,!(0!==f&&0!==d&&Ue(f,d)||(a=r.y-n.y,s=n.x-r.x,u=r.x*n.y-n.x*r.y,l=a*t.x+s*t.y+u,h=a*e.x+s*e.y+u,0!==l&&0!==h&&Ue(l,h)||0==(p=i*s-a*o))))return g=Math.abs(p/2),{x:(y=o*u-s*c)<0?(y-g)/p:(y+g)/p,y:(y=a*c-i*u)<0?(y-g)/p:(y+g)/p}},We=function(t,e,n){var r=t.x,i=t.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach((function(t){o=Math.min(o,t.x),s=Math.min(s,t.y)})):(o=Math.min(o,e.x),s=Math.min(s,e.y));for(var c=r-t.width/2-o,u=i-t.height/2-s,l=0;l1&&a.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,c=Math.sqrt(o*o+s*s);return aMath.abs(o)*u?(s<0&&(u=-u),n=0===s?0:u*o/s,r=u):(o<0&&(c=-c),n=c,r=0===o?0:c*s/o),{x:i+n,y:a+r}},Ve={node:n.n(Re).a,circle:ze,ellipse:Ye,polygon:We,rect:He},Ge=function(t,e){var n=Ce(t,e,"node "+e.classes,!0),r=n.shapeSvg,i=n.bbox,a=n.halfPadding;c.info("Classes = ",e.classes);var o=r.insert("rect",":first-child");return o.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Ae(e,o),e.intersect=function(t){return Ve.rect(e,t)},r};function qe(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e0){var r=t.split("~");n=r[0],e=r[1]}return{className:n,type:e}},tn=function(t){var e=Qe(t);void 0===Ze[e.className]&&(Ze[e.className]={id:e.className,type:e.type,cssClasses:[],methods:[],members:[],annotations:[],domId:"classid-"+e.className+"-"+Je},Je++)},en=function(t){for(var e=Object.keys(Ze),n=0;n>")?r.annotations.push(i.substring(2,i.length-2)):i.indexOf(")")>0?r.methods.push(i):i&&r.members.push(i)}},rn=function(t,e){t.split(",").forEach((function(t){var n=t;t[0].match(/\d/)&&(n="classid-"+n),void 0!==Ze[n]&&Ze[n].cssClasses.push(e)}))},an=function(t,e,n){var r=_t(),i=t,a=en(i);if("loose"===r.securityLevel&&void 0!==e&&void 0!==Ze[i]){var o=[];if("string"==typeof n){o=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(var s=0;s1&&a>i&&a<=t.length){var o="",s="",c=t.substring(0,1);c.match(/\w/)?s=t.substring(0,i).trim():(c.match(/\+|-|~|#/)&&(o=c),s=t.substring(1,i).trim());var u=t.substring(i+1,a),l=t.substring(a+1,1);n=yn(l),e=o+s+"("+gn(u.trim())+")",a<"".length&&""!==(r=t.substring(a+2).trim())&&(r=" : "+gn(r))}else e=gn(t);return{displayText:e,cssStyle:n}},pn=function(t,e,n,r){var i=ln(e),a=t.append("tspan").attr("x",r.padding).text(i.displayText);""!==i.cssStyle&&a.attr("style",i.cssStyle),n||a.attr("dy",r.textHeight)},gn=function t(e){var n=e;return-1!=e.indexOf("~")?t(n=(n=n.replace("~","<")).replace("~",">")):n},yn=function(t){switch(t){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}},vn=function(t,e,n){c.info("Rendering class "+e);var r,i=e.id,a={id:i,label:e.id,width:0,height:0},o=t.append("g").attr("id",en(i)).attr("class","classGroup");r=e.link?o.append("svg:a").attr("xlink:href",e.link).attr("target",e.linkTarget).append("text").attr("y",n.textHeight+n.padding).attr("x",0):o.append("text").attr("y",n.textHeight+n.padding).attr("x",0);var s=!0;e.annotations.forEach((function(t){var e=r.append("tspan").text("«"+t+"»");s||e.attr("dy",n.textHeight),s=!1}));var u=e.id;void 0!==e.type&&""!==e.type&&(u+="<"+e.type+">");var l=r.append("tspan").text(u).attr("class","title");s||l.attr("dy",n.textHeight);var h=r.node().getBBox().height,f=o.append("line").attr("x1",0).attr("y1",n.padding+h+n.dividerMargin/2).attr("y2",n.padding+h+n.dividerMargin/2),d=o.append("text").attr("x",n.padding).attr("y",h+n.dividerMargin+n.textHeight).attr("fill","white").attr("class","classText");s=!0,e.members.forEach((function(t){pn(d,t,s,n),s=!1}));var p=d.node().getBBox(),g=o.append("line").attr("x1",0).attr("y1",n.padding+h+n.dividerMargin+p.height).attr("y2",n.padding+h+n.dividerMargin+p.height),y=o.append("text").attr("x",n.padding).attr("y",h+2*n.dividerMargin+p.height+n.textHeight).attr("fill","white").attr("class","classText");s=!0,e.methods.forEach((function(t){pn(y,t,s,n),s=!1}));var v=o.node().getBBox(),m=" ";e.cssClasses.length>0&&(m+=e.cssClasses.join(" "));var b=o.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",v.width+2*n.padding).attr("height",v.height+n.padding+.5*n.dividerMargin).attr("class",m).node().getBBox().width;return r.node().childNodes.forEach((function(t){t.setAttribute("x",(b-t.getBBox().width)/2)})),e.tooltip&&r.insert("title").text(e.tooltip),f.attr("x2",b),g.attr("x2",b),a.width=b,a.height=v.height+n.padding+.5*n.dividerMargin,a},mn=function(t,e,n,r){var i=function(t){switch(t){case on.AGGREGATION:return"aggregation";case on.EXTENSION:return"extension";case on.COMPOSITION:return"composition";case on.DEPENDENCY:return"dependency"}};e.points=e.points.filter((function(t){return!Number.isNaN(t.y)}));var a,o,s=e.points,u=Object(d.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(d.curveBasis),l=t.append("path").attr("d",u(s)).attr("id","edge"+un).attr("class","relation"),h="";r.arrowMarkerAbsolute&&(h=(h=(h=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),1==n.relation.lineType&&l.attr("class","relation dashed-line"),"none"!==n.relation.type1&&l.attr("marker-start","url("+h+"#"+i(n.relation.type1)+"Start)"),"none"!==n.relation.type2&&l.attr("marker-end","url("+h+"#"+i(n.relation.type2)+"End)");var f,p,g,y,v=e.points.length,m=H.calcLabelPosition(e.points);if(a=m.x,o=m.y,v%2!=0&&v>1){var b=H.calcCardinalityPosition("none"!==n.relation.type1,e.points,e.points[0]),x=H.calcCardinalityPosition("none"!==n.relation.type2,e.points,e.points[v-1]);c.debug("cardinality_1_point "+JSON.stringify(b)),c.debug("cardinality_2_point "+JSON.stringify(x)),f=b.x,p=b.y,g=x.x,y=x.y}if(void 0!==n.title){var _=t.append("g").attr("class","classLabel"),k=_.append("text").attr("class","label").attr("x",a).attr("y",o).attr("fill","red").attr("text-anchor","middle").text(n.title);window.label=k;var w=k.node().getBBox();_.insert("rect",":first-child").attr("class","box").attr("x",w.x-r.padding/2).attr("y",w.y-r.padding/2).attr("width",w.width+r.padding).attr("height",w.height+r.padding)}(c.info("Rendering relation "+JSON.stringify(n)),void 0!==n.relationTitle1&&"none"!==n.relationTitle1)&&t.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",f).attr("y",p).attr("fill","black").attr("font-size","6").text(n.relationTitle1);void 0!==n.relationTitle2&&"none"!==n.relationTitle2&&t.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",g).attr("y",y).attr("fill","black").attr("font-size","6").text(n.relationTitle2);un++},bn=function(t,e,n){var r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=70,a=10;"LR"===n&&(i=10,a=70);var o=r.append("rect").style("stroke","black").style("fill","black").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return Ae(e,o),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return Ve.rect(e,t)},r},xn={question:function(t,e){var n=Ce(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding+(i.height+e.padding),o=[{x:a/2,y:0},{x:a,y:-a/2},{x:a/2,y:-a},{x:0,y:-a/2}];c.info("Question main (Circle)");var s=Se(r,a,a,o);return Ae(e,s),e.intersect=function(t){return c.warn("Intersect called"),Ve.polygon(e,o,t)},r},rect:function(t,e){var n=Ce(t,e,"node "+e.classes,!0),r=n.shapeSvg,i=n.bbox,a=n.halfPadding;c.trace("Classes = ",e.classes);var o=r.insert("rect",":first-child");return o.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Ae(e,o),e.intersect=function(t){return Ve.rect(e,t)},r},rectWithTitle:function(t,e){var n;n=e.classes?"node "+e.classes:"node default";var r=t.insert("g").attr("class",n).attr("id",e.domId||e.id),i=r.insert("rect",":first-child"),a=r.insert("line"),o=r.insert("g").attr("class","label"),s=e.labelText.flat();c.info("Label text",s[0]);var u,l=o.node().appendChild(Te(s[0],e.labelStyle,!0,!0));if(_t().flowchart.htmlLabels){var h=l.children[0],f=Object(d.select)(l);u=h.getBoundingClientRect(),f.attr("width",u.width),f.attr("height",u.height)}c.info("Text 2",s);var p=s.slice(1,s.length),g=l.getBBox(),y=o.node().appendChild(Te(p.join("
"),e.labelStyle,!0,!0));if(_t().flowchart.htmlLabels){var v=y.children[0],m=Object(d.select)(y);u=v.getBoundingClientRect(),m.attr("width",u.width),m.attr("height",u.height)}var b=e.padding/2;return Object(d.select)(y).attr("transform","translate( "+(u.width>g.width?0:(g.width-u.width)/2)+", "+(g.height+b+5)+")"),Object(d.select)(l).attr("transform","translate( "+(u.widthe.height/2-s)){var i=s*s*(1-r*r/(o*o));0!=i&&(i=Math.sqrt(i)),i=s-i,t.y-e.y>0&&(i=-i),n.y+=i}return n},r},start:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=n.insert("circle",":first-child");return r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),Ae(e,r),e.intersect=function(t){return Ve.circle(e,7,t)},n},end:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=n.insert("circle",":first-child"),i=n.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),r.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),Ae(e,i),e.intersect=function(t){return Ve.circle(e,7,t)},n},note:Ge,subroutine:function(t,e){var n=Ce(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=Se(r,a,o,[{x:0,y:0},{x:a,y:0},{x:a,y:-o},{x:0,y:-o},{x:0,y:0},{x:-8,y:0},{x:a+8,y:0},{x:a+8,y:-o},{x:-8,y:-o},{x:-8,y:0}]);return Ae(e,s),e.intersect=function(t){return Ve.polygon(e,t)},r},fork:bn,join:bn,class_box:function(t,e){var n,r=e.padding/2;n=e.classes?"node "+e.classes:"node default";var i=t.insert("g").attr("class",n).attr("id",e.domId||e.id),a=i.insert("rect",":first-child"),o=i.insert("line"),s=i.insert("line"),c=0,u=4,l=i.insert("g").attr("class","label"),h=0,f=e.classData.annotations&&e.classData.annotations[0],p=e.classData.annotations[0]?"«"+e.classData.annotations[0]+"»":"",g=l.node().appendChild(Te(p,e.labelStyle,!0,!0)),y=g.getBBox();if(_t().flowchart.htmlLabels){var v=g.children[0],m=Object(d.select)(g);y=v.getBoundingClientRect(),m.attr("width",y.width),m.attr("height",y.height)}e.classData.annotations[0]&&(u+=y.height+4,c+=y.width);var b=e.classData.id;void 0!==e.classData.type&&""!==e.classData.type&&(b+="<"+e.classData.type+">");var x=l.node().appendChild(Te(b,e.labelStyle,!0,!0));Object(d.select)(x).attr("class","classTitle");var _=x.getBBox();if(_t().flowchart.htmlLabels){var k=x.children[0],w=Object(d.select)(x);_=k.getBoundingClientRect(),w.attr("width",_.width),w.attr("height",_.height)}u+=_.height+4,_.width>c&&(c=_.width);var E=[];e.classData.members.forEach((function(t){var n=ln(t).displayText,r=l.node().appendChild(Te(n,e.labelStyle,!0,!0)),i=r.getBBox();if(_t().flowchart.htmlLabels){var a=r.children[0],o=Object(d.select)(r);i=a.getBoundingClientRect(),o.attr("width",i.width),o.attr("height",i.height)}i.width>c&&(c=i.width),u+=i.height+4,E.push(r)})),u+=8;var T=[];if(e.classData.methods.forEach((function(t){var n=ln(t).displayText,r=l.node().appendChild(Te(n,e.labelStyle,!0,!0)),i=r.getBBox();if(_t().flowchart.htmlLabels){var a=r.children[0],o=Object(d.select)(r);i=a.getBoundingClientRect(),o.attr("width",i.width),o.attr("height",i.height)}i.width>c&&(c=i.width),u+=i.height+4,T.push(r)})),u+=8,f){var C=(c-y.width)/2;Object(d.select)(g).attr("transform","translate( "+(-1*c/2+C)+", "+-1*u/2+")"),h=y.height+4}var A=(c-_.width)/2;return Object(d.select)(x).attr("transform","translate( "+(-1*c/2+A)+", "+(-1*u/2+h)+")"),h+=_.height+4,o.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-u/2-r+8+h).attr("y2",-u/2-r+8+h),h+=8,E.forEach((function(t){Object(d.select)(t).attr("transform","translate( "+-c/2+", "+(-1*u/2+h+4)+")"),h+=_.height+4})),h+=8,s.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-u/2-r+8+h).attr("y2",-u/2-r+8+h),h+=8,T.forEach((function(t){Object(d.select)(t).attr("transform","translate( "+-c/2+", "+(-1*u/2+h)+")"),h+=_.height+4})),a.attr("class","outer title-state").attr("x",-c/2-r).attr("y",-u/2-r).attr("width",c+e.padding).attr("height",u+e.padding),Ae(e,a),e.intersect=function(t){return Ve.rect(e,t)},i}},_n={},kn=function(t){var e=_n[t.id];c.trace("Transforming node",t,"translate("+(t.x-t.width/2-5)+", "+(t.y-t.height/2-5)+")");t.clusterNode?e.attr("transform","translate("+(t.x-t.width/2-8)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")")},wn={rect:function(t,e){c.trace("Creating subgraph rect for ",e.id,e);var n=t.insert("g").attr("class","cluster"+(e.class?" "+e.class:"")).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=i.node().appendChild(Te(e.labelText,e.labelStyle,void 0,!0)),o=a.getBBox();if(_t().flowchart.htmlLabels){var s=a.children[0],u=Object(d.select)(a);o=s.getBoundingClientRect(),u.attr("width",o.width),u.attr("height",o.height)}var l=0*e.padding,h=l/2;c.trace("Data ",e,JSON.stringify(e)),r.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-h).attr("y",e.y-e.height/2-h).attr("width",e.width+l).attr("height",e.height+l),i.attr("transform","translate("+(e.x-o.width/2)+", "+(e.y-e.height/2+e.padding/3)+")");var f=r.node().getBBox();return e.width=f.width,e.height=f.height,e.intersect=function(t){return He(e,t)},n},roundedWithTitle:function(t,e){var n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=n.append("rect"),o=i.node().appendChild(Te(e.labelText,e.labelStyle,void 0,!0)),s=o.getBBox();if(_t().flowchart.htmlLabels){var c=o.children[0],u=Object(d.select)(o);s=c.getBoundingClientRect(),u.attr("width",s.width),u.attr("height",s.height)}s=o.getBBox();var l=0*e.padding,h=l/2;r.attr("class","outer").attr("x",e.x-e.width/2-h).attr("y",e.y-e.height/2-h).attr("width",e.width+l).attr("height",e.height+l),a.attr("class","inner").attr("x",e.x-e.width/2-h).attr("y",e.y-e.height/2-h+s.height-1).attr("width",e.width+l).attr("height",e.height+l-s.height-3),i.attr("transform","translate("+(e.x-s.width/2)+", "+(e.y-e.height/2-e.padding/3+(_t().flowchart.htmlLabels?5:3))+")");var f=r.node().getBBox();return e.width=f.width,e.height=f.height,e.intersect=function(t){return He(e,t)},n},noteGroup:function(t,e){var n=t.insert("g").attr("class","note-cluster").attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");var o=r.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return He(e,t)},n},divider:function(t,e){var n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("class","divider").attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2).attr("width",e.width+i).attr("height",e.height+i);var o=r.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return He(e,t)},n}},En={},Tn={},Cn={},An=function(t,e){var n=t.x,r=t.y,i=Math.abs(e.x-n),a=Math.abs(e.y-r),o=t.width/2,s=t.height/2;return i>=o||a>=s},Sn=function(t,e,n){c.warn("intersection calc o:",e," i:",n,t);var r=t.x,i=t.y,a=Math.abs(r-n.x),o=t.width/2,s=n.xMath.abs(r-e.x)*u){var y=n.y0&&c.info("Recursive edges",n.edge(n.edges()[0]));var s=o.insert("g").attr("class","clusters"),u=o.insert("g").attr("class","edgePaths"),l=o.insert("g").attr("class","edgeLabels"),h=o.insert("g").attr("class","nodes");return n.nodes().forEach((function(e){var o=n.node(e);if(void 0!==i){var s=JSON.parse(JSON.stringify(i.clusterData));c.info("Setting data for cluster XXX (",e,") ",s,i),n.setNode(i.id,s),n.parent(e)||(c.warn("Setting parent",e,i.id),n.setParent(e,i.id,s))}if(c.info("(Insert) Node XXX"+e+": "+JSON.stringify(n.node(e))),o&&o.clusterNode){c.info("Cluster identified",e,o,n.node(e));var u=t(h,o.graph,r,n.node(e));Ae(o,u),function(t,e){_n[e.id]=t}(u,o),c.warn("Recursive render complete",u,o)}else n.children(e).length>0?(c.info("Cluster - the non recursive path XXX",e,o.id,o,n),c.info(Le(o.id,n)),Me[o.id]={id:Le(o.id,n),node:o}):(c.info("Node - the non recursive path",e,o.id,o),function(t,e,n){var r,i;e.link?(r=t.insert("svg:a").attr("xlink:href",e.link).attr("target",e.linkTarget||"_blank"),i=xn[e.shape](r,e,n)):r=i=xn[e.shape](t,e,n),e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),_n[e.id]=r,e.haveCallback&&_n[e.id].attr("class",_n[e.id].attr("class")+" clickable")}(h,n.node(e),a))})),n.edges().forEach((function(t){var e=n.edge(t.v,t.w,t.name);c.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),c.info("Edge "+t.v+" -> "+t.w+": ",t," ",JSON.stringify(n.edge(t))),c.info("Fix",Me,"ids:",t.v,t.w,"Translateing: ",Me[t.v],Me[t.w]),function(t,e){var n=Te(e.label,e.labelStyle),r=t.insert("g").attr("class","edgeLabel"),i=r.insert("g").attr("class","label");i.node().appendChild(n);var a=n.getBBox();if(_t().flowchart.htmlLabels){var o=n.children[0],s=Object(d.select)(n);a=o.getBoundingClientRect(),s.attr("width",a.width),s.attr("height",a.height)}if(i.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),Tn[e.id]=r,e.width=a.width,e.height=a.height,e.startLabelLeft){var c=Te(e.startLabelLeft,e.labelStyle),u=t.insert("g").attr("class","edgeTerminals"),l=u.insert("g").attr("class","inner");l.node().appendChild(c);var h=c.getBBox();l.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),Cn[e.id]||(Cn[e.id]={}),Cn[e.id].startLeft=u}if(e.startLabelRight){var f=Te(e.startLabelRight,e.labelStyle),p=t.insert("g").attr("class","edgeTerminals"),g=p.insert("g").attr("class","inner");p.node().appendChild(f),g.node().appendChild(f);var y=f.getBBox();g.attr("transform","translate("+-y.width/2+", "+-y.height/2+")"),Cn[e.id]||(Cn[e.id]={}),Cn[e.id].startRight=p}if(e.endLabelLeft){var v=Te(e.endLabelLeft,e.labelStyle),m=t.insert("g").attr("class","edgeTerminals"),b=m.insert("g").attr("class","inner");b.node().appendChild(v);var x=v.getBBox();b.attr("transform","translate("+-x.width/2+", "+-x.height/2+")"),m.node().appendChild(v),Cn[e.id]||(Cn[e.id]={}),Cn[e.id].endLeft=m}if(e.endLabelRight){var _=Te(e.endLabelRight,e.labelStyle),k=t.insert("g").attr("class","edgeTerminals"),w=k.insert("g").attr("class","inner");w.node().appendChild(_);var E=_.getBBox();w.attr("transform","translate("+-E.width/2+", "+-E.height/2+")"),k.node().appendChild(_),Cn[e.id]||(Cn[e.id]={}),Cn[e.id].endRight=k}}(l,e)})),n.edges().forEach((function(t){c.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t))})),c.info("#############################################"),c.info("### Layout ###"),c.info("#############################################"),c.info(n),ke.a.layout(n),c.info("Graph after layout:",G.a.json.write(n)),je(n).forEach((function(t){var e=n.node(t);c.info("Position "+t+": "+JSON.stringify(n.node(t))),c.info("Position "+t+": ("+e.x,","+e.y,") width: ",e.width," height: ",e.height),e&&e.clusterNode?kn(e):n.children(t).length>0?(!function(t,e){c.trace("Inserting cluster");var n=e.shape||"rect";En[e.id]=wn[n](t,e)}(s,e),Me[e.id].node=e):kn(e)})),n.edges().forEach((function(t){var e=n.edge(t);c.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(e),e);var i=function(t,e,n,r,i,a){var o=n.points,s=!1,u=a.node(e.v),l=a.node(e.w);if(l.intersect&&u.intersect&&((o=o.slice(1,n.points.length-1)).unshift(u.intersect(o[0])),c.info("Last point",o[o.length-1],l,l.intersect(o[o.length-1])),o.push(l.intersect(o[o.length-1]))),n.toCluster){var h;c.trace("edge",n),c.trace("to cluster",r[n.toCluster]),o=[];var f=!1;n.points.forEach((function(t){var e=r[n.toCluster].node;if(An(e,t)||f)f||o.push(t);else{c.trace("inside",n.toCluster,t,h);var i=Sn(e,h,t),a=!1;o.forEach((function(t){a=a||t.x===i.x&&t.y===i.y})),o.find((function(t){return t.x===i.x&&t.y===i.y}))?c.warn("no intersect",i,o):o.push(i),f=!0}h=t})),s=!0}if(n.fromCluster){c.trace("edge",n),c.warn("from cluster",r[n.fromCluster]);for(var p,g=[],y=!1,v=o.length-1;v>=0;v--){var m=o[v],b=r[n.fromCluster].node;if(An(b,m)||y)c.trace("Outside point",m),y||g.unshift(m);else{c.warn("inside",n.fromCluster,m,b);var x=Sn(b,p,m);g.unshift(x),y=!0}p=m}o=g,s=!0}var _,k=o.filter((function(t){return!Number.isNaN(t.y)})),w=Object(d.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(d.curveBasis);switch(n.thickness){case"normal":_="edge-thickness-normal";break;case"thick":_="edge-thickness-thick";break;default:_=""}switch(n.pattern){case"solid":_+=" edge-pattern-solid";break;case"dotted":_+=" edge-pattern-dotted";break;case"dashed":_+=" edge-pattern-dashed"}var E=t.append("path").attr("d",w(k)).attr("id",n.id).attr("class"," "+_+(n.classes?" "+n.classes:"")).attr("style",n.style),T="";switch(_t().state.arrowMarkerAbsolute&&(T=(T=(T=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),c.info("arrowTypeStart",n.arrowTypeStart),c.info("arrowTypeEnd",n.arrowTypeEnd),n.arrowTypeStart){case"arrow_cross":E.attr("marker-start","url("+T+"#"+i+"-crossStart)");break;case"arrow_point":E.attr("marker-start","url("+T+"#"+i+"-pointStart)");break;case"arrow_barb":E.attr("marker-start","url("+T+"#"+i+"-barbStart)");break;case"arrow_circle":E.attr("marker-start","url("+T+"#"+i+"-circleStart)");break;case"aggregation":E.attr("marker-start","url("+T+"#"+i+"-aggregationStart)");break;case"extension":E.attr("marker-start","url("+T+"#"+i+"-extensionStart)");break;case"composition":E.attr("marker-start","url("+T+"#"+i+"-compositionStart)");break;case"dependency":E.attr("marker-start","url("+T+"#"+i+"-dependencyStart)")}switch(n.arrowTypeEnd){case"arrow_cross":E.attr("marker-end","url("+T+"#"+i+"-crossEnd)");break;case"arrow_point":E.attr("marker-end","url("+T+"#"+i+"-pointEnd)");break;case"arrow_barb":E.attr("marker-end","url("+T+"#"+i+"-barbEnd)");break;case"arrow_circle":E.attr("marker-end","url("+T+"#"+i+"-circleEnd)");break;case"aggregation":E.attr("marker-end","url("+T+"#"+i+"-aggregationEnd)");break;case"extension":E.attr("marker-end","url("+T+"#"+i+"-extensionEnd)");break;case"composition":E.attr("marker-end","url("+T+"#"+i+"-compositionEnd)");break;case"dependency":E.attr("marker-end","url("+T+"#"+i+"-dependencyEnd)")}var C={};return s&&(C.updatedPath=o),C.originalPath=n.points,C}(u,t,e,Me,r,n);!function(t,e){c.info("Moving label",t.id,t.label,Tn[t.id]);var n=e.updatedPath?e.updatedPath:e.originalPath;if(t.label){var r=Tn[t.id],i=t.x,a=t.y;if(n){var o=H.calcLabelPosition(n);c.info("Moving label from (",i,",",a,") to (",o.x,",",o.y,")")}r.attr("transform","translate("+i+", "+a+")")}if(t.startLabelLeft){var s=Cn[t.id].startLeft,u=t.x,l=t.y;if(n){var h=H.calcTerminalLabelPosition(0,"start_left",n);u=h.x,l=h.y}s.attr("transform","translate("+u+", "+l+")")}if(t.startLabelRight){var f=Cn[t.id].startRight,d=t.x,p=t.y;if(n){var g=H.calcTerminalLabelPosition(0,"start_right",n);d=g.x,p=g.y}f.attr("transform","translate("+d+", "+p+")")}if(t.endLabelLeft){var y=Cn[t.id].endLeft,v=t.x,m=t.y;if(n){var b=H.calcTerminalLabelPosition(0,"end_left",n);v=b.x,m=b.y}y.attr("transform","translate("+v+", "+m+")")}if(t.endLabelRight){var x=Cn[t.id].endRight,_=t.x,k=t.y;if(n){var w=H.calcTerminalLabelPosition(0,"end_right",n);_=w.x,k=w.y}x.attr("transform","translate("+_+", "+k+")")}}(e,i)})),o},On=function(t,e,n,r,i){Ee(t,n,r,i),_n={},Tn={},Cn={},En={},Oe={},De={},Me={},c.warn("Graph at first:",G.a.json.write(e)),Pe(e),c.warn("Graph after:",G.a.json.write(e)),Mn(t,e,r)},Dn={},Nn=function(t,e,n){var r=Object(d.select)('[id="'.concat(n,'"]'));Object.keys(t).forEach((function(n){var i=t[n],a="default";i.classes.length>0&&(a=i.classes.join(" "));var o,s=B(i.styles),u=void 0!==i.text?i.text:i.id;if(_t().flowchart.htmlLabels){var l={label:u.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")}))};(o=ee()(r,l).node()).parentNode.removeChild(o)}else{var h=document.createElementNS("http://www.w3.org/2000/svg","text");h.setAttribute("style",s.labelStyle.replace("color:","fill:"));for(var f=u.split(x.lineBreakRegex),d=0;d=0;h--)i=l[h],c.info("Subgraph - ",i),Xt.addVertex(i.id,i.title,"group",void 0,i.classes);var f=Xt.getVertices(),p=Xt.getEdges();c.info(p);var g=0;for(g=l.length-1;g>=0;g--){i=l[g],Object(d.selectAll)("cluster").append("text");for(var y=0;y0)switch(e.valign){case"top":case"start":s=function(){return Math.round(e.y+e.textMargin)};break;case"middle":case"center":s=function(){return Math.round(e.y+(n+r+e.textMargin)/2)};break;case"bottom":case"end":s=function(){return Math.round(e.y+(n+r+2*e.textMargin)-e.textMargin)}}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="text-after-edge",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="text-before-edge",e.alignmentBaseline="middle"}for(var c=0;c0&&(r+=(l._groups||l)[0][0].getBBox().height,n=r),a.push(l)}return a},jn=function(t,e){var n,r,i,a,o,s=t.append("polygon");return s.attr("points",(n=e.x,r=e.y,i=e.width,a=e.height,n+","+r+" "+(n+i)+","+r+" "+(n+i)+","+(r+a-(o=7))+" "+(n+i-1.2*o)+","+(r+a)+" "+n+","+(r+a))),s.attr("class","labelBox"),e.y=e.y+e.height/2,In(t,e),s},Rn=-1,Yn=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},zn=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},Un=function(){function t(t,e,n,i,a,o,s){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("text-anchor","middle").text(t),s)}function e(t,e,n,i,a,o,s,c){for(var u=c.actorFontSize,l=c.actorFontFamily,h=c.actorFontWeight,f=t.split(x.lineBreakRegex),d=0;d2&&void 0!==arguments[2]?arguments[2]:{text:void 0,wrap:void 0},r=arguments.length>3?arguments[3]:void 0;if(r===ir.ACTIVE_END){var i=er(t.actor);if(i<1){var a=new Error("Trying to inactivate an inactive participant ("+t.actor+")");throw a.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},a}}return qn.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&rr()||!!n.wrap,type:r}),!0},rr=function(){return Qn},ir={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23},ar=function(t,e,n){var r={actor:t,placement:e,message:n.text,wrap:void 0===n.wrap&&rr()||!!n.wrap},i=[].concat(t,t);Xn.push(r),qn.push({from:i[0],to:i[1],message:n.text,wrap:void 0===n.wrap&&rr()||!!n.wrap,type:ir.NOTE,placement:e})},or=function(t){Zn=t.text,Jn=void 0===t.wrap&&rr()||!!t.wrap},sr={addActor:tr,addMessage:function(t,e,n,r){qn.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&rr()||!!n.wrap,answer:r})},addSignal:nr,autoWrap:rr,setWrap:function(t){Qn=t},enableSequenceNumbers:function(){Kn=!0},showSequenceNumbers:function(){return Kn},getMessages:function(){return qn},getActors:function(){return Gn},getActor:function(t){return Gn[t]},getActorKeys:function(){return Object.keys(Gn)},getTitle:function(){return Zn},parseDirective:function(t,e,n){Go.parseDirective(this,t,e,n)},getConfig:function(){return _t().sequence},getTitleWrapped:function(){return Jn},clear:function(){Gn={},qn=[]},parseMessage:function(t){var e=t.trim(),n={text:e.replace(/^[:]?(?:no)?wrap:/,"").trim(),wrap:null!==e.match(/^[:]?wrap:/)||null===e.match(/^[:]?nowrap:/)&&void 0};return c.debug("parseMessage:",n),n},LINETYPE:ir,ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},addNote:ar,setTitle:or,apply:function t(e){if(e instanceof Array)e.forEach((function(e){t(e)}));else switch(e.type){case"addActor":tr(e.actor,e.actor,e.description);break;case"activeStart":case"activeEnd":nr(e.actor,void 0,void 0,e.signalType);break;case"addNote":ar(e.actor,e.placement,e.text);break;case"addMessage":nr(e.from,e.to,e.msg,e.signalType);break;case"loopStart":nr(void 0,void 0,e.loopText,e.signalType);break;case"loopEnd":nr(void 0,void 0,void 0,e.signalType);break;case"rectStart":nr(void 0,void 0,e.color,e.signalType);break;case"rectEnd":nr(void 0,void 0,void 0,e.signalType);break;case"optStart":nr(void 0,void 0,e.optText,e.signalType);break;case"optEnd":nr(void 0,void 0,void 0,e.signalType);break;case"altStart":case"else":nr(void 0,void 0,e.altText,e.signalType);break;case"altEnd":nr(void 0,void 0,void 0,e.signalType);break;case"setTitle":or(e.text);break;case"parStart":case"and":nr(void 0,void 0,e.parText,e.signalType);break;case"parEnd":nr(void 0,void 0,void 0,e.signalType)}}};Wn.parser.yy=sr;var cr={},ur={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map((function(t){return t.height||0})))+(0===this.loops.length?0:this.loops.map((function(t){return t.height||0})).reduce((function(t,e){return t+e})))+(0===this.messages.length?0:this.messages.map((function(t){return t.height||0})).reduce((function(t,e){return t+e})))+(0===this.notes.length?0:this.notes.map((function(t){return t.height||0})).reduce((function(t,e){return t+e})))},clear:function(){this.actors=[],this.loops=[],this.messages=[],this.notes=[]},addActor:function(t){this.actors.push(t)},addLoop:function(t){this.loops.push(t)},addMessage:function(t){this.messages.push(t)},addNote:function(t){this.notes.push(t)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,pr(Wn.parser.yy.getConfig())},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){var i=this,a=0;function o(o){return function(s){a++;var c=i.sequenceItems.length-a+1;i.updateVal(s,"starty",e-c*cr.boxMargin,Math.min),i.updateVal(s,"stopy",r+c*cr.boxMargin,Math.max),i.updateVal(ur.data,"startx",t-c*cr.boxMargin,Math.min),i.updateVal(ur.data,"stopx",n+c*cr.boxMargin,Math.max),"activation"!==o&&(i.updateVal(s,"startx",t-c*cr.boxMargin,Math.min),i.updateVal(s,"stopx",n+c*cr.boxMargin,Math.max),i.updateVal(ur.data,"starty",e-c*cr.boxMargin,Math.min),i.updateVal(ur.data,"stopy",r+c*cr.boxMargin,Math.max))}}this.sequenceItems.forEach(o()),this.activations.forEach(o("activation"))},insert:function(t,e,n,r){var i=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,r),s=Math.max(e,r);this.updateVal(ur.data,"startx",i,Math.min),this.updateVal(ur.data,"starty",o,Math.min),this.updateVal(ur.data,"stopx",a,Math.max),this.updateVal(ur.data,"stopy",s,Math.max),this.updateBounds(i,o,a,s)},newActivation:function(t,e,n){var r=n[t.from.actor],i=gr(t.from.actor).length||0,a=r.x+r.width/2+(i-1)*cr.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+cr.activationWidth,stopy:void 0,actor:t.from.actor,anchored:$n.anchorElement(e)})},endActivation:function(t){var e=this.activations.map((function(t){return t.actor})).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},createLoop:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{message:void 0,wrap:!1,width:void 0},e=arguments.length>1?arguments[1]:void 0;return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},newLoop:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{message:void 0,wrap:!1,width:void 0},e=arguments.length>1?arguments[1]:void 0;this.sequenceItems.push(this.createLoop(t,e))},endLoop:function(){return this.sequenceItems.pop()},addSectionToLoop:function(t){var e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:ur.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},lr=function(t){return{fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}},hr=function(t){return{fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}},fr=function(t){return{fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}},dr=function(t,e,n,r){for(var i=0,a=0,o=0;o0&&o.forEach((function(r){if(n=r,i.startx===i.stopx){var a=e[t.from],o=e[t.to];n.from=Math.min(a.x-i.width/2,a.x-a.width/2,n.from),n.to=Math.max(o.x+i.width/2,o.x+a.width/2,n.to),n.width=Math.max(n.width,Math.abs(n.to-n.from))-cr.labelBoxWidth}else n.from=Math.min(i.startx,n.from),n.to=Math.max(i.stopx,n.to),n.width=Math.max(n.width,i.width)-cr.labelBoxWidth})))})),ur.activations=[],c.debug("Loop type widths:",a),a},_r={bounds:ur,drawActors:dr,setConf:pr,draw:function(t,e){cr=_t().sequence,Wn.parser.yy.clear(),Wn.parser.yy.setWrap(cr.wrap),Wn.parser.parse(t+"\n"),ur.init(),c.debug("C:".concat(JSON.stringify(cr,null,2)));var n=Object(d.select)('[id="'.concat(e,'"]')),r=Wn.parser.yy.getActors(),i=Wn.parser.yy.getActorKeys(),a=Wn.parser.yy.getMessages(),o=Wn.parser.yy.getTitle(),s=mr(r,a);cr.height=br(r,s),dr(n,r,i,0);var u=xr(a,r,s);$n.insertArrowHead(n),$n.insertArrowCrossHead(n),$n.insertSequenceNumber(n);var l=1;a.forEach((function(t){var e,i,a;switch(t.type){case Wn.parser.yy.LINETYPE.NOTE:i=t.noteModel,function(t,e){ur.bumpVerticalPos(cr.boxMargin),e.height=cr.boxMargin,e.starty=ur.getVerticalPos();var n=$n.getNoteRect();n.x=e.startx,n.y=e.starty,n.width=e.width||cr.width,n.class="note";var r=t.append("g"),i=$n.drawRect(r,n),a=$n.getTextObj();a.x=e.startx,a.y=e.starty,a.width=n.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=cr.noteFontFamily,a.fontSize=cr.noteFontSize,a.fontWeight=cr.noteFontWeight,a.anchor=cr.noteAlign,a.textMargin=cr.noteMargin,a.valign=cr.noteAlign;var o=In(r,a),s=Math.round(o.map((function(t){return(t._groups||t)[0][0].getBBox().height})).reduce((function(t,e){return t+e})));i.attr("height",s+2*cr.noteMargin),e.height+=s+2*cr.noteMargin,ur.bumpVerticalPos(s+2*cr.noteMargin),e.stopy=e.starty+s+2*cr.noteMargin,e.stopx=e.startx+n.width,ur.insert(e.startx,e.starty,e.stopx,e.stopy),ur.models.addNote(e)}(n,i);break;case Wn.parser.yy.LINETYPE.ACTIVE_START:ur.newActivation(t,n,r);break;case Wn.parser.yy.LINETYPE.ACTIVE_END:!function(t,e){var r=ur.endActivation(t);r.starty+18>e&&(r.starty=e-6,e+=12),$n.drawActivation(n,r,e,cr,gr(t.from.actor).length),ur.insert(r.startx,e-10,r.stopx,e)}(t,ur.getVerticalPos());break;case Wn.parser.yy.LINETYPE.LOOP_START:vr(u,t,cr.boxMargin,cr.boxMargin+cr.boxTextMargin,(function(t){return ur.newLoop(t)}));break;case Wn.parser.yy.LINETYPE.LOOP_END:e=ur.endLoop(),$n.drawLoop(n,e,"loop",cr),ur.bumpVerticalPos(e.stopy-ur.getVerticalPos()),ur.models.addLoop(e);break;case Wn.parser.yy.LINETYPE.RECT_START:vr(u,t,cr.boxMargin,cr.boxMargin,(function(t){return ur.newLoop(void 0,t.message)}));break;case Wn.parser.yy.LINETYPE.RECT_END:e=ur.endLoop(),$n.drawBackgroundRect(n,e),ur.models.addLoop(e),ur.bumpVerticalPos(e.stopy-ur.getVerticalPos());break;case Wn.parser.yy.LINETYPE.OPT_START:vr(u,t,cr.boxMargin,cr.boxMargin+cr.boxTextMargin,(function(t){return ur.newLoop(t)}));break;case Wn.parser.yy.LINETYPE.OPT_END:e=ur.endLoop(),$n.drawLoop(n,e,"opt",cr),ur.bumpVerticalPos(e.stopy-ur.getVerticalPos()),ur.models.addLoop(e);break;case Wn.parser.yy.LINETYPE.ALT_START:vr(u,t,cr.boxMargin,cr.boxMargin+cr.boxTextMargin,(function(t){return ur.newLoop(t)}));break;case Wn.parser.yy.LINETYPE.ALT_ELSE:vr(u,t,cr.boxMargin+cr.boxTextMargin,cr.boxMargin,(function(t){return ur.addSectionToLoop(t)}));break;case Wn.parser.yy.LINETYPE.ALT_END:e=ur.endLoop(),$n.drawLoop(n,e,"alt",cr),ur.bumpVerticalPos(e.stopy-ur.getVerticalPos()),ur.models.addLoop(e);break;case Wn.parser.yy.LINETYPE.PAR_START:vr(u,t,cr.boxMargin,cr.boxMargin+cr.boxTextMargin,(function(t){return ur.newLoop(t)}));break;case Wn.parser.yy.LINETYPE.PAR_AND:vr(u,t,cr.boxMargin+cr.boxTextMargin,cr.boxMargin,(function(t){return ur.addSectionToLoop(t)}));break;case Wn.parser.yy.LINETYPE.PAR_END:e=ur.endLoop(),$n.drawLoop(n,e,"par",cr),ur.bumpVerticalPos(e.stopy-ur.getVerticalPos()),ur.models.addLoop(e);break;default:try{(a=t.msgModel).starty=ur.getVerticalPos(),a.sequenceIndex=l,function(t,e){ur.bumpVerticalPos(10);var n=e.startx,r=e.stopx,i=e.starty,a=e.message,o=e.type,s=e.sequenceIndex,c=x.splitBreaks(a).length,u=H.calculateTextDimensions(a,lr(cr)),l=u.height/c;e.height+=l,ur.bumpVerticalPos(l);var h=$n.getTextObj();h.x=n,h.y=i+10,h.width=r-n,h.class="messageText",h.dy="1em",h.text=a,h.fontFamily=cr.messageFontFamily,h.fontSize=cr.messageFontSize,h.fontWeight=cr.messageFontWeight,h.anchor=cr.messageAlign,h.valign=cr.messageAlign,h.textMargin=cr.wrapPadding,h.tspan=!1,In(t,h);var f,d,p=u.height-10,g=u.width;if(n===r){d=ur.getVerticalPos()+p,cr.rightAngles?f=t.append("path").attr("d","M ".concat(n,",").concat(d," H ").concat(n+Math.max(cr.width/2,g/2)," V ").concat(d+25," H ").concat(n)):(p+=cr.boxMargin,d=ur.getVerticalPos()+p,f=t.append("path").attr("d","M "+n+","+d+" C "+(n+60)+","+(d-10)+" "+(n+60)+","+(d+30)+" "+n+","+(d+20))),p+=30;var y=Math.max(g/2,cr.width/2);ur.insert(n-y,ur.getVerticalPos()-10+p,r+y,ur.getVerticalPos()+30+p)}else p+=cr.boxMargin,d=ur.getVerticalPos()+p,(f=t.append("line")).attr("x1",n),f.attr("y1",d),f.attr("x2",r),f.attr("y2",d),ur.insert(n,d-10,r,d);o===Wn.parser.yy.LINETYPE.DOTTED||o===Wn.parser.yy.LINETYPE.DOTTED_CROSS||o===Wn.parser.yy.LINETYPE.DOTTED_OPEN?(f.style("stroke-dasharray","3, 3"),f.attr("class","messageLine1")):f.attr("class","messageLine0");var v="";cr.arrowMarkerAbsolute&&(v=(v=(v=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),f.attr("stroke-width",2),f.attr("stroke","none"),f.style("fill","none"),o!==Wn.parser.yy.LINETYPE.SOLID&&o!==Wn.parser.yy.LINETYPE.DOTTED||f.attr("marker-end","url("+v+"#arrowhead)"),o!==Wn.parser.yy.LINETYPE.SOLID_CROSS&&o!==Wn.parser.yy.LINETYPE.DOTTED_CROSS||f.attr("marker-end","url("+v+"#crosshead)"),(sr.showSequenceNumbers()||cr.showSequenceNumbers)&&(f.attr("marker-start","url("+v+"#sequencenumber)"),t.append("text").attr("x",n).attr("y",d+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("textLength","16px").attr("class","sequenceNumber").text(s)),ur.bumpVerticalPos(p),e.height+=p,e.stopy=e.starty+e.height,ur.insert(e.fromBounds,e.starty,e.toBounds,e.stopy)}(n,a),ur.models.addMessage(a)}catch(t){c.error("error while drawing message",t)}}[Wn.parser.yy.LINETYPE.SOLID_OPEN,Wn.parser.yy.LINETYPE.DOTTED_OPEN,Wn.parser.yy.LINETYPE.SOLID,Wn.parser.yy.LINETYPE.DOTTED,Wn.parser.yy.LINETYPE.SOLID_CROSS,Wn.parser.yy.LINETYPE.DOTTED_CROSS].includes(t.type)&&l++})),cr.mirrorActors&&(ur.bumpVerticalPos(2*cr.boxMargin),dr(n,r,i,ur.getVerticalPos()));var h=ur.getBounds().bounds;c.debug("For line height fix Querying: #"+e+" .actor-line"),Object(d.selectAll)("#"+e+" .actor-line").attr("y2",h.stopy);var f=h.stopy-h.starty+2*cr.diagramMarginY;cr.mirrorActors&&(f=f-cr.boxMargin+cr.bottomMarginAdj);var p=h.stopx-h.startx+2*cr.diagramMarginX;o&&n.append("text").text(o).attr("x",(h.stopx-h.startx)/2-2*cr.diagramMarginX).attr("y",-25),W(n,f,p,cr.useMaxWidth);var g=o?40:0;n.attr("viewBox",h.startx-cr.diagramMarginX+" -"+(cr.diagramMarginY+g)+" "+p+" "+(f+g)),c.debug("models:",ur.models)}},kr=n(27),wr=n.n(kr);function Er(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e=6&&n.indexOf("weekends")>=0||(n.indexOf(t.format("dddd").toLowerCase())>=0||n.indexOf(t.format(e.trim()))>=0)},Yr=function(t,e,n){if(n.length&&!t.manualEndTime){var r=o()(t.startTime,e,!0);r.add(1,"d");var i=o()(t.endTime,e,!0),a=zr(r,i,e,n);t.endTime=i.toDate(),t.renderEndTime=a}},zr=function(t,e,n,r){for(var i=!1,a=null;t<=e;)i||(a=e.toDate()),(i=Rr(t,n,r))&&e.add(1,"d"),t.add(1,"d");return a},Ur=function(t,e,n){n=n.trim();var r=/^after\s+([\d\w- ]+)/.exec(n.trim());if(null!==r){var i=null;if(r[1].split(" ").forEach((function(t){var e=Xr(t);void 0!==e&&(i?e.endTime>i.endTime&&(i=e):i=e)})),i)return i.endTime;var a=new Date;return a.setHours(0,0,0,0),a}var s=o()(n,e.trim(),!0);return s.isValid()?s.toDate():(c.debug("Invalid date:"+n),c.debug("With date format:"+e.trim()),new Date)},$r=function(t,e){if(null!==t)switch(t[2]){case"s":e.add(t[1],"seconds");break;case"m":e.add(t[1],"minutes");break;case"h":e.add(t[1],"hours");break;case"d":e.add(t[1],"days");break;case"w":e.add(t[1],"weeks")}return e.toDate()},Wr=function(t,e,n,r){r=r||!1,n=n.trim();var i=o()(n,e.trim(),!0);return i.isValid()?(r&&i.add(1,"d"),i.toDate()):$r(/^([\d]+)([wdhms])/.exec(n.trim()),o()(t))},Hr=0,Vr=function(t){return void 0===t?"task"+(Hr+=1):t},Gr=[],qr={},Xr=function(t){var e=qr[t];return Gr[e]},Zr=function(){for(var t=function(t){var e=Gr[t],n="";switch(Gr[t].raw.startTime.type){case"prevTaskEnd":var r=Xr(e.prevTaskId);e.startTime=r.endTime;break;case"getStartDate":(n=Ur(0,Ar,Gr[t].raw.startTime.startData))&&(Gr[t].startTime=n)}return Gr[t].startTime&&(Gr[t].endTime=Wr(Gr[t].startTime,Ar,Gr[t].raw.endTime.data,Ir),Gr[t].endTime&&(Gr[t].processed=!0,Gr[t].manualEndTime=o()(Gr[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),Yr(Gr[t],Ar,Or))),Gr[t].processed},e=!0,n=0;nr?i=1:n0&&(e=t.classes.join(" "));for(var n=0,r=0;rn-e?n+a+1.5*ni.leftPadding>u?e+r-5:n+r+5:(n-e)/2+e+r})).attr("y",(function(t,r){return t.order*e+ni.barHeight/2+(ni.fontSize/2-2)+n})).attr("text-height",i).attr("class",(function(t){var e=o(t.startTime),n=o(t.endTime);t.milestone&&(n=e+i);var r=this.getBBox().width,a="";t.classes.length>0&&(a=t.classes.join(" "));for(var c=0,l=0;ln-e?n+r+1.5*ni.leftPadding>u?a+" taskTextOutsideLeft taskTextOutside"+c+" "+h:a+" taskTextOutsideRight taskTextOutside"+c+" "+h+" width-"+r:a+" taskText taskText"+c+" "+h+" width-"+r}))}(t,i,c,h,r,0,e),function(t,e){for(var n=[],r=0,i=0;i0&&a.setAttribute("dy","1em"),a.textContent=e[i],r.appendChild(a)}return r})).attr("x",10).attr("y",(function(i,a){if(!(a>0))return i[1]*t/2+e;for(var o=0;o "+t.w+": "+JSON.stringify(i.edge(t))),mn(r,i.edge(t),i.edge(t).relation,ci))}));var h=r.node().getBBox(),f=h.width+40,p=h.height+40;W(r,p,f,ci.useMaxWidth);var g="".concat(h.x-20," ").concat(h.y-20," ").concat(f," ").concat(p);c.debug("viewBox ".concat(g)),r.attr("viewBox",g)};ai.parser.yy=cn;var fi={dividerMargin:10,padding:5,textHeight:10},di=function(t){Object.keys(t).forEach((function(e){fi[e]=t[e]}))},pi=function(t,e){c.info("Drawing class"),cn.clear(),ai.parser.parse(t);var n=_t().flowchart;c.info("config:",n);var r=n.nodeSpacing||50,i=n.rankSpacing||50,a=new G.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:"TD",nodesep:r,ranksep:i,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),o=cn.getClasses(),s=cn.getRelations();c.info(s),function(t,e){var n=Object.keys(t);c.info("keys:",n),c.info(t),n.forEach((function(n){var r=t[n],i="";r.cssClasses.length>0&&(i=i+" "+r.cssClasses.join(" "));var a={labelStyle:""},o=void 0!==r.text?r.text:r.id,s="";switch(r.type){case"class":s="class_box";break;default:s="class_box"}e.setNode(r.id,{labelStyle:a.labelStyle,shape:s,labelText:o,classData:r,rx:0,ry:0,class:i,style:a.style,id:r.id,domId:r.domId,haveCallback:r.haveCallback,link:r.link,width:"group"===r.type?500:void 0,type:r.type,padding:_t().flowchart.padding}),c.info("setNode",{labelStyle:a.labelStyle,shape:s,labelText:o,rx:0,ry:0,class:i,style:a.style,id:r.id,width:"group"===r.type?500:void 0,type:r.type,padding:_t().flowchart.padding})}))}(o,a),function(t,e){var n=0;t.forEach((function(r){n++;var i={classes:"relation"};i.pattern=1==r.relation.lineType?"dashed":"solid",i.id="id"+n,"arrow_open"===r.type?i.arrowhead="none":i.arrowhead="normal",c.info(i,r),i.startLabelRight="none"===r.relationTitle1?"":r.relationTitle1,i.endLabelLeft="none"===r.relationTitle2?"":r.relationTitle2,i.arrowTypeStart=gi(r.relation.type1),i.arrowTypeEnd=gi(r.relation.type2);var a="",o="";if(void 0!==r.style){var s=B(r.style);a=s.style,o=s.labelStyle}else a="fill:none";i.style=a,i.labelStyle=o,void 0!==r.interpolate?i.curve=D(r.interpolate,d.curveLinear):void 0!==t.defaultInterpolate?i.curve=D(t.defaultInterpolate,d.curveLinear):i.curve=D(fi.curve,d.curveLinear),r.text=r.title,void 0===r.text?void 0!==r.style&&(i.arrowheadStyle="fill: #333"):(i.arrowheadStyle="fill: #333",i.labelpos="c",_t().flowchart.htmlLabels,i.labelType="text",i.label=r.text.replace(x.lineBreakRegex,"\n"),void 0===r.style&&(i.style=i.style||"stroke: #333; stroke-width: 1.5px;fill:none"),i.labelStyle=i.labelStyle.replace("color:","fill:")),e.setEdge(r.id1,r.id2,i,n)}))}(s,a);var u=Object(d.select)('[id="'.concat(e,'"]'));u.attr("xmlns:xlink","http://www.w3.org/1999/xlink");var l=Object(d.select)("#"+e+" g");On(l,a,["aggregation","extension","composition","dependency"],"classDiagram",e);var h=u.node().getBBox(),f=h.width+16,p=h.height+16;if(c.debug("new ViewBox 0 0 ".concat(f," ").concat(p),"translate(".concat(8-a._label.marginx,", ").concat(8-a._label.marginy,")")),W(u,p,f,n.useMaxWidth),u.attr("viewBox","0 0 ".concat(f," ").concat(p)),u.select("g").attr("transform","translate(".concat(8-a._label.marginx,", ").concat(8-h.y,")")),!n.htmlLabels)for(var g=document.querySelectorAll('[id="'+e+'"] .edgeLabel .label'),y=0;y0&&o.length>0){var c={stmt:"state",id:F(),type:"divider",doc:mi(o)};i.push(mi(c)),n.doc=i}n.doc.forEach((function(e){return t(n,e,!0)}))}}({id:"root"},{id:"root",doc:bi},!0),{id:"root",doc:bi}},extract:function(t){var e;e=t.doc?t.doc:t,c.info(e),Ei(),c.info("Extract",e),e.forEach((function(t){"state"===t.stmt&&wi(t.id,t.type,t.doc,t.description,t.note),"relation"===t.stmt&&Ti(t.state1.id,t.state2.id,t.description)}))},trimColon:function(t){return t&&":"===t[0]?t.substr(1).trim():t.trim()}},Oi=n(22),Di=n.n(Oi),Ni={},Bi=function(t,e){Ni[t]=e},Li=function(t,e){var n=t.append("text").attr("x",2*_t().state.padding).attr("y",_t().state.textHeight+1.3*_t().state.padding).attr("font-size",_t().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),r=n.height,i=t.append("text").attr("x",_t().state.padding).attr("y",r+.4*_t().state.padding+_t().state.dividerMargin+_t().state.textHeight).attr("class","state-description"),a=!0,o=!0;e.descriptions.forEach((function(t){a||(!function(t,e,n){var r=t.append("tspan").attr("x",2*_t().state.padding).text(e);n||r.attr("dy",_t().state.textHeight)}(i,t,o),o=!1),a=!1}));var s=t.append("line").attr("x1",_t().state.padding).attr("y1",_t().state.padding+r+_t().state.dividerMargin/2).attr("y2",_t().state.padding+r+_t().state.dividerMargin/2).attr("class","descr-divider"),c=i.node().getBBox(),u=Math.max(c.width,n.width);return s.attr("x2",u+3*_t().state.padding),t.insert("rect",":first-child").attr("x",_t().state.padding).attr("y",_t().state.padding).attr("width",u+2*_t().state.padding).attr("height",c.height+r+2*_t().state.padding).attr("rx",_t().state.radius),t},Fi=function(t,e,n){var r,i=_t().state.padding,a=2*_t().state.padding,o=t.node().getBBox(),s=o.width,c=o.x,u=t.append("text").attr("x",0).attr("y",_t().state.titleShift).attr("font-size",_t().state.fontSize).attr("class","state-title").text(e.id),l=u.node().getBBox().width+a,h=Math.max(l,s);h===s&&(h+=a);var f=t.node().getBBox();e.doc,r=c-i,l>s&&(r=(s-h)/2+i),Math.abs(c-f.x)s&&(r=c-(l-s)/2);var d=1-_t().state.textHeight;return t.insert("rect",":first-child").attr("x",r).attr("y",d).attr("class",n?"alt-composit":"composit").attr("width",h).attr("height",f.height+_t().state.textHeight+_t().state.titleShift+1).attr("rx","0"),u.attr("x",r+i),l<=s&&u.attr("x",c+(h-a)/2-l/2+i),t.insert("rect",":first-child").attr("x",r).attr("y",_t().state.titleShift-_t().state.textHeight-_t().state.padding).attr("width",h).attr("height",3*_t().state.textHeight).attr("rx",_t().state.radius),t.insert("rect",":first-child").attr("x",r).attr("y",_t().state.titleShift-_t().state.textHeight-_t().state.padding).attr("width",h).attr("height",f.height+3+2*_t().state.textHeight).attr("rx",_t().state.radius),t},Pi=function(t,e){e.attr("class","state-note");var n=e.append("rect").attr("x",0).attr("y",_t().state.padding),r=function(t,e,n,r){var i=0,a=r.append("text");a.style("text-anchor","start"),a.attr("class","noteText");var o=t.replace(/\r\n/g,"
"),s=(o=o.replace(/\n/g,"
")).split(x.lineBreakRegex),c=1.25*_t().state.noteMargin,u=!0,l=!1,h=void 0;try{for(var f,d=s[Symbol.iterator]();!(u=(f=d.next()).done);u=!0){var p=f.value.trim();if(p.length>0){var g=a.append("tspan");if(g.text(p),0===c)c+=g.node().getBBox().height;i+=c,g.attr("x",e+_t().state.noteMargin),g.attr("y",n+i+1.25*_t().state.noteMargin)}}}catch(t){l=!0,h=t}finally{try{u||null==d.return||d.return()}finally{if(l)throw h}}return{textWidth:a.node().getBBox().width,textHeight:i}}(t,0,0,e.append("g")),i=r.textWidth,a=r.textHeight;return n.attr("height",a+2*_t().state.noteMargin),n.attr("width",i+2*_t().state.noteMargin),n},Ii=function(t,e){var n=e.id,r={id:n,label:e.id,width:0,height:0},i=t.append("g").attr("id",n).attr("class","stateGroup");"start"===e.type&&function(t){t.append("circle").attr("class","start-state").attr("r",_t().state.sizeUnit).attr("cx",_t().state.padding+_t().state.sizeUnit).attr("cy",_t().state.padding+_t().state.sizeUnit)}(i),"end"===e.type&&function(t){t.append("circle").attr("class","end-state-outer").attr("r",_t().state.sizeUnit+_t().state.miniPadding).attr("cx",_t().state.padding+_t().state.sizeUnit+_t().state.miniPadding).attr("cy",_t().state.padding+_t().state.sizeUnit+_t().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",_t().state.sizeUnit).attr("cx",_t().state.padding+_t().state.sizeUnit+2).attr("cy",_t().state.padding+_t().state.sizeUnit+2)}(i),"fork"!==e.type&&"join"!==e.type||function(t,e){var n=_t().state.forkWidth,r=_t().state.forkHeight;if(e.parentId){var i=n;n=r,r=i}t.append("rect").style("stroke","black").style("fill","black").attr("width",n).attr("height",r).attr("x",_t().state.padding).attr("y",_t().state.padding)}(i,e),"note"===e.type&&Pi(e.note.text,i),"divider"===e.type&&function(t){t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",_t().state.textHeight).attr("class","divider").attr("x2",2*_t().state.textHeight).attr("y1",0).attr("y2",0)}(i),"default"===e.type&&0===e.descriptions.length&&function(t,e){var n=t.append("text").attr("x",2*_t().state.padding).attr("y",_t().state.textHeight+2*_t().state.padding).attr("font-size",_t().state.fontSize).attr("class","state-title").text(e.id),r=n.node().getBBox();t.insert("rect",":first-child").attr("x",_t().state.padding).attr("y",_t().state.padding).attr("width",r.width+2*_t().state.padding).attr("height",r.height+2*_t().state.padding).attr("rx",_t().state.radius)}(i,e),"default"===e.type&&e.descriptions.length>0&&Li(i,e);var a=i.node().getBBox();return r.width=a.width+2*_t().state.padding,r.height=a.height+2*_t().state.padding,Bi(n,r),r},ji=0;Oi.parser.yy=Mi;var Ri={},Yi=function t(e,n,r,i){var a,o=new G.a.Graph({compound:!0,multigraph:!0}),s=!0;for(a=0;a "+t.w+": "+JSON.stringify(o.edge(t))),function(t,e,n){e.points=e.points.filter((function(t){return!Number.isNaN(t.y)}));var r=e.points,i=Object(d.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(d.curveBasis),a=t.append("path").attr("d",i(r)).attr("id","edge"+ji).attr("class","transition"),o="";if(_t().state.arrowMarkerAbsolute&&(o=(o=(o=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),a.attr("marker-end","url("+o+"#"+function(t){switch(t){case Mi.relationType.AGGREGATION:return"aggregation";case Mi.relationType.EXTENSION:return"extension";case Mi.relationType.COMPOSITION:return"composition";case Mi.relationType.DEPENDENCY:return"dependency"}}(Mi.relationType.DEPENDENCY)+"End)"),void 0!==n.title){for(var s=t.append("g").attr("class","stateLabel"),u=H.calcLabelPosition(e.points),l=u.x,h=u.y,f=x.getRows(n.title),p=0,g=[],y=0,v=0,m=0;m<=f.length;m++){var b=s.append("text").attr("text-anchor","middle").text(f[m]).attr("x",l).attr("y",h+p),_=b.node().getBBox();if(y=Math.max(y,_.width),v=Math.min(v,_.x),c.info(_.x,l,h+p),0===p){var k=b.node().getBBox();p=k.height,c.info("Title height",p,h)}g.push(b)}var w=p*f.length;if(f.length>1){var E=(f.length-1)*p*.5;g.forEach((function(t,e){return t.attr("y",h+e*p-E)})),w=p*f.length}var T=s.node().getBBox();s.insert("rect",":first-child").attr("class","box").attr("x",l-y/2-_t().state.padding/2).attr("y",h-w/2-_t().state.padding/2-3.5).attr("width",y+_t().state.padding).attr("height",w+_t().state.padding),c.info(T)}ji++}(n,o.edge(t),o.edge(t).relation))})),w=k.getBBox();var E={id:r||"root",label:r||"root",width:0,height:0};return E.width=w.width+2*vi.padding,E.height=w.height+2*vi.padding,c.debug("Doc rendered",E,o),E},zi=function(){},Ui=function(t,e){vi=_t().state,Oi.parser.yy.clear(),Oi.parser.parse(t),c.debug("Rendering diagram "+t);var n=Object(d.select)("[id='".concat(e,"']"));n.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z"),new G.a.Graph({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel((function(){return{}}));var r=Mi.getRootDoc();Yi(r,n,void 0,!1);var i=vi.padding,a=n.node().getBBox(),o=a.width+2*i,s=a.height+2*i;W(n,s,1.75*o,vi.useMaxWidth),n.attr("viewBox","".concat(a.x-vi.padding," ").concat(a.y-vi.padding," ")+o+" "+s)},$i={},Wi={},Hi=function(t,e,n,r){if("root"!==n.id){var i="rect";!0===n.start&&(i="start"),!1===n.start&&(i="end"),"default"!==n.type&&(i=n.type),Wi[n.id]||(Wi[n.id]={id:n.id,shape:i,description:n.id,classes:"statediagram-state"}),n.description&&(Array.isArray(Wi[n.id].description)?(Wi[n.id].shape="rectWithTitle",Wi[n.id].description.push(n.description)):Wi[n.id].description.length>0?(Wi[n.id].shape="rectWithTitle",Wi[n.id].description===n.id?Wi[n.id].description=[n.description]:Wi[n.id].description=[Wi[n.id].description,n.description]):(Wi[n.id].shape="rect",Wi[n.id].description=n.description)),!Wi[n.id].type&&n.doc&&(c.info("Setting cluser for ",n.id),Wi[n.id].type="group",Wi[n.id].shape="divider"===n.type?"divider":"roundedWithTitle",Wi[n.id].classes=Wi[n.id].classes+" "+(r?"statediagram-cluster statediagram-cluster-alt":"statediagram-cluster"));var a={labelStyle:"",shape:Wi[n.id].shape,labelText:Wi[n.id].description,classes:Wi[n.id].classes,style:"",id:n.id,domId:"state-"+n.id+"-"+Vi,type:Wi[n.id].type,padding:15};if(n.note){var o={labelStyle:"",shape:"note",labelText:n.note.text,classes:"statediagram-note",style:"",id:n.id+"----note",domId:"state-"+n.id+"----note-"+Vi,type:Wi[n.id].type,padding:15},s={labelStyle:"",shape:"noteGroup",labelText:n.note.text,classes:Wi[n.id].classes,style:"",id:n.id+"----parent",domId:"state-"+n.id+"----parent-"+Vi,type:"group",padding:0};Vi++,t.setNode(n.id+"----parent",s),t.setNode(o.id,o),t.setNode(n.id,a),t.setParent(n.id,n.id+"----parent"),t.setParent(o.id,n.id+"----parent");var u=n.id,l=o.id;"left of"===n.note.position&&(u=o.id,l=n.id),t.setEdge(u,l,{arrowhead:"none",arrowType:"",style:"fill:none",labelStyle:"",classes:"transition note-edge",arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text",thickness:"normal"})}else t.setNode(n.id,a)}e&&"root"!==e.id&&(c.info("Setting node ",n.id," to be child of its parent ",e.id),t.setParent(n.id,e.id)),n.doc&&(c.info("Adding nodes children "),Gi(t,n,n.doc,!r))},Vi=0,Gi=function(t,e,n,r){Vi=0,c.trace("items",n),n.forEach((function(n){if("state"===n.stmt||"default"===n.stmt)Hi(t,e,n,r);else if("relation"===n.stmt){Hi(t,e,n.state1,r),Hi(t,e,n.state2,r);var i={id:"edge"+Vi,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:"fill:none",labelStyle:"",label:n.description,arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text",thickness:"normal",classes:"transition"},a=n.state1.id,o=n.state2.id;t.setEdge(a,o,i,Vi),Vi++}}))},qi=function(t){for(var e=Object.keys(t),n=0;ne.seq?t:e}),t[0]),n="";t.forEach((function(t){n+=t===e?"\t*":"\t|"}));var r,i,a,o=[n,e.id,e.seq];for(var s in Ki)Ki[s]===e.id&&o.push(s);if(c.debug(o.join(" ")),Array.isArray(e.parent)){var u=Zi[e.parent[0]];aa(t,e,u),t.push(Zi[e.parent[1]])}else{if(null==e.parent)return;var l=Zi[e.parent];aa(t,e,l)}r=t,i=function(t){return t.id},a=Object.create(null),oa(t=r.reduce((function(t,e){var n=i(e);return a[n]||(a[n]=!0,t.push(e)),t}),[]))}var sa,ca=function(){var t=Object.keys(Zi).map((function(t){return Zi[t]}));return t.forEach((function(t){c.debug(t.id)})),t.sort((function(t,e){return e.seq-t.seq})),t},ua={setDirection:function(t){ta=t},setOptions:function(t){c.debug("options str",t),t=(t=t&&t.trim())||"{}";try{ia=JSON.parse(t)}catch(t){c.error("error while parsing gitGraph options",t.message)}},getOptions:function(){return ia},commit:function(t){var e={id:na(),message:t,seq:ea++,parent:null==Ji?null:Ji.id};Ji=e,Zi[e.id]=e,Ki[Qi]=e.id,c.debug("in pushCommit "+e.id)},branch:function(t){Ki[t]=null!=Ji?Ji.id:null,c.debug("in createBranch")},merge:function(t){var e=Zi[Ki[Qi]],n=Zi[Ki[t]];if(function(t,e){return t.seq>e.seq&&ra(e,t)}(e,n))c.debug("Already merged");else{if(ra(e,n))Ki[Qi]=Ki[t],Ji=Zi[Ki[Qi]];else{var r={id:na(),message:"merged branch "+t+" into "+Qi,seq:ea++,parent:[null==Ji?null:Ji.id,Ki[t]]};Ji=r,Zi[r.id]=r,Ki[Qi]=r.id}c.debug(Ki),c.debug("in mergeBranch")}},checkout:function(t){c.debug("in checkout");var e=Ki[Qi=t];Ji=Zi[e]},reset:function(t){c.debug("in reset",t);var e=t.split(":")[0],n=parseInt(t.split(":")[1]),r="HEAD"===e?Ji:Zi[Ki[e]];for(c.debug(r,n);n>0;)if(n--,!(r=Zi[r.parent])){var i="Critical error - unique parent commit not found during reset";throw c.error(i),i}Ji=r,Ki[Qi]=r.id},prettyPrint:function(){c.debug(Zi),oa([ca()[0]])},clear:function(){Zi={},Ki={master:Ji=null},Qi="master",ea=0},getBranchesAsObjArray:function(){var t=[];for(var e in Ki)t.push({name:e,commit:Zi[Ki[e]]});return t},getBranches:function(){return Ki},getCommits:function(){return Zi},getCommitsArray:ca,getCurrentBranch:function(){return Qi},getDirection:function(){return ta},getHead:function(){return Ji}},la=n(71),ha=n.n(la),fa={},da={nodeSpacing:150,nodeFillColor:"yellow",nodeStrokeWidth:2,nodeStrokeColor:"grey",lineStrokeWidth:4,branchOffset:50,lineColor:"grey",leftMargin:50,branchColors:["#442f74","#983351","#609732","#AA9A39"],nodeRadius:10,nodeLabel:{width:75,height:100,x:-25,y:0}},pa={};function ga(t,e,n,r){var i=D(r,d.curveBasis),a=da.branchColors[n%da.branchColors.length],o=Object(d.line)().x((function(t){return Math.round(t.x)})).y((function(t){return Math.round(t.y)})).curve(i);t.append("svg:path").attr("d",o(e)).style("stroke",a).style("stroke-width",da.lineStrokeWidth).style("fill","none")}function ya(t,e){e=e||t.node().getBBox();var n=t.node().getCTM();return{left:n.e+e.x*n.a,top:n.f+e.y*n.d,width:e.width,height:e.height}}function va(t,e,n,r,i){c.debug("svgDrawLineForCommits: ",e,n);var a=ya(t.select("#node-"+e+" circle")),o=ya(t.select("#node-"+n+" circle"));switch(r){case"LR":if(a.left-o.left>da.nodeSpacing){var s={x:a.left-da.nodeSpacing,y:o.top+o.height/2};ga(t,[s,{x:o.left+o.width,y:o.top+o.height/2}],i,"linear"),ga(t,[{x:a.left,y:a.top+a.height/2},{x:a.left-da.nodeSpacing/2,y:a.top+a.height/2},{x:a.left-da.nodeSpacing/2,y:s.y},s],i)}else ga(t,[{x:a.left,y:a.top+a.height/2},{x:a.left-da.nodeSpacing/2,y:a.top+a.height/2},{x:a.left-da.nodeSpacing/2,y:o.top+o.height/2},{x:o.left+o.width,y:o.top+o.height/2}],i);break;case"BT":if(o.top-a.top>da.nodeSpacing){var u={x:o.left+o.width/2,y:a.top+a.height+da.nodeSpacing};ga(t,[u,{x:o.left+o.width/2,y:o.top}],i,"linear"),ga(t,[{x:a.left+a.width/2,y:a.top+a.height},{x:a.left+a.width/2,y:a.top+a.height+da.nodeSpacing/2},{x:o.left+o.width/2,y:u.y-da.nodeSpacing/2},u],i)}else ga(t,[{x:a.left+a.width/2,y:a.top+a.height},{x:a.left+a.width/2,y:a.top+da.nodeSpacing/2},{x:o.left+o.width/2,y:o.top-da.nodeSpacing/2},{x:o.left+o.width/2,y:o.top}],i)}}function ma(t,e){return t.select(e).node().cloneNode(!0)}function ba(t,e,n,r){var i,a=Object.keys(fa).length;if("string"==typeof e)do{if(i=fa[e],c.debug("in renderCommitHistory",i.id,i.seq),t.select("#node-"+e).size()>0)return;t.append((function(){return ma(t,"#def-commit")})).attr("class","commit").attr("id",(function(){return"node-"+i.id})).attr("transform",(function(){switch(r){case"LR":return"translate("+(i.seq*da.nodeSpacing+da.leftMargin)+", "+sa*da.branchOffset+")";case"BT":return"translate("+(sa*da.branchOffset+da.leftMargin)+", "+(a-i.seq)*da.nodeSpacing+")"}})).attr("fill",da.nodeFillColor).attr("stroke",da.nodeStrokeColor).attr("stroke-width",da.nodeStrokeWidth);var o=void 0;for(var s in n)if(n[s].commit===i){o=n[s];break}o&&(c.debug("found branch ",o.name),t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","branch-label").text(o.name+", ")),t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","commit-id").text(i.id),""!==i.message&&"BT"===r&&t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","commit-msg").text(", "+i.message),e=i.parent}while(e&&fa[e]);Array.isArray(e)&&(c.debug("found merge commmit",e),ba(t,e[0],n,r),sa++,ba(t,e[1],n,r),sa--)}function xa(t,e,n,r){for(r=r||0;e.seq>0&&!e.lineDrawn;)"string"==typeof e.parent?(va(t,e.id,e.parent,n,r),e.lineDrawn=!0,e=fa[e.parent]):Array.isArray(e.parent)&&(va(t,e.id,e.parent[0],n,r),va(t,e.id,e.parent[1],n,r+1),xa(t,fa[e.parent[1]],n,r+1),e.lineDrawn=!0,e=fa[e.parent[0]])}var _a,ka=function(t){pa=t},wa=function(t,e,n){try{var r=ha.a.parser;r.yy=ua,r.yy.clear(),c.debug("in gitgraph renderer",t+"\n","id:",e,n),r.parse(t+"\n"),da=Object.assign(da,pa,ua.getOptions()),c.debug("effective options",da);var i=ua.getDirection();fa=ua.getCommits();var a=ua.getBranchesAsObjArray();"BT"===i&&(da.nodeLabel.x=a.length*da.branchOffset,da.nodeLabel.width="100%",da.nodeLabel.y=-2*da.nodeRadius);var o=Object(d.select)('[id="'.concat(e,'"]'));for(var s in function(t){t.append("defs").append("g").attr("id","def-commit").append("circle").attr("r",da.nodeRadius).attr("cx",0).attr("cy",0),t.select("#def-commit").append("foreignObject").attr("width",da.nodeLabel.width).attr("height",da.nodeLabel.height).attr("x",da.nodeLabel.x).attr("y",da.nodeLabel.y).attr("class","node-label").attr("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility").append("p").html("")}(o),sa=1,a){var u=a[s];ba(o,u.commit.id,a,i),xa(o,u.commit,i),sa++}o.attr("height",(function(){return"BT"===i?Object.keys(fa).length*da.nodeSpacing:(a.length+1)*da.branchOffset}))}catch(t){c.error("Error while rendering gitgraph"),c.error(t.message)}},Ea="",Ta=!1,Ca={setMessage:function(t){c.debug("Setting message to: "+t),Ea=t},getMessage:function(){return Ea},setInfo:function(t){Ta=t},getInfo:function(){return Ta}},Aa=n(72),Sa=n.n(Aa),Ma={},Oa=function(t){Object.keys(t).forEach((function(e){Ma[e]=t[e]}))},Da=function(t,e,n){try{var r=Sa.a.parser;r.yy=Ca,c.debug("Renering info diagram\n"+t),r.parse(t),c.debug("Parsed info diagram");var i=Object(d.select)("#"+e);i.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+n),i.attr("height",100),i.attr("width",400)}catch(t){c.error("Error while rendering info diagram"),c.error(t.message)}},Na={},Ba=function(t){Object.keys(t).forEach((function(e){Na[e]=t[e]}))},La=function(t,e){try{c.debug("Renering svg for syntax error\n");var n=Object(d.select)("#"+t),r=n.append("g");r.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),r.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),r.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),r.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),r.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),r.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),r.append("text").attr("class","error-text").attr("x",1240).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in graph"),r.append("text").attr("class","error-text").attr("x",1050).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text("mermaid version "+e),n.attr("height",100),n.attr("width",400),n.attr("viewBox","768 0 512 512")}catch(t){c.error("Error while rendering info diagram"),c.error(t.message)}},Fa={},Pa="",Ia={parseDirective:function(t,e,n){Go.parseDirective(this,t,e,n)},getConfig:function(){return _t().pie},addSection:function(t,e){void 0===Fa[t]&&(Fa[t]=e,c.debug("Added new section :",t))},getSections:function(){return Fa},cleanupValue:function(t){return":"===t.substring(0,1)?(t=t.substring(1).trim(),Number(t.trim())):Number(t.trim())},clear:function(){Fa={},Pa=""},setTitle:function(t){Pa=t},getTitle:function(){return Pa}},ja=n(73),Ra=n.n(ja),Ya={},za=function(t){Object.keys(t).forEach((function(e){Ya[e]=t[e]}))},Ua=function(t,e){try{var n=Ra.a.parser;n.yy=Ia,c.debug("Rendering info diagram\n"+t),n.yy.clear(),n.parse(t),c.debug("Parsed info diagram");var r=document.getElementById(e);void 0===(_a=r.parentElement.offsetWidth)&&(_a=1200),void 0!==Ya.useWidth&&(_a=Ya.useWidth);var i=Object(d.select)("#"+e);W(i,450,_a,Ya.useMaxWidth),r.setAttribute("viewBox","0 0 "+_a+" 450");var a=Math.min(_a,450)/2-40,o=i.append("g").attr("transform","translate("+_a/2+",225)"),s=Ia.getSections(),u=0;Object.keys(s).forEach((function(t){u+=s[t]}));var l=Object(d.scaleOrdinal)().domain(s).range(d.schemeSet2),h=Object(d.pie)().value((function(t){return t.value}))(Object(d.entries)(s)),f=Object(d.arc)().innerRadius(0).outerRadius(a);o.selectAll("mySlices").data(h).enter().append("path").attr("d",f).attr("fill",(function(t){return l(t.data.key)})).attr("stroke","black").style("stroke-width","2px").style("opacity",.7),o.selectAll("mySlices").data(h).enter().append("text").text((function(t){return(t.data.value/u*100).toFixed(0)+"%"})).attr("transform",(function(t){return"translate("+f.centroid(t)+")"})).style("text-anchor","middle").attr("class","slice").style("font-size",17),o.append("text").text(n.yy.getTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");var p=o.selectAll(".legend").data(l.domain()).enter().append("g").attr("class","legend").attr("transform",(function(t,e){return"translate(216,"+(22*e-22*l.domain().length/2)+")"}));p.append("rect").attr("width",18).attr("height",18).style("fill",l).style("stroke",l),p.append("text").attr("x",22).attr("y",14).text((function(t){return t}))}catch(t){c.error("Error while rendering info diagram"),c.error(t)}},$a={},Wa=[],Ha="",Va=function(t){return void 0===$a[t]&&($a[t]={attributes:[]},c.info("Added new entity :",t)),$a[t]},Ga={Cardinality:{ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE"},Identification:{NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},parseDirective:function(t,e,n){Go.parseDirective(this,t,e,n)},getConfig:function(){return _t().er},addEntity:Va,addAttributes:function(t,e){var n,r=Va(t);for(n=e.length-1;n>=0;n--)r.attributes.push(e[n]),c.debug("Added attribute ",e[n].attributeName)},getEntities:function(){return $a},addRelationship:function(t,e,n,r){var i={entityA:t,roleA:e,entityB:n,relSpec:r};Wa.push(i),c.debug("Added new relationship :",i)},getRelationships:function(){return Wa},clear:function(){$a={},Wa=[],Ha=""},setTitle:function(t){Ha=t},getTitle:function(){return Ha}},qa=n(74),Xa=n.n(qa),Za={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END"},Ja=Za,Ka=function(t,e){var n;t.append("defs").append("marker").attr("id",Za.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",Za.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",Za.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",Za.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",Za.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",Za.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),(n=t.append("defs").append("marker").attr("id",Za.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),(n=t.append("defs").append("marker").attr("id",Za.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},Qa={},to=function(t,e,n){var r;return Object.keys(e).forEach((function(i){var a=t.append("g").attr("id",i);r=void 0===r?i:r;var o="entity-"+i,s=a.append("text").attr("class","er entityLabel").attr("id",o).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("style","font-family: "+_t().fontFamily+"; font-size: "+Qa.fontSize+"px").text(i),c=function(t,e,n){var r=Qa.entityPadding/3,i=Qa.entityPadding/3,a=.85*Qa.fontSize,o=e.node().getBBox(),s=[],c=0,u=0,l=o.height+2*r,h=1;n.forEach((function(n){var i="".concat(e.node().id,"-attr-").concat(h),o=t.append("text").attr("class","er entityLabel").attr("id","".concat(i,"-type")).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","left").attr("style","font-family: "+_t().fontFamily+"; font-size: "+a+"px").text(n.attributeType),f=t.append("text").attr("class","er entityLabel").attr("id","".concat(i,"-name")).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","left").attr("style","font-family: "+_t().fontFamily+"; font-size: "+a+"px").text(n.attributeName);s.push({tn:o,nn:f});var d=o.node().getBBox(),p=f.node().getBBox();c=Math.max(c,d.width),u=Math.max(u,p.width),l+=Math.max(d.height,p.height)+2*r,h+=1}));var f={width:Math.max(Qa.minEntityWidth,Math.max(o.width+2*Qa.entityPadding,c+u+4*i)),height:n.length>0?l:Math.max(Qa.minEntityHeight,o.height+2*Qa.entityPadding)},d=Math.max(0,f.width-(c+u)-4*i);if(n.length>0){e.attr("transform","translate("+f.width/2+","+(r+o.height/2)+")");var p=o.height+2*r,g="attributeBoxOdd";s.forEach((function(e){var n=p+r+Math.max(e.tn.node().getBBox().height,e.nn.node().getBBox().height)/2;e.tn.attr("transform","translate("+i+","+n+")");var a=t.insert("rect","#"+e.tn.node().id).attr("class","er ".concat(g)).attr("fill",Qa.fill).attr("fill-opacity","100%").attr("stroke",Qa.stroke).attr("x",0).attr("y",p).attr("width",c+2*i+d/2).attr("height",e.tn.node().getBBox().height+2*r);e.nn.attr("transform","translate("+(parseFloat(a.attr("width"))+i)+","+n+")"),t.insert("rect","#"+e.nn.node().id).attr("class","er ".concat(g)).attr("fill",Qa.fill).attr("fill-opacity","100%").attr("stroke",Qa.stroke).attr("x","".concat(a.attr("x")+a.attr("width"))).attr("y",p).attr("width",u+2*i+d/2).attr("height",e.nn.node().getBBox().height+2*r),p+=Math.max(e.tn.node().getBBox().height,e.nn.node().getBBox().height)+2*r,g="attributeBoxOdd"==g?"attributeBoxEven":"attributeBoxOdd"}))}else f.height=Math.max(Qa.minEntityHeight,l),e.attr("transform","translate("+f.width/2+","+f.height/2+")");return f}(a,s,e[i].attributes),u=c.width,l=c.height,h=a.insert("rect","#"+o).attr("class","er entityBox").attr("fill",Qa.fill).attr("fill-opacity","100%").attr("stroke",Qa.stroke).attr("x",0).attr("y",0).attr("width",u).attr("height",l).node().getBBox();n.setNode(i,{width:h.width,height:h.height,shape:"rect",id:i})})),r},eo=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")},no=0,ro=function(t){for(var e=Object.keys(t),n=0;n/gi," "),r=t.append("text");r.attr("x",e.x),r.attr("y",e.y),r.attr("class","legend"),r.style("text-anchor",e.anchor),void 0!==e.class&&r.attr("class",e.class);var i=r.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.text(n),r},bo=-1,xo=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},_o=function(){function t(t,e,n,i,a,o,s,c){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("font-color",c).style("text-anchor","middle").text(t),s)}function e(t,e,n,i,a,o,s,c,u){for(var l=c.taskFontSize,h=c.taskFontFamily,f=t.split(//gi),d=0;d3?function(t){var e=Object(d.arc)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("class","mouth").attr("d",e).attr("transform","translate("+o.cx+","+(o.cy+2)+")")}(s):o.score<3?function(t){var e=Object(d.arc)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("class","mouth").attr("d",e).attr("transform","translate("+o.cx+","+(o.cy+7)+")")}(s):function(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",o.cx-5).attr("y1",o.cy+7).attr("x2",o.cx+5).attr("y2",o.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}(s);var c=xo();c.x=e.x,c.y=e.y,c.fill=e.fill,c.width=n.width,c.height=n.height,c.class="task task-type-"+e.num,c.rx=3,c.ry=3,yo(i,c);var u=e.x+14;e.people.forEach((function(t){var n=e.actors[t],r={cx:u,cy:e.y,r:7,fill:n,stroke:"#000",title:t};vo(i,r),u+=10})),_o(n)(e.task,i,c.x,c.y,c.width,c.height,{class:"task"},n,e.colour)},Co=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")};ao.parser.yy=go;var Ao={leftMargin:150,diagramMarginX:50,diagramMarginY:20,taskMargin:50,width:150,height:50,taskFontSize:14,taskFontFamily:'"Open-Sans", "sans-serif"',boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},So={};var Mo=Ao.leftMargin,Oo={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){var i,a=this,o=0;this.sequenceItems.forEach((function(s){o++;var c=a.sequenceItems.length-o+1;a.updateVal(s,"starty",e-c*Ao.boxMargin,Math.min),a.updateVal(s,"stopy",r+c*Ao.boxMargin,Math.max),a.updateVal(Oo.data,"startx",t-c*Ao.boxMargin,Math.min),a.updateVal(Oo.data,"stopx",n+c*Ao.boxMargin,Math.max),"activation"!==i&&(a.updateVal(s,"startx",t-c*Ao.boxMargin,Math.min),a.updateVal(s,"stopx",n+c*Ao.boxMargin,Math.max),a.updateVal(Oo.data,"starty",e-c*Ao.boxMargin,Math.min),a.updateVal(Oo.data,"stopy",r+c*Ao.boxMargin,Math.max))}))},insert:function(t,e,n,r){var i=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,r),s=Math.max(e,r);this.updateVal(Oo.data,"startx",i,Math.min),this.updateVal(Oo.data,"starty",o,Math.min),this.updateVal(Oo.data,"stopx",a,Math.max),this.updateVal(Oo.data,"stopy",s,Math.max),this.updateBounds(i,o,a,s)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},Do=Ao.sectionFills,No=Ao.sectionColours,Bo=function(t,e,n){for(var r="",i=n+(2*Ao.height+Ao.diagramMarginY),a=0,o="#CCC",s="black",c=0,u=0;u tspan {\n fill: ").concat(t.actorTextColor,";\n stroke: none;\n }\n\n .actor-line {\n stroke: ").concat(t.actorLineColor,";\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ").concat(t.signalColor,";\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ").concat(t.signalColor,";\n }\n\n #arrowhead path {\n fill: ").concat(t.signalColor,";\n stroke: ").concat(t.signalColor,";\n }\n\n .sequenceNumber {\n fill: ").concat(t.sequenceNumberColor,";\n }\n\n #sequencenumber {\n fill: ").concat(t.signalColor,";\n }\n\n #crosshead path {\n fill: ").concat(t.signalColor,";\n stroke: ").concat(t.signalColor,";\n }\n\n .messageText {\n fill: ").concat(t.signalTextColor,";\n stroke: ").concat(t.signalTextColor,";\n }\n\n .labelBox {\n stroke: ").concat(t.labelBoxBorderColor,";\n fill: ").concat(t.labelBoxBkgColor,";\n }\n\n .labelText, .labelText > tspan {\n fill: ").concat(t.labelTextColor,";\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ").concat(t.loopTextColor,";\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ").concat(t.labelBoxBorderColor,";\n fill: ").concat(t.labelBoxBorderColor,";\n }\n\n .note {\n //stroke: #decc93;\n stroke: ").concat(t.noteBorderColor,";\n fill: ").concat(t.noteBkgColor,";\n }\n\n .noteText, .noteText > tspan {\n fill: ").concat(t.noteTextColor,";\n stroke: none;\n }\n\n .activation0 {\n fill: ").concat(t.activationBkgColor,";\n stroke: ").concat(t.activationBorderColor,";\n }\n\n .activation1 {\n fill: ").concat(t.activationBkgColor,";\n stroke: ").concat(t.activationBorderColor,";\n }\n\n .activation2 {\n fill: ").concat(t.activationBkgColor,";\n stroke: ").concat(t.activationBorderColor,";\n }\n")},gantt:function(t){return'\n .mermaid-main-font {\n font-family: "trebuchet ms", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: '.concat(t.sectionBkgColor,";\n }\n\n .section2 {\n fill: ").concat(t.sectionBkgColor2,";\n }\n\n .section1,\n .section3 {\n fill: ").concat(t.altSectionBkgColor,";\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle1 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle2 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle3 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ").concat(t.gridColor,";\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ").concat(t.fontFamily,";\n fill: ").concat(t.textColor,";\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ").concat(t.todayLineColor,";\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n .taskText:not([font-size]) {\n font-size: 11px;\n }\n\n .taskTextOutsideRight {\n fill: ").concat(t.taskTextDarkColor,";\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ").concat(t.taskTextDarkColor,";\n text-anchor: end;\n font-size: 11px;\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ").concat(t.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ").concat(t.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ").concat(t.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ").concat(t.taskTextColor,";\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ").concat(t.taskBkgColor,";\n stroke: ").concat(t.taskBorderColor,";\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ").concat(t.taskTextOutsideColor,";\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ").concat(t.taskTextOutsideColor,";\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ").concat(t.activeTaskBkgColor,";\n stroke: ").concat(t.activeTaskBorderColor,";\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ").concat(t.doneTaskBorderColor,";\n fill: ").concat(t.doneTaskBkgColor,";\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ").concat(t.critBorderColor,";\n fill: ").concat(t.critBkgColor,";\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ").concat(t.critBorderColor,";\n fill: ").concat(t.activeTaskBkgColor,";\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ").concat(t.critBorderColor,";\n fill: ").concat(t.doneTaskBkgColor,";\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ").concat(t.textColor," ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n")},classDiagram:Po,"classDiagram-v2":Po,class:Po,stateDiagram:jo,state:jo,git:function(){return"\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n"},info:function(){return""},pie:function(t){return".pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: ".concat(t.taskTextDarkColor,";\n font-family: ").concat(t.fontFamily,";\n }\n .slice {\n font-family: ").concat(t.fontFamily,";\n fill: ").concat(t.textColor,";\n // fill: white;\n }\n .legend text {\n fill: ").concat(t.taskTextDarkColor,";\n font-family: ").concat(t.fontFamily,";\n font-size: 17px;\n }\n")},er:function(t){return"\n .entityBox {\n fill: ".concat(t.mainBkg,";\n stroke: ").concat(t.nodeBorder,";\n }\n\n .attributeBoxOdd {\n fill: #ffffff;\n stroke: ").concat(t.nodeBorder,";\n }\n\n .attributeBoxEven {\n fill: #f2f2f2;\n stroke: ").concat(t.nodeBorder,";\n }\n\n .relationshipLabelBox {\n fill: ").concat(t.tertiaryColor,";\n opacity: 0.7;\n background-color: ").concat(t.tertiaryColor,";\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ").concat(t.lineColor,";\n }\n")},journey:function(t){return".label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ".concat(t.textColor,";\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ").concat(t.textColor,"\n }\n\n .legend {\n fill: ").concat(t.textColor,";\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ").concat(t.textColor,"\n }\n\n .face {\n fill: #FFF8DC;\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ").concat(t.mainBkg,";\n stroke: ").concat(t.nodeBorder,";\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ").concat(t.arrowheadColor,";\n }\n\n .edgePath .path {\n stroke: ").concat(t.lineColor,";\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ").concat(t.lineColor,";\n fill: none;\n }\n\n .edgeLabel {\n background-color: ").concat(t.edgeLabelBackground,";\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ").concat(t.titleColor,";\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ").concat(t.tertiaryColor,";\n border: 1px solid ").concat(t.border2,";\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType0):"",";\n }\n .task-type-1, .section-type-1 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType1):"",";\n }\n .task-type-2, .section-type-2 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType2):"",";\n }\n .task-type-3, .section-type-3 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType3):"",";\n }\n .task-type-4, .section-type-4 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType4):"",";\n }\n .task-type-5, .section-type-5 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType5):"",";\n }\n .task-type-6, .section-type-6 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType6):"",";\n }\n .task-type-7, .section-type-7 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType7):"",";\n }\n")}},Yo=function(t,e,n){return" {\n font-family: ".concat(n.fontFamily,";\n font-size: ").concat(n.fontSize,";\n fill: ").concat(n.textColor,"\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ").concat(n.errorBkgColor,";\n }\n .error-text {\n fill: ").concat(n.errorTextColor,";\n stroke: ").concat(n.errorTextColor,";\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ").concat(n.lineColor,";\n }\n .marker.cross {\n stroke: ").concat(n.lineColor,";\n }\n\n svg {\n font-family: ").concat(n.fontFamily,";\n font-size: ").concat(n.fontSize,";\n }\n\n ").concat(Ro[t](n),"\n\n ").concat(e,"\n\n ").concat(t," { fill: apa;}\n")};function zo(t){return(zo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Uo={},$o=function(t,e,n){switch(c.debug("Directive type=".concat(e.type," with args:"),e.args),e.type){case"init":case"initialize":["config"].forEach((function(t){void 0!==e.args[t]&&("flowchart-v2"===n&&(n="flowchart"),e.args[n]=e.args[t],delete e.args[t])})),e.args,wt(e.args);break;case"wrap":case"nowrap":t&&t.setWrap&&t.setWrap("wrap"===e.type);break;default:c.warn("Unhandled directive: source: '%%{".concat(e.type,": ").concat(JSON.stringify(e.args?e.args:{}),"}%%"),e)}};function Wo(t){ka(t.git),me(t.flowchart),Ln(t.flowchart),void 0!==t.sequenceDiagram&&_r.setConf(I(t.sequence,t.sequenceDiagram)),_r.setConf(t.sequence),ri(t.gantt),li(t.class),zi(t.state),qi(t.state),Oa(t.class),za(t.class),ro(t.er),Lo(t.journey),Ba(t.class)}function Ho(){}var Vo=Object.freeze({render:function(t,e,n,r){Et();var i=e,a=H.detectInit(i);a&&wt(a);var o=_t();if(e.length>o.maxTextSize&&(i="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa"),void 0!==r)r.innerHTML="",Object(d.select)(r).append("div").attr("id","d"+t).attr("style","font-family: "+o.fontFamily).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g");else{var s=document.getElementById(t);s&&s.remove();var u=document.querySelector("#d"+t);u&&u.remove(),Object(d.select)("body").append("div").attr("id","d"+t).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g")}window.txt=i,i=function(t){var e=t;return e=(e=(e=e.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)}))).replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)}))).replace(/#\w+;/g,(function(t){var e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"fl°°"+e+"¶ß":"fl°"+e+"¶ß"}))}(i);var l=Object(d.select)("#d"+t).node(),h=H.detectType(i),g=l.firstChild,y=g.firstChild,v="";if(void 0!==o.themeCSS&&(v+="\n".concat(o.themeCSS)),void 0!==o.fontFamily&&(v+="\n:root { --mermaid-font-family: ".concat(o.fontFamily,"}")),void 0!==o.altFontFamily&&(v+="\n:root { --mermaid-alt-font-family: ".concat(o.altFontFamily,"}")),"flowchart"===h||"flowchart-v2"===h||"graph"===h){var m=be(i);for(var b in m)v+="\n.".concat(b," > * { ").concat(m[b].styles.join(" !important; ")," !important; }"),m[b].textStyles&&(v+="\n.".concat(b," tspan { ").concat(m[b].textStyles.join(" !important; ")," !important; }"))}var x=(new f.a)("#".concat(t),Yo(h,v,o.themeVariables)),_=document.createElement("style");_.innerHTML=x,g.insertBefore(_,y);try{switch(h){case"git":o.flowchart.arrowMarkerAbsolute=o.arrowMarkerAbsolute,ka(o.git),wa(i,t,!1);break;case"flowchart":o.flowchart.arrowMarkerAbsolute=o.arrowMarkerAbsolute,me(o.flowchart),xe(i,t,!1);break;case"flowchart-v2":o.flowchart.arrowMarkerAbsolute=o.arrowMarkerAbsolute,Ln(o.flowchart),Fn(i,t,!1);break;case"sequence":o.sequence.arrowMarkerAbsolute=o.arrowMarkerAbsolute,o.sequenceDiagram?(_r.setConf(Object.assign(o.sequence,o.sequenceDiagram)),console.error("`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.")):_r.setConf(o.sequence),_r.draw(i,t);break;case"gantt":o.gantt.arrowMarkerAbsolute=o.arrowMarkerAbsolute,ri(o.gantt),ii(i,t);break;case"class":o.class.arrowMarkerAbsolute=o.arrowMarkerAbsolute,li(o.class),hi(i,t);break;case"classDiagram":o.class.arrowMarkerAbsolute=o.arrowMarkerAbsolute,di(o.class),pi(i,t);break;case"state":o.class.arrowMarkerAbsolute=o.arrowMarkerAbsolute,zi(o.state),Ui(i,t);break;case"stateDiagram":o.class.arrowMarkerAbsolute=o.arrowMarkerAbsolute,qi(o.state),Xi(i,t);break;case"info":o.class.arrowMarkerAbsolute=o.arrowMarkerAbsolute,Oa(o.class),Da(i,t,p.version);break;case"pie":o.class.arrowMarkerAbsolute=o.arrowMarkerAbsolute,za(o.pie),Ua(i,t,p.version);break;case"er":ro(o.er),io(i,t,p.version);break;case"journey":Lo(o.journey),Fo(i,t,p.version)}}catch(e){throw La(t,p.version),e}Object(d.select)('[id="'.concat(t,'"]')).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");var k=Object(d.select)("#d"+t).node().innerHTML;if(c.debug("cnf.arrowMarkerAbsolute",o.arrowMarkerAbsolute),o.arrowMarkerAbsolute&&"false"!==o.arrowMarkerAbsolute||(k=k.replace(/marker-end="url\(.*?#/g,'marker-end="url(#',"g")),k=function(t){var e=t;return e=(e=(e=e.replace(/fl°°/g,(function(){return"&#"}))).replace(/fl°/g,(function(){return"&"}))).replace(/¶ß/g,(function(){return";"}))}(k),void 0!==n)switch(h){case"flowchart":case"flowchart-v2":n(k,Xt.bindFunctions);break;case"gantt":n(k,Qr.bindFunctions);break;case"class":case"classDiagram":n(k,cn.bindFunctions);break;default:n(k)}else c.debug("CB = undefined!");var w=Object(d.select)("#d"+t).node();return null!==w&&"function"==typeof w.remove&&Object(d.select)("#d"+t).node().remove(),k},parse:function(t){var e=H.detectInit(t);e&&c.debug("reinit ",e);var n,r=H.detectType(t);switch(c.debug("Type "+r),r){case"git":(n=ha.a).parser.yy=ua;break;case"flowchart":case"flowchart-v2":Xt.clear(),(n=Jt.a).parser.yy=Xt;break;case"sequence":(n=Hn.a).parser.yy=sr;break;case"gantt":(n=wr.a).parser.yy=Qr;break;case"class":case"classDiagram":(n=oi.a).parser.yy=cn;break;case"state":case"stateDiagram":(n=Di.a).parser.yy=Mi;break;case"info":c.debug("info info info"),(n=Sa.a).parser.yy=Ca;break;case"pie":c.debug("pie"),(n=Ra.a).parser.yy=Ia;break;case"er":c.debug("er"),(n=Xa.a).parser.yy=Ga;break;case"journey":c.debug("Journey"),(n=oo.a).parser.yy=go}return n.parser.yy.graphType=r,n.parser.yy.parseError=function(t,e){throw{str:t,hash:e}},n.parse(t),n},parseDirective:function(t,e,n,r){try{if(void 0!==e)switch(e=e.trim(),n){case"open_directive":Uo={};break;case"type_directive":Uo.type=e.toLowerCase();break;case"arg_directive":Uo.args=JSON.parse(e);break;case"close_directive":$o(t,Uo,r),Uo=null}}catch(t){c.error("Error while rendering sequenceDiagram directive: ".concat(e," jison context: ").concat(n)),c.error(t.message)}},initialize:function(t){t&&t.fontFamily&&(t.themeVariables&&t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily})),dt=I({},t),t&&t.theme&&ht[t.theme]?t.themeVariables=ht[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=ht.default.getThemeVariables(t.themeVariables));var e="object"===zo(t)?function(t){return yt=I({},gt),yt=I(yt,t),t.theme&&(yt.themeVariables=ht[t.theme].getThemeVariables(t.themeVariables)),mt=bt(yt,vt),yt}(t):xt();Wo(e),u(e.logLevel)},reinitialize:Ho,getConfig:_t,setConfig:function(t){return I(mt,t),_t()},getSiteConfig:xt,updateSiteConfig:function(t){return yt=I(yt,t),bt(yt,vt),yt},reset:function(){Et()},globalReset:function(){Et(),Wo(_t())},defaultConfig:gt});u(_t().logLevel),Et(_t());var Go=Vo,qo=function(){Xo.startOnLoad?Go.getConfig().startOnLoad&&Xo.init():void 0===Xo.startOnLoad&&(c.debug("In start, no config"),Go.getConfig().startOnLoad&&Xo.init())};"undefined"!=typeof document&& +/*! + * Wait for document loaded before starting the execution + */ +window.addEventListener("load",(function(){qo()}),!1);var Xo={startOnLoad:!0,htmlLabels:!0,mermaidAPI:Go,parse:Go.parse,render:Go.render,init:function(){var t,e,n=this,r=Go.getConfig();arguments.length>=2?( +/*! sequence config was passed as #1 */ +void 0!==arguments[0]&&(Xo.sequenceConfig=arguments[0]),t=arguments[1]):t=arguments[0],"function"==typeof arguments[arguments.length-1]?(e=arguments[arguments.length-1],c.debug("Callback function found")):void 0!==r.mermaid&&("function"==typeof r.mermaid.callback?(e=r.mermaid.callback,c.debug("Callback function found")):c.debug("No Callback function found")),t=void 0===t?document.querySelectorAll(".mermaid"):"string"==typeof t?document.querySelectorAll(t):t instanceof window.Node?[t]:t,c.debug("Start On Load before: "+Xo.startOnLoad),void 0!==Xo.startOnLoad&&(c.debug("Start On Load inner: "+Xo.startOnLoad),Go.updateSiteConfig({startOnLoad:Xo.startOnLoad})),void 0!==Xo.ganttConfig&&Go.updateSiteConfig({gantt:Xo.ganttConfig});for(var a,o=H.initIdGeneratior(r.deterministicIds,r.deterministicIDSeed).next,s=function(r){var s=t[r]; +/*! Check if previously processed */if(s.getAttribute("data-processed"))return"continue";s.setAttribute("data-processed",!0);var u="mermaid-".concat(o());a=i(a=s.innerHTML).trim().replace(//gi,"
");var l=H.detectInit(a);l&&c.debug("Detected early reinit: ",l);try{Go.render(u,a,(function(t,n){s.innerHTML=t,void 0!==e&&e(u),n&&n(s)}),s)}catch(t){c.warn("Syntax Error rendering"),c.warn(t),n.parseError&&n.parseError(t)}},u=0;uB; +A-->C; +B-->D; +C-->D; +``` \ No newline at end of file From bff03b423d27da8a57b274e25f36c91f88135016 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 6 Apr 2021 05:29:48 -0400 Subject: [PATCH 030/347] install mdbook-mermaid latest release --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 47d51ecf..fd5d7071 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,6 +16,8 @@ jobs: run: | tag=$(curl -LsSf https://api.github.com/repos/rust-lang/mdBook/releases/latest | jq -r '.tag_name') curl -LsSf https://github.com/rust-lang/mdBook/releases/download/$tag/mdbook-$tag-x86_64-unknown-linux-gnu.tar.gz | tar xzf - + tag=$(curl -LsSf https://api.github.com/repos/badboy/mdbook-mermaid/releases/latest | jq -r '.tag_name') + curl -LsSf https://github.com/badboy/mdbook-mermaid/releases/download/$tag/mdbook-mermaid-$tag-x86_64-unknown-linux-gnu.tar.gz | tar xzf - echo $(pwd) >> $GITHUB_PATH - run: mdbook build && mdbook test - uses: rust-lang/simpleinfra/github-actions/static-websites@master From ae33c65526ddaaba55460ebc96af7df5ae08f080 Mon Sep 17 00:00:00 2001 From: Yilin Chen Date: Tue, 6 Apr 2021 19:38:27 +0800 Subject: [PATCH 031/347] Change the format in the FAQ section --- src/vision/status_quo/barbara_builds_an_async_executor.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vision/status_quo/barbara_builds_an_async_executor.md b/src/vision/status_quo/barbara_builds_an_async_executor.md index 51e1d1f1..bf74991c 100644 --- a/src/vision/status_quo/barbara_builds_an_async_executor.md +++ b/src/vision/status_quo/barbara_builds_an_async_executor.md @@ -140,15 +140,15 @@ Barbara finished her initial implementation of the async executor. Despite there *Here are some standard FAQ to get you started. Feel free to add more!* -* **What are the morals of the story?** +### **What are the morals of the story?** * It is difficult to customize any of the current async executors (to my knowledge). To have any bit of special requirement forces building an async executor from scratch. * It is also not easy to build an async executor. It needs quite some exploration and is error-prone. [`async-task`](https://github.com/smol-rs/async-task) is a good attempt to simplify the process but it could not satisfy all kinds of needs of customizing the executor (it does not give you the chance to extend the task itself). -* **What are the sources for this story?** +### **What are the sources for this story?** * The story was from my own experience about writing a new thread pool supporting futures: https://github.com/tikv/yatp. * People may feel strange about why we want to set priorities for tasks. Currently, the futures in the thread pool are like user-space threads. They are mostly CPU intensive. But I think people doing async I/O may have the same problem. -* **Why did you choose Barbara to tell this story?** +### **Why did you choose Barbara to tell this story?** * At the time of the story, I had written Rust for years but I was new to the concepts for async/await like `Pin` and `Waker`. -* **How would this story have played out differently for the other characters?** +### **How would this story have played out differently for the other characters?** * People with less experience in Rust may be less likely to build their own executor. If they try, I think the story is probably similar. [character]: ../characters.md From ca9b84083ba4877423576324e623f37311622490 Mon Sep 17 00:00:00 2001 From: Yilin Chen Date: Tue, 6 Apr 2021 19:42:10 +0800 Subject: [PATCH 032/347] Some clarification --- src/vision/status_quo/barbara_builds_an_async_executor.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_builds_an_async_executor.md b/src/vision/status_quo/barbara_builds_an_async_executor.md index bf74991c..bcd828ef 100644 --- a/src/vision/status_quo/barbara_builds_an_async_executor.md +++ b/src/vision/status_quo/barbara_builds_an_async_executor.md @@ -32,7 +32,9 @@ pub fn poll_task(task: Task) { } ``` -"How to create a waker?" Barbara asked herself. Quickly, she found the `Wake` trait. After reading the documentation, she realized the task in the scheduler should be stored in an `Arc`. And to implement `Wake`, the `Task` should also contain the sender of the scheduler. She changed the code to something like this: +"How to create a waker?" Barbara asked herself. Quickly, she found the `Wake` trait. Seeing the `wake` method takes an `Arc`, she realized the task in the scheduler should be stored in an `Arc`. She thinks it makes sense because both the deque in the scheduler and the waker may hold a reference to the task. + +To implement `Wake`, the `Task` should contain the sender of the scheduler. She changed the code to something like this: ```rust pub struct Task { From 5614eaf1794854e35fa435dd8adc9cf684abf26c Mon Sep 17 00:00:00 2001 From: Yilin Chen Date: Tue, 6 Apr 2021 19:47:07 +0800 Subject: [PATCH 033/347] Update barbara_builds_an_async_executor.md --- src/vision/status_quo/barbara_builds_an_async_executor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_builds_an_async_executor.md b/src/vision/status_quo/barbara_builds_an_async_executor.md index bcd828ef..22799b6c 100644 --- a/src/vision/status_quo/barbara_builds_an_async_executor.md +++ b/src/vision/status_quo/barbara_builds_an_async_executor.md @@ -32,7 +32,7 @@ pub fn poll_task(task: Task) { } ``` -"How to create a waker?" Barbara asked herself. Quickly, she found the `Wake` trait. Seeing the `wake` method takes an `Arc`, she realized the task in the scheduler should be stored in an `Arc`. She thinks it makes sense because both the deque in the scheduler and the waker may hold a reference to the task. +"How to create a waker?" Barbara asked herself. Quickly, she found the `Wake` trait. Seeing the `wake` method takes an `Arc`, she realized the task in the scheduler should be stored in an `Arc`. After some thought, she thinks it makes sense because both the deque in the scheduler and the waker may hold a reference to the task. To implement `Wake`, the `Task` should contain the sender of the scheduler. She changed the code to something like this: From 0afad9282ec9f65d59663cb61a08e860b2a31e99 Mon Sep 17 00:00:00 2001 From: Yilin Chen Date: Tue, 6 Apr 2021 20:01:15 +0800 Subject: [PATCH 034/347] Add some comments to the code --- src/vision/status_quo/barbara_builds_an_async_executor.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_builds_an_async_executor.md b/src/vision/status_quo/barbara_builds_an_async_executor.md index 22799b6c..64dbb8d2 100644 --- a/src/vision/status_quo/barbara_builds_an_async_executor.md +++ b/src/vision/status_quo/barbara_builds_an_async_executor.md @@ -82,7 +82,7 @@ pub fn poll_task(task: Arc) { Luckily, a colleague of Barbara noticed something wrong. The `wake` method could be called multiple times so multiple copies of the task could exist in the scheduler. The scheduler might not work correctly because of it and a more severe problem was that multiple threads might get copies of the same task from the scheduler and cause a race in polling the future. -Barbara soon got a idea to solve it. She added a state field to the `Task`. By carefully maintaining the state of the task, she could guarantee there are no duplicate tasks in the scheduler and no race can happen when polling the future: +Barbara soon got a idea to solve it. She added a state field to the `Task`. By carefully maintaining the state of the task, she could guarantee there are no duplicate tasks in the scheduler and no race can happen when polling the future. ```rust const NOTIFIED: u64 = 1; @@ -100,6 +100,8 @@ impl Wake for Task { let mut state = self.state.load(Relaxed); loop { match state { + // To prevent a task from appearing in the scheduler twice, only send the task + // to the scheduler if the task is not notified nor being polling. IDLE => match self .state .compare_exchange_weak(IDLE, NOTIFIED, AcqRel, Acquire) @@ -119,10 +121,13 @@ impl Wake for Task { } } } + pub fn poll_task(task: Arc) { let waker = Waker::from(task.clone()); let mut cx = Context::from_waker(&waker); loop { + // We needn't read the task state here because the waker prevents the task from + // appearing in the scheduler twice. The state must be NOTIFIED now. task.state.store(POLLING, Release); if let Poll::Ready(()) = unsafe { Pin::new_unchecked(&mut *task.future).poll(&mut cx) } { task.state.store(COMPLETED, Release); From 2365935c462779ba973e7925264ab5ec4de8b308 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 6 Apr 2021 15:22:27 +0200 Subject: [PATCH 035/347] PR feedback --- .../status_quo/barbara_anguishes_over_http.md | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/vision/status_quo/barbara_anguishes_over_http.md b/src/vision/status_quo/barbara_anguishes_over_http.md index 382e59d6..fc6173a4 100644 --- a/src/vision/status_quo/barbara_anguishes_over_http.md +++ b/src/vision/status_quo/barbara_anguishes_over_http.md @@ -12,17 +12,17 @@ Barbara is starting a new project, working together with Alan. They want to writ As they are pair programming, they get the part of the library where HTTP will be involved and Alan asks Barbara, "OK, how do I make an HTTP request?". -As an experienced async Rust developer Barbara has been dreading this question from the start of the project. She's tempted to ask "How long do you have?", but she quickly gathers herself and sstarts to outline the various considerations. She starts with a relatively simple question: "Should we use an HTTP library with a sync interface or an async interface?". +As an experienced async Rust developer Barbara has been dreading this question from the start of the project. She's tempted to ask "How long do you have?", but she quickly gathers herself and starts to outline the various considerations. She starts with a relatively simple question: "Should we use an HTTP library with a sync interface or an async interface?". -Alan, somewhat confused by the question since this isn't a concern in the languages he's used to, replies with his own question: "I don't know, what do you think?". Barbara thinks for a second. She knows that bridging sync and async can be difficult, and so there's another question they need to answer first: "Well, are we going to expose a sync or an async interface to the users of our library?". +Alan, who comes from a JavaScript background, remembers the transition from callbacks to async/await in that language. He assumes Rust is merely making its transition to async/await, and it will eventually be the always preferred choice. He hesitates and asks Barbara: "Isn't async/await always better?". Barbara, who can think of many scenarios where a blocking, sync interface would likely be better, weighs whether going done the rabbit-hole of async vs sync is the right way to spend their time. She decides instead to try to directly get at the question of whether they should use async for this particular project. She knows that bridging sync and async can be difficult, and so there's another question they need to answer first: "Are we going to expose a sync or an async interface to the users of our library?". -Alan, now feeling completely out of his element, replies as confident as he can: "Everybody wants to use async these days. Let's do that.". He braces for Barbara's answer as he's not even sure what he said is actually true. +Alan, still confused about when using a sync interface is the right choice, replies as confident as he can: "Everybody wants to use async these days. Let's do that!". He braces for Barbara's answer as he's not even sure what he said is actually true. -Barbara replies, "If we expose async API then we need to decide which async HTTP implementation we we will use". As she finishes saying this, Barbara feels slightly uneasy. She knows that it is possible to use a sync HTTP library and expose it through an async API, but she fears totally confusing Alan and so decides to not mention this fact. +Barbara replies, "If we expose an async API then we need to decide which async HTTP implementation we will use". As she finishes saying this, Barbara feels slightly uneasy. She knows that it is possible to use a sync HTTP library and expose it through an async API, but she fears totally confusing Alan and so decides to not mention this fact. Barbara looks over at Alan and sees a blank stare on his face. She repeats the question: "So, which async HTTP implementation should we use?". Alan responds with the only thing that comes to his mind: "which one is the best?" to which Barbara responds "Well, it depends on which async runtime you're using". -* Alan, feeling utterly dejected and hoping that the considerations will soon end tries a new route out of this conversation: "Can we allow the user of the library to decide?". +Alan, feeling utterly dejected and hoping that the considerations will soon end tries a new route out of this conversation: "Can we allow the user of the library to decide?". Barbara thinks to herself, "Oh boy, we could provide a trait that abstracts over the HTTP request and response and allow the user to provide the implementation for whatever HTTP library they want... BUT, if we ever need any additional functionality that an async runtime needs to expose - like async locks or async timers - we might be forced to pick an actual runtime implementation on behalf of the user... Perhaps, we can put the most popular runtime implementations behind feature flags and let the user chose that way... BUT what if we want to allow plugging in of different runtimes?" @@ -30,14 +30,16 @@ Alan, having watched Barbara stare off into the distance for what felt like a ha ## 🤔 Frequently Asked Questions -* **What are the morals of the story?** +### **What are the morals of the story?** * What is a very mundane and simple decision in many other languages, picking an HTTP library, requires users to contemplate *many* different considerations. * There is no practical way to choose an HTTP library that will serve most of the ecosystem. Sync/Async, competing runtimes, etc. - someone will always be left out. * HTTP is a small implementation detail of this library, but it is a HUGE decision that will ultimately be the biggest factor in who can adopt their library. -* **What are the sources for this story?** - * Based on the author's personal experience of taking newcomers to Rust through the decision making process of picking an HTTP implementation for a library. -* **Why did you choose [Barbara][] to tell this story?** - * Barbara knows all the considerations and their consequences. A less experienced Rust developer might just make a choice even if that choice isn't the right one for them. + +### **What are the sources for this story?** +Based on the author's personal experience of taking newcomers to Rust through the decision making process of picking an HTTP implementation for a library. + +### **Why did you choose [Barbara][] to tell this story?** +Barbara knows all the considerations and their consequences. A less experienced Rust developer might just make a choice even if that choice isn't the right one for them. [Alan]: ../characters/alan.md [Grace]: ../characters/grace.md From f1a29fef2d2adee1b3d5a04fa05ada08b0780e62 Mon Sep 17 00:00:00 2001 From: Juan Jimenez-Anca Date: Tue, 6 Apr 2021 15:47:47 +0100 Subject: [PATCH 036/347] add story for picking a web server --- .../status_quo/alan_picks_web_server.md | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/vision/status_quo/alan_picks_web_server.md diff --git a/src/vision/status_quo/alan_picks_web_server.md b/src/vision/status_quo/alan_picks_web_server.md new file mode 100644 index 00000000..9311685a --- /dev/null +++ b/src/vision/status_quo/alan_picks_web_server.md @@ -0,0 +1,72 @@ +# 😱 Status quo stories: Alan wants to migrate a web server to Rust + + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +## The story + +### Is Rust ready for the web? + +Alan has been following the [arewewebyet site](https://www.arewewebyet.org/) for quite some time. He is a Typescript full-stack developer and follows the project in order to know when it would be sensible to migrate the backend of a web application he's responsible for. Alan loves Rust and has used it for some tasks that didn't quite need async routines. Since `arewewebyet` is [an official Rust language project](https://github.com/rust-lang/arewewebyet), he trusts their reviews of several web frameworks, tools, libraries, etc. + +Alan was thrilled during the 2020 Xmas holiday. It turns out that at that time [Rust was declared to be web ready](https://github.com/rust-lang/arewewebyet/pull/309)! Alan takes this is a sign that not only is Rust great for web servers, but also a confirmation that async features have matured and stabilised. For, how can a language be web ready and not fully support asynchronous tasks? + +Alan's point of reference are the Golang and Javascript languages. They were both created for web servers and clients. They also support async/await natively. At the same time, Alan is not aware of the complexities that these languages are "hiding" from him. + + +### Picking a web server is ok +Golang native http server is nice but, as a Typescript developer, Alan is also used to dealing with "Javascript fatigue". Javascript developers often use this term to refer to a fast-pace framework ecosystem, where every so often there is the "new" thing everybody else is migrating to. Similarly, Javascript engineers are used to having to pick from a myriad of options within the vast npm ecosystem. And so, the lack of a web sever in Rust's standard library didn't surprise him. The amount of options didn't overwhelm him either. + +The [arewewebyet site](https://www.arewewebyet.org/) mentions four good web servers. Alan picks Tide because the interfaces and the emphasis on middleware reminds him of Nodejs' Express framework. + + +### The first endpoint +Alan sets up all the boilerplate and is ready to write the first endpoint. He picks `PUT /support-ticket` because it barely has any logic in it. When a request arrives, the handler only makes a request to Zendesk to create a support ticket. The handler is stateless and has no middleware. + +The [arewewebyet site](https://www.arewewebyet.org/) doesn't recommend a specific http client, so Alan searches for one in crates.io. He picks reqwest simply because it's the most popular. + +Alan combines the knowledge he has from programming in synchronous Rust and asynchronous Javascript to come up with a few lines that should work. If the compiler is happy, then so is he! + +### First problem: incompatible runtimes + +The first problem he runs into is very similar to the one described in [the compiler trust story](https://github.com/rust-lang/wg-async-foundations/blob/master/src/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md#fractured-futures-fractured-trust). + +In short, Alan has problems because Tide is based on `std-async` and reqwest on the latest version of `tokio`. This is a real pain for Alan as he has now to change either the http client or the server so that they use the same runtime. + +He decides to switch to Actix web. + +### Second problem: incompatible versions of the same runtime + +Alan does all the changes and again the compiler seems to be happy. To his surprise, the same problem happens again. The program panics with the message `there is no reactor running, must be called from the context of a Tokio 1.x runtime`. He is utterly puzzled as Actix web is based on Tokio just like reqwest. + +It turns out that the issue is that Alan's using v0.11.2 of reqwest, which uses tokio v1, and v3.3.2 of actix-web, which uses tokio v0.3. + +The solution to this problem is then to dig into all the versions of `reqwest` until he finds one which uses the same version of tokio. + +### Can Alan sell the Rust migration to his boss? + +This experience has made Alan think twice about whether Rust is indeed web ready. On the one hand, there are very good libraries for web servers, ORMs, parsers, session management, etc. On the other, Alan is fearful that in 2/3/6 months time he has to develop new features with libraries that already exist but turn out to be incompatible with the runtime chosen at the beginning of the project. + +## 🤔 Frequently Asked Questions + +### **What are the morals of the story?** +* Rust's ecosystem is ready for the web. There are a ton of brilliant libraries and frameworks out there. But web developers that are new to Rust may struggle with the idea that before picking a web server, they have to pick an async runtime. +* In a typical web server project, dependencies that use async features form an intricate web which is hard to decipher for both new and seasoned Rust developers. Alan picked Tide and reqwest, only to realise later that they are not compatible. How many more situations like this will he face? Can Alan be confident that it won't happen again? +* The situation is so complex that it's not enough knowing that all dependencies use the same runtime. They all have to actually be compatible with the same runtime **and** version. Newer versions of reqwest are incompatible with the latest stable version of actix web (verified at the time of writing) +* Developers that need a stable environment may be fearful of the complexity that comes with managing async dependencies in Rust. For example, if reqwest had a security or bug fix in one of the latest versions that's not backported to older ones, Alan would not be able to upgrade because actix web is holding him back. He has in fact to wait until **ALL** dependencies are using the same runtime to apply fixes and upgrades. + +### **What are the sources for this story?** +Personal experience of the author. + +### **Why did you choose Alan to tell this story?** +As a web developer in GC languages, Alan writes async code every day. A language without stable async features is not an option. + +### **How would this story have played out differently for the other characters?** +Learning what async means and what it entails in a codebase is usually hard enough. Niklaus would struggle to learn all that while at the same time dealing with the many gotchas that can happen when building a project with a lot of dependencies. + +Barbara may be more tolerant with the setup since she probably knows the rationale behind keeping Rust's standard library lean and the need for external async runtimes. + +### **How would this story have played out differently if Alan came from another GC'd language?** +Like the trust story, it would be very close, since all other languages (that I know of) provide async runtimes out of the box and it's not something the programmer needs to concern themselves with. From 5cf8e8a452dbace6cf304bab2076752e92d3e3c4 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 6 Apr 2021 16:05:43 -0400 Subject: [PATCH 037/347] Apply suggestions from code review Co-authored-by: Ryan Levick --- .../status_quo/barbara_builds_an_async_executor.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/vision/status_quo/barbara_builds_an_async_executor.md b/src/vision/status_quo/barbara_builds_an_async_executor.md index 64dbb8d2..3bc256a8 100644 --- a/src/vision/status_quo/barbara_builds_an_async_executor.md +++ b/src/vision/status_quo/barbara_builds_an_async_executor.md @@ -9,9 +9,9 @@ This is a draft "status quo" story submitted as part of the brainstorming period Barbara wants to set priorities to the tasks spawned to the executor. However, she finds no existing async executor provides such a feature so she decided to build her own async executor. -First, Barbara found [crossbeam-deque](https://crates.io/crates/crossbeam-deque) provides work-stealing deques of good quality. She could use it to build task schedulers. It is not the main part of the story. Each working thread can get a task from the scheduler and poll it in loop. +First, Barbara found [crossbeam-deque](https://crates.io/crates/crossbeam-deque) provides work-stealing deques of good quality. She decides to use it to build task schedulers. It is not the main part of the story. She plans for each working thread to have a loop which repeatedly gets a task from the deque and polls it. -But wait, what is a "task"? +But wait, what should we put into those queues to represent each "task"? At first, Barbara thought it must contain the `Future` itself and the additional priority which was used by the scheduler. So she first wrote: @@ -32,7 +32,7 @@ pub fn poll_task(task: Task) { } ``` -"How to create a waker?" Barbara asked herself. Quickly, she found the `Wake` trait. Seeing the `wake` method takes an `Arc`, she realized the task in the scheduler should be stored in an `Arc`. After some thought, she thinks it makes sense because both the deque in the scheduler and the waker may hold a reference to the task. +"How do I create a waker?" Barbara asked herself. Quickly, she found the `Wake` trait. Seeing the `wake` method takes an `Arc`, she realized the task in the scheduler should be stored in an `Arc`. After some thought, she realizes it makes sense because both the deque in the scheduler and the waker may hold a reference to the task. To implement `Wake`, the `Task` should contain the sender of the scheduler. She changed the code to something like this: @@ -61,7 +61,7 @@ pub fn poll_task(task: Arc) { The code still needed some change because the `future` in the `Arc` became immutable. -"Okay. I can guarantee `Task` is created from a `Pin>` and I think the same future will not be polled concurrently in two threads. So let me bypass the safety checks." Barbara confidently used some `unsafe` blocks to make it compile. +"Okay. I can guarantee `Task` is created from a `Pin>`, and I think the same future won't be polled concurrently in two threads. So let me bypass the safety checks." Barbara changed the future to a raw pointer and confidently used some `unsafe` blocks to make it compile. ```rust pub struct Task { @@ -80,7 +80,7 @@ pub fn poll_task(task: Arc) { } ``` -Luckily, a colleague of Barbara noticed something wrong. The `wake` method could be called multiple times so multiple copies of the task could exist in the scheduler. The scheduler might not work correctly because of it and a more severe problem was that multiple threads might get copies of the same task from the scheduler and cause a race in polling the future. +Luckily, a colleague of Barbara noticed something wrong. The `wake` method could be called multiple times so multiple copies of the task could exist in the scheduler. The scheduler might not work correctly because of this. What's worse, a more severe problem was that multiple threads might get copies of the same task from the scheduler and cause a race in polling the future. Barbara soon got a idea to solve it. She added a state field to the `Task`. By carefully maintaining the state of the task, she could guarantee there are no duplicate tasks in the scheduler and no race can happen when polling the future. From cfe75b41aad2817f41ce3cd548558d1fb93c49ab Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 6 Apr 2021 16:07:01 -0400 Subject: [PATCH 038/347] Update src/vision/status_quo/barbara_builds_an_async_executor.md --- src/vision/status_quo/barbara_builds_an_async_executor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_builds_an_async_executor.md b/src/vision/status_quo/barbara_builds_an_async_executor.md index 3bc256a8..08dbe31b 100644 --- a/src/vision/status_quo/barbara_builds_an_async_executor.md +++ b/src/vision/status_quo/barbara_builds_an_async_executor.md @@ -9,7 +9,7 @@ This is a draft "status quo" story submitted as part of the brainstorming period Barbara wants to set priorities to the tasks spawned to the executor. However, she finds no existing async executor provides such a feature so she decided to build her own async executor. -First, Barbara found [crossbeam-deque](https://crates.io/crates/crossbeam-deque) provides work-stealing deques of good quality. She decides to use it to build task schedulers. It is not the main part of the story. She plans for each working thread to have a loop which repeatedly gets a task from the deque and polls it. +First, Barbara found [crossbeam-deque](https://crates.io/crates/crossbeam-deque) provides work-stealing deques of good quality. She decides to use it to build task schedulers. She plans for each working thread to have a loop which repeatedly gets a task from the deque and polls it. But wait, what should we put into those queues to represent each "task"? From a3d2eb56236f742fd7d755c751306b5cd1ef1aeb Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Tue, 6 Apr 2021 22:24:18 -0400 Subject: [PATCH 039/347] first draft of Alan Iteratively Regresses. --- .../status_quo/alan_iteratively_regresses.md | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/vision/status_quo/alan_iteratively_regresses.md diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md new file mode 100644 index 00000000..70df32da --- /dev/null +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -0,0 +1,90 @@ +# 😱 Status quo stories: Alan iteratively regresses performance + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +A core part of DistriData, called DDSplit, is in charge of splitting input data records into fragments that are stored on distinct servers, and then reassembling those fragments back into records in response to user queries. + +DDSplit was originally implemented using Java code (plus some C, interfaced via JNI). Alan thinks that Rust could provide the same quality of service while requiring less memory, and decides to try reimplementing DDSplit in Rust. + +Alan develops a prototype atop tokio and the [async-trait crate][], leveraging `#[async_trait]`to be able to define `async fn` methods within traits. When Alan finishes the prototype code, he finds the prototype performance has 20% slower throughput compared to the Java version. + +[async-trait crate]: https://crates.io/crates/async-trait +[async-trait transform]: https://crates.io/crates/async-trait#explanation + +Alan is disappointed; his experience has been that Rust code performs great, once you managed to get the code to be accepted by the compiler. Alan was not expecting to suffer a 20% performance hit over the Java code. + +The DDSplit service is being developed on a Linux machine, so Alan is able use the `perf` tool to gather sampling-based profiling data the async/await port of DDSplit. + +Looking at a [flamegraph][] for the call stacks, Alan identified many calls into the memory allocator, and many calls to `memcpy`. + +[flamegraph]: https://crates.io/crates/flamegraph + +Alan reaches out to Barbara, as the local Rust expert, for help on how identify where the performance pitfalls are coming from. + +Alan asks Barbara whether the problem could be caused by the tokio executor. Barbara says it is hard to know that without more instrumentation. She explains it *could* be that the program is overloading tokio's task scheduler (for example), but it also could be that the application code itself has expensive operations, such as lots of small I/O operations rather than using a buffer. + +Alan and Barbara look at the `perf` data. They find the output of `perf report` difficult to navigate and interpret. The data has stack trace fragments available, which gives them a few hints to follow up on. But when they try to make `perf report` annotate the original source, `perf` only shows disassembled machine code, not the original Rust source code. Alan and Barbara both agree that trying to dissect the problem from the machine code is not an attractive strategy. + +For the memory allocator issues, Barbara recommnds that Alan try to eliminate the allocation calls and if they cannot be eliminated, then that Alan try tuning the parameters for the global memory allocator, or even switching which global memory allocator he is using. Alan looks at Barbara in despair: his time tweaking GC settings on the Java Virtual Machine taught him that allocator tuning is often a black art. + +Barbara suggests that they investigate where the calls to `memcpy` are arising. From the call stacks in `perf report`, Alan and Barbara decide to skim over the source code files for the corresponding functions. + +Upon seeing `#[async_trait]` in Alan's source code, Barbara recommends that if performance is a concern, then Alan should avoid `#[async_trait]`. She explains that `#[async_trait]` [transforms][async-trait transform] a trait's async methods into methods that return `Pin>`, and the overhead that injects that will be hard to diagnose and impossible to remove. + +They continue looking at the code itself, essentially guessing at potential sources of where problematic `memcpy`'s may be arising. They identify two potential sources of moves of large datatypes in the code: pushes and pops on vectors of type `Vec`, and functions with return types of the form `Result`. + +Barbara asks how large the `DistriQuery`, `SuccessCode`, and `DistriErr` types are. Alan immediately notes that `DistriQuery` may be large, and they discuss options for avoiding the memory traffic incurred by pushing and popping `DistriQuery`. + +For the other two types, Alan responds that the `SuccessCode` is small, and that the error variants are never constructed in his benchmark code. Barbara explains that the size of `Result` has to be large enough to hold either variant, and that `memcpy`'ing a result is going to move all of those bytes. Alan investigates and sees that `DistriErr` has variants that embed byte arrays that go up to 50kb in size. Barbara recommends that Alan look into boxing the variants, or the whole `DistriErr` type itself, in order to reduce the cost of moving it around. + +Alan uses Barbara's feedback to box some of the data, and this cuts the `memcpy` traffic in the `perf report` to one quarter of what it had been reporting previously. + +However, there remains a significant performance delta between the Java version and the Rust version. Alan is not sure his Rust-rewrite attempt is going to get anywhere beyond the prototype stage. + +## 🤔 Frequently Asked Questions + +*Here are some standard FAQ to get you started. Feel free to add more!* + +### **What are the morals of the story?** + +1. Rust promises great performance, but when performance is not meeting one's targets, it is hard to know what to do next. Rust mostly leans on leveraging existing tools for native code development, but those tools are 1. foreign to many of our developers, 2. do not always measure up to what our developers have access to elsewhere, and 3. do not integrate as well with Rust as they might with C or C++. + +2. Rust makes some things very explicit, e.g. the distinction between `Box` versus `T` is quite prominent. But Rust's expressive type system also makes it easy to compose types without realizing how large they have gotten. + +3. Programmers do not always have a good mental model for where expensive moves are coming from. + +### **What are the sources for this story?** + +Discussions with engineers at Amazon Web Services. + +### **Why did you choose Alan to tell this story?** + +I chose Alan because he is used to Java, where these issues play out differently. + +Java has very mature tooling, including for performance investigations. Alan is frustrated by his attempts to use (or even identify) equivalent tools for Rust. + +With respect to memory traffic: In Java, every object is handled via a reference, and those references are cheap to copy. (One pays for that convenience in other ways, of course.) + + +### **How would this story have played out differently for the other characters?** + +From her C and C++ background, [Grace][] probably would avoid letting her types get so large. But then again, C and C++ do not have enums with a payload, so even Grace may have fallen in the same trap that Alan did (of assuming that the cost of moving an enum value is proportional to its current variant, rather than to its overall size). + +[Barbara][] probably would have added direct instrumentation via the `tracing` crate, potentially even to tokio itself, rather than spend much time wrestling with `perf`. + +[Niklaus][] is unlikely to be as concerned about the 20% throughput hit; he probably would have been happy to get code that seems functionally equivalent to the original Java version. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From 64ad262116bae055b439f7c6ebd43c765f4dca12 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Tue, 6 Apr 2021 23:56:31 -0400 Subject: [PATCH 040/347] typo fixes --- src/vision/status_quo/alan_finds_database_drops_hard.md | 4 ++-- src/vision/status_quo/alan_lost_the_world.md | 6 +++--- ...lan_started_trusting_the_rust_compiler_but_then_async.md | 6 +++--- src/vision/status_quo/alan_writes_a_web_framework.md | 2 +- .../barbara_makes_their_first_steps_into_async.md | 2 +- src/vision/status_quo/grace_tries_new_libraries.md | 2 -- 6 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/vision/status_quo/alan_finds_database_drops_hard.md b/src/vision/status_quo/alan_finds_database_drops_hard.md index ea7b4593..884e7696 100644 --- a/src/vision/status_quo/alan_finds_database_drops_hard.md +++ b/src/vision/status_quo/alan_finds_database_drops_hard.md @@ -31,7 +31,7 @@ async fn main() -> Result<(), sqlx::Error> { } ``` -Things seem to be working fairly well but sometimes when he refreshes the page he encounters a panic with the message "Cannot open a new connecton: connection is already open". He is flummoxed. +Things seem to be working fairly well but sometimes when he refreshes the page he encounters a panic with the message "Cannot open a new connection: connection is already open". He is flummoxed. ## Searching for the Solution @@ -72,7 +72,7 @@ Next, Alan seeks verification and validation of his understanding of the source ## Finding the Solution -Alan briefly considers rearchitecting his application in more extreme ways to retain use of async, but he gives up and seeks a more straight forward solution. He discovers `rusqlite`, a sychronous database library and adopts it. This requires some rearchitecting but solves the problem. +Alan briefly considers rearchitecting his application in more extreme ways to retain use of async, but he gives up and seeks a more straight forward solution. He discovers `rusqlite`, a synchronous database library and adopts it. This requires some rearchitecting but solves the problem. ## 🤔 Frequently Asked Questions diff --git a/src/vision/status_quo/alan_lost_the_world.md b/src/vision/status_quo/alan_lost_the_world.md index 373e4b3d..3f18cd66 100644 --- a/src/vision/status_quo/alan_lost_the_world.md +++ b/src/vision/status_quo/alan_lost_the_world.md @@ -64,7 +64,7 @@ async fn load_image(src: String, inside_of: usize, world: &mut World<'_>) { } ``` -Bang! Suddently, the project stops compiling, giving errors like... +Bang! Suddenly, the project stops compiling, giving errors like... ```ignore error[E0597]: `world` does not live long enough @@ -84,7 +84,7 @@ fn attach_image_from_net(world: &mut World<'_>, args: &[Value]) -> Result(future: F) @@ -124,7 +124,7 @@ pub trait Future { When you call an async function, all of it's parameters are copied or borrowed into the `Future` that it returns. Since we need to borrow the `World`, the `Future` has the lifetime of `&'a mut World`, not of `'static`. -Barbara suggests changing all of the async function's parameters to be owned types. Alan asks Grace, who architected this project. Grace recommends holding a reference to the `Plugin` that owns the `World`, and then borrowing it whenver you need the `World`. That ultimately looks like the following: +Barbara suggests changing all of the async function's parameters to be owned types. Alan asks Grace, who architected this project. Grace recommends holding a reference to the `Plugin` that owns the `World`, and then borrowing it whenever you need the `World`. That ultimately looks like the following: ```rust,ignore async fn load_image(src: String, inside_of: usize, player: Arc>) { diff --git a/src/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md b/src/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md index d6b1cd09..1feb89a3 100644 --- a/src/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md +++ b/src/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md @@ -12,7 +12,7 @@ He has dealt with his fair share of race conditions/thread safety issues during he won't have those annoying runtime problems to deal with. This allows him to try to squeeze his programs for as much performance as he wants, because the compiler will stop him when he tries things that could result in runtime problems. -After seeing the perfomance and the lack of runtime problems, he starts to trust the compiler more and more with each project finished. +After seeing the performance and the lack of runtime problems, he starts to trust the compiler more and more with each project finished. He knows what he can do with external libraries, he does not need to fear concurrency issues if the library cannot be used from multiple threads, because the compiler would tell him. @@ -20,7 +20,7 @@ His trust in the compiler solidifies further the more he codes in Rust. ### The first async project Alan now starts with his first async project. He sees that there is no async in the standard library, but after googling for "rust async file open", he finds 'async_std', a crate that provides some async versions of the standard library functions. -He has some code written that asynchrously interacts with some files: +He has some code written that asynchronously interacts with some files: ```rust,ignore use async_std::fs::File; use async_std::prelude::*; @@ -91,7 +91,7 @@ Do you recall in Spider-Man, that after getting bitten by the radioactive spider In his work, Alan sees an async call to a C# wrapper around SQLite, his equivalent of a spider-sense (async-sense?) starts tingling. Now knowing from Rust the complexities that arise when trying to create asynchronicity, what kind of complex mechanisms are at play here to enable these async calls from C# that end up in the C/C++ of SQLite? -He quickly discovers that there are no complex mechanism at all! It's actually just a synchronous call all the way down, with just some exta overhead from wrapping it into an asynchronous function. There are no points where the async function will yield. He transforms all these asynchronous calls to their synchronous counterparts, and sees a slight improvement in performance. Alan is happy, product management is happy, customers are happy! +He quickly discovers that there are no complex mechanism at all! It's actually just a synchronous call all the way down, with just some extra overhead from wrapping it into an asynchronous function. There are no points where the async function will yield. He transforms all these asynchronous calls to their synchronous counterparts, and sees a slight improvement in performance. Alan is happy, product management is happy, customers are happy! Over the next few months, he often takes a few seconds to reflect about why certain parts of the code are async, if they should be, or how other parts of the code might benefit from being async and if it's possible to make them async. He also uses what he learned from async Rust in his C# code reviews to find similar problems or general issues (With great power...). He even spots some lifetime bugs w.r.t. asynchronous code in C#, imagine that. diff --git a/src/vision/status_quo/alan_writes_a_web_framework.md b/src/vision/status_quo/alan_writes_a_web_framework.md index 6d2eab59..04f5b96b 100644 --- a/src/vision/status_quo/alan_writes_a_web_framework.md +++ b/src/vision/status_quo/alan_writes_a_web_framework.md @@ -137,7 +137,7 @@ and then register it with: but Alan can't work out how to express the type signature for the `.to_async_borrowing()` helper function. He submits his `.to_async()` pull-request upstream as-is, but it nags on his mind that he has been defeated. -Shortly afterwards, someone raises a bug about `?`, and a few other web framework contributors try to get it to work, but they also get stuck. When Alan tries it, the compiler diagnostics keep sending him around in circles . He can work out how to express the lifetimes for a function that returns a `Box` but not an `impl Future` because of how where clauses are expressed. Alan longs to be able to say "this function takes an async function as a callback" (`fn register_handler(handler: impl async Fn(state: &mut State) -> Result)`) and have Rust elide the lifetimes for him, like how they are elided for async functions. +Shortly afterwards, someone raises a bug about `?`, and a few other web framework contributors try to get it to work, but they also get stuck. When Alan tries it, the compiler diagnostics keep sending him around in circles . He can work out how to express the lifetimes for a function that returns a `Box` but not an `impl Future` because of how where clauses are expressed. Alan longs to be able to say "this function takes an async function as a callback" (`fn register_handler(handler: impl async Fn(state: &mut State) -> Result)`) and have Rust elide the lifetimes for him, like how they are elided for async functions. A month later, one of the contributors finds a forum comment by [Barbara] explaining how to express what Alan is after (using higher-order lifetimes and a helper trait). They implement this and merge it. The final `.to_async_borrowing()` implementation ends up looking like this (also from [Gotham](https://github.com/gotham-rs/gotham/blob/89c491fb4322bbc6fbcc8405c3a33e0634f7cbba/gotham/src/router/builder/single.rs)): diff --git a/src/vision/status_quo/barbara_makes_their_first_steps_into_async.md b/src/vision/status_quo/barbara_makes_their_first_steps_into_async.md index c8d0e426..2305557f 100644 --- a/src/vision/status_quo/barbara_makes_their_first_steps_into_async.md +++ b/src/vision/status_quo/barbara_makes_their_first_steps_into_async.md @@ -19,7 +19,7 @@ After all, a fast networked application is exactly what they are trying to make. To further solidify the decision of using async, Barbara goes looking for some information and opinions on async in Rust. Doubts created by reading some tweets about how most people should be using threads instead of async for simplicity reasons are quickly washed away by helpful conversations on the Rust discord. ### Learning about Async -Still enarmored with the first edition of the Rust book, they decide to go looking for an updated version, hoping that it will teach them async in the same manner that it taught them so much about the language and design patterns for Rust. Disappointed, they find no mention of async in the book, aside from a note that it exists as a keyword. +Still enamored with the first edition of the Rust book, they decide to go looking for an updated version, hoping that it will teach them async in the same manner that it taught them so much about the language and design patterns for Rust. Disappointed, they find no mention of async in the book, aside from a note that it exists as a keyword. Not to be deterred, they go looking further, and start looking for similarly great documentation about async. After stumbling upon the async book, their disappointment is briefly replaced with relief as the async book does a good job at solidifying what they have already learned in various blog posts about async, why one would use it and even a bit about how it all works under the hood. diff --git a/src/vision/status_quo/grace_tries_new_libraries.md b/src/vision/status_quo/grace_tries_new_libraries.md index 68ae6baf..d8afaff9 100644 --- a/src/vision/status_quo/grace_tries_new_libraries.md +++ b/src/vision/status_quo/grace_tries_new_libraries.md @@ -102,8 +102,6 @@ From her background she has an understanding what could go wrong. So she remembe ## 🤔 Frequently Asked Questions -## 🤔 Frequently Asked Questions - ### **What are the morals of the story?** * Working with async can give huge errors from fairly common place transforms, and requires knowing some "not entirely obvious" workarounds. From 2086d9a9c15e9425b9957f24aa8f1c32dc5ac069 Mon Sep 17 00:00:00 2001 From: "Juan J. Jimenez-Anca" Date: Wed, 7 Apr 2021 11:05:24 +0100 Subject: [PATCH 041/347] Update src/vision/status_quo/alan_picks_web_server.md Co-authored-by: Niko Matsakis --- src/vision/status_quo/alan_picks_web_server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_picks_web_server.md b/src/vision/status_quo/alan_picks_web_server.md index 9311685a..36ad4dae 100644 --- a/src/vision/status_quo/alan_picks_web_server.md +++ b/src/vision/status_quo/alan_picks_web_server.md @@ -52,7 +52,7 @@ This experience has made Alan think twice about whether Rust is indeed web ready ## 🤔 Frequently Asked Questions ### **What are the morals of the story?** -* Rust's ecosystem is ready for the web. There are a ton of brilliant libraries and frameworks out there. But web developers that are new to Rust may struggle with the idea that before picking a web server, they have to pick an async runtime. +* Rust's ecosystem has a lot of great components that may individually be ready for the web, but combining them is still a fraught proposition. It can also be confusing to web developers that are new to Rust, who may struggle with the idea that before picking a web server, they have to pick an async runtime. * In a typical web server project, dependencies that use async features form an intricate web which is hard to decipher for both new and seasoned Rust developers. Alan picked Tide and reqwest, only to realise later that they are not compatible. How many more situations like this will he face? Can Alan be confident that it won't happen again? * The situation is so complex that it's not enough knowing that all dependencies use the same runtime. They all have to actually be compatible with the same runtime **and** version. Newer versions of reqwest are incompatible with the latest stable version of actix web (verified at the time of writing) * Developers that need a stable environment may be fearful of the complexity that comes with managing async dependencies in Rust. For example, if reqwest had a security or bug fix in one of the latest versions that's not backported to older ones, Alan would not be able to upgrade because actix web is holding him back. He has in fact to wait until **ALL** dependencies are using the same runtime to apply fixes and upgrades. From 8b9d4e1284cebf4074f353390934a9368a27920e Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Wed, 7 Apr 2021 09:22:14 -0400 Subject: [PATCH 042/347] fix typo noted in review feedback. --- src/vision/status_quo/alan_iteratively_regresses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index 70df32da..04182f96 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -31,7 +31,7 @@ Alan asks Barbara whether the problem could be caused by the tokio executor. Bar Alan and Barbara look at the `perf` data. They find the output of `perf report` difficult to navigate and interpret. The data has stack trace fragments available, which gives them a few hints to follow up on. But when they try to make `perf report` annotate the original source, `perf` only shows disassembled machine code, not the original Rust source code. Alan and Barbara both agree that trying to dissect the problem from the machine code is not an attractive strategy. -For the memory allocator issues, Barbara recommnds that Alan try to eliminate the allocation calls and if they cannot be eliminated, then that Alan try tuning the parameters for the global memory allocator, or even switching which global memory allocator he is using. Alan looks at Barbara in despair: his time tweaking GC settings on the Java Virtual Machine taught him that allocator tuning is often a black art. +For the memory allocator issues, Barbara recommends that Alan try to eliminate the allocation calls and if they cannot be eliminated, then that Alan try tuning the parameters for the global memory allocator, or even switching which global memory allocator he is using. Alan looks at Barbara in despair: his time tweaking GC settings on the Java Virtual Machine taught him that allocator tuning is often a black art. Barbara suggests that they investigate where the calls to `memcpy` are arising. From the call stacks in `perf report`, Alan and Barbara decide to skim over the source code files for the corresponding functions. From 3bc2590641158b021e01f0a2bf65c4875eed339b Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Wed, 7 Apr 2021 09:28:36 -0400 Subject: [PATCH 043/347] Explain how Alan arrived at using async-trait crate. --- .../status_quo/alan_iteratively_regresses.md | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index 04182f96..03330220 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -10,14 +10,31 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee A core part of DistriData, called DDSplit, is in charge of splitting input data records into fragments that are stored on distinct servers, and then reassembling those fragments back into records in response to user queries. -DDSplit was originally implemented using Java code (plus some C, interfaced via JNI). Alan thinks that Rust could provide the same quality of service while requiring less memory, and decides to try reimplementing DDSplit in Rust. +DDSplit was originally implemented using Java code (plus some C, interfaced via JNI). Alan thinks that Rust could provide the same quality of service while requiring less memory. He decides to try reimplementing DDSplit in Rust, atop tokio. -Alan develops a prototype atop tokio and the [async-trait crate][], leveraging `#[async_trait]`to be able to define `async fn` methods within traits. When Alan finishes the prototype code, he finds the prototype performance has 20% slower throughput compared to the Java version. +Alan wants to copy some of the abstractions he sees in the Java code that are defined via Java interfaces. Alan sees Rust traits as the closest thing to Java interfaces. However, when he experimentally defines a trait with an `async fn`, he gets the following message from the compiler: + +``` +error[E0706]: functions in traits cannot be declared `async` + --> src/main.rs:2:5 + | +2 | async fn method() { } + | -----^^^^^^^^^^^^^^^^ + | | + | `async` because of this + | + = note: `async` trait functions are not currently supported + = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait +``` + +This diagnostic leads Alan to add the [async-trait crate][] as a dependency to his project. Alan then uses the `#[async_trait]` attribute provided by that crate to be able to define `async fn` methods within traits. + +When Alan finishes the prototype code, he finds the prototype performance has 20% slower throughput compared to the Java version. [async-trait crate]: https://crates.io/crates/async-trait [async-trait transform]: https://crates.io/crates/async-trait#explanation -Alan is disappointed; his experience has been that Rust code performs great, once you managed to get the code to be accepted by the compiler. Alan was not expecting to suffer a 20% performance hit over the Java code. +Alan is disappointed; his experience has been that Rust code performs great, (at least once you managed to get the code to be accepted by the compiler). Alan was not expecting to suffer a 20% performance hit over the Java code. The DDSplit service is being developed on a Linux machine, so Alan is able use the `perf` tool to gather sampling-based profiling data the async/await port of DDSplit. From 03c076f23698bffb73652f9efed4ebbfd30081b9 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Wed, 7 Apr 2021 09:30:59 -0400 Subject: [PATCH 044/347] Spell out one of Barbara's suggested alternatives to #[async_trait] --- src/vision/status_quo/alan_iteratively_regresses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index 03330220..943c9f37 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -52,7 +52,7 @@ For the memory allocator issues, Barbara recommends that Alan try to eliminate t Barbara suggests that they investigate where the calls to `memcpy` are arising. From the call stacks in `perf report`, Alan and Barbara decide to skim over the source code files for the corresponding functions. -Upon seeing `#[async_trait]` in Alan's source code, Barbara recommends that if performance is a concern, then Alan should avoid `#[async_trait]`. She explains that `#[async_trait]` [transforms][async-trait transform] a trait's async methods into methods that return `Pin>`, and the overhead that injects that will be hard to diagnose and impossible to remove. +Upon seeing `#[async_trait]` in Alan's source code, Barbara recommends that if performance is a concern, then Alan should avoid `#[async_trait]`. She explains that `#[async_trait]` [transforms][async-trait transform] a trait's async methods into methods that return `Pin>`, and the overhead that injects that will be hard to diagnose and impossible to remove. When Alan asks what other options he could adopt, Barbara thinks for a moment, and says he could make an enum that carries all the different implementations of the code. Alan says he'll consider it, but in the meantime he wants to see how far they can improve the code while keeping `#[async_trait]`. They continue looking at the code itself, essentially guessing at potential sources of where problematic `memcpy`'s may be arising. They identify two potential sources of moves of large datatypes in the code: pushes and pops on vectors of type `Vec`, and functions with return types of the form `Result`. From 0e5819b18932e1b13b91c34fa28acd89608f48cb Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Wed, 7 Apr 2021 09:36:23 -0400 Subject: [PATCH 045/347] Incorproate rylev suggestions for elaborating morals section. --- src/vision/status_quo/alan_iteratively_regresses.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index 943c9f37..709c6c22 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -70,11 +70,13 @@ However, there remains a significant performance delta between the Java version ### **What are the morals of the story?** -1. Rust promises great performance, but when performance is not meeting one's targets, it is hard to know what to do next. Rust mostly leans on leveraging existing tools for native code development, but those tools are 1. foreign to many of our developers, 2. do not always measure up to what our developers have access to elsewhere, and 3. do not integrate as well with Rust as they might with C or C++. +1. Rust promises great performance, but when performance is not meeting one's targets, it is hard to know what to do next. Rust mostly leans on leveraging existing tools for native code development, but those tools are (a.) foreign to many of our developers, (b.) do not always measure up to what our developers have access to elsewhere, (c.) do not integrate as well with Rust as they might with C or C++. An important specific instance of (c.) is that native code tools do not have any insight into Rust's async model, as that is even more distant from the execution model of C and C++. -2. Rust makes some things very explicit, e.g. the distinction between `Box` versus `T` is quite prominent. But Rust's expressive type system also makes it easy to compose types without realizing how large they have gotten. +2. Lack of certain language features leads developers to use constructs like `#[async_trait]` which add performance overhead that is (a.) hard to understand and (b.) may be significant. -3. Programmers do not always have a good mental model for where expensive moves are coming from. +3. Rust makes some things very explicit, e.g. the distinction between `Box` versus `T` is quite prominent. But Rust's expressive type system also makes it easy to compose types without realizing how large they have gotten. + +4. Programmers do not always have a good mental model for where expensive moves are coming from. ### **What are the sources for this story?** From fca9edddbc5ba6deb190e5e6cba10b2f270ee9fe Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Wed, 7 Apr 2021 09:50:29 -0400 Subject: [PATCH 046/347] Spell out the async parts of the morals more explicitly. Distinguish pure native tooling issues from (potential) ecosystem issues. --- src/vision/status_quo/alan_iteratively_regresses.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index 709c6c22..2a98b3ee 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -70,7 +70,7 @@ However, there remains a significant performance delta between the Java version ### **What are the morals of the story?** -1. Rust promises great performance, but when performance is not meeting one's targets, it is hard to know what to do next. Rust mostly leans on leveraging existing tools for native code development, but those tools are (a.) foreign to many of our developers, (b.) do not always measure up to what our developers have access to elsewhere, (c.) do not integrate as well with Rust as they might with C or C++. An important specific instance of (c.) is that native code tools do not have any insight into Rust's async model, as that is even more distant from the execution model of C and C++. +1. Rust promises great performance, but when performance is not meeting one's targets, it is hard to know what to do next. Rust mostly leans on leveraging existing tools for native code development, but those tools are (a.) foreign to many of our developers, (b.) do not always measure up to what our developers have access to elsewhere, (c.) do not integrate as well with Rust as they might with C or C++. 2. Lack of certain language features leads developers to use constructs like `#[async_trait]` which add performance overhead that is (a.) hard to understand and (b.) may be significant. @@ -78,6 +78,10 @@ However, there remains a significant performance delta between the Java version 4. Programmers do not always have a good mental model for where expensive moves are coming from. +5. An important specific instance of (1c.) for the async vision: Native code tools do not have any insight into Rust's async model, as that is even more distant from the execution model of C and C++. + +6. We can actually generalize (5.) further: When performance does not match expectations, developers do not have much insight into whether the performance pitfalls arise from issues deep in the async executor that they have selected, or if the problems come directly from overheads built into the code they themselves have written. + ### **What are the sources for this story?** Discussions with engineers at Amazon Web Services. From 373ef3ec84f6d097e71f22943340f38fa31baedf Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Wed, 7 Apr 2021 09:52:39 -0400 Subject: [PATCH 047/347] clarify that item 6 is just about async code. --- src/vision/status_quo/alan_iteratively_regresses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index 2a98b3ee..e544802c 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -80,7 +80,7 @@ However, there remains a significant performance delta between the Java version 5. An important specific instance of (1c.) for the async vision: Native code tools do not have any insight into Rust's async model, as that is even more distant from the execution model of C and C++. -6. We can actually generalize (5.) further: When performance does not match expectations, developers do not have much insight into whether the performance pitfalls arise from issues deep in the async executor that they have selected, or if the problems come directly from overheads built into the code they themselves have written. +6. We can actually generalize (5.) further: When async performance does not match expectations, developers do not have much insight into whether the performance pitfalls arise from issues deep in the async executor that they have selected, or if the problems come directly from overheads built into the code they themselves have written. ### **What are the sources for this story?** From 5f66388170ce467d8ffa7bcbc644ed229819af49 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Wed, 7 Apr 2021 09:53:30 -0400 Subject: [PATCH 048/347] try to further clarify the point about sizeof Result --- src/vision/status_quo/alan_iteratively_regresses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index e544802c..cbed2178 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -97,7 +97,7 @@ With respect to memory traffic: In Java, every object is handled via a reference ### **How would this story have played out differently for the other characters?** -From her C and C++ background, [Grace][] probably would avoid letting her types get so large. But then again, C and C++ do not have enums with a payload, so even Grace may have fallen in the same trap that Alan did (of assuming that the cost of moving an enum value is proportional to its current variant, rather than to its overall size). +From her C and C++ background, [Grace][] probably would avoid letting her types get so large. But then again, C and C++ do not have enums with a payload, so even Grace may have fallen in the same trap that Alan did (of assuming that the cost of moving an enum value is proportional to its current variant, rather than to its type's overall size). [Barbara][] probably would have added direct instrumentation via the `tracing` crate, potentially even to tokio itself, rather than spend much time wrestling with `perf`. From 7d2a06282315f50bbe7064972287a3dc23b20810 Mon Sep 17 00:00:00 2001 From: Erich Ess Date: Wed, 7 Apr 2021 19:39:24 -0400 Subject: [PATCH 049/347] First draft of Barbaras experience solving computationally bound problems with async --- .../barbara_simulates_hydrodynamics.md | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/vision/status_quo/barbara_simulates_hydrodynamics.md diff --git a/src/vision/status_quo/barbara_simulates_hydrodynamics.md b/src/vision/status_quo/barbara_simulates_hydrodynamics.md new file mode 100644 index 00000000..27f38b60 --- /dev/null +++ b/src/vision/status_quo/barbara_simulates_hydrodynamics.md @@ -0,0 +1,81 @@ +# 😱 Status quo stories: Barbara Builds a Hydrodynamics Simulator + +[How To Vision: Status Quo]: ../how_to_vision/status_quo.md +[the raw source from this template]: https://raw.githubusercontent.com/rust-lang/wg-async-foundations/master/src/vision/status_quo/template.md +[`status_quo`]: https://github.com/rust-lang/wg-async-foundations/tree/master/src/vision/status_quo +[`SUMMARY.md`]: https://github.com/rust-lang/wg-async-foundations/blob/master/src/SUMMARY.md +[open issues]: https://github.com/rust-lang/wg-async-foundations/issues?q=is%3Aopen+is%3Aissue+label%3Astatus-quo-story-ideas +[open an issue of your own]: https://github.com/rust-lang/wg-async-foundations/issues/new?assignees=&labels=good+first+issue%2C+help+wanted%2C+status-quo-story-ideas&template=-status-quo--story-issue.md&title= + + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story +### Problem +Barbara needed to build a tool to solve hydrodynamics simulations; there is a common method for this that subdivides a region into a grid and computes the solution for each grid patch. All the patches in a grid for a point in time are independent and can be computed in parallel, but they are dependent on neighboring patches in the previously computed frame in time. This is a well known computational model and the patterns for basic parallelization are well established. + +Barabara wanted to write a performant tool to compute the solutions to the simulations of her research. She chose Rust because she was already familiar with it and it had good qualities for writing performant code. After implementing the core mathematical formulas, Barbara began implementing the parallelization architecture. + +Her first attempt to was to emulate a common CFD design pattern: using message passing to communicate between processes that are each assigned a specific patch in the grid. So she assign one thread to each patch and used messages to communicate solution state to dependent patches. With one thread per patch this usually meant that there were 5-10x more threads than CPU cores. + +This solution was fine, but Barbara was not satisified. She had two problems with it: first, she didn't like that the design would greedily use all the resources on the machine and, second, when her team added a new feature (tracer particles) that increased the complexity of how patches interact with each other and the number of messages that were passsed between threads increased to the point that it became a performance bottleneck and parallel processing became no faster than serial processing. So, Barbara decided to find a better solution. + +### Solution Path +What Barbara wanted to do was find a way to more efficiently use threads: have a fixed number of threads that each mapped to a core on the CPU and assign patches to those threads as patches became ready to compute. The design of the `async` framework seemed to provide exactly that behavior. And to move away from the message passing design, because the number of messages being passed was proportional to the number of trace particles being traced. + +As Barbara began working on her new design with `tokio`, her use of `async` went from a general (from the textbook) use of basic `async` features to a more specific implementation leveraging exactly the features that were most suited for her needs. + +At first, Barbara was under a false impression about what async executors do. She had assumed that a multi-threaded executor could automatically move the execution of an async block to a worker thread. Then she discovered that async tasks must be explicitly spawned into into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Barbara feels that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. + +In order to remove the need for message passing, Barbara moved to a shared state design: she would keep a table tracking the solution state for every grid patch and a specific patch would only start its computation task when solutions were written for all the patches it was dependent on. So, each task needs to access the table with the solution results of all the other tasks. Learning how to properly use shared data with `async` was a new challenge. The initial design: + +```rust + let mut stage_primitive_and_scalar = |index: BlockIndex, state: BlockState, hydro: H, geometry: GridGeometry| { + let stage = async move { + let p = state.try_to_primitive(&hydro, &geometry)?; + let s = state.scalar_mass / &geometry.cell_volumes / p.map(P::lorentz_factor); + Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) ) + }; + stage_map.insert(index, runtime.spawn(stage).map(|f| f.unwrap()).shared()); + }; +``` +lacked performance because she needed to clone the value for every task. So, Barbara switched over to using `Arc` to keep a thread safe RC to the shared data. But this change introduced a lot of `.map` and `.unwrap` function calls, making the code much harder to read. She realized that managing the dependency graph was not intuitive when using `async` for concurrency. + +During the move to `async` Barbara ran into a steep learning curve with error handling. The initial version of her design just used `panic!`s to fail the program if an error was encountered, but the stack traces were almost unreadable. She asked her teammate Grace to migrate over to using the `Result` idiom for error handling and Grace found a major inconvenience. The Rust type inference inconsistently breaks when propagating `Result` in `async` blocks. Grace frequently found that she had to specify the type of the error when creating a result value: +```rust +Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) ) +``` +And she could not figure out why she had to add the `::<_, HydroError>` to some of the `Result` values. + +Once her team began using the new `async` design for their simulations, they noticed an important issue that impacted productivity: compilation time had now increased to between 30 and 60 seconds. The nature of their work requires frequent changes to code and recompilation and 30-60 seconds is long enough to have a noticeable impact on their quality of life. What her and her team want is for compilation to be 2 to 3 seconds. Barbara believes that the use of `async` is a major contributor to the long compilation times. + +This new solution works, but Barbara is not satisfied with how complex her code wound up becoming with the move to `async` and the fact that compilation time is now 30-60 seconds. The state sharing adding a large amount of cruft with `Arc` and `async` is not well suited for using a dependency graph to schedule tasks so implementing this solution created a key component of her program that was difficult to understand and pervasive. Ultimately, her conclusion was that `async` is not appropriate for parallelizing computational tasks. She will be trying a new design based upon Rayon in the next version of her application. + +## 🤔 Frequently Asked Questions + +### **What are the morals of the story?** +- `async` looks to be the wrong choice for parallelizing compute bound/computational work +- There is a lack of guidance to help people solving such problems get started on the right foot +- Quality of Life issues (compilation time, type inference on `Result`) can create a drag on users ability to focus on their domain problem + +### **What are the sources for this story?** +This story is based on the experience of building the [kilonova](https://github.com/clemson-cal/app-kilonova) hydrodynamics simulation solver. + +### **Why did you choose *NAME* to tell this story?** +I chose Barbara as the primary character in this story because this work was driven by someone with experience in Rust specifically but does not have much systems level experience. Grace was chosen as a supporting character because of that persons experience with C/C++ programming and to avoid repeating characters. + +### **How would this story have played out differently for the other characters?** +For Alan, there's a good chance he would have already had experience working with either async workflows in another language or doing parallelization of compute bound tasks; and so would already know from experience that `async` was not the right place to start. Grace, likewise, might already have experience with problems like this and would know what to look for when searching for tools. For Niklaus, the experience would probably be the same, as it's very easy to assume that `tokio` is the starting place for concurrency in Rust. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From ecb858d52cb78d3a3438f36c8fd24e654acd9cca Mon Sep 17 00:00:00 2001 From: Erich Ess Date: Wed, 7 Apr 2021 19:44:36 -0400 Subject: [PATCH 050/347] Removed extraneous text --- src/vision/status_quo/barbara_simulates_hydrodynamics.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/vision/status_quo/barbara_simulates_hydrodynamics.md b/src/vision/status_quo/barbara_simulates_hydrodynamics.md index 27f38b60..cb11dade 100644 --- a/src/vision/status_quo/barbara_simulates_hydrodynamics.md +++ b/src/vision/status_quo/barbara_simulates_hydrodynamics.md @@ -1,13 +1,5 @@ # 😱 Status quo stories: Barbara Builds a Hydrodynamics Simulator -[How To Vision: Status Quo]: ../how_to_vision/status_quo.md -[the raw source from this template]: https://raw.githubusercontent.com/rust-lang/wg-async-foundations/master/src/vision/status_quo/template.md -[`status_quo`]: https://github.com/rust-lang/wg-async-foundations/tree/master/src/vision/status_quo -[`SUMMARY.md`]: https://github.com/rust-lang/wg-async-foundations/blob/master/src/SUMMARY.md -[open issues]: https://github.com/rust-lang/wg-async-foundations/issues?q=is%3Aopen+is%3Aissue+label%3Astatus-quo-story-ideas -[open an issue of your own]: https://github.com/rust-lang/wg-async-foundations/issues/new?assignees=&labels=good+first+issue%2C+help+wanted%2C+status-quo-story-ideas&template=-status-quo--story-issue.md&title= - - ## 🚧 Warning: Draft status 🚧 This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. From 5813338cad8942926d085c385d10e51b4889d296 Mon Sep 17 00:00:00 2001 From: Erich Ess Date: Thu, 8 Apr 2021 08:52:12 -0400 Subject: [PATCH 051/347] Fixing typos --- src/vision/status_quo/barbara_simulates_hydrodynamics.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/barbara_simulates_hydrodynamics.md b/src/vision/status_quo/barbara_simulates_hydrodynamics.md index cb11dade..8151bee3 100644 --- a/src/vision/status_quo/barbara_simulates_hydrodynamics.md +++ b/src/vision/status_quo/barbara_simulates_hydrodynamics.md @@ -21,7 +21,7 @@ What Barbara wanted to do was find a way to more efficiently use threads: have a As Barbara began working on her new design with `tokio`, her use of `async` went from a general (from the textbook) use of basic `async` features to a more specific implementation leveraging exactly the features that were most suited for her needs. -At first, Barbara was under a false impression about what async executors do. She had assumed that a multi-threaded executor could automatically move the execution of an async block to a worker thread. Then she discovered that async tasks must be explicitly spawned into into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Barbara feels that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. +At first, Barbara was under a false impression about what async executors do. She had assumed that a multi-threaded executor could automatically move the execution of an async block to a worker thread. Then she discovered that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Barbara feels that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. In order to remove the need for message passing, Barbara moved to a shared state design: she would keep a table tracking the solution state for every grid patch and a specific patch would only start its computation task when solutions were written for all the patches it was dependent on. So, each task needs to access the table with the solution results of all the other tasks. Learning how to properly use shared data with `async` was a new challenge. The initial design: @@ -57,7 +57,7 @@ This new solution works, but Barbara is not satisfied with how complex her code ### **What are the sources for this story?** This story is based on the experience of building the [kilonova](https://github.com/clemson-cal/app-kilonova) hydrodynamics simulation solver. -### **Why did you choose *NAME* to tell this story?** +### **Why did you choose Barbara and Grace to tell this story?** I chose Barbara as the primary character in this story because this work was driven by someone with experience in Rust specifically but does not have much systems level experience. Grace was chosen as a supporting character because of that persons experience with C/C++ programming and to avoid repeating characters. ### **How would this story have played out differently for the other characters?** From f6ae9bdb42c532e4b992f9254cf80175652193fa Mon Sep 17 00:00:00 2001 From: Erich Ess Date: Thu, 8 Apr 2021 08:53:09 -0400 Subject: [PATCH 052/347] Formatting --- src/vision/status_quo/barbara_simulates_hydrodynamics.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_simulates_hydrodynamics.md b/src/vision/status_quo/barbara_simulates_hydrodynamics.md index 8151bee3..566cfe62 100644 --- a/src/vision/status_quo/barbara_simulates_hydrodynamics.md +++ b/src/vision/status_quo/barbara_simulates_hydrodynamics.md @@ -61,7 +61,9 @@ This story is based on the experience of building the [kilonova](https://github. I chose Barbara as the primary character in this story because this work was driven by someone with experience in Rust specifically but does not have much systems level experience. Grace was chosen as a supporting character because of that persons experience with C/C++ programming and to avoid repeating characters. ### **How would this story have played out differently for the other characters?** -For Alan, there's a good chance he would have already had experience working with either async workflows in another language or doing parallelization of compute bound tasks; and so would already know from experience that `async` was not the right place to start. Grace, likewise, might already have experience with problems like this and would know what to look for when searching for tools. For Niklaus, the experience would probably be the same, as it's very easy to assume that `tokio` is the starting place for concurrency in Rust. +- Alan: there's a good chance he would have already had experience working with either async workflows in another language or doing parallelization of compute bound tasks; and so would already know from experience that `async` was not the right place to start. +- Grace: likewise, might already have experience with problems like this and would know what to look for when searching for tools. +- Niklaus: the experience would probably be the same, as it's very easy to assume that `tokio` is the starting place for concurrency in Rust. [character]: ../characters.md [status quo stories]: ./status_quo.md From 6f47a88f00e71fcfcaf77bdad5f47b31f86cc709 Mon Sep 17 00:00:00 2001 From: Erich Ess Date: Thu, 8 Apr 2021 10:30:56 -0400 Subject: [PATCH 053/347] Improved clarity --- src/vision/status_quo/barbara_simulates_hydrodynamics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_simulates_hydrodynamics.md b/src/vision/status_quo/barbara_simulates_hydrodynamics.md index 566cfe62..b81105f6 100644 --- a/src/vision/status_quo/barbara_simulates_hydrodynamics.md +++ b/src/vision/status_quo/barbara_simulates_hydrodynamics.md @@ -17,7 +17,7 @@ Her first attempt to was to emulate a common CFD design pattern: using message p This solution was fine, but Barbara was not satisified. She had two problems with it: first, she didn't like that the design would greedily use all the resources on the machine and, second, when her team added a new feature (tracer particles) that increased the complexity of how patches interact with each other and the number of messages that were passsed between threads increased to the point that it became a performance bottleneck and parallel processing became no faster than serial processing. So, Barbara decided to find a better solution. ### Solution Path -What Barbara wanted to do was find a way to more efficiently use threads: have a fixed number of threads that each mapped to a core on the CPU and assign patches to those threads as patches became ready to compute. The design of the `async` framework seemed to provide exactly that behavior. And to move away from the message passing design, because the number of messages being passed was proportional to the number of trace particles being traced. +What Barbara wanted to do was find a way to more efficiently use threads: have a fixed number of threads that each mapped to a core on the CPU and assign patches to those threads as patches became ready to compute. The `async` feature seemed to provide exactly that behavior. And to move away from the message passing design, because the number of messages being passed was proportional to the number of trace particles being traced. As Barbara began working on her new design with `tokio`, her use of `async` went from a general (from the textbook) use of basic `async` features to a more specific implementation leveraging exactly the features that were most suited for her needs. From 0667b1847db3dddf9e6b9e051bbb86fe5063aaa6 Mon Sep 17 00:00:00 2001 From: Jim Peters Date: Thu, 8 Apr 2021 10:11:52 -0500 Subject: [PATCH 054/347] Add story: "Niklaus wants to use GhostCell-like cell borrowing" --- .../niklaus_wants_to_use_ghostcell.md | 149 ++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 src/vision/status_quo/niklaus_wants_to_use_ghostcell.md diff --git a/src/vision/status_quo/niklaus_wants_to_use_ghostcell.md b/src/vision/status_quo/niklaus_wants_to_use_ghostcell.md new file mode 100644 index 00000000..c304ed44 --- /dev/null +++ b/src/vision/status_quo/niklaus_wants_to_use_ghostcell.md @@ -0,0 +1,149 @@ +# Niklaus wants to use GhostCell-like cell borrowing with futures + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the +brainstorming period. It is derived from real-life experiences of +actual Rust users and is meant to reflect some of the challenges that +Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to +the FAQ, feel free to open a PR making edits (but keep in mind that, +as they reflect peoples' experiences, status quo stories [cannot be +wrong], only inaccurate). Alternatively, you may wish to [add your own +status quo story][htvsq]! + +## The story + +Niklaus quite likes using statically-checked cell borrowing. This is +implemented in various ways in +[GhostCell](http://plv.mpi-sws.org/rustbelt/ghostcell/) and +[`qcell`](https://docs.rs/qcell/0.4.1/qcell/). He would like to use +statically-checked cell borrowing within futures, but there is no way +to get the owner borrow through the `Future::poll` call. + +So he is forced to use `RefCell` instead and be very careful not to +cause panics. This seems like a step back. It feels dangerous to use +`RefCell` and to have to manually-verify that his cell borrows are +panic-free. + +### The mechanism + +Statically-checked cell borrows work by having an owner held by the +runtime and various instances of a cell held by things running on top +of the runtime (these cells would typically be behind `Rc` +references). A mutable borrow on the owner is passed down the stack, +which enables safe borrows on all the cells, since a mutable borrow on +a cell is enabled by temporarily holding onto the mutable borrow of +the owner. This is all checked at compile-time. + +So the mutable borrow needs to be passed through the `poll` call, and +it seems that requires support from the standard library. + +Right now a `&mut Context<'_>` is passed, and so within `Context` +would be the ideal place to hold a borrow on the cell owner. However +as far as Niklaus can see there are difficulties with all the current +implementations: + +- GhostCell (or qcell::LCell) is the best available solution, because + it doesn't have any restrictions on how many runtimes might be + running or whatever. But Rust insists that the lifetimes `<'id>` on + methods are explicit, so it seems like that would force a change to + the signature of `poll`, which would break the ecosystem. + +- The other `qcell` types (QCell, TCell and TLCell) have various + restrictions or overheads which might make them unsuitable as a + general-purpose solution in the standard library. However they do + have the positive feature of not requiring any change in the + signature of `poll`. It looks like they could be added to `Context` + without breaking anything. + +So right now Niklaus thinks there isn't an easy way for this to be +done, but still it is a desirable feature so maybe someone can think +of a way around the problems. + +### Proof of concept + +The [Stakker](https://crates.io/crates/stakker) runtime makes use of +qcell-based statically-checked cell borrowing. It uses this to get +zero-cost access to actors, guaranteeing at compile time that no +actor can access any other actor's state. It also uses it to allow +inter-actor [shared +state](https://docs.rs/stakker/0.2.1/stakker/struct.Share.html) to be +accessed safely and zero-cost, without RefCell. + +Stakker doesn't use GhostCell (LCell) because of the need for `<'id>` +annotations on methods. Instead it uses the other three cell types +according to how many Stakker instances will be run, either one +Stakker only, one per thread, or multiple per thread. This is +selected by cargo features. + +Switching implementations like this doesn't seem like an option for +the standard library. + +### Way forward + +If the feature is of interest, it needs some brain-time from someone +to see if there's any way to add this. For example could the compiler +derive the `<'id>` annotations automatically for GhostCell? Or is +there any other way of making this work in the standard library? + +Or for multi-threaded runtimes, could +[`qcell::TLCell`](https://docs.rs/qcell/0.4.1/qcell/) work? This +allows a single cell-owner in every thread. So several borrows can be +going on at the same time in different threads, but this is safe +because the cell isn't `Sync`. + +The interface between cells and `Context` should be straightforward +once a particular cell type is demonstrated to be workable with the +`poll` interface and futures ecosystem. For example copying the API +style of Stakker: + +``` +let rc = Rc::new(AsyncCell::new(1_u32)); +*rc.rw(cx) = 2; +``` + +So effectively/logically you obtain read-write access to a cell by +naming the authority by which you claim access, in this case the poll +Context. In this case it really is naming rather than accessing since +the checks are done at compile time and the address that `cx` +represents doesn't actually get passed anywhere or evaluated. + + +## 🤔 Frequently Asked Questions + +### **What are the morals of the story?** + +The main problem is that Niklaus has got used to a safer environment +and it feels dangerous to go back to RefCell and have to +manually-verify that his cell borrows are panic-free. + +### **What are the sources for this story?** + +The author of Stakker is trying to interface it to async/await and +futures. + +### **Why did you choose *NAME* to tell this story?** + +Niklaus seems to be the wildcard. The main thing is that Niklaus is +claimed to have an unconventional background. So that means he's not +part of the establishment. He's a new programmer to async/await, but +in this interpretation he isn't a new programmer. Maybe he's like +Grace or Barbara, but he doesn't have his thinking limited by any +particular existing conventions or trained methodology. + +### **How would this story have played out differently for the other characters?** + +The other characters perhaps wouldn't have heard of statically-checked +cell borrows (at least until the recent GhostCell announcement) so +would be unaware of the possibility of things being safer. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From 1b5f05d03fe2118b100260dfee5b9e10134e79be Mon Sep 17 00:00:00 2001 From: Jim Peters Date: Thu, 8 Apr 2021 18:34:30 -0500 Subject: [PATCH 055/347] Rename file --- ...ants_to_use_ghostcell.md => barbara_wants_to_use_ghostcell.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/vision/status_quo/{niklaus_wants_to_use_ghostcell.md => barbara_wants_to_use_ghostcell.md} (100%) diff --git a/src/vision/status_quo/niklaus_wants_to_use_ghostcell.md b/src/vision/status_quo/barbara_wants_to_use_ghostcell.md similarity index 100% rename from src/vision/status_quo/niklaus_wants_to_use_ghostcell.md rename to src/vision/status_quo/barbara_wants_to_use_ghostcell.md From 737a9e973e78dc4b4457c54635ff794a8626526e Mon Sep 17 00:00:00 2001 From: Jim Peters Date: Thu, 8 Apr 2021 21:51:53 -0500 Subject: [PATCH 056/347] Updates to answer comments --- .../barbara_wants_to_use_ghostcell.md | 245 +++++++++++++----- 1 file changed, 185 insertions(+), 60 deletions(-) diff --git a/src/vision/status_quo/barbara_wants_to_use_ghostcell.md b/src/vision/status_quo/barbara_wants_to_use_ghostcell.md index c304ed44..263deacf 100644 --- a/src/vision/status_quo/barbara_wants_to_use_ghostcell.md +++ b/src/vision/status_quo/barbara_wants_to_use_ghostcell.md @@ -1,4 +1,4 @@ -# Niklaus wants to use GhostCell-like cell borrowing with futures +# Barbara wants to use GhostCell-like cell borrowing with futures ## 🚧 Warning: Draft status 🚧 @@ -15,41 +15,95 @@ status quo story][htvsq]! ## The story -Niklaus quite likes using statically-checked cell borrowing. This is +Barbara quite likes using statically-checked cell borrowing. This is implemented in various ways in [GhostCell](http://plv.mpi-sws.org/rustbelt/ghostcell/) and -[`qcell`](https://docs.rs/qcell/0.4.1/qcell/). He would like to use +[`qcell`](https://docs.rs/qcell/0.4.1/qcell/). She would like to use statically-checked cell borrowing within futures, but there is no way to get the owner borrow through the `Future::poll` call. -So he is forced to use `RefCell` instead and be very careful not to +So she is forced to use `RefCell` instead and be very careful not to cause panics. This seems like a step back. It feels dangerous to use -`RefCell` and to have to manually-verify that his cell borrows are +`RefCell` and to have to manually verify that her cell borrows are panic-free. ### The mechanism -Statically-checked cell borrows work by having an owner held by the -runtime and various instances of a cell held by things running on top -of the runtime (these cells would typically be behind `Rc` -references). A mutable borrow on the owner is passed down the stack, -which enables safe borrows on all the cells, since a mutable borrow on -a cell is enabled by temporarily holding onto the mutable borrow of -the owner. This is all checked at compile-time. - -So the mutable borrow needs to be passed through the `poll` call, and -it seems that requires support from the standard library. - -Right now a `&mut Context<'_>` is passed, and so within `Context` -would be the ideal place to hold a borrow on the cell owner. However -as far as Niklaus can see there are difficulties with all the current -implementations: - -- GhostCell (or qcell::LCell) is the best available solution, because - it doesn't have any restrictions on how many runtimes might be - running or whatever. But Rust insists that the lifetimes `<'id>` on - methods are explicit, so it seems like that would force a change to - the signature of `poll`, which would break the ecosystem. +Barbara understands that statically-checked cell borrows work by +having an owner held by the runtime, and various instances of a cell +held by things running on top of the runtime (these cells would +typically be behind `Rc` references). A mutable borrow on the owner +is passed down the stack, which enables safe borrows on all the cells, +since a mutable borrow on a cell is enabled by temporarily holding +onto the mutable borrow of the owner, which is all checked at +compile-time. + +So the mutable owner borrow needs to be passed through the `poll` +call, and Barbara realizes that this would require support from the +standard library. + +Right now a `&mut Context<'_>` is passed to `poll`, and so within +`Context` would be the ideal place to hold a borrow on the cell owner. +However as far as Barbara can see there are difficulties with all the +current implementations: + +- GhostCell (or qcell::LCell) may be the best available solution, + because it doesn't have any restrictions on how many runtimes might + be running or how they might be nested. But Rust insists that the + lifetimes `<'id>` on methods and types are explicit, so it seems + like that would force a change to the signature of `poll`, which + would break the ecosystem. + + Here Barbara experiments with a working example of a modified Future + trait and a future implementation that makes use of LCell: + +```rust +// Requires dependency: qcell = "0.4" +use qcell::{LCell, LCellOwner}; +use std::pin::Pin; +use std::rc::Rc; +use std::task::Poll; + +struct Context<'id, 'a> { + cell_owner: &'a mut LCellOwner<'id>, +} + +struct AsyncCell<'id, T>(LCell<'id, T>); +impl<'id, T> AsyncCell<'id, T> { + pub fn new(value: T) -> Self { + Self(LCell::new(value)) + } + pub fn rw<'a, 'b: 'a>(&'a self, cx: &'a mut Context<'id, 'b>) -> &'a mut T { + cx.cell_owner.rw(&self.0) + } +} + +trait Future<'id> { + type Output; + fn poll(self: Pin<&mut Self>, cx: &mut Context<'id, '_>) -> Poll; +} + +struct MyFuture<'id> { + count: Rc>, +} +impl<'id> Future<'id> for MyFuture<'id> { + type Output = (); + fn poll(self: Pin<&mut Self>, cx: &mut Context<'id, '_>) -> Poll { + *self.count.rw(cx) += 1; + Poll::Ready(()) + } +} + +fn main() { + LCellOwner::scope(|mut owner| { + let mut cx = Context { cell_owner: &mut owner }; + let count = Rc::new(AsyncCell::new(0_usize)); + let mut fut = Box::pin(MyFuture { count: count.clone() }); + let _ = fut.as_mut().poll(&mut cx); + assert_eq!(1, *count.rw(&mut cx)); + }); +} +``` - The other `qcell` types (QCell, TCell and TLCell) have various restrictions or overheads which might make them unsuitable as a @@ -58,41 +112,115 @@ implementations: signature of `poll`. It looks like they could be added to `Context` without breaking anything. -So right now Niklaus thinks there isn't an easy way for this to be -done, but still it is a desirable feature so maybe someone can think -of a way around the problems. + Here Barbara tries using `TLCell`, and finds that the signature of + `poll` doesn't need to change: + +```rust +// Requires dependency: qcell = "0.4" +use qcell::{TLCell, TLCellOwner}; +use std::pin::Pin; +use std::rc::Rc; +use std::task::Poll; + +struct AsyncMarker; +struct Context<'a> { + cell_owner: &'a mut TLCellOwner, +} + +struct AsyncCell(TLCell); +impl AsyncCell { + pub fn new(value: T) -> Self { + Self(TLCell::new(value)) + } + pub fn rw<'a, 'b: 'a>(&'a self, cx: &'a mut Context<'b>) -> &'a mut T { + cx.cell_owner.rw(&self.0) + } +} + +trait Future { + type Output; + fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll; +} + +struct MyFuture { + count: Rc>, +} +impl Future for MyFuture { + type Output = (); + fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + *self.count.rw(cx) += 1; + Poll::Ready(()) + } +} + +fn main() { + let mut owner = TLCellOwner::new(); + let mut cx = Context { cell_owner: &mut owner }; + let count = Rc::new(AsyncCell::new(0_usize)); + let mut fut = Box::pin(MyFuture { count: count.clone() }); + let _ = fut.as_mut().poll(&mut cx); + assert_eq!(1, *count.rw(&mut cx)); +} +``` + + (For comparison, `TCell` only allows one owner per marker type in + the whole process. `QCell` allows many owners, but requires a + runtime check to make sure you're using the right owner to access a + cell. `TLCell` allows only one owner per thread per marker type, + but also lets cells migrate between threads and be borrowed locally, + which the others don't -- see [qcell + docs](https://docs.rs/qcell/0.4.1/qcell/).) + +So the choice is GhostCell/LCell and lifetimes everywhere, or various +other cell types that may be too restrictive. + +Right now Barbara thinks that none of these solutions is likely to be +acceptable for the standard library. However still it is a desirable +feature, so maybe someone can think of a way around the problems. Or +maybe someone has a different perspective on what would be acceptable. ### Proof of concept The [Stakker](https://crates.io/crates/stakker) runtime makes use of qcell-based statically-checked cell borrowing. It uses this to get -zero-cost access to actors, guaranteeing at compile time that no -actor can access any other actor's state. It also uses it to allow +zero-cost access to actors, guaranteeing at compile time that no actor +can access any other actor's state. It also uses it to allow inter-actor [shared state](https://docs.rs/stakker/0.2.1/stakker/struct.Share.html) to be accessed safely and zero-cost, without RefCell. +(For example within a Stakker actor, you can access the contents of a +`Share` via the actor context `cx` as follows: `share.rw(cx)`, +which blocks borrowing or accessing `cx` until that borrow on `share` +has been released. `Share` is effectively a `Rc` and +`cx` has access to an active borrow on the `ShareCellOwner`, just as +in the long examples above.) + Stakker doesn't use GhostCell (LCell) because of the need for `<'id>` -annotations on methods. Instead it uses the other three cell types -according to how many Stakker instances will be run, either one -Stakker only, one per thread, or multiple per thread. This is -selected by cargo features. +annotations on methods and types. Instead it uses the other three +cell types according to how many Stakker instances will be run, either +one Stakker instance only, one per thread, or multiple per thread. +This is selected by cargo features. Switching implementations like this doesn't seem like an option for the standard library. ### Way forward -If the feature is of interest, it needs some brain-time from someone -to see if there's any way to add this. For example could the compiler -derive the `<'id>` annotations automatically for GhostCell? Or is -there any other way of making this work in the standard library? +Barbara wonders whether there is any way this can be made to work. +For example, could the compiler derive all those `<'id>` annotations +automatically for GhostCell/LCell? + +Or for multi-threaded runtimes, would +[`qcell::TLCell`](https://docs.rs/qcell/0.4.1/qcell/) be acceptable? +This allows a single cell-owner in every thread. So it would not +allow nested runtimes of the same type. However it does allow borrows +to happen at the same time independently in different threads, and it +also allows the migration of cells between threads, which is safe +because that kind of cell isn't `Sync`. -Or for multi-threaded runtimes, could -[`qcell::TLCell`](https://docs.rs/qcell/0.4.1/qcell/) work? This -allows a single cell-owner in every thread. So several borrows can be -going on at the same time in different threads, but this is safe -because the cell isn't `Sync`. +Or is there some other form of cell-borrowing that could be devised +that would work better for this? The interface between cells and `Context` should be straightforward once a particular cell type is demonstrated to be workable with the @@ -104,20 +232,21 @@ let rc = Rc::new(AsyncCell::new(1_u32)); *rc.rw(cx) = 2; ``` -So effectively/logically you obtain read-write access to a cell by -naming the authority by which you claim access, in this case the poll -Context. In this case it really is naming rather than accessing since -the checks are done at compile time and the address that `cx` -represents doesn't actually get passed anywhere or evaluated. +So logically you obtain read-write access to a cell by naming the +authority by which you claim access, in this case the poll context. +In this case it really is naming rather than accessing since the +checks are done at compile time and the address that `cx` represents +doesn't actually get passed anywhere or evaluated, once inlining and +optimisation is complete. ## 🤔 Frequently Asked Questions ### **What are the morals of the story?** -The main problem is that Niklaus has got used to a safer environment -and it feels dangerous to go back to RefCell and have to -manually-verify that his cell borrows are panic-free. +The main problem is that Barbara has got used to a safer environment +and it feels dangerous to go back to RefCell and have to manually +verify that her cell borrows are panic-free. ### **What are the sources for this story?** @@ -126,18 +255,14 @@ futures. ### **Why did you choose *NAME* to tell this story?** -Niklaus seems to be the wildcard. The main thing is that Niklaus is -claimed to have an unconventional background. So that means he's not -part of the establishment. He's a new programmer to async/await, but -in this interpretation he isn't a new programmer. Maybe he's like -Grace or Barbara, but he doesn't have his thinking limited by any -particular existing conventions or trained methodology. +Barbara has enough Rust knowledge to understand the benefits that +GhostCell/qcell-like borrowing might bring. ### **How would this story have played out differently for the other characters?** The other characters perhaps wouldn't have heard of statically-checked -cell borrows (at least until the recent GhostCell announcement) so -would be unaware of the possibility of things being safer. +cell borrows so would be unaware of the possibility of making things +safer. [character]: ../characters.md [status quo stories]: ./status_quo.md From 54b80d75f8ab550eb3f2ac880a0dfaa4b3deaeb6 Mon Sep 17 00:00:00 2001 From: "Juan J. Jimenez-Anca" Date: Fri, 9 Apr 2021 11:16:40 +0100 Subject: [PATCH 057/347] Update src/vision/status_quo/alan_picks_web_server.md Co-authored-by: Niko Matsakis --- src/vision/status_quo/alan_picks_web_server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_picks_web_server.md b/src/vision/status_quo/alan_picks_web_server.md index 36ad4dae..f9d930ed 100644 --- a/src/vision/status_quo/alan_picks_web_server.md +++ b/src/vision/status_quo/alan_picks_web_server.md @@ -31,7 +31,7 @@ Alan combines the knowledge he has from programming in synchronous Rust and asyn ### First problem: incompatible runtimes -The first problem he runs into is very similar to the one described in [the compiler trust story](https://github.com/rust-lang/wg-async-foundations/blob/master/src/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md#fractured-futures-fractured-trust). +The first problem he runs into is very similar to the one described in [the compiler trust story](alan_started_trusting_the_rust_compiler_but_then_async.md#fractured-futures-fractured-trust). In short, Alan has problems because Tide is based on `std-async` and reqwest on the latest version of `tokio`. This is a real pain for Alan as he has now to change either the http client or the server so that they use the same runtime. From d965d1b7aa3e4892d81e8058e77c361905ffb20a Mon Sep 17 00:00:00 2001 From: Juan Jimenez-Anca Date: Fri, 9 Apr 2021 11:21:34 +0100 Subject: [PATCH 058/347] small changes --- src/vision/status_quo/alan_picks_web_server.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/vision/status_quo/alan_picks_web_server.md b/src/vision/status_quo/alan_picks_web_server.md index f9d930ed..b2ad8bb6 100644 --- a/src/vision/status_quo/alan_picks_web_server.md +++ b/src/vision/status_quo/alan_picks_web_server.md @@ -31,7 +31,7 @@ Alan combines the knowledge he has from programming in synchronous Rust and asyn ### First problem: incompatible runtimes -The first problem he runs into is very similar to the one described in [the compiler trust story](alan_started_trusting_the_rust_compiler_but_then_async.md#fractured-futures-fractured-trust). +The first problem he runs into is very similar to the one described in [the compiler trust story](alan_started_trusting_the_rust_compiler_but_then_async.md#fractured-futures-fractured-trust): `thread 'main' panicked at 'there is no reactor running, must be called from the context of a Tokio 1.x runtime`. In short, Alan has problems because Tide is based on `std-async` and reqwest on the latest version of `tokio`. This is a real pain for Alan as he has now to change either the http client or the server so that they use the same runtime. @@ -39,7 +39,7 @@ He decides to switch to Actix web. ### Second problem: incompatible versions of the same runtime -Alan does all the changes and again the compiler seems to be happy. To his surprise, the same problem happens again. The program panics with the message `there is no reactor running, must be called from the context of a Tokio 1.x runtime`. He is utterly puzzled as Actix web is based on Tokio just like reqwest. +Alan migrates to Actix web and again the compiler seems to be happy. To his surprise, the same problem happens again. The program panics with the message as before: `there is no reactor running, must be called from the context of a Tokio 1.x runtime`. He is utterly puzzled as Actix web is based on Tokio just like reqwest. Didn't he just fixed problem number 1? It turns out that the issue is that Alan's using v0.11.2 of reqwest, which uses tokio v1, and v3.3.2 of actix-web, which uses tokio v0.3. @@ -52,8 +52,7 @@ This experience has made Alan think twice about whether Rust is indeed web ready ## 🤔 Frequently Asked Questions ### **What are the morals of the story?** -* Rust's ecosystem has a lot of great components that may individually be ready for the web, but combining them is still a fraught proposition. It can also be confusing to web developers that are new to Rust, who may struggle with the idea that before picking a web server, they have to pick an async runtime. -* In a typical web server project, dependencies that use async features form an intricate web which is hard to decipher for both new and seasoned Rust developers. Alan picked Tide and reqwest, only to realise later that they are not compatible. How many more situations like this will he face? Can Alan be confident that it won't happen again? +* Rust's ecosystem has a lot of great components that may individually be ready for the web, but combining them is still a fraught proposition. In a typical web server project, dependencies that use async features form an intricate web which is hard to decipher for both new and seasoned Rust developers. Alan picked Tide and reqwest, only to realise later that they are not compatible. How many more situations like this will he face? Can Alan be confident that it won't happen again? New users especially are not accustomed to having to think about what "runtime" they are using, since there is usually not a choice in the matter. * The situation is so complex that it's not enough knowing that all dependencies use the same runtime. They all have to actually be compatible with the same runtime **and** version. Newer versions of reqwest are incompatible with the latest stable version of actix web (verified at the time of writing) * Developers that need a stable environment may be fearful of the complexity that comes with managing async dependencies in Rust. For example, if reqwest had a security or bug fix in one of the latest versions that's not backported to older ones, Alan would not be able to upgrade because actix web is holding him back. He has in fact to wait until **ALL** dependencies are using the same runtime to apply fixes and upgrades. From ce6a1735482c3186eb537301cb57dce929d13d91 Mon Sep 17 00:00:00 2001 From: Jim Peters Date: Fri, 9 Apr 2021 11:02:02 -0500 Subject: [PATCH 059/347] Expand story and motivation, and explain terms better --- .../barbara_wants_to_use_ghostcell.md | 60 +++++++++++++++---- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/src/vision/status_quo/barbara_wants_to_use_ghostcell.md b/src/vision/status_quo/barbara_wants_to_use_ghostcell.md index 263deacf..83423046 100644 --- a/src/vision/status_quo/barbara_wants_to_use_ghostcell.md +++ b/src/vision/status_quo/barbara_wants_to_use_ghostcell.md @@ -15,18 +15,58 @@ status quo story][htvsq]! ## The story -Barbara quite likes using statically-checked cell borrowing. This is -implemented in various ways in -[GhostCell](http://plv.mpi-sws.org/rustbelt/ghostcell/) and -[`qcell`](https://docs.rs/qcell/0.4.1/qcell/). She would like to use -statically-checked cell borrowing within futures, but there is no way -to get the owner borrow through the `Future::poll` call. - -So she is forced to use `RefCell` instead and be very careful not to -cause panics. This seems like a step back. It feels dangerous to use -`RefCell` and to have to manually verify that her cell borrows are +Barbara quite likes using statically-checked cell borrowing. "Cell" +in Rust terminology refers to types like `Cell` or `RefCell` that +enable interior mutability, i.e. modifying or mutably borrowing stuff +even if you've only got an immutable reference to it. +Statically-checked cell borrowing is a technique whereby one object +(an "owner") acts as a gatekeeper for borrow-access to a set of other +objects ("cells"). So if you have mutable borrow access to the owner, +you can temporarily transfer that mutable borrow access to a cell in +order to modify it. This is all checked at compile-time, hence +"statically-checked". + +In comparison `RefCell` does borrow-checking, but it is checked at +runtime and it will panic if you make a coding mistake. The advantage +of statically-checked borrowing is that it cannot panic at runtime, +i.e. all your borrowing bugs show up at compile time. The history +goes way back, and the technique has been reinvented at least 2-3 +times as far as Barbara is aware. This is implemented in various +forms in [GhostCell](http://plv.mpi-sws.org/rustbelt/ghostcell/) and +[`qcell`](https://docs.rs/qcell/0.4.1/qcell/). + +Barbara would like to use statically-checked cell borrowing within +futures, but there is no way to get the owner borrow through the +`Future::poll` call, i.e. there is no argument or object that the +runtime could save the borrow in. Mostly this does not cause a +problem, because there are other ways for a runtime to share data, +e.g. data can be incorporated into the future when it is created. +However in this specific case, for the specific technique of +statically-checked cell borrows, we need an active borrow to the owner +to be passed down the call stack through all the poll calls. + +So Barbara is forced to use `RefCell` instead and be very careful not +to cause panics. This seems like a step back. It feels dangerous to +use `RefCell` and to have to manually verify that her cell borrows are panic-free. +There are good habits that you can adopt to offset the dangers of +course. If you are very careful to make sure that you call no other +method or function which might in turn call code which might attempt +to get another borrow on the same cell, then the `RefCell::borrow_mut` +panics can be avoided. However this is easy to overlook, and it is +easy to fail to anticipate what indirect calls will be made by a given +call, and of course this may change later on due to maintenance and +new features. A borrow may stay active longer than expected, so calls +which appear safe might actually panic. Sometimes it's necessary to +manually drop the borrow to be sure. In addition you'll never know +what indirect calls might be made until all the possible code-paths +have been explored, either through testing or through running in +production. + +So Barbara prefers to avoid all these problems, and use +statically-checked cell borrowing where possible. + ### The mechanism Barbara understands that statically-checked cell borrows work by From ca5a118f90e78ab12bc37535e8cd2d13bd2461d3 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Fri, 9 Apr 2021 12:11:52 -0400 Subject: [PATCH 060/347] Update src/vision/status_quo/alan_picks_web_server.md Co-authored-by: Ryan Levick --- src/vision/status_quo/alan_picks_web_server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_picks_web_server.md b/src/vision/status_quo/alan_picks_web_server.md index b2ad8bb6..6c3eaa6b 100644 --- a/src/vision/status_quo/alan_picks_web_server.md +++ b/src/vision/status_quo/alan_picks_web_server.md @@ -39,7 +39,7 @@ He decides to switch to Actix web. ### Second problem: incompatible versions of the same runtime -Alan migrates to Actix web and again the compiler seems to be happy. To his surprise, the same problem happens again. The program panics with the message as before: `there is no reactor running, must be called from the context of a Tokio 1.x runtime`. He is utterly puzzled as Actix web is based on Tokio just like reqwest. Didn't he just fixed problem number 1? +Alan migrates to Actix web and again the compiler seems to be happy. To his surprise, the same problem happens again. The program panics with the message as before: `there is no reactor running, must be called from the context of a Tokio 1.x runtime`. He is utterly puzzled as Actix web is based on Tokio just like reqwest. Didn't he just fix problem number 1? It turns out that the issue is that Alan's using v0.11.2 of reqwest, which uses tokio v1, and v3.3.2 of actix-web, which uses tokio v0.3. From b52d49368bd13043841676cce1b2a350e3fb6674 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Fri, 9 Apr 2021 13:39:02 -0400 Subject: [PATCH 061/347] Add concrete numbers for how much %time went into malloc and memcpy --- src/vision/status_quo/alan_iteratively_regresses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index cbed2178..30e26507 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -38,7 +38,7 @@ Alan is disappointed; his experience has been that Rust code performs great, (at The DDSplit service is being developed on a Linux machine, so Alan is able use the `perf` tool to gather sampling-based profiling data the async/await port of DDSplit. -Looking at a [flamegraph][] for the call stacks, Alan identified many calls into the memory allocator, and many calls to `memcpy`. +Looking at a [flamegraph][] for the call stacks, Alan identified two sources of execution time overhead that he did not expect: calls into the memory allocator (`malloc`) with about 1% of the execution time, and calls to move values in memory (`memcpy`), with about 8% of execution time. [flamegraph]: https://crates.io/crates/flamegraph From f62bc9ad01ec63a8573ace93824e816be4663819 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Fri, 9 Apr 2021 13:41:19 -0400 Subject: [PATCH 062/347] Refine the text a bit about the switch to focusing on memcpy. --- src/vision/status_quo/alan_iteratively_regresses.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index 30e26507..f7d57397 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -48,9 +48,9 @@ Alan asks Barbara whether the problem could be caused by the tokio executor. Bar Alan and Barbara look at the `perf` data. They find the output of `perf report` difficult to navigate and interpret. The data has stack trace fragments available, which gives them a few hints to follow up on. But when they try to make `perf report` annotate the original source, `perf` only shows disassembled machine code, not the original Rust source code. Alan and Barbara both agree that trying to dissect the problem from the machine code is not an attractive strategy. -For the memory allocator issues, Barbara recommends that Alan try to eliminate the allocation calls and if they cannot be eliminated, then that Alan try tuning the parameters for the global memory allocator, or even switching which global memory allocator he is using. Alan looks at Barbara in despair: his time tweaking GC settings on the Java Virtual Machine taught him that allocator tuning is often a black art. +Alan asks Barbara what she thinks about the `malloc` calls in the profile. Barbara recommends that Alan try to eliminate the allocation calls, and if they cannot be eliminated, then that Alan try tuning the parameters for the global memory allocator, or even switching which global memory allocator he is using. Alan looks at Barbara in despair: his time tweaking GC settings on the Java Virtual Machine taught him that allocator tuning is often a black art. -Barbara suggests that they investigate where the calls to `memcpy` are arising. From the call stacks in `perf report`, Alan and Barbara decide to skim over the source code files for the corresponding functions. +Barbara suggests that they investigate where the calls to `memcpy` are arising, since they look like a larger source of overhead based on the profile data. From the call stacks in `perf report`, Alan and Barbara decide to skim over the source code files for the corresponding functions. Upon seeing `#[async_trait]` in Alan's source code, Barbara recommends that if performance is a concern, then Alan should avoid `#[async_trait]`. She explains that `#[async_trait]` [transforms][async-trait transform] a trait's async methods into methods that return `Pin>`, and the overhead that injects that will be hard to diagnose and impossible to remove. When Alan asks what other options he could adopt, Barbara thinks for a moment, and says he could make an enum that carries all the different implementations of the code. Alan says he'll consider it, but in the meantime he wants to see how far they can improve the code while keeping `#[async_trait]`. From 5d7dc2c89f08a63dd6b51a5d14cfd0b3a0947d04 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Fri, 9 Apr 2021 13:41:28 -0400 Subject: [PATCH 063/347] address review nit: remove template text. --- src/vision/status_quo/alan_iteratively_regresses.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index f7d57397..968f19c5 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -66,8 +66,6 @@ However, there remains a significant performance delta between the Java version ## 🤔 Frequently Asked Questions -*Here are some standard FAQ to get you started. Feel free to add more!* - ### **What are the morals of the story?** 1. Rust promises great performance, but when performance is not meeting one's targets, it is hard to know what to do next. Rust mostly leans on leveraging existing tools for native code development, but those tools are (a.) foreign to many of our developers, (b.) do not always measure up to what our developers have access to elsewhere, (c.) do not integrate as well with Rust as they might with C or C++. From bcce67bcda80282f1bd96744055d4b87176a88f4 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Fri, 9 Apr 2021 13:43:11 -0400 Subject: [PATCH 064/347] Add links to specific Java profiling tools Alan has used in the past. --- src/vision/status_quo/alan_iteratively_regresses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index 968f19c5..3163b430 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -88,7 +88,7 @@ Discussions with engineers at Amazon Web Services. I chose Alan because he is used to Java, where these issues play out differently. -Java has very mature tooling, including for performance investigations. Alan is frustrated by his attempts to use (or even identify) equivalent tools for Rust. +Java has very mature tooling, including for performance investigations. Alan has used [JProfiler](https://www.ej-technologies.com/products/jprofiler/overview.html) at his work, and [VisualVM](https://visualvm.github.io/) for personal hobby projects. Alan is frustrated by his attempts to use (or even identify) equivalent tools for Rust. With respect to memory traffic: In Java, every object is handled via a reference, and those references are cheap to copy. (One pays for that convenience in other ways, of course.) From 250646b0a7334f5a5e849c3a5ac36bf31eed9114 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Fri, 9 Apr 2021 13:44:45 -0400 Subject: [PATCH 065/347] incorporate suggestion from review, to reflect that Grace probably would have made same mistake. --- src/vision/status_quo/alan_iteratively_regresses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index 3163b430..f200de85 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -95,7 +95,7 @@ With respect to memory traffic: In Java, every object is handled via a reference ### **How would this story have played out differently for the other characters?** -From her C and C++ background, [Grace][] probably would avoid letting her types get so large. But then again, C and C++ do not have enums with a payload, so even Grace may have fallen in the same trap that Alan did (of assuming that the cost of moving an enum value is proportional to its current variant, rather than to its type's overall size). +From her C and C++ background, [Grace][] probably would avoid letting her types get so large. But then again, C and C++ do not have enums with a payload, so Grace would likely have fallen in the same trap that Alan did (of assuming that the cost of moving an enum value is proportional to its current variant, rather than to its type's overall size). [Barbara][] probably would have added direct instrumentation via the `tracing` crate, potentially even to tokio itself, rather than spend much time wrestling with `perf`. From 5b656fc3c9b0d7ceda09fd75135519bca021fc66 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Fri, 9 Apr 2021 13:55:21 -0400 Subject: [PATCH 066/347] Expanded Grace's variant by pointing out that she might have more informed complaints about perf. --- src/vision/status_quo/alan_iteratively_regresses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_iteratively_regresses.md b/src/vision/status_quo/alan_iteratively_regresses.md index f200de85..3ad99757 100644 --- a/src/vision/status_quo/alan_iteratively_regresses.md +++ b/src/vision/status_quo/alan_iteratively_regresses.md @@ -95,7 +95,7 @@ With respect to memory traffic: In Java, every object is handled via a reference ### **How would this story have played out differently for the other characters?** -From her C and C++ background, [Grace][] probably would avoid letting her types get so large. But then again, C and C++ do not have enums with a payload, so Grace would likely have fallen in the same trap that Alan did (of assuming that the cost of moving an enum value is proportional to its current variant, rather than to its type's overall size). +From her C and C++ background, [Grace][] probably would avoid letting her types get so large. But then again, C and C++ do not have enums with a payload, so Grace would likely have fallen in the same trap that Alan did (of assuming that the cost of moving an enum value is proportional to its current variant, rather than to its type's overall size). Also, Grace might report that her experience with gcc-based projects yielded programs that worked better with `perf`, due in part to gcc producing higher quality DWARF debuginfo. [Barbara][] probably would have added direct instrumentation via the `tracing` crate, potentially even to tokio itself, rather than spend much time wrestling with `perf`. From 88a3714954db30905250ef87f60b16835ad17242 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Fri, 9 Apr 2021 15:50:40 -0400 Subject: [PATCH 067/347] PR 100 put this file in the wrong place. --- src/vision/{ => status_quo}/grace_waits_for_gdb_next.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/vision/{ => status_quo}/grace_waits_for_gdb_next.md (100%) diff --git a/src/vision/grace_waits_for_gdb_next.md b/src/vision/status_quo/grace_waits_for_gdb_next.md similarity index 100% rename from src/vision/grace_waits_for_gdb_next.md rename to src/vision/status_quo/grace_waits_for_gdb_next.md From 4e15675f5f6cb436120c8e0ba32639075406226f Mon Sep 17 00:00:00 2001 From: Felix S Klock II Date: Fri, 9 Apr 2021 16:11:10 -0400 Subject: [PATCH 068/347] fix a typo (omitted word) and clarified text --- src/vision/status_quo/alan_finds_database_drops_hard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_finds_database_drops_hard.md b/src/vision/status_quo/alan_finds_database_drops_hard.md index 884e7696..7b34fc1b 100644 --- a/src/vision/status_quo/alan_finds_database_drops_hard.md +++ b/src/vision/status_quo/alan_finds_database_drops_hard.md @@ -64,7 +64,7 @@ async fn do_the_thing() -> Result<(), sqlx::Error> { } ``` -He observes that in the cases where he has the problem the log statement never executes. He asks Barbara for help and she points him to [this gist](https://gist.github.com/Matthias247/ffc0f189742abf6aa41a226fe07398a8) that explains how `await` can be canceled and it will the destructors for things that are in scope. He reads the [source for the SqliteConnection destructor](https://github.com/launchbadge/sqlx/blob/0ed524d65c2a3ee2e2a6706910b85bf2bb72115f/sqlx-core/src/pool/connection.rs#L70-L74) and finds that destructor spawns a task to actually close the connection. +He observes that in the cases where he has the problem the log statement never executes. He asks Barbara for help and she points him to [this gist](https://gist.github.com/Matthias247/ffc0f189742abf6aa41a226fe07398a8) that explains how `await` can be canceled, and cancellation will invoke the destructors for things that are in scope. He reads the [source for the SqliteConnection destructor](https://github.com/launchbadge/sqlx/blob/0ed524d65c2a3ee2e2a6706910b85bf2bb72115f/sqlx-core/src/pool/connection.rs#L70-L74) and finds that destructor spawns a task to actually close the connection. He realizes there is a race condition and the task may not have actually closed the connection before `do_the_thing` is called a second time. At this point, he is feeling pretty frustrated! From e1eb84ef7f942e3bd66da9a42f1292e72a32439c Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Sat, 10 Apr 2021 02:09:28 -0400 Subject: [PATCH 069/347] first draft of barbara_makes_a_wish --- .../shiny_future/barbara_makes_a_wish.md | 162 ++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 src/vision/shiny_future/barbara_makes_a_wish.md diff --git a/src/vision/shiny_future/barbara_makes_a_wish.md b/src/vision/shiny_future/barbara_makes_a_wish.md new file mode 100644 index 00000000..7185f482 --- /dev/null +++ b/src/vision/shiny_future/barbara_makes_a_wish.md @@ -0,0 +1,162 @@ +# ✨ Shiny future stories: Barbara makes a wish + +## 🚧 Warning: Draft status 🚧 + +This is a draft "shiny future" story submitted as part of the brainstorming period. It is a speculative sketch of what life might be like in 2 to 3 years, if things go well. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' dreams, status quo stories [cannot be wrong], only unclear or over-ambitious). Alternatively, you may wish to [add your own shiny future story][htvsf]! + +## The story + +[Barbara] has an initial prototype of a new service she wrote in sync Rust. She then decides, since the service is extremely I/O bound, to port it to async Rust and her benchmarks have led her to believe that performance is being left on the table. + +She does this by sprinkling `async/.await` everywhere, picking an executor, and moving dependencies from sync to async. + +Once she has the program compiling, she thinks "oh that was easy". She runs it for the first time and surprisingly she finds out that when hitting an endpoint, nothing happens. + +Barbara, always prepared, has already added logging to her service and she checks the logs. As she expected, she sees here that the endpoint handler has been invoked but then... nothing. Barbara exclaims, "Oh no! This was not what I was expecting, but let's dig deeper." + +She checks the code and sees that the endpoint spawns several tasks, but unfortunately those tasks don't have much logging in them. + +Barbara now remembers hearing something about an `wish4-async-insight` crate, which has gotten some buzz on her Rust-related social media channels. She decides to give that a shot. + +She adds the crate as a dependency to her `Cargo.toml`, renaming it to just `insight` to make it easier to reference in her code, and then initializes it in her main async function. + +```rust,ignore +async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { + insight::init(); // new code + ... +} +``` + +Barbara rebuilds and run her program again. She doesn't see anything different in the terminal output for the program itself though, and the behavior is the same as before: hitting an endpoint, nothing happens. She double-checks the readme for the `async-executor-insight` crate, and realizes that she needs to connect other programs to her service to observe the insights being gathered. Barbara decides that she wants to customize the port that `insight` is listening on before she starts her experiments with those programs. + +```rust,ignore +async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { + insight::init(listen_port => 8080); // new code, leveraging keyword arguments feature added in 2024 + ... +} +``` + +While her code rebuilds, Barbara investigates what programs she might use to connect to the insight crate. + +One such program, `consolation`, can run in the terminal. Barbara is currently just deploying her service locally on her development box, so she opts to try that out and see what it tells her. + +``` +% rustup install wish4-consolation +... +% consolation --port 8080 +``` + +This brings up a terminal window that looks similar to the Unix `top` program, except that instead of a list of OS processes, this offers a list of tasks, with each task having a type, ID, and status history (i.e. percentage of time spent in running, ready to poll, or blocked). Barbara skims the output in the list, and sees that one task is listed as currently blocked. + +Barbara taps the arrow-keys and sees that this causes a cursor to highlight different tasks in the list. She highlights the blocked task and hits the Enter key. This cause the terminal to switch to a Task view, describing more details about that task and its status. + +The Task view here says that the task is blocked, references a file and line number, and also includes the line from the source code, which says `chan.send(value).await`. The blocked task also lists the resources that the task is waiting on: `prototype_channel`, and next to that there is text on a dark red background: "waiting on channel capacity." Again, Barbara taps the arrow-keys and sees that she can select the line for the resource. + +Barbara notices that this whole time, at the bottom of the terminal, there was a line that says "For help, hit `?` key"; she taps question mark. This brings up a help message in a scrollable subwindow explaining the task view in general, sa well as link to online documentation. The help message notes that the user can follow the chain: One can go from the blocked task to the resource its waiting on, and from that resource to a list of tasks responsible for freeing up the resource. + +Barbara hits the Escape key to close the help window. The highlight is still on the line that says "prototype_channel: waiting on channel capacity"; Barbara hits Enter, and this brings up a list with just one task on it: The channel reader task. Barbara realizes what this is saying: The channel resource is blocking the sender because it is full, and the only way that can be resolved is if the channel reader manages to receive some inputs from the channel. + +Barbara opens the help window again, and brings up the link to the online documentation. There, she sees discussion of resource starvation and the specific case of a bounded channel being filled up before its receiver makes progress. The main responses outlined there are 1. decrease the send rate, 2. increase the receive rate, or 3. increase the channel's internal capacity, noting the extreme approach of changing to an unbounded channel (with the caveat that this risks resource exhaustion). + +Barbara skims the task view for the channel reader, since she wants to determine why it is not making progress. However, she is eager to see if her service as a whole is workable apart from this issue, so she also adopts the quick fix of swapping in an unbounded channel. Barbara is betting that if this works, she can use the data from `wish4-async-insight` about the channel sizes to put a bounded channel with an appropriate size in later. + +### Alternate History + +The original status quo story just said that Barbara's problem was resolved (sort of) by switching to an unbounded channel. I, much like Barbara, could not tell *why* this resolved her problem. In particular, I could not tell whether there was an outright deadlock due to a cycle in the task-resource dependency chain that, or if there something more subtle happening. In the story above, I assumed it was the second case: something subtle. + +Here's an important alternate history though, for the first case of a cycle. Its the same story, right up to when Barbara first runs `consolation`: + +``` +% rustup install wish4-consolation +... +% consolation --port 8080 +``` + +This brings up a terminal window that looks similar to the Unix `top` program, except that instead of a list of OS processes, this offers a list of tasks, and shows their status (i.e. running, ready to poll, or blocked), as well as some metrics about how long the tasks spend in each state. + +At the top of the screen, Barbara sees highlighted warnin: "deadlock cycle was detected. hit `P` for more info." + +Barbara types capital `P`. The terminal switches to "problem view," which shows + + * The task types, ID, and attributes for each type. + * The resources being awaited on + * The location / backtrace of the await. + * A link to a documentation page expanding on the issue. + +The screen also says "hit `D` to generate a graphviz `.dot` file to disk describing the cycle." + +Barbara hits `D` and stares at the resulting graph. + +Barbara suddenly realizes her mistake: She had constructed a single task that was sometimes enqueuing work (by sending messages on the channel), and sometimes dequeuing work, but she had not put any controls into place to ensure that the dequeuing (via `recv`) would get prioritized as the channel filled up. + + +## 🤔 Frequently Asked Questions + +### **What status quo story or stories are you retelling?** + +[Barbara wants Async Insights](../status_quo/barbara_wants_async_insights.md) + +### **What is [Alan] most excited about in this future? Is he disappointed by anything?** + +Alan is happy to see a tool that gives one a view into the internals of the async executor. + +Alan is not so thrilled about using the `consolation` terminal interface; but luckily there are other options, namely a web-browser based client that offers even richer functionality, such as renderings of the task/resource dependency graph. + +### **What is [Grace] most excited about in this future? Is she disappointed by anything?** + +Grace is happy to see a tool, but wonders whether it could have been integrated into `gdb`. + +Grace is not so thrilled to learn that this tool is not going to try to provide specific insight into performance issues that arise solely from computational overheads in her own code. (The readme for `wish4-async-insight` says on this matter "for that, use perf," which Grace finds unsatisfying.) + +### **What is [Niklaus] most excited about in this future? Is he disappointed by anything?** + +Niklaus is happy to learn that the `wish4-async-insight` is supported by both `async-std` and `tokio`, since he relies on friends in both communities to help him learn more about Async Rust. + +Niklaus is happy about the tool's core presentation oriented around abstractions he understands (tasks and resources). Niklaus is also happy about the integrated help. + +However, Niklaus is a little nervous about some of the details in the output that he doesn't understand. + +### **What is [Barbara] most excited about in this future? Is she disappointed by anything?** + +Barbara is thrilled with + +*Think about Barbara's top priority (productivity, maintenance over time) and the expectations she brings (fits well with Rust). How do they fare in this future?* + +### **What [projects] benefit the most from this future?** + +Any async codebase that can hook into the `wish4-async-insight` crate and supply its data via a network port during development would benefit from this. So, I suspect any codebase that uses a sufficiently popular (i.e. appropriately instrumented) async executor will benefit. + +The main exception I can imagine right now is [MonsterMesh][]: its resource constraints and `#![no_std]` environment are almost certainly incompatible with the needs of the `wish4-async-insight` crate. + +### **Are there any [projects] that are hindered by this future?** + +The only "hindrance" is that the there is an expectation that the async-executor be instrumented appropriately to feed its data to the `wish4-async-insight` crate once it is initialized. + +### **What are the incremental steps towards realizing this shiny future?** (Optional) + + * Get tracing crate to 1.0 so that async executors can rely on it. + + * Prototype an insight console atop a concrete async executor (e.g. `tokio`) + + * Develop a shared protocol atop `tracing` that all async executors will use to provide the insightful data. + +### **Does realizing this future require cooperation between many projects?** (Optional) + +Yes. Yes it does. + +At the very least, as mentioned among the "incremental steps", we will need a common protocol that the async executors use to communicate their internal state. + + +[character]: ../characters.md +[comment]: ./comment.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsf]: ../how_to_vision/shiny_future.md +[projects]: ../projects.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade +[MonsterMesh]: ../projects/MonsterMesh.md \ No newline at end of file From c59353800083b4a0bcae161163807309643dbe0d Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Sat, 10 Apr 2021 02:18:43 -0400 Subject: [PATCH 070/347] italicize meta-commentary in the story. --- src/vision/shiny_future/barbara_makes_a_wish.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vision/shiny_future/barbara_makes_a_wish.md b/src/vision/shiny_future/barbara_makes_a_wish.md index 7185f482..7474cc6e 100644 --- a/src/vision/shiny_future/barbara_makes_a_wish.md +++ b/src/vision/shiny_future/barbara_makes_a_wish.md @@ -64,9 +64,9 @@ Barbara skims the task view for the channel reader, since she wants to determine ### Alternate History -The original status quo story just said that Barbara's problem was resolved (sort of) by switching to an unbounded channel. I, much like Barbara, could not tell *why* this resolved her problem. In particular, I could not tell whether there was an outright deadlock due to a cycle in the task-resource dependency chain that, or if there something more subtle happening. In the story above, I assumed it was the second case: something subtle. +*The original status quo story just said that Barbara's problem was resolved (sort of) by switching to an unbounded channel. I, much like Barbara, could not tell *why* this resolved her problem. In particular, I could not tell whether there was an outright deadlock due to a cycle in the task-resource dependency chain that, or if there something more subtle happening. In the story above, I assumed it was the second case: something subtle.* -Here's an important alternate history though, for the first case of a cycle. Its the same story, right up to when Barbara first runs `consolation`: +*Here's an important alternate history though, for the first case of a cycle. Its ...* the same story, right up to when Barbara first runs `consolation`: ``` % rustup install wish4-consolation From 6368a4631a97c92fbfff70821d3207d35f140053 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Sat, 10 Apr 2021 02:19:18 -0400 Subject: [PATCH 071/347] typo. --- src/vision/shiny_future/barbara_makes_a_wish.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/shiny_future/barbara_makes_a_wish.md b/src/vision/shiny_future/barbara_makes_a_wish.md index 7474cc6e..46b89207 100644 --- a/src/vision/shiny_future/barbara_makes_a_wish.md +++ b/src/vision/shiny_future/barbara_makes_a_wish.md @@ -76,7 +76,7 @@ Barbara skims the task view for the channel reader, since she wants to determine This brings up a terminal window that looks similar to the Unix `top` program, except that instead of a list of OS processes, this offers a list of tasks, and shows their status (i.e. running, ready to poll, or blocked), as well as some metrics about how long the tasks spend in each state. -At the top of the screen, Barbara sees highlighted warnin: "deadlock cycle was detected. hit `P` for more info." +At the top of the screen, Barbara sees highlighted warning: "deadlock cycle was detected. hit `P` for more info." Barbara types capital `P`. The terminal switches to "problem view," which shows From 9a7cfdfb523986a6befd32cb39f6b7fd086f0e3f Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Sat, 10 Apr 2021 02:28:56 -0400 Subject: [PATCH 072/347] Add some nice conclusions to the two branches of the story. --- src/vision/shiny_future/barbara_makes_a_wish.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vision/shiny_future/barbara_makes_a_wish.md b/src/vision/shiny_future/barbara_makes_a_wish.md index 46b89207..0498e1fc 100644 --- a/src/vision/shiny_future/barbara_makes_a_wish.md +++ b/src/vision/shiny_future/barbara_makes_a_wish.md @@ -62,6 +62,8 @@ Barbara opens the help window again, and brings up the link to the online docume Barbara skims the task view for the channel reader, since she wants to determine why it is not making progress. However, she is eager to see if her service as a whole is workable apart from this issue, so she also adopts the quick fix of swapping in an unbounded channel. Barbara is betting that if this works, she can use the data from `wish4-async-insight` about the channel sizes to put a bounded channel with an appropriate size in later. +Barbara happily moves along to some initial performance analysis of her "working" code, eager to see what other things `wish4-async-insight` will reveal during her explorations. + ### Alternate History *The original status quo story just said that Barbara's problem was resolved (sort of) by switching to an unbounded channel. I, much like Barbara, could not tell *why* this resolved her problem. In particular, I could not tell whether there was an outright deadlock due to a cycle in the task-resource dependency chain that, or if there something more subtle happening. In the story above, I assumed it was the second case: something subtle.* @@ -91,6 +93,8 @@ Barbara hits `D` and stares at the resulting graph. Barbara suddenly realizes her mistake: She had constructed a single task that was sometimes enqueuing work (by sending messages on the channel), and sometimes dequeuing work, but she had not put any controls into place to ensure that the dequeuing (via `recv`) would get prioritized as the channel filled up. +Barbara reflects on the matter: she knows that she could swap in an unbounded channel to resolve this, but she think that she would be better off thinking a bit more about her system design, to see if she can figure out a way to supply back-pressure so that the send rate will go down as the channel fills up. + ## 🤔 Frequently Asked Questions From 87643f7694eea037b773726761e5e43fdd74e6a6 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Sat, 10 Apr 2021 02:38:39 -0400 Subject: [PATCH 073/347] fix typo in my proposed change to template warning. --- src/vision/shiny_future/barbara_makes_a_wish.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/shiny_future/barbara_makes_a_wish.md b/src/vision/shiny_future/barbara_makes_a_wish.md index 0498e1fc..5b4e4b29 100644 --- a/src/vision/shiny_future/barbara_makes_a_wish.md +++ b/src/vision/shiny_future/barbara_makes_a_wish.md @@ -4,7 +4,7 @@ This is a draft "shiny future" story submitted as part of the brainstorming period. It is a speculative sketch of what life might be like in 2 to 3 years, if things go well. -If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' dreams, status quo stories [cannot be wrong], only unclear or over-ambitious). Alternatively, you may wish to [add your own shiny future story][htvsf]! +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' dreams, shiny future stories [cannot be wrong], only unclear or over-ambitious). Alternatively, you may wish to [add your own shiny future story][htvsf]! ## The story From a64f8ac2aebb91af36ad9c634727352ffad636e1 Mon Sep 17 00:00:00 2001 From: Felix S Klock II Date: Sat, 10 Apr 2021 10:43:05 -0400 Subject: [PATCH 074/347] Apply suggestions from code review Lots of typos fixed, thanks everyone! Co-authored-by: Ibraheem Ahmed --- src/vision/shiny_future/barbara_makes_a_wish.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/vision/shiny_future/barbara_makes_a_wish.md b/src/vision/shiny_future/barbara_makes_a_wish.md index 5b4e4b29..006fb4e2 100644 --- a/src/vision/shiny_future/barbara_makes_a_wish.md +++ b/src/vision/shiny_future/barbara_makes_a_wish.md @@ -18,7 +18,7 @@ Barbara, always prepared, has already added logging to her service and she check She checks the code and sees that the endpoint spawns several tasks, but unfortunately those tasks don't have much logging in them. -Barbara now remembers hearing something about an `wish4-async-insight` crate, which has gotten some buzz on her Rust-related social media channels. She decides to give that a shot. +Barbara now remembers hearing something about a `wish4-async-insight` crate, which has gotten some buzz on her Rust-related social media channels. She decides to give that a shot. She adds the crate as a dependency to her `Cargo.toml`, renaming it to just `insight` to make it easier to reference in her code, and then initializes it in her main async function. @@ -29,7 +29,7 @@ async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { } ``` -Barbara rebuilds and run her program again. She doesn't see anything different in the terminal output for the program itself though, and the behavior is the same as before: hitting an endpoint, nothing happens. She double-checks the readme for the `async-executor-insight` crate, and realizes that she needs to connect other programs to her service to observe the insights being gathered. Barbara decides that she wants to customize the port that `insight` is listening on before she starts her experiments with those programs. +Barbara rebuilds and runs her program again. She doesn't see anything different in the terminal output for the program itself though, and the behavior is the same as before: hitting an endpoint, nothing happens. She double-checks the readme for the `async-executor-insight` crate, and realizes that she needs to connect other programs to her service to observe the insights being gathered. Barbara decides that she wants to customize the port that `insight` is listening on before she starts her experiments with those programs. ```rust,ignore async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { @@ -50,11 +50,11 @@ One such program, `consolation`, can run in the terminal. Barbara is currently j This brings up a terminal window that looks similar to the Unix `top` program, except that instead of a list of OS processes, this offers a list of tasks, with each task having a type, ID, and status history (i.e. percentage of time spent in running, ready to poll, or blocked). Barbara skims the output in the list, and sees that one task is listed as currently blocked. -Barbara taps the arrow-keys and sees that this causes a cursor to highlight different tasks in the list. She highlights the blocked task and hits the Enter key. This cause the terminal to switch to a Task view, describing more details about that task and its status. +Barbara taps the arrow-keys and sees that this causes a cursor to highlight different tasks in the list. She highlights the blocked task and hits the Enter key. This causes the terminal to switch to a Task view, describing more details about that task and its status. The Task view here says that the task is blocked, references a file and line number, and also includes the line from the source code, which says `chan.send(value).await`. The blocked task also lists the resources that the task is waiting on: `prototype_channel`, and next to that there is text on a dark red background: "waiting on channel capacity." Again, Barbara taps the arrow-keys and sees that she can select the line for the resource. -Barbara notices that this whole time, at the bottom of the terminal, there was a line that says "For help, hit `?` key"; she taps question mark. This brings up a help message in a scrollable subwindow explaining the task view in general, sa well as link to online documentation. The help message notes that the user can follow the chain: One can go from the blocked task to the resource its waiting on, and from that resource to a list of tasks responsible for freeing up the resource. +Barbara notices that this whole time, at the bottom of the terminal, there was a line that says "For help, hit `?` key"; she taps question mark. This brings up a help message in a scrollable subwindow explaining the task view in general as well as link to online documentation. The help message notes that the user can follow the chain: One can go from the blocked task to the resource it's waiting on, and from that resource to a list of tasks responsible for freeing up the resource. Barbara hits the Escape key to close the help window. The highlight is still on the line that says "prototype_channel: waiting on channel capacity"; Barbara hits Enter, and this brings up a list with just one task on it: The channel reader task. Barbara realizes what this is saying: The channel resource is blocking the sender because it is full, and the only way that can be resolved is if the channel reader manages to receive some inputs from the channel. @@ -93,7 +93,7 @@ Barbara hits `D` and stares at the resulting graph. Barbara suddenly realizes her mistake: She had constructed a single task that was sometimes enqueuing work (by sending messages on the channel), and sometimes dequeuing work, but she had not put any controls into place to ensure that the dequeuing (via `recv`) would get prioritized as the channel filled up. -Barbara reflects on the matter: she knows that she could swap in an unbounded channel to resolve this, but she think that she would be better off thinking a bit more about her system design, to see if she can figure out a way to supply back-pressure so that the send rate will go down as the channel fills up. +Barbara reflects on the matter: she knows that she could swap in an unbounded channel to resolve this, but she thinks that she would be better off thinking a bit more about her system design, to see if she can figure out a way to supply back-pressure so that the send rate will go down as the channel fills up. ## 🤔 Frequently Asked Questions @@ -163,4 +163,4 @@ At the very least, as mentioned among the "incremental steps", we will need a co [htvsf]: ../how_to_vision/shiny_future.md [projects]: ../projects.md [cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade -[MonsterMesh]: ../projects/MonsterMesh.md \ No newline at end of file +[MonsterMesh]: ../projects/MonsterMesh.md From 2b7ba20bb36f433476691923c6db598ad6a87b1d Mon Sep 17 00:00:00 2001 From: Emmanuel Antony Date: Sun, 11 Apr 2021 18:06:30 +0530 Subject: [PATCH 075/347] Changes made based on review --- .../status_quo/barbara_needs_async_helpers.md | 112 +++++++++++++++--- 1 file changed, 93 insertions(+), 19 deletions(-) diff --git a/src/vision/status_quo/barbara_needs_async_helpers.md b/src/vision/status_quo/barbara_needs_async_helpers.md index 1ccbee38..b959dbbc 100644 --- a/src/vision/status_quo/barbara_needs_async_helpers.md +++ b/src/vision/status_quo/barbara_needs_async_helpers.md @@ -8,28 +8,91 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee ## The story -[Barbara], an experienced Rust user, is prototyping an async Rust service for work. To get things working quickly, she decides to prototype in tokio, since it is unclear which runtime her work will use. - -She starts adding warp and tokio to her dependencies list. She notices that warp suggests using tokio with the `full` feature. She's a bit concerned about how this might affect the compile times and also that *all* of tokio is needed for her little project, but she pushes forward. - -As she builds out functionality, she's pleased to see tokio provides a bunch of helpers like `join!` and async versions of the standard library types like channels and mutexes. - -After completing one endpoint, she moves to a new one which requires streaming http responses to the client. Barbara quickly finds out that tokio does not provide a stream type, and so she adds `tokio-stream` to her dependencies. - -Moving on she tries to make some functions generic over the web framework underneath, so she tries to abstract off the functionality to a trait. But Rust doesn't support async functions in traits yet, so she adds `async_trait` to her dependencies. - -Some of her functions are recursive, so to make them async she starts boxing her futures. Then she learns about `async-recursion` and then adds it to the dependencies. - -Her stream implementation needed `pin_project` so she brings that also as a dependency. - -"Finally!", Barbara says, breathing a sigh of relief. She is done with her prototype, and shows it off at work, but to her dismay, the team decides that tokio is not an appropriate runtime for their use case. Barbara's heart skips a beat. "Oh no, what to do now," she thinks. +[Barbara], an experienced Rust user, is prototyping an async Rust service for work. To get things working quickly, she decides to prototype in [`tokio`], since it is unclear which runtime her work will use. + +She starts adding warp and [`tokio`] to her dependencies list. She notices that [`warp`] [suggests](https://github.com/seanmonstar/warp/#example) using [`tokio`] with the `full` feature. She's a bit concerned about how this might affect the compile times and also that *all* of tokio is needed for her little project, but she pushes forward. + +As she builds out functionality, she's pleased to see tokio provides a bunch of helpers like [`join!`](https://docs.rs/tokio/1.4.0/tokio/macro.join.html) and async versions of the standard library types like channels and mutexes. + +After completing one endpoint, she moves to a new one which requires streaming http responses to the client. Barbara quickly finds out from [`tokio`] [docs](https://docs.rs/tokio/1.4.0/tokio/stream/index.html), that it does not provide a stream type, and so she adds [`tokio-stream`] to her dependencies. + +Moving on she tries to make some functions generic over the web framework underneath, so she tries to abstract off the functionality to a trait. So she writes an async function inside a trait, just like a normal function. + +```rust +trait Client { + async fn get(); +} +``` + +Then she gets a helpful error message. + +``` +error[E0706]: functions in traits cannot be declared `async` + --> src/lib.rs:2:5 + | +2 | async fn get(); + | -----^^^^^^^^^^ + | | + | `async` because of this + | + = note: `async` trait functions are not currently supported + = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait +``` + +She then realizes that Rust doesn't support async functions in traits yet, so she adds [`async-trait`] to her dependencies. + +Some of her functions are recursive, and she wanted them to be async functions, so she sprinkles some `async/.await` keywords in those functions. + +```rust +async fn sum(n: usize) -> usize { + if n == 0 { + 0 + } else { + n + sum(n - 1).await + } +} +``` + +Then she gets an error message. + +``` +error[E0733]: recursion in an `async fn` requires boxing + --> src/lib.rs:1:27 + | +1 | async fn sum(n: usize) -> usize { + | ^^^^^ recursive `async fn` + | + = note: a recursive `async fn` must be rewritten to return a boxed `dyn Future` +``` + +So to make these functions async she starts boxing her futures. She also asks one of her peers for a code review asynchronously, and after awaiting their response, she learns about the [`async-recursion`] crate. Then she adds [`async-recursion`] to the dependencies. + +As she is working, she realizes that what she really needs is to write a `Stream` of data. She starts trying to write her `Stream` implementation and spends several hours banging her head against her desk in frustration (her challenges are pretty similar to what [Alan experienced](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_hates_writing_a_stream.html)). Ultimately she's stuck trying to figure out why her `&mut self.foo` call is giving her errors: + +``` +error[E0277]: `R` cannot be unpinned + --src/main.rs:52:26 + | +52 | Pin::new(&mut self.reader).poll_read(cx, buf) + | ^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `R` + | + = note: required by `Pin::

::new` +help: consider further restricting this bound + | +40 | R: AsyncRead + Unpin, + | ^^^^^^^ +``` + +Fortunately, that weekend, [@fasterthanlime](https://github.com/fasterthanlime) publishes a [blog post](https://fasterthanli.me/articles/pin-and-suffering) covering the gory details of `Pin`. Reading that post, she learns about [`pin-project`], which she adds as a dependency. She's able to get her code working, but it's kind of a mess. Feeling quite proud of herself, she shows it to a friend, and they suggest that maybe she ought to try the [`async-stream`] crate. Reading that, she realizes she can use this crate to simplify some of her streams, though not all of them fit. + +"Finally!", Barbara says, breathing a sigh of relief. She is done with her prototype, and shows it off at work, but to her dismay, the team decides that they need to use a custom runtime for their use case. They're building an embedded system and it has relatively limited resources. Barbara thinks, "No problem, it should be easy enough to change runtimes, right?" So now Barbara starts the journey of replacing tokio with a myriad of off the shelf and custom helpers. She can't use warp so now she has to find an alternative. She also has to find a new channel implementations and there are a few: -* In `futures` -* `async-std` has one, but it seems to be tied to another runtime so she can't use that. -* `smol` has one that is independent. +* In [`futures`] +* [`async-std`] has one, but it seems to be tied to another runtime so she can't use that. +* [`smol`] has one that is independent. -This process of "figure out which alternative is an option" is repeated many times. She also tries to use the `select!` macro from `futures` but it requires more pinning and workarounds (and then her stack overflows). +This process of "figure out which alternative is an option" is repeated many times. She also tries to use the [`select!`](https://docs.rs/futures/0.3.14/futures/macro.select.html) macro from [`futures`] but it requires more pinning and workarounds (not to mention a [stack overflow](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_runs_into_stack_trouble.html) or two). But Barbara fights through all of it. In the end, she gets it to work, but she realizes that she has a ton of random dependencies and associated compilation time. She wonders if all that dependencies will have a negative effect on the binary size. She also had to rewrite some bits of functionality on her own. @@ -62,3 +125,14 @@ Other characters may not know all their options and hence might have fewer probl [Barbara]: ../characters/barbara.md [htvsq]: ../how_to_vision/status_quo.md [cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade + +[`tokio`]: https://crates.io/crates/tokio/ +[`tokio-stream`]: https://crates.io/crates/tokio-stream/ +[`futures`]: https://crates.io/crates/futures/ +[`async-recursion`]: https://crates.io/crates/async-recursion/ +[`async-trait`]: https://crates.io/crates/async-trait/ +[`async-stream`]: https://crates.io/crates/async-stream/ +[`async-std`]: https://crates.io/crates/async-std/ +[`pin-project`]: https://crates.io/crates/pin-project/ +[`smol`]: https://crates.io/crates/smol/ +[`warp`]: https>//crates.io/crates/warp/ From 94276155e0a97a1b41d63188764b2545a4994115 Mon Sep 17 00:00:00 2001 From: Jim Peters Date: Sun, 11 Apr 2021 18:14:32 -0500 Subject: [PATCH 076/347] Add examples to story section --- .../barbara_wants_to_use_ghostcell.md | 103 +++++++++++++++++- 1 file changed, 101 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/barbara_wants_to_use_ghostcell.md b/src/vision/status_quo/barbara_wants_to_use_ghostcell.md index 83423046..c25a086f 100644 --- a/src/vision/status_quo/barbara_wants_to_use_ghostcell.md +++ b/src/vision/status_quo/barbara_wants_to_use_ghostcell.md @@ -50,7 +50,7 @@ to cause panics. This seems like a step back. It feels dangerous to use `RefCell` and to have to manually verify that her cell borrows are panic-free. -There are good habits that you can adopt to offset the dangers of +There are good habits that you can adopt to offset the dangers, of course. If you are very careful to make sure that you call no other method or function which might in turn call code which might attempt to get another borrow on the same cell, then the `RefCell::borrow_mut` @@ -67,6 +67,105 @@ production. So Barbara prefers to avoid all these problems, and use statically-checked cell borrowing where possible. + +### Example 1: Accessing an object shared outside the runtime + +In this minimized example of code to interface a stream to code +outside of the async/await system, the buffer has to be accessible +from both the stream and the outside code, so it is handled as a +`Rc>>`. + +```rust +pub struct StreamPipe { + buf: Rc>>, +} + +impl Stream for StreamPipe { + type Item = T; + + fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> { + let mut buf = self.buf.borrow_mut(); + if let Some(item) = buf.value.take() { + return Poll::Ready(Some(item)); + } + if buf.end { + return Poll::Ready(None); + } + self.req_more(); // Callback to request more data + Poll::Pending + } +} +``` + +Probably `req_more()` has to schedule some background operation, but +if it doesn't and attempts to modify the shared `buf` immediately then +we get a panic, because `buf` is still borrowed. The real life code +could be a lot more complicated, and the required combination of +conditions might be harder to hit in testing. + +With statically-checked borrowing, the borrow would be something like +`let mut buf = self.buf.rw(cx);`, and the `req_more` call would either +have to take the `cx` as an argument (forcing the previous borrow to +end) or would not take `cx`, meaning that it would always have to +defer the access to the buffer to other code, because without the `cx` +there is no possible way to access the buffer. + + +### Example 2: Shared monitoring data + +In this example, the app keeps tallies of various things in a +`Monitor` structure. This might be data in/out, number of errors +detected, maybe a hashmap of current links, etc. Since it is accessed +from various components, it is kept behind an `Rc>`. + +```rust +// Dependency: futures-lite = "1.11.3" +use std::cell::RefCell; +use std::rc::Rc; + +fn main() { + let monitor0 = Rc::new(RefCell::new(Monitor { count: 0 })); + let monitor1 = monitor0.clone(); + + let fut0 = async move { + let mut borrow = monitor0.borrow_mut(); + borrow.count += 1; + }; + + let fut1 = async move { + let mut borrow = monitor1.borrow_mut(); + borrow.count += 1; + fut0.await; + }; + + futures_lite::future::block_on(fut1); +} + +struct Monitor { + count: usize, +} +``` + +The problem is that this panics with a borrowing error because the +borrow is still active when the `fut0.await` executes and attempts +another borrow. The solution is to remember to drop the borrow before +awaiting. + +In this example code the bug is obvious, but in real life maybe `fut0` +only borrows in rare situations, e.g. when an error is detected. Or +maybe the future that borrows is several calls away down the +callstack. + +With statically-checked borrowing, there is a slight problem in that +currently there is no way to access the poll context from `async {}` +code. But if there was then the borrow would be something like `let +mut borrow = monitor1.rw(cx);`, and since the `fut0.await` implicitly +requires the `cx` in order to poll, the borrow would be forced to end +at that point. + + +## Further investigation by Barbara + ### The mechanism Barbara understands that statically-checked cell borrows work by @@ -293,7 +392,7 @@ verify that her cell borrows are panic-free. The author of Stakker is trying to interface it to async/await and futures. -### **Why did you choose *NAME* to tell this story?** +### **Why did you choose Barbara to tell this story?** Barbara has enough Rust knowledge to understand the benefits that GhostCell/qcell-like borrowing might bring. From c741cce300a551f1d37a0394dad2088301edb816 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 11 Apr 2021 19:21:30 -0400 Subject: [PATCH 077/347] Update src/vision/status_quo/alan_tries_a_socket_sink.md --- src/vision/status_quo/alan_tries_a_socket_sink.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md index f4a3eaa4..19c4209e 100644 --- a/src/vision/status_quo/alan_tries_a_socket_sink.md +++ b/src/vision/status_quo/alan_tries_a_socket_sink.md @@ -50,7 +50,12 @@ async fn rpc_ws_handler(ws_stream: WebSocketConnection) { } ``` -This is necessary because both sides of the stream are stateful iterators, and if they're kept as one, the lock on the receiver can't be released within the loop. He's seen this pattern used in other projects in the Rust community, but is frustrated to find that the `Sink` trait wasn't implemented in the WebSockets middleware library he's using. +The `split` method splits the `ws_stream` into two separate halves: + + * a producer (`ws_sender`) that implements a `Stream` with the messages arriving on the websocket; + * a consumer (`ws_receiver`) that implements `Sink`, which can be used to send responses. + + This way, one task can pull items from the `ws_sender` and spawn out subtasks. Those subtasks share access to the `ws_receiver` and send messages there when they're done. Unfortunately, Alan finds that he can't use this pattern here, as the `Sink` trait wasn't implemented in the WebSockets middleware library he's using. Alan also tries creating a sort of poller worker thread using an intermediary messaging channel, but he has trouble reasoning about the code and wasn't able to get it to compile: From 8d36b676b048d4fe2e063c9f95c97f09e0e2c813 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 11 Apr 2021 20:09:11 -0400 Subject: [PATCH 078/347] add new status quo stories to SUMMARY.md --- src/SUMMARY.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index c9d6453e..2d4c1d8d 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -25,11 +25,14 @@ - [Template](./vision/status_quo/template.md) - [Alan finds dropping database handles is hard](./vision/status_quo/alan_finds_database_drops_hard.md) - [Alan hates writing a `Stream`](./vision/status_quo/alan_hates_writing_a_stream.md) + - [Alan iteratively regresses performance](./vision/status_quo/alan_iteratively_regresses.md) - [Alan lost the world](./vision/status_quo/alan_lost_the_world.md) + - [Alan wants to migrate a web server to Rust](./vision/status_quo/alan_picks_web_server.md) - [Alan runs into stack trouble](./vision/status_quo/alan_runs_into_stack_trouble.md) - [Alan started trusting the Rust compiler, but then... async](./vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md) - [Alan tries to debug a hang](./vision/status_quo/alan_tries_to_debug_a_hang.md) - [Alan writes a web framework](./vision/status_quo/alan_writes_a_web_framework.md) + - [Barbara anguishes over HTTP](./vision/status_quo/barbara_anguishes_over_http.md) - [Barbara carefully dismisses embedded `Future`](./vision/status_quo/barbara_carefully_dismisses_embedded_future.md) - [Barbara makes their first foray into async](./vision/status_quo/barbara_makes_their_first_steps_into_async.md) - [Barbara plays with async](./vision/status_quo/barbara_plays_with_async.md) @@ -39,6 +42,7 @@ - [Grace deploys her service and hits obstacles](./vision/status_quo/grace_deploys_her_service.md) - [Grace tries new libraries](./vision/status_quo/grace_tries_new_libraries.md) - [Grace wants to integrate a C-API](./vision/status_quo/grace_wants_to_integrate_c_api.md) + - [Grace waits for gdb next](./vision/status_quo/grace_waits_for_gdb_next.md) - [Niklaus wants to share knowledge](./vision/status_quo/niklaus_wants_to_share_knowledge.md) - [✨ Shiny future](./vision/shiny_future.md) - [Template](./vision/shiny_future/template.md) From d81d9eb58d583bce03eb09ac2533b75c46d1e5e2 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 11 Apr 2021 20:41:04 -0400 Subject: [PATCH 079/347] add missing header to status quo story --- src/vision/status_quo/grace_waits_for_gdb_next.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/vision/status_quo/grace_waits_for_gdb_next.md b/src/vision/status_quo/grace_waits_for_gdb_next.md index 1228cb24..c1839fe4 100644 --- a/src/vision/status_quo/grace_waits_for_gdb_next.md +++ b/src/vision/status_quo/grace_waits_for_gdb_next.md @@ -1,3 +1,5 @@ +# Status quo: Grace waits for gdb next + ## 🚧 Warning: Draft status 🚧 This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. From b11494ff628ccb85cb798d0ba0147fde8cc5af8b Mon Sep 17 00:00:00 2001 From: Erich Ess Date: Mon, 12 Apr 2021 10:04:51 -0400 Subject: [PATCH 080/347] Rewrote several sections to improve the clarity of the story --- .../status_quo/barbara_simulates_hydrodynamics.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/vision/status_quo/barbara_simulates_hydrodynamics.md b/src/vision/status_quo/barbara_simulates_hydrodynamics.md index b81105f6..c116b185 100644 --- a/src/vision/status_quo/barbara_simulates_hydrodynamics.md +++ b/src/vision/status_quo/barbara_simulates_hydrodynamics.md @@ -17,14 +17,11 @@ Her first attempt to was to emulate a common CFD design pattern: using message p This solution was fine, but Barbara was not satisified. She had two problems with it: first, she didn't like that the design would greedily use all the resources on the machine and, second, when her team added a new feature (tracer particles) that increased the complexity of how patches interact with each other and the number of messages that were passsed between threads increased to the point that it became a performance bottleneck and parallel processing became no faster than serial processing. So, Barbara decided to find a better solution. ### Solution Path -What Barbara wanted to do was find a way to more efficiently use threads: have a fixed number of threads that each mapped to a core on the CPU and assign patches to those threads as patches became ready to compute. The `async` feature seemed to provide exactly that behavior. And to move away from the message passing design, because the number of messages being passed was proportional to the number of trace particles being traced. +What Barbara wanted use the CPU more efficiently: she would decouple the work that needed to be done (the patches) from the workers (threads) this would allow her to more finely control how many resources were used. So, she began looking for a tool in Rust that would meet this design pattern. When she read about `async` and how it allowed the user to define units of work, called tasks, and send those to an executor which would manage the execution of those tasks across a set of workers, she thought she'd found exactly what she needed. Further reading indicate that `tokio` was the runtime of choice for `async` in the community and so she began building a new CFD tool with `async` and `tokio`. And to move away from the message passing design, because the number of messages being passed was proportional to the number of trace particles being traced. -As Barbara began working on her new design with `tokio`, her use of `async` went from a general (from the textbook) use of basic `async` features to a more specific implementation leveraging exactly the features that were most suited for her needs. - -At first, Barbara was under a false impression about what async executors do. She had assumed that a multi-threaded executor could automatically move the execution of an async block to a worker thread. Then she discovered that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Barbara feels that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. - -In order to remove the need for message passing, Barbara moved to a shared state design: she would keep a table tracking the solution state for every grid patch and a specific patch would only start its computation task when solutions were written for all the patches it was dependent on. So, each task needs to access the table with the solution results of all the other tasks. Learning how to properly use shared data with `async` was a new challenge. The initial design: +As Barbara began working on her new design with `tokio`, her use of `async` went from a general (from the textbook) use of basic `async` features to a more specific implementation leveraging exactly the features that were most suited for her needs. At first, Barbara was under a false impression about what async executors do. She had assumed that a multi-threaded executor could automatically move the execution of an async block to a worker thread. When this turned out to wrong, she went to Stackoverflow and learned that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Barbara felt that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. +Along with moving the execution of the computational tasks to `async`, Barbara also used this as an opportunity to remove the message passing that was used to coordinate the computation of each patch. She used the `async` API to define dependencies between patches so that a patch would only begin computing its solution when its neighboring patches had completed. This also required setting up shared state that would store the solutions for all the patches as they were computed, so that dependents could access them. Learning how to properly use shared data with `async` was a new challenge. The initial design: ```rust let mut stage_primitive_and_scalar = |index: BlockIndex, state: BlockState, hydro: H, geometry: GridGeometry| { let stage = async move { @@ -43,9 +40,9 @@ Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) ) ``` And she could not figure out why she had to add the `::<_, HydroError>` to some of the `Result` values. -Once her team began using the new `async` design for their simulations, they noticed an important issue that impacted productivity: compilation time had now increased to between 30 and 60 seconds. The nature of their work requires frequent changes to code and recompilation and 30-60 seconds is long enough to have a noticeable impact on their quality of life. What her and her team want is for compilation to be 2 to 3 seconds. Barbara believes that the use of `async` is a major contributor to the long compilation times. +Finally, once her team began using the new `async` design for their simulations, they noticed an important issue that impacted productivity: compilation time had now increased to between 30 and 60 seconds. The nature of their work requires frequent changes to code and recompilation and 30-60 seconds is long enough to have a noticeable impact on their quality of life. What her and her team want is for compilation to be 2 to 3 seconds. Barbara believes that the use of `async` is a major contributor to the long compilation times. -This new solution works, but Barbara is not satisfied with how complex her code wound up becoming with the move to `async` and the fact that compilation time is now 30-60 seconds. The state sharing adding a large amount of cruft with `Arc` and `async` is not well suited for using a dependency graph to schedule tasks so implementing this solution created a key component of her program that was difficult to understand and pervasive. Ultimately, her conclusion was that `async` is not appropriate for parallelizing computational tasks. She will be trying a new design based upon Rayon in the next version of her application. +This new solution works, but Barbara is not satisfied with how complex her code became after the move to `async` and that compilation time is now 30-60 seconds. The state sharing adding a large amount of cruft with `Arc` and `async` is not well suited for using a dependency graph to schedule tasks so implementing this solution created a key component of her program that was difficult to understand and pervasive. Ultimately, her conclusion was that `async` is not appropriate for parallelizing computational tasks. She will be trying a new design based upon Rayon in the next version of her application. ## 🤔 Frequently Asked Questions From 228d178de146f66f3aad79996a0e92073bd07459 Mon Sep 17 00:00:00 2001 From: Zeeshan Ali Date: Thu, 8 Apr 2021 23:07:21 +0200 Subject: [PATCH 081/347] Fix a typo --- src/vision/status_quo/alan_tries_to_debug_a_hang.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_tries_to_debug_a_hang.md b/src/vision/status_quo/alan_tries_to_debug_a_hang.md index 99bd572e..c4980bc6 100644 --- a/src/vision/status_quo/alan_tries_to_debug_a_hang.md +++ b/src/vision/status_quo/alan_tries_to_debug_a_hang.md @@ -130,7 +130,7 @@ Disgruntled, Alan begins the arduous, boring task of instrumenting the applicati * Some of the characters with either a background in Rust or a background in systems programming might know that Rust's async doesn't always map to an underlying system feature and so they might expect that `gdb` or `lldb` is unable to help them. * Barbara, the experienced Rust dev, might also have used a tracing/instrumentation library from the beginning and have that to fall back on rather than having to do the work to add it now. -[character]: ../characters.md +[characters]: ../characters.md [status quo stories]: ./status_quo.md [Alan]: ../characters/alan.md [Grace]: ../characters/grace.md From de6660f9d4e4db027ba8c5240edf79c457d4ab2a Mon Sep 17 00:00:00 2001 From: Zeeshan Ali Date: Thu, 8 Apr 2021 23:07:47 +0200 Subject: [PATCH 082/347] status-quo story: Alan needs async in traits Result of the async traits session held on Apr 8, 2021. --- src/SUMMARY.md | 1 + .../status_quo/alan_needs_async_in_traits.md | 110 ++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 src/vision/status_quo/alan_needs_async_in_traits.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 2d4c1d8d..3c35de1e 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -32,6 +32,7 @@ - [Alan started trusting the Rust compiler, but then... async](./vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md) - [Alan tries to debug a hang](./vision/status_quo/alan_tries_to_debug_a_hang.md) - [Alan writes a web framework](./vision/status_quo/alan_writes_a_web_framework.md) + - [Alan needs async in traits](./vision/status_quo/alan_needs_async_in_traits.md) - [Barbara anguishes over HTTP](./vision/status_quo/barbara_anguishes_over_http.md) - [Barbara carefully dismisses embedded `Future`](./vision/status_quo/barbara_carefully_dismisses_embedded_future.md) - [Barbara makes their first foray into async](./vision/status_quo/barbara_makes_their_first_steps_into_async.md) diff --git a/src/vision/status_quo/alan_needs_async_in_traits.md b/src/vision/status_quo/alan_needs_async_in_traits.md new file mode 100644 index 00000000..e60169d3 --- /dev/null +++ b/src/vision/status_quo/alan_needs_async_in_traits.md @@ -0,0 +1,110 @@ +# 😱 Status quo stories: Alan needs async in traits + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +Alan is working on a project with Barbara which has already gotten off to a [somewhat rocky start](./barbara_anguishes_over_http.md). He is working on abstracting away the HTTP implementation the library uses so that users can provide their own. He wants the user to implement an async trait called `HttpClient` which has one method `perform(request: Request) -> Response`. Alan tries to create the async trait: + +```rust +trait HttpClient { + async fn perform(request: Request) -> Response; +} +``` + +When Alan tries to compile this, he gets an error: + +``` + --> src/lib.rs:2:5 + | +2 | async fn perform(request: Request) -> Response; + | -----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | | + | `async` because of this + | + = note: `async` trait functions are not currently supported + = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait +``` + +Alan, who has been using Rust for a little while now, has learned to follow compiler error messages and adds `async-trait` to his `Cargo.toml`. Alan follows the README of `async-trait` and comes up with the following code: + +```rust +#[async_trait] +trait HttpClient { + async fn perform(request: Request) -> Response; +} +``` + +Alan's code now compiles, but he also finds that his compile times have gone from under a second to around 6s, at least for a clean build. + +After Alan finishes adding the new trait, he shows his work off to Barbara and mentions he's happy with the work but is a little sad that compile times have worsened. Barbara, an experienced Rust developer, knows that using `async-trait` comes with some additional issues. In this particular case she is especially worried about tying their public API to a third-party dependency. Even though it is technically possible to implement traits annotated with `async_trait` without using `async_trait`, doing so in practice is very painful. For example `async_trait`: + +* handles lifetimes for you if the returned future is tied to the lifetime of some inputs. +* boxes and pins the futures for you. + +which the implementer will have to manually handle if they don't use `async_trait`. She decides to not worry Alan with this right now. Alan and Barbara are pretty happy with the results and go on to publish their crate which gets lots of users. + +Later on, a potential user of the library wants to use their library in a `no_std` context where they will be providing a custom HTTP stack. Alan and Barbara have done a pretty good job of limiting the use of standard library features and think it might be possible to support this use case. However, they quickly run into a show stopper: `async-trait` boxes all of the futures returned from a async trait function. They report this to Alan through an issue. + +Alan, feeling (over-) confident in his Rust skills, decides to try to see if he can implement async traits without using `async-trait`. + +```rust +trait HttpClient { + type Response: Future; + + fn perform(request: Request) -> Self::Response; +} +``` + +Alan seems to have something working, but when he goes to update the examples of how to implement this trait in his crate's documentation, he realizes that he either needs to: + +* use trait object: + + ```rust + struct ClientImpl; + + impl HttpClient for ClientImpl { + type Response = Pin>>; + + fn perform(request: Request) -> Self::Response { + Box::pin(async move { + // Some async work here creating Reponse + }) + } + } + ``` + + which wouldn't work for `no_std`. + +* implement `Future` trait manually, which isn't particulary easy/straight-forward for non-trivial cases, especially if it involves making other async calls (likely). + +After a lot of thinking and discussion, Alan and Barbara accept that they won't be able to support `no_std` users of their library and add mention of this in crate documentation. + +## 🤔 Frequently Asked Questions + +### **What are the morals of the story?** + +* `async-trait` is awesome, but has some drawbacks + * compile time increases + * performance cost of boxing and dynamic dispatch + * not a standard solution so when this comes to language, it might break things +* Trying to have a more efficient implementation than `async-trait` is likely not possible. + +### **What are the sources for this story?** + +* [Zeeshan](https://github.com/zeenix/) is looking for a way to implement async version of the [service-side zbus API](https://docs.rs/zbus/1.9.1/zbus/trait.Interface.html). +* [Ryan](https://github.com/rylev) had to use `async-trait` in an internal project. + +### **Why did you choose Alan to tell this story?** + +We could have used Barbara here but she'd probably know some of the work-arounds (likely even the details on why they're needed) and wouldn't need help so it wouldn't make for a good story. Having said that, Barbara is involved in the story still so it's not a pure Alan story. + +### **How would this story have played out differently for the other characters?** + +* Barbara: See above. +* Grace: Probably won't know the solution to these issues much like Alan, but might have an easier time understanding the **why** of the whole situation. +* Niklaus: would be lost - traits are somewhat new themselves. This is just more complexity, and Niklaus might not even know where to go for help (outside of compiler errors). From 144075e6527ebccc6fa409da8bee4edec7d9c5bf Mon Sep 17 00:00:00 2001 From: Erich Ess Date: Mon, 12 Apr 2021 10:36:41 -0400 Subject: [PATCH 083/347] Improving clarity of the story --- src/vision/status_quo/barbara_simulates_hydrodynamics.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vision/status_quo/barbara_simulates_hydrodynamics.md b/src/vision/status_quo/barbara_simulates_hydrodynamics.md index c116b185..11000ec0 100644 --- a/src/vision/status_quo/barbara_simulates_hydrodynamics.md +++ b/src/vision/status_quo/barbara_simulates_hydrodynamics.md @@ -8,13 +8,13 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee ## The story ### Problem -Barbara needed to build a tool to solve hydrodynamics simulations; there is a common method for this that subdivides a region into a grid and computes the solution for each grid patch. All the patches in a grid for a point in time are independent and can be computed in parallel, but they are dependent on neighboring patches in the previously computed frame in time. This is a well known computational model and the patterns for basic parallelization are well established. +Barbara is a professor of physics at the University of Rustville. She needed to build a tool to solve hydrodynamics simulations; there is a common method for this that subdivides a region into a grid and computes the solution for each grid patch. All the patches in a grid for a point in time are independent and can be computed in parallel, but they are dependent on neighboring patches in the previously computed frame in time. This is a well known computational model and the patterns for basic parallelization are well established. -Barabara wanted to write a performant tool to compute the solutions to the simulations of her research. She chose Rust because she was already familiar with it and it had good qualities for writing performant code. After implementing the core mathematical formulas, Barbara began implementing the parallelization architecture. +Barabara wanted to write a performant tool to compute the solutions to the simulations of her research. She chose Rust because she needed high performance but she also wanted something that could be maintained by her students, who are not professional programmers. Rust's safety guarantees giver he confidence that her results are not going to be corrupted by data races or other programming errors. After implementing the core mathematical formulas, Barbara began implementing the parallelization architecture. Her first attempt to was to emulate a common CFD design pattern: using message passing to communicate between processes that are each assigned a specific patch in the grid. So she assign one thread to each patch and used messages to communicate solution state to dependent patches. With one thread per patch this usually meant that there were 5-10x more threads than CPU cores. -This solution was fine, but Barbara was not satisified. She had two problems with it: first, she didn't like that the design would greedily use all the resources on the machine and, second, when her team added a new feature (tracer particles) that increased the complexity of how patches interact with each other and the number of messages that were passsed between threads increased to the point that it became a performance bottleneck and parallel processing became no faster than serial processing. So, Barbara decided to find a better solution. +This solution worked, but Barbara had two problems with it. First, it gave her no control over CPU usage so the solution would greedily use all available CPU resources. Second, using messages to communicate solution values between patches did not scale when her team added a new feature (tracer particles) that added additional solution data the additional messages caused by this change created so much overhead that parallel processing was no faster than serial. So, Barbara decided to find a better solution. ### Solution Path What Barbara wanted use the CPU more efficiently: she would decouple the work that needed to be done (the patches) from the workers (threads) this would allow her to more finely control how many resources were used. So, she began looking for a tool in Rust that would meet this design pattern. When she read about `async` and how it allowed the user to define units of work, called tasks, and send those to an executor which would manage the execution of those tasks across a set of workers, she thought she'd found exactly what she needed. Further reading indicate that `tokio` was the runtime of choice for `async` in the community and so she began building a new CFD tool with `async` and `tokio`. And to move away from the message passing design, because the number of messages being passed was proportional to the number of trace particles being traced. From b1cf2ee3895ce088abe8efd459582037f5506bc2 Mon Sep 17 00:00:00 2001 From: Erich Ess Date: Mon, 12 Apr 2021 10:43:12 -0400 Subject: [PATCH 084/347] Improving clarity of the story --- src/vision/status_quo/barbara_simulates_hydrodynamics.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vision/status_quo/barbara_simulates_hydrodynamics.md b/src/vision/status_quo/barbara_simulates_hydrodynamics.md index 11000ec0..61ef0dea 100644 --- a/src/vision/status_quo/barbara_simulates_hydrodynamics.md +++ b/src/vision/status_quo/barbara_simulates_hydrodynamics.md @@ -17,11 +17,11 @@ Her first attempt to was to emulate a common CFD design pattern: using message p This solution worked, but Barbara had two problems with it. First, it gave her no control over CPU usage so the solution would greedily use all available CPU resources. Second, using messages to communicate solution values between patches did not scale when her team added a new feature (tracer particles) that added additional solution data the additional messages caused by this change created so much overhead that parallel processing was no faster than serial. So, Barbara decided to find a better solution. ### Solution Path -What Barbara wanted use the CPU more efficiently: she would decouple the work that needed to be done (the patches) from the workers (threads) this would allow her to more finely control how many resources were used. So, she began looking for a tool in Rust that would meet this design pattern. When she read about `async` and how it allowed the user to define units of work, called tasks, and send those to an executor which would manage the execution of those tasks across a set of workers, she thought she'd found exactly what she needed. Further reading indicate that `tokio` was the runtime of choice for `async` in the community and so she began building a new CFD tool with `async` and `tokio`. And to move away from the message passing design, because the number of messages being passed was proportional to the number of trace particles being traced. +To address the first problem: Barbara would decouple the work that needed to be done (solving each patch) from the workers (threads) this would allow her to more finely control how many resources were used. So, she began looking for a tool in Rust that would meet this design pattern. When she read about `async` and how it allowed the user to define units of work, called tasks, and send those to an executor which would manage the execution of those tasks across a set of workers, she thought she'd found exactly what she needed. Further reading indicate that `tokio` was the runtime of choice for `async` in the community and so she began building a new CFD tool with `async` and `tokio`. And to move away from the message passing design, because the number of messages being passed was proportional to the number of trace particles being traced. As Barbara began working on her new design with `tokio`, her use of `async` went from a general (from the textbook) use of basic `async` features to a more specific implementation leveraging exactly the features that were most suited for her needs. At first, Barbara was under a false impression about what async executors do. She had assumed that a multi-threaded executor could automatically move the execution of an async block to a worker thread. When this turned out to wrong, she went to Stackoverflow and learned that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Barbara felt that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. -Along with moving the execution of the computational tasks to `async`, Barbara also used this as an opportunity to remove the message passing that was used to coordinate the computation of each patch. She used the `async` API to define dependencies between patches so that a patch would only begin computing its solution when its neighboring patches had completed. This also required setting up shared state that would store the solutions for all the patches as they were computed, so that dependents could access them. Learning how to properly use shared data with `async` was a new challenge. The initial design: +With the move to `async`, Barbara saw an opportunity to solve her second program. Rather than using message passing to coordinate patch computation, she used the `async` API to define dependencies between patches so that a patch would only begin computing its solution when its neighboring patches had completed. She setup a shared data structure to track the solutions for each patch now that messages would not be passing that data. Learning how to properly use shared data with `async` was a new challenge. The initial design: ```rust let mut stage_primitive_and_scalar = |index: BlockIndex, state: BlockState, hydro: H, geometry: GridGeometry| { let stage = async move { @@ -34,7 +34,7 @@ Along with moving the execution of the computational tasks to `async`, Barbara a ``` lacked performance because she needed to clone the value for every task. So, Barbara switched over to using `Arc` to keep a thread safe RC to the shared data. But this change introduced a lot of `.map` and `.unwrap` function calls, making the code much harder to read. She realized that managing the dependency graph was not intuitive when using `async` for concurrency. -During the move to `async` Barbara ran into a steep learning curve with error handling. The initial version of her design just used `panic!`s to fail the program if an error was encountered, but the stack traces were almost unreadable. She asked her teammate Grace to migrate over to using the `Result` idiom for error handling and Grace found a major inconvenience. The Rust type inference inconsistently breaks when propagating `Result` in `async` blocks. Grace frequently found that she had to specify the type of the error when creating a result value: +A new problem arose during the move to `async`: a steep learning curve with error handling. The initial version of her design used `panic!`s to fail the program if an error was encountered, but the stack traces were almost unreadable. She asked her teammate Grace to migrate over to using the `Result` idiom for error handling and Grace found a major inconvenience. The Rust type inference inconsistently breaks when propagating `Result` in `async` blocks. Grace frequently found that she had to specify the type of the error when creating a result value: ```rust Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) ) ``` From 28e0259c6b518d9b2c8ae837a6a8dede847a6f69 Mon Sep 17 00:00:00 2001 From: Erich Ess Date: Mon, 12 Apr 2021 10:53:59 -0400 Subject: [PATCH 085/347] Switch main character to Niklaus from Barbara --- .../barbara_simulates_hydrodynamics.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/vision/status_quo/barbara_simulates_hydrodynamics.md b/src/vision/status_quo/barbara_simulates_hydrodynamics.md index 61ef0dea..8778815e 100644 --- a/src/vision/status_quo/barbara_simulates_hydrodynamics.md +++ b/src/vision/status_quo/barbara_simulates_hydrodynamics.md @@ -8,20 +8,20 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee ## The story ### Problem -Barbara is a professor of physics at the University of Rustville. She needed to build a tool to solve hydrodynamics simulations; there is a common method for this that subdivides a region into a grid and computes the solution for each grid patch. All the patches in a grid for a point in time are independent and can be computed in parallel, but they are dependent on neighboring patches in the previously computed frame in time. This is a well known computational model and the patterns for basic parallelization are well established. +Niklaus is a professor of physics at the University of Rustville. He needed to build a tool to solve hydrodynamics simulations; there is a common method for this that subdivides a region into a grid and computes the solution for each grid patch. All the patches in a grid for a point in time are independent and can be computed in parallel, but they are dependent on neighboring patches in the previously computed frame in time. This is a well known computational model and the patterns for basic parallelization are well established. -Barabara wanted to write a performant tool to compute the solutions to the simulations of her research. She chose Rust because she needed high performance but she also wanted something that could be maintained by her students, who are not professional programmers. Rust's safety guarantees giver he confidence that her results are not going to be corrupted by data races or other programming errors. After implementing the core mathematical formulas, Barbara began implementing the parallelization architecture. +Niklaus wanted to write a performant tool to compute the solutions to the simulations of his research. He chose Rust because he needed high performance but he also wanted something that could be maintained by his students, who are not professional programmers. Rust's safety guarantees giver him confidence that his results are not going to be corrupted by data races or other programming errors. After implementing the core mathematical formulas, Niklaus began implementing the parallelization architecture. -Her first attempt to was to emulate a common CFD design pattern: using message passing to communicate between processes that are each assigned a specific patch in the grid. So she assign one thread to each patch and used messages to communicate solution state to dependent patches. With one thread per patch this usually meant that there were 5-10x more threads than CPU cores. +His first attempt to was to emulate a common CFD design pattern: using message passing to communicate between processes that are each assigned a specific patch in the grid. So he assign one thread to each patch and used messages to communicate solution state to dependent patches. With one thread per patch this usually meant that there were 5-10x more threads than CPU cores. -This solution worked, but Barbara had two problems with it. First, it gave her no control over CPU usage so the solution would greedily use all available CPU resources. Second, using messages to communicate solution values between patches did not scale when her team added a new feature (tracer particles) that added additional solution data the additional messages caused by this change created so much overhead that parallel processing was no faster than serial. So, Barbara decided to find a better solution. +This solution worked, but Niklaus had two problems with it. First, it gave him no control over CPU usage so the solution would greedily use all available CPU resources. Second, using messages to communicate solution values between patches did not scale when his team added a new feature (tracer particles) the additional messages caused by this change created so much overhead that parallel processing was no faster than serial. So, Niklaus decided to find a better solution. ### Solution Path -To address the first problem: Barbara would decouple the work that needed to be done (solving each patch) from the workers (threads) this would allow her to more finely control how many resources were used. So, she began looking for a tool in Rust that would meet this design pattern. When she read about `async` and how it allowed the user to define units of work, called tasks, and send those to an executor which would manage the execution of those tasks across a set of workers, she thought she'd found exactly what she needed. Further reading indicate that `tokio` was the runtime of choice for `async` in the community and so she began building a new CFD tool with `async` and `tokio`. And to move away from the message passing design, because the number of messages being passed was proportional to the number of trace particles being traced. +To address the first problem: Niklaus would decouple the work that needed to be done (solving each patch) from the workers (threads) this would allow him to more finely control how many resources were used. So, he began looking for a tool in Rust that would meet this design pattern. When he read about `async` and how it allowed the user to define units of work, called tasks, and send those to an executor which would manage the execution of those tasks across a set of workers, he thought he'd found exactly what he needed. Further reading indicate that `tokio` was the runtime of choice for `async` in the community and, so, he began building a new CFD tool with `async` and `tokio`. -As Barbara began working on her new design with `tokio`, her use of `async` went from a general (from the textbook) use of basic `async` features to a more specific implementation leveraging exactly the features that were most suited for her needs. At first, Barbara was under a false impression about what async executors do. She had assumed that a multi-threaded executor could automatically move the execution of an async block to a worker thread. When this turned out to wrong, she went to Stackoverflow and learned that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Barbara felt that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. +As Niklaus began working on his new design with `tokio`, his use of `async` went from a general (from the textbook) use of basic `async` features to a more specific implementation leveraging exactly the features that were most suited for his needs. At first, Niklaus was under a false impression about what `async` executors do. He had assumed that a multi-threaded executor could automatically move the execution of an `async` block to a worker thread. When this turned out to wrong, he went to Stackoverflow and learned that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Niklaus felt that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. -With the move to `async`, Barbara saw an opportunity to solve her second program. Rather than using message passing to coordinate patch computation, she used the `async` API to define dependencies between patches so that a patch would only begin computing its solution when its neighboring patches had completed. She setup a shared data structure to track the solutions for each patch now that messages would not be passing that data. Learning how to properly use shared data with `async` was a new challenge. The initial design: +With the move to `async`, Niklaus saw an opportunity to solve his second program. Rather than using message passing to coordinate patch computation, he used the `async` API to define dependencies between patches so that a patch would only begin computing its solution when its neighboring patches had completed. He setup a shared data structure to track the solutions for each patch now that messages would not be passing that data. Learning how to properly use shared data with `async` was a new challenge. The initial design: ```rust let mut stage_primitive_and_scalar = |index: BlockIndex, state: BlockState, hydro: H, geometry: GridGeometry| { let stage = async move { @@ -32,17 +32,17 @@ With the move to `async`, Barbara saw an opportunity to solve her second program stage_map.insert(index, runtime.spawn(stage).map(|f| f.unwrap()).shared()); }; ``` -lacked performance because she needed to clone the value for every task. So, Barbara switched over to using `Arc` to keep a thread safe RC to the shared data. But this change introduced a lot of `.map` and `.unwrap` function calls, making the code much harder to read. She realized that managing the dependency graph was not intuitive when using `async` for concurrency. +lacked performance because he needed to clone the value for every task. So, Niklaus switched over to using `Arc` to keep a thread safe RC to the shared data. But this change introduced a lot of `.map` and `.unwrap` function calls, making the code much harder to read. He realized that managing the dependency graph was not intuitive when using `async` for concurrency. -A new problem arose during the move to `async`: a steep learning curve with error handling. The initial version of her design used `panic!`s to fail the program if an error was encountered, but the stack traces were almost unreadable. She asked her teammate Grace to migrate over to using the `Result` idiom for error handling and Grace found a major inconvenience. The Rust type inference inconsistently breaks when propagating `Result` in `async` blocks. Grace frequently found that she had to specify the type of the error when creating a result value: +A new problem arose during the move to `async`: a steep learning curve with error handling. The initial version of his design used `panic!`s to fail the program if an error was encountered, but the stack traces were almost unreadable. He asked his teammate Grace to migrate over to using the `Result` idiom for error handling and Grace found a major inconvenience. The Rust type inference inconsistently breaks when propagating `Result` in `async` blocks. Grace frequently found that she had to specify the type of the error when creating a result value: ```rust Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) ) ``` And she could not figure out why she had to add the `::<_, HydroError>` to some of the `Result` values. -Finally, once her team began using the new `async` design for their simulations, they noticed an important issue that impacted productivity: compilation time had now increased to between 30 and 60 seconds. The nature of their work requires frequent changes to code and recompilation and 30-60 seconds is long enough to have a noticeable impact on their quality of life. What her and her team want is for compilation to be 2 to 3 seconds. Barbara believes that the use of `async` is a major contributor to the long compilation times. +Finally, once Niklaus' team began using the new `async` design for their simulations, they noticed an important issue that impacted productivity: compilation time had now increased to between 30 and 60 seconds. The nature of their work requires frequent changes to code and recompilation and 30-60 seconds is long enough to have a noticeable impact on their quality of life. What he and his team want is for compilation to be 2 to 3 seconds. Niklaus believes that the use of `async` is a major contributor to the long compilation times. -This new solution works, but Barbara is not satisfied with how complex her code became after the move to `async` and that compilation time is now 30-60 seconds. The state sharing adding a large amount of cruft with `Arc` and `async` is not well suited for using a dependency graph to schedule tasks so implementing this solution created a key component of her program that was difficult to understand and pervasive. Ultimately, her conclusion was that `async` is not appropriate for parallelizing computational tasks. She will be trying a new design based upon Rayon in the next version of her application. +This new solution works, but Niklaus is not satisfied with how complex his code became after the move to `async` and that compilation time is now 30-60 seconds. The state sharing adding a large amount of cruft with `Arc` and `async` is not well suited for using a dependency graph to schedule tasks so implementing this solution created a key component of his program that was difficult to understand and pervasive. Ultimately, his conclusion was that `async` is not appropriate for parallelizing computational tasks. He will be trying a new design based upon Rayon in the next version of her application. ## 🤔 Frequently Asked Questions @@ -55,7 +55,7 @@ This new solution works, but Barbara is not satisfied with how complex her code This story is based on the experience of building the [kilonova](https://github.com/clemson-cal/app-kilonova) hydrodynamics simulation solver. ### **Why did you choose Barbara and Grace to tell this story?** -I chose Barbara as the primary character in this story because this work was driven by someone with experience in Rust specifically but does not have much systems level experience. Grace was chosen as a supporting character because of that persons experience with C/C++ programming and to avoid repeating characters. +I chose Niklaus as the primary character in this story because this work was driven by someone who only uses programming for a small part of their work. Grace was chosen as a supporting character because of that persons experience with C/C++ programming and to avoid repeating characters. ### **How would this story have played out differently for the other characters?** - Alan: there's a good chance he would have already had experience working with either async workflows in another language or doing parallelization of compute bound tasks; and so would already know from experience that `async` was not the right place to start. From 2d9f732f74dfec2ce10a163204e06bd6a08df88a Mon Sep 17 00:00:00 2001 From: Erich Ess Date: Mon, 12 Apr 2021 11:01:28 -0400 Subject: [PATCH 086/347] Improving clarity --- src/vision/status_quo/barbara_simulates_hydrodynamics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_simulates_hydrodynamics.md b/src/vision/status_quo/barbara_simulates_hydrodynamics.md index 8778815e..c0a3c25d 100644 --- a/src/vision/status_quo/barbara_simulates_hydrodynamics.md +++ b/src/vision/status_quo/barbara_simulates_hydrodynamics.md @@ -17,7 +17,7 @@ His first attempt to was to emulate a common CFD design pattern: using message p This solution worked, but Niklaus had two problems with it. First, it gave him no control over CPU usage so the solution would greedily use all available CPU resources. Second, using messages to communicate solution values between patches did not scale when his team added a new feature (tracer particles) the additional messages caused by this change created so much overhead that parallel processing was no faster than serial. So, Niklaus decided to find a better solution. ### Solution Path -To address the first problem: Niklaus would decouple the work that needed to be done (solving each patch) from the workers (threads) this would allow him to more finely control how many resources were used. So, he began looking for a tool in Rust that would meet this design pattern. When he read about `async` and how it allowed the user to define units of work, called tasks, and send those to an executor which would manage the execution of those tasks across a set of workers, he thought he'd found exactly what he needed. Further reading indicate that `tokio` was the runtime of choice for `async` in the community and, so, he began building a new CFD tool with `async` and `tokio`. +To address the first problem: Niklaus' new design decoupled the work that needed to be done (solving physics equations for each patch in the grid) from the workers (threads), this would allow him to set the number of threads and not use all the CPU resources. So, he began looking for a tool in Rust that would meet this design pattern. When he read about `async` and how it allowed the user to define units of work and send those to an executor which would manage the execution of those tasks across a set of workers, he thought he'd found exactly what he needed. He also thought that the `.await` semantics would give a much better way of coordinating dependencies between patches. Further reading indicated that `tokio` was the runtime of choice for `async` in the community and, so, he began building a new CFD solver with `async` and `tokio`. As Niklaus began working on his new design with `tokio`, his use of `async` went from a general (from the textbook) use of basic `async` features to a more specific implementation leveraging exactly the features that were most suited for his needs. At first, Niklaus was under a false impression about what `async` executors do. He had assumed that a multi-threaded executor could automatically move the execution of an `async` block to a worker thread. When this turned out to wrong, he went to Stackoverflow and learned that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Niklaus felt that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. From 968d911c5f89dd9092e294bc52b5415d5e1c1c3f Mon Sep 17 00:00:00 2001 From: Erich Ess Date: Mon, 12 Apr 2021 11:07:32 -0400 Subject: [PATCH 087/347] improving clarity --- src/vision/status_quo/barbara_simulates_hydrodynamics.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vision/status_quo/barbara_simulates_hydrodynamics.md b/src/vision/status_quo/barbara_simulates_hydrodynamics.md index c0a3c25d..b22e5a09 100644 --- a/src/vision/status_quo/barbara_simulates_hydrodynamics.md +++ b/src/vision/status_quo/barbara_simulates_hydrodynamics.md @@ -19,9 +19,9 @@ This solution worked, but Niklaus had two problems with it. First, it gave him n ### Solution Path To address the first problem: Niklaus' new design decoupled the work that needed to be done (solving physics equations for each patch in the grid) from the workers (threads), this would allow him to set the number of threads and not use all the CPU resources. So, he began looking for a tool in Rust that would meet this design pattern. When he read about `async` and how it allowed the user to define units of work and send those to an executor which would manage the execution of those tasks across a set of workers, he thought he'd found exactly what he needed. He also thought that the `.await` semantics would give a much better way of coordinating dependencies between patches. Further reading indicated that `tokio` was the runtime of choice for `async` in the community and, so, he began building a new CFD solver with `async` and `tokio`. -As Niklaus began working on his new design with `tokio`, his use of `async` went from a general (from the textbook) use of basic `async` features to a more specific implementation leveraging exactly the features that were most suited for his needs. At first, Niklaus was under a false impression about what `async` executors do. He had assumed that a multi-threaded executor could automatically move the execution of an `async` block to a worker thread. When this turned out to wrong, he went to Stackoverflow and learned that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Niklaus felt that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. +After making some progress, Niklaus ran into his firts problem. Niklaus had been under a false impression about what `async` executors do. He had assumed that a multi-threaded executor could automatically move the execution of an `async` block to a worker thread. When this turned out to wrong, he went to Stackoverflow and learned that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Niklaus felt that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. -With the move to `async`, Niklaus saw an opportunity to solve his second program. Rather than using message passing to coordinate patch computation, he used the `async` API to define dependencies between patches so that a patch would only begin computing its solution when its neighboring patches had completed. He setup a shared data structure to track the solutions for each patch now that messages would not be passing that data. Learning how to properly use shared data with `async` was a new challenge. The initial design: +Niklaus second problem came as he tried to fully replace the message passing from the first design: sharing data between tasks. He used the `async` API to coordinate computation of patches so that a patch would only go to a worker when all its dependencies had completed. But he also needed to account for the solution data which was passed in the messages. He setup a shared data structure to track the solutions for each patch now that messages would not be passing that data. Learning how to properly use shared data with `async` was a new challenge. The initial design: ```rust let mut stage_primitive_and_scalar = |index: BlockIndex, state: BlockState, hydro: H, geometry: GridGeometry| { let stage = async move { @@ -34,7 +34,7 @@ With the move to `async`, Niklaus saw an opportunity to solve his second program ``` lacked performance because he needed to clone the value for every task. So, Niklaus switched over to using `Arc` to keep a thread safe RC to the shared data. But this change introduced a lot of `.map` and `.unwrap` function calls, making the code much harder to read. He realized that managing the dependency graph was not intuitive when using `async` for concurrency. -A new problem arose during the move to `async`: a steep learning curve with error handling. The initial version of his design used `panic!`s to fail the program if an error was encountered, but the stack traces were almost unreadable. He asked his teammate Grace to migrate over to using the `Result` idiom for error handling and Grace found a major inconvenience. The Rust type inference inconsistently breaks when propagating `Result` in `async` blocks. Grace frequently found that she had to specify the type of the error when creating a result value: +As the program matured, a new problem arose: a steep learning curve with error handling. The initial version of his design used `panic!`s to fail the program if an error was encountered, but the stack traces were almost unreadable. He asked his teammate Grace to migrate over to using the `Result` idiom for error handling and Grace found a major inconvenience. The Rust type inference inconsistently breaks when propagating `Result` in `async` blocks. Grace frequently found that she had to specify the type of the error when creating a result value: ```rust Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) ) ``` From 7906f87e16eb487750e9827221c6531fe6ebf8a0 Mon Sep 17 00:00:00 2001 From: Gus Wynn Date: Mon, 12 Apr 2021 09:10:35 -0700 Subject: [PATCH 088/347] Create barbara_compares_some_cpp_code.md The technical conclusion of the specific example in this doc is similar to: https://github.com/rust-lang/wg-async-foundations/pull/132, but the story in general can be about how to compare rust async code and other languages async code (particularly c++20) --- .../barbara_compares_some_cpp_code.md | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 src/vision/status_quo/barbara_compares_some_cpp_code.md diff --git a/src/vision/status_quo/barbara_compares_some_cpp_code.md b/src/vision/status_quo/barbara_compares_some_cpp_code.md new file mode 100644 index 00000000..79376515 --- /dev/null +++ b/src/vision/status_quo/barbara_compares_some_cpp_code.md @@ -0,0 +1,111 @@ +# 😱 Status quo stories: Barbara compares some code (and has a performance problem) + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +Barbara is recreating some code that has been written in other languages they have some familiarity with. These include C++, but +also GC'd languages like Python. + +This code collates a large number of requests to network services, with eash response containing a large amount of data. +To speed this up, Barbara uses `buffer_unordered`, and writes code like this: + +``` +let mut queries = futures::stream::iter(...) + .map(|query| async move { + let d: Data = self.client.request(&query).await?; + d + }) + .buffer_unordered(32); + +use futures::stream::StreamExt; +let results = queries.collect::>().await; +``` + +Barbara thinks this is similar in function to things she has seen using +Python's [asyncio.wait](https://docs.python.org/3/library/asyncio-task.html#asyncio.wait), +as well as some code her coworkers have written using c++20's `coroutines`, +using [this](https://github.com/facebook/folly/blob/master/folly/experimental/coro/Collect.h#L321): + +``` +std::vector> tasks; + for (const auto& query : queries) { + tasks.push_back( + folly::coro::co_invoke([this, &query]() -> folly::coro::Task { + co_return co_await client_->co_request(query); + } + ) +} +auto results = co_await folly:coro::collectAllWindowed( + move(tasks), 32); +``` + +However, *the Rust code performs quite poorly compared to the other impls, +appearing to effectively complete the requests serially, despite on the surface +looking like effectively identical code.* + +Barbara goes deep into investigating this, spends time reading how `buffer_unordered` is +implemented, how its underlying `FuturesUnordered` is implemented, and even thinks about +how polling and the `tokio` runtime she is using works. She evens tries to figure out if the +upstream service is doing some sort of queueing. + +Eventually Barbara starts reading more about c++20 coroutines, looking closer at the folly +implementation used above, noticing that is works primarily with *tasks*, which are not exactly +equivalent to rust `Future`'s. + +Then it strikes her! `request` is implemented something like this: +``` +impl Client { + async fn request(&self) -> Result { + let bytes = self.inner.network_request().await? + Ok(serialization_libary::from_bytes(&bytes)?) + } +} +``` +The results from the network service are VERY large, and the `BufferedUnordered` stream is contained within 1 tokio task. +**The request future does non-trivial cpu work to deserialize the data. +This causes significant slowdowns in wall-time as the the process CAN BE bounded by the time it takes +the single thread running the tokio-task to deserialize all the data.** + +The solution is to spawn tasks (note this requires `'static` futures): + +``` +let mut queries = futures::stream::iter(...) + .map(|query| async move { + let d: Data = tokio::spawn( + self.client.request(&query)).await??; + d + }) + .buffer_unordered(32); + +use futures::stream::StreamExt; +let results = queries.collect::>().await; +``` + +Barbara was able to figure this out by reading enough and trying things out, but had that not worked, it +would have probably required figuring out how to use `perf` or some similar tool. + +## 🤔 Frequently Asked Questions + +### **What are the morals of the story?** +* Producing concurrent, performant code in Rust async is not always trivial. Debugging performance + issues can be difficult. +* Rust's async model, particularly the blocking nature of `polling`, can be complex to reason about, + and in some cases is different from other languages choices in meaningful ways. +* CPU-bound code can be easily hidden. + +### **What are the sources for this story?** +* This is a issue I personally hit while writing code required for production. + +### **Why did you choose *Barbara* to tell this story?** +That's probably the person in the cast that I am most similar to, but Alan +and to some extent Grace make sense for the story as well. + +### **How would this story have played out differently for the other characters?** +* Alan: May have taken longer to figure out. +* Grace: Likely would have been as interested in the details of how polling works. +* Niklaus: Depends on their experience. From 0a023c2e8c73d5f6b06f41f6faf257b1b06ebca0 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Mon, 12 Apr 2021 15:02:27 -0400 Subject: [PATCH 089/347] fix typo (reference to omitted alpha-renaming caught by reviewer) --- src/vision/shiny_future/barbara_makes_a_wish.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/shiny_future/barbara_makes_a_wish.md b/src/vision/shiny_future/barbara_makes_a_wish.md index 006fb4e2..2f26f2e9 100644 --- a/src/vision/shiny_future/barbara_makes_a_wish.md +++ b/src/vision/shiny_future/barbara_makes_a_wish.md @@ -29,7 +29,7 @@ async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { } ``` -Barbara rebuilds and runs her program again. She doesn't see anything different in the terminal output for the program itself though, and the behavior is the same as before: hitting an endpoint, nothing happens. She double-checks the readme for the `async-executor-insight` crate, and realizes that she needs to connect other programs to her service to observe the insights being gathered. Barbara decides that she wants to customize the port that `insight` is listening on before she starts her experiments with those programs. +Barbara rebuilds and runs her program again. She doesn't see anything different in the terminal output for the program itself though, and the behavior is the same as before: hitting an endpoint, nothing happens. She double-checks the readme for the `wish4-async-insight` crate, and realizes that she needs to connect other programs to her service to observe the insights being gathered. Barbara decides that she wants to customize the port that `insight` is listening on before she starts her experiments with those programs. ```rust,ignore async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { From 0eaf2add9434d720ce0732df07e6ded8188e3f2c Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Mon, 12 Apr 2021 15:32:40 -0400 Subject: [PATCH 090/347] Note IDE/editor plugins as an additional client of interest beyond web-browsers. --- src/vision/shiny_future/barbara_makes_a_wish.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/shiny_future/barbara_makes_a_wish.md b/src/vision/shiny_future/barbara_makes_a_wish.md index 2f26f2e9..eaa9f9a7 100644 --- a/src/vision/shiny_future/barbara_makes_a_wish.md +++ b/src/vision/shiny_future/barbara_makes_a_wish.md @@ -106,7 +106,7 @@ Barbara reflects on the matter: she knows that she could swap in an unbounded ch Alan is happy to see a tool that gives one a view into the internals of the async executor. -Alan is not so thrilled about using the `consolation` terminal interface; but luckily there are other options, namely a web-browser based client that offers even richer functionality, such as renderings of the task/resource dependency graph. +Alan is not so thrilled about using the `consolation` terminal interface; but luckily there are other options, namely IDE/editor plugins as well as a web-browser based client, that offer even richer functionality, such as renderings of the task/resource dependency graph. ### **What is [Grace] most excited about in this future? Is she disappointed by anything?** From 671e42dfefd7832ece984b8b8e71e7fc7037cb38 Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Mon, 12 Apr 2021 15:39:15 -0400 Subject: [PATCH 091/347] Expand on Barbara's feelings about this future, focusing primarily on whether all async executors are compatible. (Most likely, they are not.) --- src/vision/shiny_future/barbara_makes_a_wish.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vision/shiny_future/barbara_makes_a_wish.md b/src/vision/shiny_future/barbara_makes_a_wish.md index eaa9f9a7..148f621f 100644 --- a/src/vision/shiny_future/barbara_makes_a_wish.md +++ b/src/vision/shiny_future/barbara_makes_a_wish.md @@ -124,9 +124,9 @@ However, Niklaus is a little nervous about some of the details in the output tha ### **What is [Barbara] most excited about in this future? Is she disappointed by anything?** -Barbara is thrilled with +Barbara is thrilled with how this tool has given her insight into the innards of the async executor she is using. -*Think about Barbara's top priority (productivity, maintenance over time) and the expectations she brings (fits well with Rust). How do they fare in this future?* +She is disappointed to learn that not every async executor supports the `wish4-async-insight` crate. The crate works by monitoring state changes within the executor, instrumented via the `tracing` crate. Not every async-executor is instrumented in a fashion compatible with `wish4-async-insight`. ### **What [projects] benefit the most from this future?** @@ -144,7 +144,7 @@ The only "hindrance" is that the there is an expectation that the async-executor * Prototype an insight console atop a concrete async executor (e.g. `tokio`) - * Develop a shared protocol atop `tracing` that all async executors will use to provide the insightful data. + * Develop a shared protocol atop `tracing` that compatible async executors will use to provide the insightful data. ### **Does realizing this future require cooperation between many projects?** (Optional) From 5f088e68c125660ff9116b8871eef96760f32b4d Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Mon, 12 Apr 2021 15:46:23 -0400 Subject: [PATCH 092/347] Make "draft status" boilerplate match that of the template. (I had made something up when I wrote this.) --- src/vision/shiny_future/barbara_makes_a_wish.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vision/shiny_future/barbara_makes_a_wish.md b/src/vision/shiny_future/barbara_makes_a_wish.md index 148f621f..dc706df0 100644 --- a/src/vision/shiny_future/barbara_makes_a_wish.md +++ b/src/vision/shiny_future/barbara_makes_a_wish.md @@ -2,9 +2,9 @@ ## 🚧 Warning: Draft status 🚧 -This is a draft "shiny future" story submitted as part of the brainstorming period. It is a speculative sketch of what life might be like in 2 to 3 years, if things go well. +This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. -If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' dreams, shiny future stories [cannot be wrong], only unclear or over-ambitious). Alternatively, you may wish to [add your own shiny future story][htvsf]! +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories [cannot be wrong]. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to [add your own shiny vision story][htvsq]! ## The story @@ -160,7 +160,7 @@ At the very least, as mentioned among the "incremental steps", we will need a co [Grace]: ../characters/grace.md [Niklaus]: ../characters/niklaus.md [Barbara]: ../characters/barbara.md -[htvsf]: ../how_to_vision/shiny_future.md +[htvsq]: ../how_to_vision/shiny_future.md [projects]: ../projects.md [cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade [MonsterMesh]: ../projects/MonsterMesh.md From cde3cdd5c2f2ef17010cb84ef462f3f0bb248aaa Mon Sep 17 00:00:00 2001 From: Felix Klock Date: Mon, 12 Apr 2021 15:57:35 -0400 Subject: [PATCH 093/347] describe the graph. and include a mermaid rendering of it. --- src/vision/shiny_future/barbara_makes_a_wish.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/vision/shiny_future/barbara_makes_a_wish.md b/src/vision/shiny_future/barbara_makes_a_wish.md index dc706df0..4a0440db 100644 --- a/src/vision/shiny_future/barbara_makes_a_wish.md +++ b/src/vision/shiny_future/barbara_makes_a_wish.md @@ -89,7 +89,14 @@ Barbara types capital `P`. The terminal switches to "problem view," which shows The screen also says "hit `D` to generate a graphviz `.dot` file to disk describing the cycle." -Barbara hits `D` and stares at the resulting graph. +Barbara hits `D` and stares at the resulting graph, which shows a single circle (labelled "task"), and an arc to a box (labelled "prototype_channel"), and an arc from that box back to the circle. The arc from the circle to the box is labelled `send: waiting on channel capacity`, and the arc from the box to the circle is labelled "sole consumer (mpsc channel)". + +```mermaid +graph TD + task -- send: waiting on channel capacity --> prototype_channel + prototype_channel -- "sole receiver (mpsc channel)" --> task + task((task)) +``` Barbara suddenly realizes her mistake: She had constructed a single task that was sometimes enqueuing work (by sending messages on the channel), and sometimes dequeuing work, but she had not put any controls into place to ensure that the dequeuing (via `recv`) would get prioritized as the channel filled up. From 837fcbf3fa88dc67ee2f3451833d846b44c90017 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 12 Apr 2021 16:00:17 -0400 Subject: [PATCH 094/347] add new stories to SUMMARY.md --- src/SUMMARY.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 3c35de1e..3f542974 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -27,12 +27,13 @@ - [Alan hates writing a `Stream`](./vision/status_quo/alan_hates_writing_a_stream.md) - [Alan iteratively regresses performance](./vision/status_quo/alan_iteratively_regresses.md) - [Alan lost the world](./vision/status_quo/alan_lost_the_world.md) + - [Alan needs async in traits](./vision/status_quo/alan_needs_async_in_traits.md) - [Alan wants to migrate a web server to Rust](./vision/status_quo/alan_picks_web_server.md) - [Alan runs into stack trouble](./vision/status_quo/alan_runs_into_stack_trouble.md) - [Alan started trusting the Rust compiler, but then... async](./vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md) + - [Alan tries using a socket Sink](./vision/status_quo/alan_tries_a_socket_sink.md) - [Alan tries to debug a hang](./vision/status_quo/alan_tries_to_debug_a_hang.md) - [Alan writes a web framework](./vision/status_quo/alan_writes_a_web_framework.md) - - [Alan needs async in traits](./vision/status_quo/alan_needs_async_in_traits.md) - [Barbara anguishes over HTTP](./vision/status_quo/barbara_anguishes_over_http.md) - [Barbara carefully dismisses embedded `Future`](./vision/status_quo/barbara_carefully_dismisses_embedded_future.md) - [Barbara makes their first foray into async](./vision/status_quo/barbara_makes_their_first_steps_into_async.md) @@ -42,8 +43,8 @@ - [Barbara wants async insights](./vision/status_quo/barbara_wants_async_insights.md) - [Grace deploys her service and hits obstacles](./vision/status_quo/grace_deploys_her_service.md) - [Grace tries new libraries](./vision/status_quo/grace_tries_new_libraries.md) - - [Grace wants to integrate a C-API](./vision/status_quo/grace_wants_to_integrate_c_api.md) - [Grace waits for gdb next](./vision/status_quo/grace_waits_for_gdb_next.md) + - [Grace wants to integrate a C-API](./vision/status_quo/grace_wants_to_integrate_c_api.md) - [Niklaus wants to share knowledge](./vision/status_quo/niklaus_wants_to_share_knowledge.md) - [✨ Shiny future](./vision/shiny_future.md) - [Template](./vision/shiny_future/template.md) From 16b484a64646e741a1dab96b803f258fd703ae4b Mon Sep 17 00:00:00 2001 From: Gus Wynn Date: Mon, 12 Apr 2021 13:33:20 -0700 Subject: [PATCH 095/347] add FAQ about `block_in_place` --- src/vision/status_quo/barbara_compares_some_cpp_code.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/vision/status_quo/barbara_compares_some_cpp_code.md b/src/vision/status_quo/barbara_compares_some_cpp_code.md index 79376515..cb7640bf 100644 --- a/src/vision/status_quo/barbara_compares_some_cpp_code.md +++ b/src/vision/status_quo/barbara_compares_some_cpp_code.md @@ -91,6 +91,12 @@ would have probably required figuring out how to use `perf` or some similar tool ## 🤔 Frequently Asked Questions +### **Is this actually the correct solution?** +* Only in part. It may cause other kinds of contention or blocking on the runtime. The deserialization work probably needs to be wrapped in something like [`block_in_place`](https://docs.rs/tokio/1.5.0/tokio/task/fn.block_in_place.html), so that other tasks are not starved on the runtime, or might want to use [`spawn_blocking`](https://docs.rs/tokio/1.5.0/tokio/task/fn.spawn_blocking.html). There are some important caveats/details that matter: + * This is dependent on how the runtime works. + * `block_in_place` + `tokio::spawn`/`spawn_blocking` might be better if the caller wants to control concurrency, as spawning is heavyweight when the deserialization work happens to be small. + * `spawn_blocking`, at least in some executors, cannot be cancelled, a departure from the prototypical cancellation story in async Rust. + * "Dependently blocking work" in the context of async programming is a hard problem to solve generally. https://github.com/async-rs/async-std/pull/631 was an attempt but the details are making runtime's agnostic blocking are extremely complex. ### **What are the morals of the story?** * Producing concurrent, performant code in Rust async is not always trivial. Debugging performance issues can be difficult. From a040e02592934846b0561b6cb7e780a9a6cb2cf2 Mon Sep 17 00:00:00 2001 From: Gus Wynn Date: Mon, 12 Apr 2021 13:49:01 -0700 Subject: [PATCH 096/347] Update barbara_compares_some_cpp_code.md --- .../status_quo/barbara_compares_some_cpp_code.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/vision/status_quo/barbara_compares_some_cpp_code.md b/src/vision/status_quo/barbara_compares_some_cpp_code.md index cb7640bf..a7e9c26f 100644 --- a/src/vision/status_quo/barbara_compares_some_cpp_code.md +++ b/src/vision/status_quo/barbara_compares_some_cpp_code.md @@ -48,6 +48,8 @@ However, *the Rust code performs quite poorly compared to the other impls, appearing to effectively complete the requests serially, despite on the surface looking like effectively identical code.* +While investigating, Barbara looks at `top`, and realises that her coworker's C++20 code sometimes results in her 16 core laptop using 1600% CPU; her Rust async code never exceeds 100% CPU usage. She spends time investigating her runtime setup, but Tokio is configured to use enough worker threads to keep all her CPU cores busy. This feels to her like a bug in `buffer_unordered ` or `tokio`, needing more time to investigate. + Barbara goes deep into investigating this, spends time reading how `buffer_unordered` is implemented, how its underlying `FuturesUnordered` is implemented, and even thinks about how polling and the `tokio` runtime she is using works. She evens tries to figure out if the @@ -66,10 +68,12 @@ impl Client { } } ``` -The results from the network service are VERY large, and the `BufferedUnordered` stream is contained within 1 tokio task. + +The results from the network service are sometimes (but not always) VERY large, and the `BufferedUnordered` stream is contained within 1 tokio task. **The request future does non-trivial cpu work to deserialize the data. This causes significant slowdowns in wall-time as the the process CAN BE bounded by the time it takes the single thread running the tokio-task to deserialize all the data.** +This problem hadn't shown up in test cases, where the results from the mocked network service are always small; many common uses of the network service only ever have small results, so it takes a specific production load to trigger this issue, or a large scale test. The solution is to spawn tasks (note this requires `'static` futures): @@ -89,14 +93,18 @@ let results = queries.collect::>().await; Barbara was able to figure this out by reading enough and trying things out, but had that not worked, it would have probably required figuring out how to use `perf` or some similar tool. +Later on, Barbara gets surprised by this code again. It's now being used as part of a system that handles a very high number of requests per second, but sometimes the system stalls under load. She enlists Grace to help debug, and the two of them identify via `perf` that all the CPU cores are busy running `serialization_libary::from_bytes`. Barbara revisits this solution, and discovers `tokio::task::block_in_place` which she uses to wrap the calls to `serialization_libary::from_bytes`. +This resolves the problem as seen in production, but leads to Niklaus's code review suggesting the use of `tokio::task::spawn_blocking` inside `request`, instead of `spawn` inside `buffer_unordered`. This discussion is challenging, because the tradeoffs between `spawn` on a `Future` including `block_in_place` and `spawn_blocking` and then not spawning the containing `Future` are subtle and tricky to explain. + ## 🤔 Frequently Asked Questions ### **Is this actually the correct solution?** -* Only in part. It may cause other kinds of contention or blocking on the runtime. The deserialization work probably needs to be wrapped in something like [`block_in_place`](https://docs.rs/tokio/1.5.0/tokio/task/fn.block_in_place.html), so that other tasks are not starved on the runtime, or might want to use [`spawn_blocking`](https://docs.rs/tokio/1.5.0/tokio/task/fn.spawn_blocking.html). There are some important caveats/details that matter: +* Only in part. It may cause other kinds of contention or blocking on the runtime. As mentioned above, the deserialization work probably needs to be wrapped in something like [`block_in_place`](https://docs.rs/tokio/1.5.0/tokio/task/fn.block_in_place.html), so that other tasks are not starved on the runtime, or might want to use [`spawn_blocking`](https://docs.rs/tokio/1.5.0/tokio/task/fn.spawn_blocking.html). There are some important caveats/details that matter: * This is dependent on how the runtime works. - * `block_in_place` + `tokio::spawn`/`spawn_blocking` might be better if the caller wants to control concurrency, as spawning is heavyweight when the deserialization work happens to be small. + * `block_in_place` + `tokio::spawn` might be better if the caller wants to control concurrency, as spawning is heavyweight when the deserialization work happens to be small. * `spawn_blocking`, at least in some executors, cannot be cancelled, a departure from the prototypical cancellation story in async Rust. * "Dependently blocking work" in the context of async programming is a hard problem to solve generally. https://github.com/async-rs/async-std/pull/631 was an attempt but the details are making runtime's agnostic blocking are extremely complex. + * The way this problem manifests may be subtle, and it may be specific production load that triggers it. ### **What are the morals of the story?** * Producing concurrent, performant code in Rust async is not always trivial. Debugging performance issues can be difficult. From bfe59f53e645d50c2f505ce199fee9c97b0a1338 Mon Sep 17 00:00:00 2001 From: Erich Ess Date: Mon, 12 Apr 2021 17:42:40 -0400 Subject: [PATCH 097/347] Missed some occurances of Barbara that needed to be renamed to Niklaus --- ..._hydrodynamics.md => niklaus_simulates_hydrodynamics.md} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename src/vision/status_quo/{barbara_simulates_hydrodynamics.md => niklaus_simulates_hydrodynamics.md} (97%) diff --git a/src/vision/status_quo/barbara_simulates_hydrodynamics.md b/src/vision/status_quo/niklaus_simulates_hydrodynamics.md similarity index 97% rename from src/vision/status_quo/barbara_simulates_hydrodynamics.md rename to src/vision/status_quo/niklaus_simulates_hydrodynamics.md index b22e5a09..cfe04a92 100644 --- a/src/vision/status_quo/barbara_simulates_hydrodynamics.md +++ b/src/vision/status_quo/niklaus_simulates_hydrodynamics.md @@ -1,4 +1,4 @@ -# 😱 Status quo stories: Barbara Builds a Hydrodynamics Simulator +# 😱 Status quo stories: Niklaus Builds a Hydrodynamics Simulator ## 🚧 Warning: Draft status 🚧 @@ -54,13 +54,13 @@ This new solution works, but Niklaus is not satisfied with how complex his code ### **What are the sources for this story?** This story is based on the experience of building the [kilonova](https://github.com/clemson-cal/app-kilonova) hydrodynamics simulation solver. -### **Why did you choose Barbara and Grace to tell this story?** +### **Why did you choose Niklaus and Grace to tell this story?** I chose Niklaus as the primary character in this story because this work was driven by someone who only uses programming for a small part of their work. Grace was chosen as a supporting character because of that persons experience with C/C++ programming and to avoid repeating characters. ### **How would this story have played out differently for the other characters?** - Alan: there's a good chance he would have already had experience working with either async workflows in another language or doing parallelization of compute bound tasks; and so would already know from experience that `async` was not the right place to start. - Grace: likewise, might already have experience with problems like this and would know what to look for when searching for tools. -- Niklaus: the experience would probably be the same, as it's very easy to assume that `tokio` is the starting place for concurrency in Rust. +- Barbara: the experience would likely be fairly similar, since the actual subject of this story is quite familiar with Rust by now [character]: ../characters.md [status quo stories]: ./status_quo.md From 83db1e57340fd51c09cf423f38f6ddbc812b9ab8 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 12 Apr 2021 16:21:19 -0400 Subject: [PATCH 098/347] tweak shiny future FAQs --- src/vision/how_to_vision/shiny_future.md | 29 +++++++++++++++++------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/vision/how_to_vision/shiny_future.md b/src/vision/how_to_vision/shiny_future.md index 4f0b4ef1..cabbd27a 100644 --- a/src/vision/how_to_vision/shiny_future.md +++ b/src/vision/how_to_vision/shiny_future.md @@ -71,30 +71,43 @@ The goal is that, at the end of the review process, the status quo story has a l ## 🤔 Frequently Asked Questions -### **What is the process to propose a shiny future story?** +### What is the process to propose a shiny future story? * Just open a PR [using this template][template]. * Do not add your file to [`SUMMARY.md`], that will create conflicts. We'll do it after merging. -### **What character should I use for my shiny future story?** +### What character should I use for my shiny future story? * Usually you would use the same character from the status quo story you are retelling. * If for some reason you chose a different character, add a FAQ to explain why. -### **What do I do if there is no status quo story for my shiny future?** +### What do I do if there is no status quo story for my shiny future? [Write the status quo story first!](./status_quo.md) -### **How much detail should I give? How specific should I be?** +#### What happens when there are multiple "shiny future" stories about the same thing? + +During this brainstorming period, we want to focus on getting as many ideas as we can. Having multiple "shiny futures" that address the same problem is a feature, not a bug, as it will let us mix-and-match later to try and find the best overall plan. + +### How much detail should I give? How specific should I be? * Detailed is generally better, but only if those details are helpful for understanding the morals of your story. * Specific is generally better, since an abstract story doesn't feel as real. -### **What do I do when I get to details that I don't know yet?** +#### What is the "scope" of a shiny future story? Can I tell shiny future stories that involve ecosystem projects? + +All the stories in the vision doc are meant to cover the full "end to end" experience of using async Rust. That means that sometimes they will take about things that are really part of projects that are outside of the Rust org. For example, we might write a shiny future that involves how the standard library has published standard traits for core concepts and those concepts have been adopted by libraries throughout the ecosystem. There is a FAQ that asks you to talk about what kinds of coordinate between projects will be required to realize this vision. + +### What do I do when I get to details that I don't know yet? Take your best guess and add a FAQ explaining which details are still up in the air. -### **What do I do if I don't know that my idea is technically feasible?** -You don't have to know how your idea will work yet. You can add FAQs to try and clarify what parts you do know and what parts still need to be figured out. +### Do we have to know exactly how we will achieve the "shiny future"? -### **What do I do if somebody leaves a comment about how my idea will work and I don't know the answer?** +You don't have to know how your idea will work yet. We will eventually have to figure out the precise designs, but at this point we're more interested in talking about the experience we aim to create. That said, if you do have plans for how to achieve your shiny future, you can also include [design docs] in the PR, or add FAQ that specify what you have in mind (and perhaps what you have to figure out still). + +### What do I do if somebody leaves a comment about how my idea will work and I don't know the answer? Add it to the FAQ! +### What if we write a "shiny future" story but it turns out to be impossible to implement? + +Glad you asked! The vision document is a living document, and we intend to revisit it regularly. This is important because it turns out that predicting the future is hard. We fully expect that some aspects of the "shiny future" stories we write are going to be wrong, sometimes very wrong. We will be regularly returning to the vision document to check how things are going and adjust our trajectory appropriately. + [template]: https://github.com/rust-lang/wg-async-foundations/tree/master/src/vision/shiny_future/template.md [sfd]: https://github.com/rust-lang/wg-async-foundations/tree/master/src/vision/shiny_future [`SUMMARY.md`]: https://github.com/rust-lang/wg-async-foundations/blob/master/src/SUMMARY.md From aff8b8612d85c31580345aed4168f647e678b239 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 12 Apr 2021 21:36:38 -0400 Subject: [PATCH 099/347] add niklaus to summary.md --- src/SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 3f542974..ac3f1d2d 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -45,6 +45,7 @@ - [Grace tries new libraries](./vision/status_quo/grace_tries_new_libraries.md) - [Grace waits for gdb next](./vision/status_quo/grace_waits_for_gdb_next.md) - [Grace wants to integrate a C-API](./vision/status_quo/grace_wants_to_integrate_c_api.md) + - [Niklaus builds a hydrodynamics simulator](./vision/status_quo/niklaus_simulates_hydrodynamics.md) - [Niklaus wants to share knowledge](./vision/status_quo/niklaus_wants_to_share_knowledge.md) - [✨ Shiny future](./vision/shiny_future.md) - [Template](./vision/shiny_future/template.md) From 25972e0e1cd39ff019ef4c7706fccd71201f5903 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 13 Apr 2021 08:50:58 -0400 Subject: [PATCH 100/347] add Barbara Makes a Wish --- src/SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index ac3f1d2d..2c207424 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -49,6 +49,7 @@ - [Niklaus wants to share knowledge](./vision/status_quo/niklaus_wants_to_share_knowledge.md) - [✨ Shiny future](./vision/shiny_future.md) - [Template](./vision/shiny_future/template.md) + - [Barbara makes a wish](./vision/shiny_future/barbara_makes_a_wish.md) - [📅 Roadmap for 2021](./vision/roadmap.md) - [🔍 Triage meetings](./triage.md) - [🔬 Design docs](./design_docs.md) From 5c5d50a1e8efd12384e7adf2c5b257d817750556 Mon Sep 17 00:00:00 2001 From: Jim Peters Date: Tue, 13 Apr 2021 10:58:12 -0500 Subject: [PATCH 101/347] Correct error made when minimizing code in example 1 --- src/vision/status_quo/barbara_wants_to_use_ghostcell.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_wants_to_use_ghostcell.md b/src/vision/status_quo/barbara_wants_to_use_ghostcell.md index c25a086f..bf79109a 100644 --- a/src/vision/status_quo/barbara_wants_to_use_ghostcell.md +++ b/src/vision/status_quo/barbara_wants_to_use_ghostcell.md @@ -78,6 +78,7 @@ from both the stream and the outside code, so it is handled as a ```rust pub struct StreamPipe { buf: Rc>>, + req_more: Rc, } impl Stream for StreamPipe { @@ -91,7 +92,7 @@ impl Stream for StreamPipe { if buf.end { return Poll::Ready(None); } - self.req_more(); // Callback to request more data + (self.req_more)(); // Callback to request more data Poll::Pending } } From a03965f183b02c325a5fd3c5b727853ee1ea7efc Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 13 Apr 2021 19:32:24 +0200 Subject: [PATCH 102/347] Add Alan thinks he needs async locks --- .../alan_thinks_he_needs_async_locks.md | 121 ++++++++++++++++++ .../status_quo/alan_tries_a_socket_sink.md | 8 +- 2 files changed, 125 insertions(+), 4 deletions(-) create mode 100644 src/vision/status_quo/alan_thinks_he_needs_async_locks.md diff --git a/src/vision/status_quo/alan_thinks_he_needs_async_locks.md b/src/vision/status_quo/alan_thinks_he_needs_async_locks.md new file mode 100644 index 00000000..d79a9437 --- /dev/null +++ b/src/vision/status_quo/alan_thinks_he_needs_async_locks.md @@ -0,0 +1,121 @@ +# 😱 Status quo stories: Alan thinks he needs async locks + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +One of Alan's first Rust related tasks in his job at YouBuy is writing an HTTP based service. This service is a simple internal proxy router that inspects an incoming HTTP request and picks the downstream service to call based on certain aspects of the HTTP request. + +Alan decides that he'll simply use some shared state that request handlers can read from in order to decide how to proxy the request. + +Alan, having read the Rust book and successfully completed the challenge in the [last chapters](https://doc.rust-lang.org/book/ch20-02-multithreaded.html), knows that shared state can be achieved in Rust with reference counting (using `std::sync::Arc`) and locks (using `std::sync::Mutex`). Alan starts by throwing his shared state (a `std::collections::HashMap`) into an `Arc>`. + +Alan, smitten with how quickly he can write Rust code, ends up with some code that compiles that looks roughly like this: + +```rust +#[derive(Clone)] +struct Proxy { + routes: Arc>, +} + +impl Proxy { + async fn handle(&self, key: String, request: Request) -> crate::Result { + let routes = self.state.lock().unwrap(); + let route = routes.get(key).unwrap_or_else(crate::error::MissingRoute)?; + Ok(self.client.perform_request(route, request).await?) + } +} +``` + +Alan is happy that his code seems to be compiling! The short but hard learning curve has been worth it. He's having fun now! + +Unfortunately, Alan's happiness soon comes to end as he starts integrating his request handler into calls to `tokio::spawn` which he knows will allow him to manage multiple requests at a time. The error message is somewhat cryptic, but Alan is confident he'll be able to figure it out: + +``` +189 | tokio::spawn(async { + | ^^^^^^^^^^^^ future created by async block is not `Send` +::: /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.5.0/src/task/spawn.rs:129:21 + | +129 | T: Future + Send + 'static, + | ---- required by this bound in `tokio::spawn` + +note: future is not `Send` as this value is used across an await + --> src/handler.rs:787:9 + | +786 | let routes = self.state.lock().unwrap(); + | - has type `std::sync::MutexGuard<'_, HashMap>` which is not `Send` +787 | Ok(self.client.perform_request(route, request).await?) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `routes` maybe used later +788 | }) + | - `routes` is later dropped here +``` + +Alan stops and takes a deep breath. He tries his best to make sense of the error message. He sort of understands the issue the compiler is telling him. Apparently `routes` is not marked as `Send`, and because it is still alive over a call to `await`, it is making the future his handler returns not `Send`. And tokio's `spawn` function seems to require that the future it received be `Send`. + +Alan reaches the boundaries of his knowledge of Rust, so he reaches out over chat to ask his co-worker Barbara for help. Not wanting to bother her, Alan provides the context he's already figured out for himself. + +Barbara knows that mutex guards are not `Send` because sending mutex guards to different threads is not a good idea. She suggests looking into async locks which can be held across await points because they are `Send`. Alan looks into the tokio documentation for more info and is easily able to move the use of the standard library's mutex to tokio's mutex. It compiles! + +Alan ships his code and it gets a lot of usage. After a while, Alan notices some potential performance issues. It seems his proxy handler does not have the throughput he would expect. Barbara, having newly joined his team, sits down with him to take a look at potential issues. Barbara is immediately worried by the fact that the lock is being held much longer than it needs to be. The lock only needs to be held while accessing the route and not during the entire duration of the downstream request. + +She suggests to Alan to switch to not holding the lock across the I/O operations. Alan first tries to do this by explicitly cloning the url and dropping the lock before the proxy request is made: + +```rust +impl Proxy { + async fn handle(&self, key: String, request: Request) -> crate::Result { + let routes = self.state.lock().unwrap(); + let route = routes.get(key).unwrap_or_else(crate::error::MissingRoute)?.clone(); + drop(routes); + Ok(self.client.perform_request(route, request).await?) + } +} +``` + +Unfortunately this does not seem to fix the issue - he gets the same error message as before. Confused Alan goes to Barbara for advice. She is also confused, and it takes several minutes of exploration before she comes to a solution that works - wrapping the mutex access in a block and implicitly dropping the mutex: + +```rust +impl Proxy { + async fn handle(&self, key: String, request: Request) -> crate::Result { + let route = { + let routes = self.state.lock().unwrap(); + routes.get(key).unwrap_or_else(crate::error::MissingRoute)?.clone() + }; + Ok(self.client.perform_request(route, request).await?) + } +} +``` + +This works! Barbara mentions she's unsure why explicitly dropping the mutex guard did not work, but they're both happy that the code compiles. Shipping to production shows a large increase in throughput. Alan is really excited about Rust, and wants to write more! + +Barbara continues her own journey of learning even more about async Rust. After some enlightening talks at the latest RustConf, she decides to revisit the code that she and Alan wrote together. She asks herself, is using an *async* lock the right thing to do? This lock should only be held for a very short amount of time. Yielding to the runtime is likely more expensive than just synchronously locking. She decides to switch back to synchronous locks and is surprised when her initial benchmarking shows improvements in the 99th percentile of requests. + +Barbara decides to write a blog post about how blocking in async code isn't always such a bad idea. + +## 🤔 Frequently Asked Questions + +### **What are the morals of the story?** + * Locks can be quite common in async code as many tasks might need to mutate some shared state. + * Error messages can be fairly good, but they still require a decent understanding of Rust (e.g., `Send`, `MutexGuard`, drop semantics) to fully understand what's going on. + * This can lead to needing to use certain patterns (like dropping mutex guards early) in order to get code working. + * The advice to never block in async code is not always true: if blocking is short enough, is it even blocking at all? +### **What are the sources for this story?** + * Chats with [Alice](https://github.com/Darksonn) and [Lucio](https://github.com/LucioFranco). + * Alice's [blog post](https://ryhl.io/blog/async-what-is-blocking/) on the subject has some good insights. +### **Why did you choose [Alan](../characters/alan.md) to tell this story?** + * While Barbara might be tripped up on some of the subtlties, an experienced Rust developer can usually tell how to avoid some of the issues of using locks in async code. Alan on the other hand, might be surprised when his code does not compile as the issue the `Send` error is protecting against (i.e., a mutex guard being moved to another thread) is not protected against in other languages. +### **How would this story have played out differently for the other characters?** + * Grace would have likely had a similar time to Alan. These problems are not necessarily issues you would run into in other languages in the same way. + * Niklaus may have been completely lost. This stuff requires a decent understanding of Rust and of async computational systems. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade diff --git a/src/vision/status_quo/alan_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md index 19c4209e..8aa00b58 100644 --- a/src/vision/status_quo/alan_tries_a_socket_sink.md +++ b/src/vision/status_quo/alan_tries_a_socket_sink.md @@ -104,7 +104,7 @@ A few weeks later, Alan's work at his project at work is merged with his new for ## 🤔 Frequently Asked Questions -* **What are the morals of the story?** +### **What are the morals of the story?** * There are often many sources of opinion in the community regarding futures and async, but these opinions aren't always backed up with examples of how it should be better accomplished. Sometimes we just find a thing that works and would prefer to stick with it, but others argue that some traits make implementations unnecessarily complex, and choose to leave it out. Disagreements like these in the ecosystem can be harmful to the reputation of the project and the participants. * If there's a source of substantial disagreement, the community becomes even further fragmented, and this may cause additional confusion in newcomers. * Alan is used to fragmentation from the communities he comes from, so this isn't too discouraging, but what's difficult is that there's enough functionality overlap in async libraries that it's tempting to get them to interop with each other as-needed, and this can lead to architectural challenges resulting from a difference in design philosophies. @@ -112,7 +112,7 @@ A few weeks later, Alan's work at his project at work is merged with his new for * The `Sink` trait is complex but it solves a real problem, and the workarounds required to solve problems without it can be unsatisfactory. * Disagreement about core abstractions like `Sink` can make interoperability between runtimes more difficult; it also makes it harder for people to reproduce patterns they are used to from one runtime to another. * It is all too easy for technical discussions like this to become heated; it's important for all participants to try and provide each other with the "benefit of the doubt". -* **What are the sources for this story?** +### **What are the sources for this story?** * * - Third pull request * - Suggestion to use a broadcast channel @@ -122,9 +122,9 @@ A few weeks later, Alan's work at his project at work is merged with his new for * * * -* **Why did you choose [Alan](../characters/alan.md) to tell this story?** +### **Why did you choose [Alan](../characters/alan.md) to tell this story?** * Alan is more representative of the original author's background in JS, TypeScript, and NodeJS. -* **How would this story have played out differently for the other characters?** +### **How would this story have played out differently for the other characters?** * (I'm not sure.) [character]: ../characters.md From b6520d671808f4b9ea12bff98049e5358ede6ea1 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Tue, 13 Apr 2021 21:43:15 +0200 Subject: [PATCH 103/347] Move story around --- .../alan_thinks_he_needs_async_locks.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/vision/status_quo/alan_thinks_he_needs_async_locks.md b/src/vision/status_quo/alan_thinks_he_needs_async_locks.md index d79a9437..98efab56 100644 --- a/src/vision/status_quo/alan_thinks_he_needs_async_locks.md +++ b/src/vision/status_quo/alan_thinks_he_needs_async_locks.md @@ -75,7 +75,15 @@ impl Proxy { } ``` -Unfortunately this does not seem to fix the issue - he gets the same error message as before. Confused Alan goes to Barbara for advice. She is also confused, and it takes several minutes of exploration before she comes to a solution that works - wrapping the mutex access in a block and implicitly dropping the mutex: +This compiles fine and works in testing! After shipping to production, they notice a large increase in throughput. It seems their change made a big difference. Alan is really excited about Rust, and wants to write more! + +Alan continues his journey of learning even more about async Rust. After some enlightening talks at the latest RustConf, he decides to revisit the code that he and Barbara wrote together. He asks himself, is using an *async* lock the right thing to do? This lock should only be held for a very short amount of time. Yielding to the runtime is likely more expensive than just synchronously locking. But he remembers vaguely hearing that you should never use blocking code in async code as this will block the entire async executor from being able to make progress, so he doubts his intuition. + +After chatting with Barbara, who encourages him to benchmark and measure, he decides to switch back to synchronous locks. + +Unfortunately, switching back to synchronous locks brings back the old compiler error message about his future not being `Send`. Alan is confused as he's dropping the mutex guard before it ever crosses an await point. + +Confused Alan goes to Barbara for advice. She is also confused, and it takes several minutes of exploration before she comes to a solution that works: wrapping the mutex access in a block and implicitly dropping the mutex. ```rust impl Proxy { @@ -89,11 +97,9 @@ impl Proxy { } ``` -This works! Barbara mentions she's unsure why explicitly dropping the mutex guard did not work, but they're both happy that the code compiles. Shipping to production shows a large increase in throughput. Alan is really excited about Rust, and wants to write more! - -Barbara continues her own journey of learning even more about async Rust. After some enlightening talks at the latest RustConf, she decides to revisit the code that she and Alan wrote together. She asks herself, is using an *async* lock the right thing to do? This lock should only be held for a very short amount of time. Yielding to the runtime is likely more expensive than just synchronously locking. She decides to switch back to synchronous locks and is surprised when her initial benchmarking shows improvements in the 99th percentile of requests. +Barbara mentions she's unsure why explicitly dropping the mutex guard did not work, but they're both happy that the code compiles. In fact it seems to have improved the performance of the service when its under extreme load. Alan's intuition was right! -Barbara decides to write a blog post about how blocking in async code isn't always such a bad idea. +In the end, Barbara decides to write a blog post about how blocking in async code isn't always such a bad idea. ## 🤔 Frequently Asked Questions From 1d150f995f2a2945d0d5f5f3d69fe104ff710120 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 13 Apr 2021 16:03:48 -0400 Subject: [PATCH 104/347] add story about bridging sync and async Cowritten with participants from writing workshop: * Doc Jones * Andrew Chin * Emmanuel * Frederik * Zeeshan * Trevor * Ivan Tham --- .../barbara_bridges_sync_and_async.md | 245 ++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 src/vision/status_quo/barbara_bridges_sync_and_async.md diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md new file mode 100644 index 00000000..d0de0fb7 --- /dev/null +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -0,0 +1,245 @@ +# 😱 Status quo stories: Barbara bridges sync and async in `perf.rust-lang.org` + +[How To Vision: Status Quo]: ../how_to_vision/status_quo.md +[the raw source from this template]: https://raw.githubusercontent.com/rust-lang/wg-async-foundations/master/src/vision/status_quo/template.md +[`status_quo`]: https://github.com/rust-lang/wg-async-foundations/tree/master/src/vision/status_quo +[`SUMMARY.md`]: https://github.com/rust-lang/wg-async-foundations/blob/master/src/SUMMARY.md +[open issues]: https://github.com/rust-lang/wg-async-foundations/issues?q=is%3Aopen+is%3Aissue+label%3Astatus-quo-story-ideas +[open an issue of your own]: https://github.com/rust-lang/wg-async-foundations/issues/new?assignees=&labels=good+first+issue%2C+help+wanted%2C+status-quo-story-ideas&template=-status-quo--story-issue.md&title= + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +### Introducing `block_on` + +Barbara is working on the code for [perf.rust-lang.org](https://perf.rust-lang.org/) and she wants to do a web request to load various intermediate results. She has heard that the `reqwest` crate is quite nice, so she decides to give it a try. She writes up an async function that does her web request: + +```rust +async fn do_web_request(url: &Url) -> Data { + ... +} +``` + +She needs to apply this async function to a number of urls. She wants to use the iterator map function, like so: + +```rust +async fn do_web_request(url: &Url) -> Data {...} + +fn aggregate(urls: &[Url]) -> Vec { + urls + .iter() + .map(|url| do_web_request(url)) + .collect() +} + +fn main() { + /* do stuff */ + let data = aggregate(); + /* do more stuff */ +} +``` + +Of course, since `do_web_request` is an async fn, she gets a type error from the compiler: + +``` +error[E0277]: a value of type `Vec` cannot be built from an iterator over elements of type `impl Future` + --> src/main.rs:11:14 + | +11 | .collect(); + | ^^^^^^^ value of type `Vec` cannot be built from `std::iter::Iterator` + | + = help: the trait `FromIterator` is not implemented for `Vec` +``` + +"Of course," she thinks, "I can't call an async function from a closure." She decides that since she is not overly concerned about performance, so she decides she'll just use a call to [`block_on` from the `futures` crate](https://docs.rs/futures/0.3.14/futures/executor/fn.block_on.html) and execute the function synchronously: + +```rust +async fn do_web_request(url: &Url) -> Data {...} + +fn aggregate(urls: &[Url]) -> Vec { + urls + .iter() + .map(|url| futures::executor::block_on(do_web_request(url))) + .collect() +} + +fn main() { + /* do stuff */ + let data = aggregate(); + /* do more stuff */ +} +``` + +The code compiles, and it seems to work. + +### Introducing `block_on` + +As Barbara works on play, she realizes that she needs to do more and more async operations. She decides to convert her synchronous `main` function into an `async main`. She's using tokio, so she is able to do this very conveniently with the `#[tokio::main]` decorator: + +```rust +#[tokio::main] +async fn main() { + /* do stuff */ + let data = aggregate(); + /* do more stuff */ +} +``` + +Everything seems to work ok on her laptop, but when she pushes the code to production, it deadlocks immediately. "What's this?" she says. Confused, she runs the code on her laptop a few more times, but it seems to work fine. + +She decides to try debugging. She fires up a debugger but finds it is isn't really giving her useful information about what is stuck (she has [basically the same problems that Alan has](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_tries_to_debug_a_hang.html)). [She wishes she could get insight into tokio's state.](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/barbara_wants_async_insights.html) + +Frustrated, she starts reading the tokio docs more closely and she realizes that `tokio` runtimes offer their own `block_on` method. "What the hey," she thinks, "let's see if that works any better." She changes the `aggregate` function to use tokio's `block_on`: + +```rust= +fn block_on(f: impl Future) -> O { + let rt = tokio::runtime::Runtime::new().unwrap(); + rt.block_on(f) +} + +fn aggregate(urls: &[Url]) -> Vec { + urls + .iter() + .map(|url| block_on(do_web_request(url))) + .collect() +} +``` + +The good news is that the deadlock is gone. The bad news is that now she is getting a panic: + +> thread 'main' panicked at 'Cannot start a runtime from within a runtime. This happens because a function (like `block_on`) attempted to block the current thread while the thread is being used to drive asynchronous tasks.' + +"Well," she thinks, "I could use that `Handle` API to get the current runtime, maybe that will work?" + +```rust +fn aggregate(urls: &[&str]) -> Vec { + let handle = Handle::current(); + urls.iter() + .map(|url| handle.block_on(do_web_request(url))) + .collect() +} +``` + +But it seems to give her the same panic. + +### Trying out `spawn_blocking` + +Reading more into this problem, she realizes she is supposed to be using `spawn_blocking`. She tries replacing `block_on` with `tokio::task::spawn_blocking`: + +```rust= +fn aggregate(urls: &[Url]) { + let data: Vec = + urls + .iter() + .map(|url| tokio::task::spawn_blocking(move || do_web_request(url))) + .collect(); +} +``` + + +but now she gets a type error again: + +``` +error[E0277]: a value of type `Vec` cannot be built from an iterator over elements of type `tokio::task::JoinHandle` + --> src/main.rs:22:14 + | +22 | .collect(); + | ^^^^^^^ value of type `Vec` cannot be built from `std::iter::Iterator>` + | + = help: the trait `FromIterator>` is not implemented for `Vec` +``` + +Of course! `spawn_blocking`, like `map`, just takes a regular closure, not an async closure. She's getting a bit frustrated now. "Well," she thinks, "I can use `spawn` to get into an async context!" So she adds a call to `spawn` inside the `spawn_blocking` closure: + +```rust +fn aggregate(urls: &[Url]) { + let data: Vec = + urls + .iter() + .map(|url| tokio::task::spawn_blocking(move || { + tokio::task::spawn(async move { + do_web_request(url).await + }) + })) + .collect(); +} +``` + +But this isn't really helping, as `spawn` still yields a future. She's getting the same errors. + +### Async all the way + +She remembers now that this whole drama started because she was converting her `main` function to be `async`. Maybe she doesn't have to bridge between sync and async? She starts digging around in the docs and finds `futures::join_all`. Using that, she can change `aggregate` to be an async function too: + +```rust +async fn aggregate(urls: &[Url]) { + let data: Vec = futures::join_all( + urls + .iter() + .map(|url| do_web_request(url)) + ).await; +} +``` + +Things are working again now, so she is happy. + +### Filtering + +Later on, she would like to apply a filter to the aggregation operation. She realizes that if she wants to use the fetched data when doing the filtering, she has to filter the vector after the join has completed; `join_all` doesn't have a way to put a filter into the iterator chain like she wants. She is annoyed, but performance isn't critical, so it's ok. + +### And the cycle begins again + +Later on, she wants to call `aggregate` from another binary. This one doesn't have an `async main`. This context is deep inside of an iterator chain and was previously entirely synchronous. She realizes it would be a lot of work to change all the intervening stack frames to be `async fn`, rewrite the iterators into streams, etc. She decides to just call `block_on` again, even though it make her nervous. + +## 🤔 Frequently Asked Questions + +### What are the morals of the story? + +* Some projects don't care about max performance and just want things to work. + * They would probably be happy with sync but as the most popular libraries for web requests, databases, etc, offer async interfaces, they may still be using async code. +* There are contexts where you can't easily add an `await`. + * For example, inside of an iterator chain. + * Big block of existing code. +* Mixing sync and async code (`block_on`) can cause deadlocks that are really painful to diagnose. + + +### Why did you choose Barbara to tell this story? + +* Because Mark (who experienced most of it) is a very experienced Rust developer. +* Because you could experience this story regardless of language background or being new to Rust. + +### How would this story have played out differently for the other characters? + +I would expect it would work out fairly similarly, except that the type errors and things might well have been more challenging for people to figure out, assuming they aren't already familiar with Rust. + +### What are other ways people could experience similar problems mixing sync and async? + +* Using `std::Mutex` in async code. +* Calling the blocking version of an asynchronous API. + * For example, `reqwest::blocking`, the synchronous `[zbus`](https://gitlab.freedesktop.org/dbus/zbus/-/blob/main/zbus/src/proxy.rs#L121) and [`rumqtt`](https://github.com/bytebeamio/rumqtt/blob/8de24cbc0484f459246251873aa6c80be8b6e85f/rumqttc/src/client.rs#L224) APIs. + * These are commonly implemented by using some variant of `block_on` internally. + * Therefore they can lead to panics or deadlocks depending on what async runtime they are built from and used with. + +### How many variants of `block_on` are there? + +* the `futures` crate offers a runtime-independent block-on (which can lead to deadlocks, as in this story) +* the `tokio` crate offers a `block_on` method (which will panic if used inside of another tokio runtime, as in this story) +* the [`pollster`](https://crates.io/crates/pollster) crate exists just to offer `block_on` +* the [`futures-lite`](https://docs.rs/futures-lite/1.11.3/futures_lite/future/fn.block_on.html) crate offers a `block_on` +* the [`aysnc-std`](https://docs.rs/async-std/1.9.0/async_std/task/fn.block_on.html) crate offers `block_on` +* the [`async-io`](https://docs.rs/async-std/1.9.0/async_std/task/fn.block_on.html) crate offers `block_on` +* ...there are probably more, but I think you get the point. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From 0f0384847fc264c24e68305ce960833f106adca1 Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Wed, 14 Apr 2021 10:47:46 +0200 Subject: [PATCH 105/347] Cite sources for issue which caused future to be !Send --- src/vision/status_quo/alan_thinks_he_needs_async_locks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vision/status_quo/alan_thinks_he_needs_async_locks.md b/src/vision/status_quo/alan_thinks_he_needs_async_locks.md index 98efab56..fc71035e 100644 --- a/src/vision/status_quo/alan_thinks_he_needs_async_locks.md +++ b/src/vision/status_quo/alan_thinks_he_needs_async_locks.md @@ -111,6 +111,7 @@ In the end, Barbara decides to write a blog post about how blocking in async cod ### **What are the sources for this story?** * Chats with [Alice](https://github.com/Darksonn) and [Lucio](https://github.com/LucioFranco). * Alice's [blog post](https://ryhl.io/blog/async-what-is-blocking/) on the subject has some good insights. + * The issue of conservative analysis of whether values are used across await points causing futures to be `!Send` is [known](https://rust-lang.github.io/async-book/07_workarounds/03_send_approximation.html), but it takes some digging to find out about this issue. A tracking issue for this can be [found here](https://github.com/rust-lang/rust/issues/57478). ### **Why did you choose [Alan](../characters/alan.md) to tell this story?** * While Barbara might be tripped up on some of the subtlties, an experienced Rust developer can usually tell how to avoid some of the issues of using locks in async code. Alan on the other hand, might be surprised when his code does not compile as the issue the `Send` error is protecting against (i.e., a mutex guard being moved to another thread) is not protected against in other languages. ### **How would this story have played out differently for the other characters?** From 23085f81f5aa3be3a62a4127148e12e5f951285e Mon Sep 17 00:00:00 2001 From: Gus Wynn Date: Wed, 14 Apr 2021 10:27:39 -0700 Subject: [PATCH 106/347] Update src/vision/status_quo/barbara_compares_some_cpp_code.md Co-authored-by: Alice Ryhl --- src/vision/status_quo/barbara_compares_some_cpp_code.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_compares_some_cpp_code.md b/src/vision/status_quo/barbara_compares_some_cpp_code.md index a7e9c26f..49b706e2 100644 --- a/src/vision/status_quo/barbara_compares_some_cpp_code.md +++ b/src/vision/status_quo/barbara_compares_some_cpp_code.md @@ -99,7 +99,7 @@ This resolves the problem as seen in production, but leads to Niklaus's code rev ## 🤔 Frequently Asked Questions ### **Is this actually the correct solution?** -* Only in part. It may cause other kinds of contention or blocking on the runtime. As mentioned above, the deserialization work probably needs to be wrapped in something like [`block_in_place`](https://docs.rs/tokio/1.5.0/tokio/task/fn.block_in_place.html), so that other tasks are not starved on the runtime, or might want to use [`spawn_blocking`](https://docs.rs/tokio/1.5.0/tokio/task/fn.spawn_blocking.html). There are some important caveats/details that matter: +* Only in part. It may cause other kinds of contention or blocking on the runtime. As mentioned above, the deserialization work probably needs to be wrapped in something like [`block_in_place`](https://docs.rs/tokio/1/tokio/task/fn.block_in_place.html), so that other tasks are not starved on the runtime, or might want to use [`spawn_blocking`](https://docs.rs/tokio/1/tokio/task/fn.spawn_blocking.html). There are some important caveats/details that matter: * This is dependent on how the runtime works. * `block_in_place` + `tokio::spawn` might be better if the caller wants to control concurrency, as spawning is heavyweight when the deserialization work happens to be small. * `spawn_blocking`, at least in some executors, cannot be cancelled, a departure from the prototypical cancellation story in async Rust. From 92cb3bd0f6d819eac0b1a5482096fe3dd7951637 Mon Sep 17 00:00:00 2001 From: Gus Wynn Date: Wed, 14 Apr 2021 10:32:32 -0700 Subject: [PATCH 107/347] Update src/vision/status_quo/barbara_compares_some_cpp_code.md Co-authored-by: Ryan Levick --- src/vision/status_quo/barbara_compares_some_cpp_code.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_compares_some_cpp_code.md b/src/vision/status_quo/barbara_compares_some_cpp_code.md index 49b706e2..9f833a18 100644 --- a/src/vision/status_quo/barbara_compares_some_cpp_code.md +++ b/src/vision/status_quo/barbara_compares_some_cpp_code.md @@ -11,7 +11,7 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee Barbara is recreating some code that has been written in other languages they have some familiarity with. These include C++, but also GC'd languages like Python. -This code collates a large number of requests to network services, with eash response containing a large amount of data. +This code collates a large number of requests to network services, with each response containing a large amount of data. To speed this up, Barbara uses `buffer_unordered`, and writes code like this: ``` From a57c5d834b92c55bce5ef874fdfbb7056e6d3f9d Mon Sep 17 00:00:00 2001 From: Emmanuel Antony Date: Thu, 15 Apr 2021 01:22:08 +0530 Subject: [PATCH 108/347] Added examples for async recursion --- .../status_quo/barbara_needs_async_helpers.md | 76 ++++++++++++++++++- 1 file changed, 74 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/barbara_needs_async_helpers.md b/src/vision/status_quo/barbara_needs_async_helpers.md index b959dbbc..7073313d 100644 --- a/src/vision/status_quo/barbara_needs_async_helpers.md +++ b/src/vision/status_quo/barbara_needs_async_helpers.md @@ -65,9 +65,68 @@ error[E0733]: recursion in an `async fn` requires boxing = note: a recursive `async fn` must be rewritten to return a boxed `dyn Future` ``` -So to make these functions async she starts boxing her futures. She also asks one of her peers for a code review asynchronously, and after awaiting their response, she learns about the [`async-recursion`] crate. Then she adds [`async-recursion`] to the dependencies. +So to make these functions async she starts boxing her futures the hard way, fighting with the compiler. She knows that `async` keyword is sort of a sugar for `impl Future` so she tries the following at first. -As she is working, she realizes that what she really needs is to write a `Stream` of data. She starts trying to write her `Stream` implementation and spends several hours banging her head against her desk in frustration (her challenges are pretty similar to what [Alan experienced](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_hates_writing_a_stream.html)). Ultimately she's stuck trying to figure out why her `&mut self.foo` call is giving her errors: +```rust +fn sum(n: usize) -> Box> { + Box::new(async move { + if n == 0 { + 0 + } else { + n + sum(n - 1).await + } + }) +} +``` + +The compiler gives the following error. + +``` +error[E0277]: `dyn Future` cannot be unpinned + --> src/main.rs:11:17 + | +11 | n + sum(n - 1).await + | ^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `dyn Future` + | + = note: required because of the requirements on the impl of `Future` for `Box>` + = note: required by `poll` +``` + +She then reads about `Unpin` and `Pin`, and finally comes up with a solution. + +```rust +fn sum(n: usize) -> Pin>> { + Box::pin(async move { + if n == 0 { + 0 + } else { + n + sum(n - 1).await + } + }) +} +``` + +The code works! + +She searches online for better methods and finds out the [async-book](https://rust-lang.github.io/async-book/01_getting_started/01_chapter.html). She reads about [recursion](https://rust-lang.github.io/async-book/07_workarounds/04_recursion.html) and finds out a cleaner way using the [`futures`] crate. + +```rust +use futures::future::{BoxFuture, FutureExt}; + +fn sum(n: usize) -> BoxFuture<'static, usize> { + async move { + if n == 0 { + 0 + } else { + n + sum(n - 1).await + } + }.boxed() +} +``` + +She also asks one of her peers for a code review asynchronously, and after awaiting their response, she learns about the [`async-recursion`] crate. Then she adds [`async-recursion`] to the dependencies. + +As she is working, she realizes that what she really needs is to write a `Stream` of data. She starts trying to write her `Stream` implementation and spends several hours banging her head against her desk in frustration (her challenges are pretty similar to what [Alan experienced](./alan_hates_writing_a_stream.md)). Ultimately she's stuck trying to figure out why her `&mut self.foo` call is giving her errors: ``` error[E0277]: `R` cannot be unpinned @@ -111,6 +170,19 @@ But Barbara fights through all of it. In the end, she gets it to work, but she r ### **What are helper functions/macros?** They are functions/macros that helps with certain basic pieces of functionality and features. Like to await on multiple futures concurrently (`join!` in tokio), or else race the futures and take the result of the one that finishes first. +### **Will there be a difference if lifetimes are involved in async recursion functions?** +Lifetimes would make it a bit more difficult. Although for simple functions it shouldn't be much of a problem. +```rust +fn concat<'a>(string: &'a mut String, slice: &'a str) -> Pin + 'a>> { + Box::pin(async move { + if !slice.is_empty() { + string.push_str(&slice[0..1]); + concat(string, &slice[1..]).await; + } + }) +} +``` + ### **Why did you choose [Barbara] to tell this story?** This particular issue impacts all users of Rust even (and sometimes especially) experienced ones. From f36e9edd3d4c8fde6cf82c3149221d71e605c61d Mon Sep 17 00:00:00 2001 From: Ryan Levick Date: Thu, 15 Apr 2021 13:28:01 +0200 Subject: [PATCH 109/347] Small cosmetic changes --- .../shiny_future/barbara_makes_a_wish.md | 4 ++-- .../alan_finds_database_drops_hard.md | 6 ++--- .../status_quo/alan_hates_writing_a_stream.md | 16 +++++++------- src/vision/status_quo/alan_lost_the_world.md | 16 +++++++------- ...usting_the_rust_compiler_but_then_async.md | 6 ++--- .../status_quo/alan_writes_a_web_framework.md | 18 +++++++-------- .../status_quo/barbara_anguishes_over_http.md | 7 +++--- ...ara_carefully_dismisses_embedded_future.md | 10 ++++----- .../status_quo/barbara_plays_with_async.md | 22 +++++++++---------- .../grace_wants_to_integrate_c_api.md | 8 +++---- 10 files changed, 56 insertions(+), 57 deletions(-) diff --git a/src/vision/shiny_future/barbara_makes_a_wish.md b/src/vision/shiny_future/barbara_makes_a_wish.md index 4a0440db..90124a01 100644 --- a/src/vision/shiny_future/barbara_makes_a_wish.md +++ b/src/vision/shiny_future/barbara_makes_a_wish.md @@ -22,7 +22,7 @@ Barbara now remembers hearing something about a `wish4-async-insight` crate, whi She adds the crate as a dependency to her `Cargo.toml`, renaming it to just `insight` to make it easier to reference in her code, and then initializes it in her main async function. -```rust,ignore +```rust async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { insight::init(); // new code ... @@ -31,7 +31,7 @@ async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { Barbara rebuilds and runs her program again. She doesn't see anything different in the terminal output for the program itself though, and the behavior is the same as before: hitting an endpoint, nothing happens. She double-checks the readme for the `wish4-async-insight` crate, and realizes that she needs to connect other programs to her service to observe the insights being gathered. Barbara decides that she wants to customize the port that `insight` is listening on before she starts her experiments with those programs. -```rust,ignore +```rust async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { insight::init(listen_port => 8080); // new code, leveraging keyword arguments feature added in 2024 ... diff --git a/src/vision/status_quo/alan_finds_database_drops_hard.md b/src/vision/status_quo/alan_finds_database_drops_hard.md index 7b34fc1b..2071e97b 100644 --- a/src/vision/status_quo/alan_finds_database_drops_hard.md +++ b/src/vision/status_quo/alan_finds_database_drops_hard.md @@ -11,7 +11,7 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee Alan has been adding an extension to YouBuy that launches a singleton actor which interacts with a Sqlite database using the `sqlx` crate. The Sqlite database only permits a single active connection at a time, but this is not a problem, because the actor is a singleton, and so there only should be one at a time. He consults the documentation for `sqlx` and comes up with the following code to create a connection and do the query he needs: -```rust,ignore +```rust use sqlx::Connection; #[async_std::main] @@ -41,7 +41,7 @@ Alan tries to figure out what happened from the logs, but the only information h He's a bit confused, because he's accustomed to having things generally be cleaned up automatically when they get dropped (for example, dropping a [`File`](https://doc.rust-lang.org/std/fs/struct.File.html) will close it). Searching the docs, he sees the [`close`](https://docs.rs/sqlx/0.5.1/sqlx/trait.Connection.html#tymethod.close) method, but the comments confirm that he shouldn't have to call it explicitly: "This method is not required for safe and consistent operation. However, it is recommended to call it instead of letting a connection drop as the database backend will be faster at cleaning up resources." Still, just in case, he decides to add a call to `close` into his code. It does seem to help some, but he is still able to reproduce the problem if he refreshes often enough. Feeling confused, he adds a log statement right before calling `close` to see if it is working: -```rust,ignore +```rust use sqlx::Connection; #[async_std::main] @@ -76,8 +76,6 @@ Alan briefly considers rearchitecting his application in more extreme ways to re ## 🤔 Frequently Asked Questions -*Here are some standard FAQ to get you started. Feel free to add more!* - ### **What are the morals of the story?** * Rust's async story is lacking a way of executing async operations in destructors. Spawning is a workaround, but it can have unexpected side-effects. * The story demonstrates solid research steps that Alan uses to understand and resolve his problem. diff --git a/src/vision/status_quo/alan_hates_writing_a_stream.md b/src/vision/status_quo/alan_hates_writing_a_stream.md index 1ddea07e..a9c38b80 100644 --- a/src/vision/status_quo/alan_hates_writing_a_stream.md +++ b/src/vision/status_quo/alan_hates_writing_a_stream.md @@ -14,7 +14,7 @@ After a couple weeks learning Rust basics, Alan quickly understands `async` and Eventually, Alan realizes that some responses have enormous bodies, and would like to stream them instead of buffering them fully in memory. He's *used* the `Stream` trait before. Using it was very natural, and followed a similar pattern to regular `async`/`await`: -```rust,ignore +```rust while let Some(chunk) = body.next().await? { file.write_all(&chunk).await?; } @@ -26,7 +26,7 @@ However, _implementing_ `Stream` turns out to be rather different. With a quick Alan first hoped he could simply write signing stream imperatively, reusing his new knowledge of `async` and `await`, and assuming it'd be similar to JavaScript: -```rust,ignore +```rust async* fn sign(file: ReaderStream) -> Result, Error> { let mut sig = Signature::new(); @@ -73,7 +73,7 @@ Implementing a `Stream` means writing async code in a way that doesn't _feel_ li Unsure of what the final code will look like, he starts with: -```rust,ignore +```rust struct SigningFile; impl Stream for SigningFile { @@ -101,7 +101,7 @@ With `Pin` hopefully ignored, Alan next notices that in the imperative style he He thinks about his stream's states, and settles on the following structure: -```rust,ignore +```rust struct SigningFile { state: State, file: ReaderStream, @@ -118,7 +118,7 @@ enum State { It turns out it was more complicated than Alan thought (the author made this same mistake). The `digest` method of `Signature` is `async`, _and_ it consumes the signature, so the state machine needs to be adjusted. The signature needs to be able to be moved out, and it needs to be able to store a future from an `async fn`. Trying to figure out how to represent that in the type system was difficult. He considered adding a generic `T: Future` to the `State` enum, but then wasn't sure what to set that generic to. Then, he tries just writing `Signing(impl Future)` as a state variant, but that triggers a compiler error that `impl Trait` isn't allowed outside of function return types. Patient [Barbara] helped again, so that Alan learns to just store a `Pin>`, wondering if the `Pin` there is important. -```rust,ignore +```rust struct SigningFile { state: State, } @@ -132,7 +132,7 @@ enum State { Now he tries to write the `poll_next` method, checking readiness of individual steps (thankfully, Alan remembers `ready!` from the futures 0.1 blog posts he read) and proceeding to the next state, while grumbling away the weird `Pin` noise: -```rust,ignore +```rust match self.state { State::File(ref mut file, ref mut sig) => { match ready!(Pin::new(file).poll_next(cx)) { @@ -166,7 +166,7 @@ Oh well, at least it _works_, right? So far, Alan hasn't paid too much attention to `Context` and `Poll`. It's been fine to simply pass them along untouched. There's a confusing bug in his state machine. Let's look more closely: -```rust,ignore +```rust // zooming in! match ready!(Pin::new(file).poll_next(cx)) { Some(result) => { @@ -188,7 +188,7 @@ The compiler doesn't help at all, and he re-reads his code multiple times, but b All too often, since we don't want to duplicate code in multiple branches, the solution for Alan is to add an odd `loop` around the whole thing, so that the next match branch uses the `Context`: -```rust,ignore +```rust loop { match self.state { State::File(ref mut file, ref mut sig) => { diff --git a/src/vision/status_quo/alan_lost_the_world.md b/src/vision/status_quo/alan_lost_the_world.md index 3f18cd66..d73db582 100644 --- a/src/vision/status_quo/alan_lost_the_world.md +++ b/src/vision/status_quo/alan_lost_the_world.md @@ -15,7 +15,7 @@ Alan heard about a project to reimplement a deprecated browser plugin using Rust 3. `await` the `Future` in an `async` function 4. Do whatever they want with the resulting data -```rust,ignore +```rust use web_sys::{Request, window}; fn make_request(src: &url) -> Request { @@ -34,7 +34,7 @@ Alan adds calls to `load_image` where appropriate. They realize that nothing is At this point, Alan wants to put the downloaded image onto the screen, which in this project means putting it into a `Node` of the current `World`. A `World` is a bundle of global state that's passed around as things are loaded, rendered, and scripts are executed. It looks like this: -```rust,ignore +```rust /// All of the player's global state. pub struct World<'a> { @@ -50,7 +50,7 @@ pub struct World<'a> { In synchronous code, this was perfectly fine. Alan figures it'll be fine in async code, too. So Alan adds the world as a function parameter and everything else needed to parse an image and add it to our list of nodes: -```rust,ignore +```rust async fn load_image(src: String, inside_of: usize, world: &mut World<'_>) { let request = make_request(&url); let data = window().unwrap().fetch_with_request(&request).await.unwrap().etc.etc.etc; @@ -73,7 +73,7 @@ error[E0597]: `world` does not live long enough Hmm, okay, that's kind of odd. We can pass a `World` to a regular function just fine - why do we have a problem here? Alan glances over at `loader.rs`... -```rust,ignore +```rust fn attach_image_from_net(world: &mut World<'_>, args: &[Value]) -> Result { let this = args.get(0).coerce_to_object()?; let url = args.get(1).coerce_to_string()?; @@ -86,7 +86,7 @@ Hmm, the error is in that last line. `spawn_local` is a thing Alan had to put in Alan has a hunch that this `spawn_local` thing might be causing a problem, so Alan reads the documentation. The function signature seems particularly suspicious: -```rust,ignore +```rust pub fn spawn_local(future: F) where F: Future + 'static @@ -96,7 +96,7 @@ So, `spawn_local` only works with futures that return nothing - so far, so good Barbara explains that when you borrow a value in a closure, the closure doesn't gain the lifetime of that borrow. Instead, the borrow comes with it's own lifetime, separate from the closure's. The only time a closure can have a non-`'static` lifetime is if one or more of its borrows is *not* provided by it's caller, like so: -```rust,ignore +```rust fn benchmark_sort() -> usize { let mut num_times_called = 0; let test_values = vec![1,3,5,31,2,-13,10,16]; @@ -114,7 +114,7 @@ The closure passed to `sort_by` has to copy or borrow anything not passed into i Async functions, it turns out, *act like closures that don't take parameters*! They *have to*, because all `Future`s have to implement the same trait method `poll`: -```rust,ignore +```rust pub trait Future { type Output; @@ -126,7 +126,7 @@ When you call an async function, all of it's parameters are copied or borrowed i Barbara suggests changing all of the async function's parameters to be owned types. Alan asks Grace, who architected this project. Grace recommends holding a reference to the `Plugin` that owns the `World`, and then borrowing it whenever you need the `World`. That ultimately looks like the following: -```rust,ignore +```rust async fn load_image(src: String, inside_of: usize, player: Arc>) { let request = make_request(&url); let data = window().unwrap().fetch_with_request(&request).await.unwrap().etc.etc.etc; diff --git a/src/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md b/src/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md index 1feb89a3..da637428 100644 --- a/src/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md +++ b/src/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md @@ -21,7 +21,7 @@ His trust in the compiler solidifies further the more he codes in Rust. ### The first async project Alan now starts with his first async project. He sees that there is no async in the standard library, but after googling for "rust async file open", he finds 'async_std', a crate that provides some async versions of the standard library functions. He has some code written that asynchronously interacts with some files: -```rust,ignore +```rust use async_std::fs::File; use async_std::prelude::*; @@ -33,7 +33,7 @@ fn main() -> Result<(), Box> { ``` But now the compiler complains that `await` is only allowed in `async` functions. He now notices that all the examples use `#[async_std::main]` as an attribute on the `main` function in order to be able to turn it into an `async main`, so he does the same to get his code compiling: -```rust,ignore +```rust use async_std::fs::File; use async_std::prelude::*; @@ -55,7 +55,7 @@ The project is working like a charm. The project Alan is building is starting to grow, and he decides to add a new feature that needs to make some API calls. He starts using `reqwest` in order to help him achieve this task. After a lot of refactoring to make the compiler accept the program again, Alan is satisfied that his refactoring is done. His program now boils down to: -```rust,ignore +```rust use async_std::fs::File; use async_std::prelude::*; diff --git a/src/vision/status_quo/alan_writes_a_web_framework.md b/src/vision/status_quo/alan_writes_a_web_framework.md index 04f5b96b..6c1cac85 100644 --- a/src/vision/status_quo/alan_writes_a_web_framework.md +++ b/src/vision/status_quo/alan_writes_a_web_framework.md @@ -19,7 +19,7 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee [YouBuy](../projects/YouBuy.md) is written using an async web framework that predates the stabilization of async function syntax. When [Alan] joins the company, it is using async functions for its business logic, but can't use them for request handlers because the framework doesn't support it yet. It requires the handler's return value to be `Box>`. Because the web framework predates async function syntax, it requires you to take ownership of the request context (`State`) and return it alongside your response in the success/error cases. This means that even with async syntax, an http route handler in this web framework looks something like this (from [the Gotham Diesel example](https://github.com/gotham-rs/gotham/blob/9f10935bf28d67339c85f16418736a4b6e1bd36e/examples/diesel/src/main.rs)): -```rust,ignore +```rust // For reference, the framework defines these type aliases. pub type HandlerResult = Result<(State, Response), (State, HandlerError)>; pub type HandlerFuture = dyn Future + Send; @@ -43,7 +43,7 @@ fn get_products_handler(state: State) -> Pin> { } ``` and then it is registered like this: -```rust,ignore +```rust router_builder.get("/").to(get_products_handler); ``` @@ -51,7 +51,7 @@ The handler code is forced to drift to the right a lot, because of the async blo Rather than switching YouBuy to a different web framework, Alan decides to contribute to the web framework himself. After a bit of a slog and a bit of where-clause-soup, he manages to make the web framework capable of using an `async fn` as an http request handler. He does this by extending the router builder with a closure that boxes up the `impl Future` from the async fn and then passes that closure on to `.to()`. -```rust,ignore +```rust fn to_async(self, handler: H) where Self: Sized, @@ -62,13 +62,13 @@ Rather than switching YouBuy to a different web framework, Alan decides to contr } ``` The handler registration then becomes: -```rust,ignore +```rust router_builder.get("/").to_async(get_products_handler); ``` This allows him to strip out the async blocks in his handlers and use `async fn` instead. -```rust,ignore +```rust // Type the library again, in case you've forgotten: pub type HandlerResult = Result<(State, Response), (State, HandlerError)>; @@ -90,7 +90,7 @@ async fn get_products_handler(state: State) -> HandlerResult { It's still not fantastically ergonomic though. Because the handler takes ownership of State and returns it in tuples in the result, Alan can't use the `?` operator inside his http request handlers. If he tries to use `?` in a handler, like this: -```rust,ignore +```rust async fn get_products_handler(state: State) -> HandlerResult { use crate::schema::products::dsl::*; @@ -117,7 +117,7 @@ error[E0277]: `?` couldn't convert the error to `(gotham::state::State, HandlerE Alan knows that the answer is to make another wrapper function, so that the handler can take an `&mut` reference to `State` for the lifetime of the future, like this: -```rust,ignore +```rust async fn get_products_handler(state: &mut State) -> Result, HandlerError> { use crate::schema::products::dsl::*; @@ -131,7 +131,7 @@ async fn get_products_handler(state: &mut State) -> Result, Handl } ``` and then register it with: -```rust,ignore +```rust route.get("/").to_async_borrowing(get_products_handler); ``` @@ -141,7 +141,7 @@ Shortly afterwards, someone raises a bug about `?`, and a few other web framewor A month later, one of the contributors finds a forum comment by [Barbara] explaining how to express what Alan is after (using higher-order lifetimes and a helper trait). They implement this and merge it. The final `.to_async_borrowing()` implementation ends up looking like this (also from [Gotham](https://github.com/gotham-rs/gotham/blob/89c491fb4322bbc6fbcc8405c3a33e0634f7cbba/gotham/src/router/builder/single.rs)): -```rust,ignore +```rust pub trait AsyncHandlerFn<'a> { type Res: IntoResponse + 'static; type Fut: std::future::Future> + Send + 'a; diff --git a/src/vision/status_quo/barbara_anguishes_over_http.md b/src/vision/status_quo/barbara_anguishes_over_http.md index fc6173a4..8418185f 100644 --- a/src/vision/status_quo/barbara_anguishes_over_http.md +++ b/src/vision/status_quo/barbara_anguishes_over_http.md @@ -31,9 +31,10 @@ Alan, having watched Barbara stare off into the distance for what felt like a ha ## 🤔 Frequently Asked Questions ### **What are the morals of the story?** - * What is a very mundane and simple decision in many other languages, picking an HTTP library, requires users to contemplate *many* different considerations. - * There is no practical way to choose an HTTP library that will serve most of the ecosystem. Sync/Async, competing runtimes, etc. - someone will always be left out. - * HTTP is a small implementation detail of this library, but it is a HUGE decision that will ultimately be the biggest factor in who can adopt their library. + +* What is a very mundane and simple decision in many other languages, picking an HTTP library, requires users to contemplate *many* different considerations. +* There is no practical way to choose an HTTP library that will serve most of the ecosystem. Sync/Async, competing runtimes, etc. - someone will always be left out. +* HTTP is a small implementation detail of this library, but it is a HUGE decision that will ultimately be the biggest factor in who can adopt their library. ### **What are the sources for this story?** Based on the author's personal experience of taking newcomers to Rust through the decision making process of picking an HTTP implementation for a library. diff --git a/src/vision/status_quo/barbara_carefully_dismisses_embedded_future.md b/src/vision/status_quo/barbara_carefully_dismisses_embedded_future.md index 33cf3fcc..d78df215 100644 --- a/src/vision/status_quo/barbara_carefully_dismisses_embedded_future.md +++ b/src/vision/status_quo/barbara_carefully_dismisses_embedded_future.md @@ -36,7 +36,7 @@ kernel does not expose a Future-based interface, so Barbara has to implement `Future` by hand rather than using async/await syntax. She starts with a skeleton: -```rust,ignore +```rust /// Passes `buffer` to the kernel, and prints it to the console. Returns a /// future that returns `buffer` when the print is complete. The caller must /// call kernel_ready_for_callbacks() when it is ready for the future to return. @@ -61,7 +61,7 @@ Note: All error handling is omitted to keep things understandable. Barbara begins to implement `print_buffer`: -```rust,ignore +```rust fn print_buffer(buffer: &'static mut [u8]) -> PrintFuture { kernel_set_print_callback(callback); kernel_start_print(buffer); @@ -76,7 +76,7 @@ extern fn callback() { So far so good. Barbara then works on `poll`: -```rust,ignore +```rust fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { if kernel_is_print_done() { return Poll::Ready(kernel_get_buffer_back()); @@ -92,7 +92,7 @@ somewhere! Barbara puts the `Waker` in a global variable so the callback can find it (this is fine because the app is single threaded and callbacks do NOT interrupt execution the way Unix signals do): -```rust,ignore +```rust static mut PRINT_WAKER: Option = None; extern fn callback() { @@ -104,7 +104,7 @@ extern fn callback() { She then modifies `poll` to set `PRINT_WAKER`: -```rust,ignore +```rust fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { if kernel_is_print_done() { return Poll::Ready(kernel_get_buffer_back()); diff --git a/src/vision/status_quo/barbara_plays_with_async.md b/src/vision/status_quo/barbara_plays_with_async.md index 5595de83..e777d286 100644 --- a/src/vision/status_quo/barbara_plays_with_async.md +++ b/src/vision/status_quo/barbara_plays_with_async.md @@ -43,7 +43,7 @@ that will wait for a certain duration to elapse before resolving. Borrowing again from the "Hello Tokio" tutorial to make sure she has the correct spelling for the tokio macros, she writes up the following code: -```rust,ignore +```rust #[tokio::main] pub async fn main() { let mut rng = thread_rng(); @@ -72,7 +72,7 @@ seconds doing nothing, and giving no hints about what it's actually doing. So for the next iteration, Barbara wants to have a message printed out when each future is resolved. She tries this code at first: -```rust,ignore +```rust let mut futures = Vec::new(); for _ in 0..10 { let delay = rng.sample(t); @@ -105,7 +105,7 @@ which looks interesting. Indeed, this struct is a future that will resolve instantly, which is what she wants: -```rust,ignore +```rust for _ in 0..10 { let delay = rng.sample(t); futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| { @@ -161,7 +161,7 @@ and remembers that there's a 3rd-party crate called "[futures][futures crate]" on crates.io that she's seen mentioned in some /r/rust posts. She checks the docs and finds the `join_all` function which looks like what she wants: -```rust,ignore +```rust let mut futures = Vec::new(); for _ in 0..10 { let delay = rng.sample(t); @@ -182,7 +182,7 @@ rust futures are lazy, and won't make progress unless you await them. Happy with this success, Barbara continues to expand her toy program by making a few small adjustments: -```rust,ignore +```rust for counter in 0..10 { let delay = rng.sample(t); let delay_future = tokio::time::sleep(Duration::from_millis(delay)); @@ -220,7 +220,7 @@ entire future. She first adds explicit type annotations to the Vec: -```rust,ignore +```rust let mut futures: Vec>> = Vec::new(); ``` @@ -245,7 +245,7 @@ intuition about what this API is for. But she is accustomed to just trying things in rust to see if they work. And indeed, after changing `Box::new` to `Box::pin`: -```rust,ignore +```rust futures.push(Box::pin(delay_future.then(|_| { println!("Done!"); std::future::ready(()) @@ -254,7 +254,7 @@ futures.push(Box::pin(delay_future.then(|_| { and adjusting the type of the Vec: -```rust,ignore +```rust let mut futures: Vec>>> = Vec::new(); ``` @@ -272,7 +272,7 @@ post about async rust a few weeks ago, and has a vague idea of how it looks. She tries writing this: -```rust,ignore +```rust futures.push(Box::pin(async || { tokio::time::sleep(Duration::from_millis(delay)).await; println!("Done after {}ms", delay); @@ -296,7 +296,7 @@ error[E0658]: async closures are unstable Barbara knows that async is stable and using this nightly feature isn't what she wants. So the tries the suggestion made by the compiler and removes the `||` bars: -```rust,ignore +```rust futures.push(Box::pin(async { tokio::time::sleep(Duration::from_millis(delay)).await; println!("Done after {}ms", delay); @@ -318,7 +318,7 @@ to an async block), but Barbara's experience with rust tells her that it's a ver consistent language. Maybe the same keyword used in move closures will work here? She tries it: -```rust,ignore +```rust futures.push(Box::pin(async move { tokio::time::sleep(Duration::from_millis(delay)).await; println!("Done after {}ms", delay); diff --git a/src/vision/status_quo/grace_wants_to_integrate_c_api.md b/src/vision/status_quo/grace_wants_to_integrate_c_api.md index 372328b9..ed2eff43 100644 --- a/src/vision/status_quo/grace_wants_to_integrate_c_api.md +++ b/src/vision/status_quo/grace_wants_to_integrate_c_api.md @@ -67,7 +67,7 @@ Something Grace and her team learn to love immediately about Rust is that writin team to write their own execution environment. In fact, the future can be entirely written independently of the execution environment. She quickly writes an async method to represent the polling process: -```rust,ignore +```rust /// Gets the next frame from the camera, waiting `retry_after` time until polling again if it fails. /// /// Returns Some(frame) if a frame is found, or None if the camera is disconnected or goes down before a frame is @@ -100,7 +100,7 @@ unspecified lengths of time. Grace spends some time searching, and realizes that of some kind. `Stream` objects are the asynchronous equivalent of iterators, and her team wants to eventually write something akin to: -```rust,ignore +```rust let frame_stream = stream_from_camera(camera, Duration::from_millis(5)); while let Some(frame) = frame_stream.next().await { @@ -115,7 +115,7 @@ executed many times. The only available option to transform a future into a seri which seems to do exactly what Grace is looking for. Grace begins by adding a small intermediate type, and then plugging in the remaining holes: -```rust,ignore +```rust struct StreamState { camera: Camera, retry_after: Duration, @@ -142,7 +142,7 @@ Grace spends a lot of time trying to figure out how she might find those types! way to get around this in Rust would be. Barbara explains again how closures don't have concrete types, and that the only way to do this will be to use the `impl` keyword. -```rust,ignore +```rust fn stream_from_camera(camera: Camera, retry_after: Duration) -> impl Stream { // same as before } From 34d0c75652256cb810aabd4e7e2389591d83dc53 Mon Sep 17 00:00:00 2001 From: Gus Wynn Date: Thu, 15 Apr 2021 09:30:44 -0700 Subject: [PATCH 110/347] Update barbara_compares_some_cpp_code.md @nikomatsakis I think this covers all the comments? --- .../barbara_compares_some_cpp_code.md | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/vision/status_quo/barbara_compares_some_cpp_code.md b/src/vision/status_quo/barbara_compares_some_cpp_code.md index 9f833a18..e9d86ad6 100644 --- a/src/vision/status_quo/barbara_compares_some_cpp_code.md +++ b/src/vision/status_quo/barbara_compares_some_cpp_code.md @@ -14,7 +14,7 @@ also GC'd languages like Python. This code collates a large number of requests to network services, with each response containing a large amount of data. To speed this up, Barbara uses `buffer_unordered`, and writes code like this: -``` +```rust let mut queries = futures::stream::iter(...) .map(|query| async move { let d: Data = self.client.request(&query).await?; @@ -31,7 +31,7 @@ Python's [asyncio.wait](https://docs.python.org/3/library/asyncio-task.html#asyn as well as some code her coworkers have written using c++20's `coroutines`, using [this](https://github.com/facebook/folly/blob/master/folly/experimental/coro/Collect.h#L321): -``` +```C++ std::vector> tasks; for (const auto& query : queries) { tasks.push_back( @@ -60,7 +60,8 @@ implementation used above, noticing that is works primarily with *tasks*, which equivalent to rust `Future`'s. Then it strikes her! `request` is implemented something like this: -``` + +```rust impl Client { async fn request(&self) -> Result { let bytes = self.inner.network_request().await? @@ -77,7 +78,7 @@ This problem hadn't shown up in test cases, where the results from the mocked ne The solution is to spawn tasks (note this requires `'static` futures): -``` +```rust let mut queries = futures::stream::iter(...) .map(|query| async move { let d: Data = tokio::spawn( @@ -93,18 +94,29 @@ let results = queries.collect::>().await; Barbara was able to figure this out by reading enough and trying things out, but had that not worked, it would have probably required figuring out how to use `perf` or some similar tool. -Later on, Barbara gets surprised by this code again. It's now being used as part of a system that handles a very high number of requests per second, but sometimes the system stalls under load. She enlists Grace to help debug, and the two of them identify via `perf` that all the CPU cores are busy running `serialization_libary::from_bytes`. Barbara revisits this solution, and discovers `tokio::task::block_in_place` which she uses to wrap the calls to `serialization_libary::from_bytes`. -This resolves the problem as seen in production, but leads to Niklaus's code review suggesting the use of `tokio::task::spawn_blocking` inside `request`, instead of `spawn` inside `buffer_unordered`. This discussion is challenging, because the tradeoffs between `spawn` on a `Future` including `block_in_place` and `spawn_blocking` and then not spawning the containing `Future` are subtle and tricky to explain. +Later on, Barbara gets surprised by this code again. It's now being used as part of a system that handles a very high number of requests per second, but sometimes the system stalls under load. She enlists Grace to help debug, and the two of them identify via `perf` that all the CPU cores are busy running `serialization_libary::from_bytes`. Barbara revisits this solution, and discovers `tokio::task::block_in_place` which she uses to wrap the calls to `serialization_libary::from_bytes`: +```rust +impl Client { + async fn request(&self) -> Result { + let bytes = self.inner.network_request().await? + Ok(tokio::task::block_in_place(move || serialization_libary::from_bytes(&bytes))?) + } +} +``` + +This resolves the problem as seen in production, but leads to Niklaus's code review suggesting the use of `tokio::task::spawn_blocking` inside `request`, instead of `spawn` inside `buffer_unordered`. This discussion is challenging, because the tradeoffs between `spawn` on a `Future` including `block_in_place` and `spawn_blocking` and then not spawning the containing `Future` are subtle and tricky to explain. Also, either `block_in_place` and `spawn_blocking` are heavyweight and Barbara would prefer to avoid them when the cost of serialization is low, which is usually a runtime-property of the system. + ## 🤔 Frequently Asked Questions -### **Is this actually the correct solution?** +### **Are any of these actually the correct solution?** * Only in part. It may cause other kinds of contention or blocking on the runtime. As mentioned above, the deserialization work probably needs to be wrapped in something like [`block_in_place`](https://docs.rs/tokio/1/tokio/task/fn.block_in_place.html), so that other tasks are not starved on the runtime, or might want to use [`spawn_blocking`](https://docs.rs/tokio/1/tokio/task/fn.spawn_blocking.html). There are some important caveats/details that matter: * This is dependent on how the runtime works. - * `block_in_place` + `tokio::spawn` might be better if the caller wants to control concurrency, as spawning is heavyweight when the deserialization work happens to be small. + * `block_in_place` + `tokio::spawn` might be better if the caller wants to control concurrency, as spawning is heavyweight when the deserialization work happens to be small. However, as mentioned above, this can be complex to reason about, and in some cases, may be as heavyweight as `spawn_blocking` * `spawn_blocking`, at least in some executors, cannot be cancelled, a departure from the prototypical cancellation story in async Rust. * "Dependently blocking work" in the context of async programming is a hard problem to solve generally. https://github.com/async-rs/async-std/pull/631 was an attempt but the details are making runtime's agnostic blocking are extremely complex. * The way this problem manifests may be subtle, and it may be specific production load that triggers it. + * The outlined solutions have tradeoffs that each only make sense for certain kind of workloads. It may be better to expose the io aspect of the request and the deserialization aspect as separate APIs, but that complicates the library's usage, lays the burden of choosing the tradeoff on the callee (which may not be generally possible). ### **What are the morals of the story?** * Producing concurrent, performant code in Rust async is not always trivial. Debugging performance issues can be difficult. From 8e9a627cd19cb179d1f35991ca59011cdf9d2fb9 Mon Sep 17 00:00:00 2001 From: o0Ignition0o Date: Fri, 16 Apr 2021 09:36:47 +0200 Subject: [PATCH 111/347] Alan builds a cache --- src/vision/status_quo/alan_builds_a_cache.md | 62 ++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/vision/status_quo/alan_builds_a_cache.md diff --git a/src/vision/status_quo/alan_builds_a_cache.md b/src/vision/status_quo/alan_builds_a_cache.md new file mode 100644 index 00000000..9f7bfb1a --- /dev/null +++ b/src/vision/status_quo/alan_builds_a_cache.md @@ -0,0 +1,62 @@ +# 😱 Status quo stories: Alan tries to cache requests, which doesn't always happen. + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + + +## The story + +[Alan][] is working on an HTTP server. The server makes calls to some other service. The performance of the downstream service is somewhat poor, so Alan would like to implement some basic caching. + +Alan writes up some code which does the caching: + +```rust,ignore +async fn get_response(&mut self, key: String) { + if let Some(cached_response) self.cache.get(key) { + self.channel.send(cached_response).await; + return; + } + + let response = self.http_client.make_request(key).await; + + self.channel.send(response).await; + + self.cache.set(key, response); +} +``` + +Alan is happy with how things are working, but notices every once in a while the downstream service hangs. To prevent that, Alan implements a timeout. +He remembers from the documentation for his favorite runtime that there is the `race` function which can kick off two futures and polls both until one completes: + +```rust ,ignore +runtime::race(timeout(), get_response(key)).await +``` + +## The bug + +Alan ships to production but after several weeks he notices some users complaining that the receive old data. + +Alan tries debugging. He uses his old friend `println!`. After hours of working through, he notices that sometimes the line that sets the response in the cache never gets called. + +## The solution + +Alan goes to [Barbara][] and asks why in the world that might be ⁉️ + +💡 Barbara looks through the code and notices that there is an await point between sending the response over the channel and setting the cache. + +This means the cache might not be set. + +Alan fixes it by setting the cache before sending the result over the channel. 🎉 + + +## Morals + +* Futures can be "canceled" at any await point. Authors of futures must be aware that after an await, the code might not run. +* This is similar to `panic` safety but way more likely to happen +* Futures might be polled to completion causing the code to work. But then many years later, the code is changed and the future might conditionally not be polled to completion which breaks things. +* The burden falls on the user of to poll to completion, and there is no way for the lib author to enforce this - they can only document this invariant. +* Diagnosing and ultimately fixing this issue requires a fairly deep understanding of the semantics of futures. +* Without a Barbara, it might be hard to even know where to start. From 480c6cb5e911b60f526d277842f1e14b896a0c41 Mon Sep 17 00:00:00 2001 From: o0Ignition0o Date: Fri, 16 Apr 2021 15:06:01 +0200 Subject: [PATCH 112/347] a couple of nits. emphasize the lack of lints, tryouts on the morals of the story --- src/vision/status_quo/alan_builds_a_cache.md | 50 ++++++++++++++------ 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/src/vision/status_quo/alan_builds_a_cache.md b/src/vision/status_quo/alan_builds_a_cache.md index 9f7bfb1a..678da293 100644 --- a/src/vision/status_quo/alan_builds_a_cache.md +++ b/src/vision/status_quo/alan_builds_a_cache.md @@ -13,33 +13,38 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee Alan writes up some code which does the caching: -```rust,ignore +```rust async fn get_response(&mut self, key: String) { + // Try to get the response from cache if let Some(cached_response) self.cache.get(key) { self.channel.send(cached_response).await; return; } + // Get the response from the downstream service let response = self.http_client.make_request(key).await; - self.channel.send(response).await; + // Store the response in the cache self.cache.set(key, response); } ``` -Alan is happy with how things are working, but notices every once in a while the downstream service hangs. To prevent that, Alan implements a timeout. -He remembers from the documentation for his favorite runtime that there is the `race` function which can kick off two futures and polls both until one completes: +Alan is happy with how things are working, but notices every once in a while the downstream service hangs. To prevent that, Alan implements a timeout. + +He remembers from the documentation for his favorite runtime that there is the `race` function which can kick off two futures and polls both until one completes. (similar to tokio's [select](https://docs.rs/tokio/1.5.0/tokio/macro.select.html) and async-std's [race](https://docs.rs/async-std/1.9.0/async_std/future/trait.Future.html#method.race) for example). -```rust ,ignore + +```rust runtime::race(timeout(), get_response(key)).await ``` ## The bug -Alan ships to production but after several weeks he notices some users complaining that the receive old data. +Alan ships to production but after several weeks he notices some users complaining that they receive old data. -Alan tries debugging. He uses his old friend `println!`. After hours of working through, he notices that sometimes the line that sets the response in the cache never gets called. +Alan looks for help. The compiler unfortunately doesn't provide any hints. He turns to his second best friend clippy, who cannot help either. +Alan tries debugging. He uses his old friend `println!`. After hours of working through, he notices that sometimes the line that sets the response in the cache never gets called. ## The solution @@ -47,16 +52,33 @@ Alan goes to [Barbara][] and asks why in the world that might be ⁉️ 💡 Barbara looks through the code and notices that there is an await point between sending the response over the channel and setting the cache. +Since the `get_response` future can be dropped at each available await point, it may be dropped *after* the http request has been made, but *before* the response has successfully been sent over the channel, thus not executing the remaining instructions in the function. + This means the cache might not be set. Alan fixes it by setting the cache before sending the result over the channel. 🎉 +```rust +async fn get_response(&mut self, key: String) { + // ... cache miss happened here + + // Yield while we wait for the http request to complete + let response = self.http_client.make_request(key).await; + + // Immediately store the response in the cache + self.cache.set(key, response); + + // Yield again while we wait for the response to be sent through the channel + self.channel.send(response).await; +} +``` + -## Morals +### **What are the morals of the story?** -* Futures can be "canceled" at any await point. Authors of futures must be aware that after an await, the code might not run. -* This is similar to `panic` safety but way more likely to happen -* Futures might be polled to completion causing the code to work. But then many years later, the code is changed and the future might conditionally not be polled to completion which breaks things. -* The burden falls on the user of to poll to completion, and there is no way for the lib author to enforce this - they can only document this invariant. -* Diagnosing and ultimately fixing this issue requires a fairly deep understanding of the semantics of futures. -* Without a Barbara, it might be hard to even know where to start. +* Futures can be "canceled" at any await point. Authors of futures must be aware that after an await, the code might not run. + * This is similar to `panic` safety but way more likely to happen +* Futures might be polled to completion causing the code to work. But then many years later, the code is changed and the future might conditionally not be polled to completion which breaks things. +* The burden falls on the user of to poll to completion, and there is no way for the lib author to enforce this - they can only document this invariant. +* Diagnosing and ultimately fixing this issue requires a fairly deep understanding of the semantics of futures. +* Without a Barbara, it might be hard to even know where to start: No lints are available, Alan is left with a normal debugger and `println!`. From 6239c078bf588a307b12ec6825160405d74c1e09 Mon Sep 17 00:00:00 2001 From: o0Ignition0o Date: Fri, 16 Apr 2021 18:48:07 +0200 Subject: [PATCH 113/347] remove yield related semantics --- src/vision/status_quo/alan_builds_a_cache.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/alan_builds_a_cache.md b/src/vision/status_quo/alan_builds_a_cache.md index 678da293..a0324201 100644 --- a/src/vision/status_quo/alan_builds_a_cache.md +++ b/src/vision/status_quo/alan_builds_a_cache.md @@ -62,13 +62,13 @@ Alan fixes it by setting the cache before sending the result over the channel. async fn get_response(&mut self, key: String) { // ... cache miss happened here - // Yield while we wait for the http request to complete + // We perform the HTTP request and our code might continue + // after this .await once the HTTP request is complete let response = self.http_client.make_request(key).await; // Immediately store the response in the cache self.cache.set(key, response); - // Yield again while we wait for the response to be sent through the channel self.channel.send(response).await; } ``` From c6a42fa33e6ed3f0a28ffe449ed21634aaacea64 Mon Sep 17 00:00:00 2001 From: o0Ignition0o Date: Fri, 16 Apr 2021 18:59:47 +0200 Subject: [PATCH 114/347] FAQ section --- src/vision/status_quo/alan_builds_a_cache.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/vision/status_quo/alan_builds_a_cache.md b/src/vision/status_quo/alan_builds_a_cache.md index a0324201..813708d2 100644 --- a/src/vision/status_quo/alan_builds_a_cache.md +++ b/src/vision/status_quo/alan_builds_a_cache.md @@ -73,6 +73,7 @@ async fn get_response(&mut self, key: String) { } ``` +## 🤔 Frequently Asked Questions ### **What are the morals of the story?** @@ -82,3 +83,13 @@ async fn get_response(&mut self, key: String) { * The burden falls on the user of to poll to completion, and there is no way for the lib author to enforce this - they can only document this invariant. * Diagnosing and ultimately fixing this issue requires a fairly deep understanding of the semantics of futures. * Without a Barbara, it might be hard to even know where to start: No lints are available, Alan is left with a normal debugger and `println!`. + +### **What are the sources for this story?** +The relevant sources of discussion for this story have been gathered [in this github issue](https://github.com/rust-lang/wg-async-foundations/issues/65). + +### **Why did you choose Alan to tell this story?** +Alan has enough experience and understanding of push based async languages to make the assumptions that will trigger the bug. + +### **How would this story have played out differently for the other characters?** +This story would likely have played out the same for almost everyone but Barbara, who has probably been bitten by that already. +The debugging and fixing time would however probably have varied depending on experience and luck. From 5085c0e4f8735d41d3c53b04a50f2420b61d3c8d Mon Sep 17 00:00:00 2001 From: Justus K Date: Fri, 16 Apr 2021 22:57:14 +0200 Subject: [PATCH 115/347] Add get_contributors script and achknowledgments page --- get_contributors.sh | 61 ++++++++++++++++++++++++++++++++++++++++++ src/SUMMARY.md | 1 + src/acknowledgments.md | 21 +++++++++++++++ 3 files changed, 83 insertions(+) create mode 100755 get_contributors.sh create mode 100644 src/acknowledgments.md diff --git a/get_contributors.sh b/get_contributors.sh new file mode 100755 index 00000000..a1758eec --- /dev/null +++ b/get_contributors.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +# Get a list of all contributors that contributed in some way +# either by directly opening a PR, or by participating in issues. +# +# This script is a helper to fill out the "Contributors" chapter. +# It'll only spit out the names and an user must add them to the book. +# +# This script takes two arguments: +# - `username`: Your github username used to authenticate the GitHub API +# - `token`: A github Personal Access Token used to authenticate the GitHub API + +set -euo pipefail + +# Check if there are `username` and `token` arguments +if [ $# -eq 0 ] +then + echo "Usage: $0 " + exit 1 +fi + +user="$1" +token="$2" + +# Check if a command is available, otherwise exit. +function check_bin() { + if ! command -v $1 &> /dev/null + then + echo "'$1' is not installed, but required to run this script." + exit 1 + fi +} + +check_bin curl +check_bin jq + +# Get a list of users that participated in issues. +function issue_contributors() { + local numbers=$(curl -s -u $user:$token -H "Accept: application/vnd.github.v3+json" 'https://api.github.com/repos/rust-lang/wg-async-foundations/issues?state=all&labels=status-quo-story-ideas' | jq '.[].number') + + for num in $numbers; do + curl -s -u $user:$token -H "Accept: application/vnd.github.v3+json" \ + https://api.github.com/repos/rust-lang/wg-async-foundations/issues/$num/comments | jq -r \ + '.[].user | "[" + .login + "](" + .html_url + ")"' + done | sort | uniq +} + +# Get a list of direct code contributors +function code_contributors() { + curl -s -u $user:$token -H "Accept: application/vnd.github.v3+json" \ + https://api.github.com/repos/rust-lang/wg-async-foundations/contributors | jq -r \ + '.[] | "[" + .login + "](" + .html_url + ")"' | sort | uniq +} + +echo "Issue contributors" +issue_contributors + +echo + +echo "Code contributors" +code_contributors diff --git a/src/SUMMARY.md b/src/SUMMARY.md index c2d80e83..680f8187 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -56,3 +56,4 @@ - [⏳ Completion-based futures](./design_docs/completion_based_futures.md) - [💬 Conversations](./conversations.md) - [🐦 2021-02-12 Twitter thread](./conversations/2021-02-12-Twitter-Thread.md) +- [❤️ Acknowledgments](./acknowledgments.md) diff --git a/src/acknowledgments.md b/src/acknowledgments.md new file mode 100644 index 00000000..1721e36c --- /dev/null +++ b/src/acknowledgments.md @@ -0,0 +1,21 @@ +# ❤️ Acknowledgments + +Thanks to everyone who helped forming the future of Rust async. + +## ✍️ Participating in an writing session + +Thanks to everyone who helped writing Stories by participating in one of the Async Rust writing sessions. + +* todo + +## 💬 Discussing about stories + +Thanks to everyone who discussed about stories, shiny future and new features. + +* todo + +## ✨ Directly contributing + +Thanks to everyone who opened a Pull Request and wrote a story, shiny future or improved the organization of the repository. + +* todo From c1c0d60d7009420d2bfc52adf13d9264a1c9dfef Mon Sep 17 00:00:00 2001 From: Justus K Date: Fri, 16 Apr 2021 23:00:27 +0200 Subject: [PATCH 116/347] Add github contributors --- src/acknowledgments.md | 62 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/src/acknowledgments.md b/src/acknowledgments.md index 1721e36c..1dc38a10 100644 --- a/src/acknowledgments.md +++ b/src/acknowledgments.md @@ -12,10 +12,68 @@ Thanks to everyone who helped writing Stories by participating in one of the Asy Thanks to everyone who discussed about stories, shiny future and new features. -* todo +* [broccolihighkicks](https://github.com/broccolihighkicks) +* [cortopy](https://github.com/cortopy) +* [cryptoquick](https://github.com/cryptoquick) +* [eminence](https://github.com/eminence) +* [evan-brass](https://github.com/evan-brass) +* [farnz](https://github.com/farnz) +* [FreddieGilbraith](https://github.com/FreddieGilbraith) +* [geropl](https://github.com/geropl) +* [Gottox](https://github.com/Gottox) +* [jbr](https://github.com/jbr) +* [jlkiri](https://github.com/jlkiri) +* [jonathandturner](https://github.com/jonathandturner) +* [jzrake](https://github.com/jzrake) +* [kmeisthax](https://github.com/kmeisthax) +* [laurieontech](https://github.com/laurieontech) +* [nikomatsakis](https://github.com/nikomatsakis) +* [pickfire](https://github.com/pickfire) +* [pnkfelix](https://github.com/pnkfelix) +* [rgreinho](https://github.com/rgreinho) +* [rhmoller](https://github.com/rhmoller) +* [ririsoft](https://github.com/ririsoft) +* [rylev](https://github.com/rylev) +* [sticnarf](https://github.com/sticnarf) +* [tanriol](https://github.com/tanriol) +* [uazu](https://github.com/uazu) +* [vladinator1000](https://github.com/vladinator1000) +* [wesleywiser](https://github.com/wesleywiser) +* [wraithan](https://github.com/wraithan) +* [y21](https://github.com/y21) +* [yoshuawuyts](https://github.com/yoshuawuyts) ## ✨ Directly contributing Thanks to everyone who opened a Pull Request and wrote a story, shiny future or improved the organization of the repository. -* todo +* [alsuren](https://github.com/alsuren) +* [bIgBV](https://github.com/bIgBV) +* [cortopy](https://github.com/cortopy) +* [cryptoquick](https://github.com/cryptoquick) +* [Darksonn](https://github.com/Darksonn) +* [doc-jones](https://github.com/doc-jones) +* [ehuss](https://github.com/ehuss) +* [eminence](https://github.com/eminence) +* [emmanuelantony2000](https://github.com/emmanuelantony2000) +* [erichgess](https://github.com/erichgess) +* [Frederik-Baetens](https://github.com/Frederik-Baetens) +* [Gottox](https://github.com/Gottox) +* [JakubKoralewski](https://github.com/JakubKoralewski) +* [jonathandturner](https://github.com/jonathandturner) +* [jrvanwhy](https://github.com/jrvanwhy) +* [kmeisthax](https://github.com/kmeisthax) +* [LucioFranco](https://github.com/LucioFranco) +* [MidasLamb](https://github.com/MidasLamb) +* [nealmcb](https://github.com/nealmcb) +* [nellshamrell](https://github.com/nellshamrell) +* [nikomatsakis](https://github.com/nikomatsakis) +* [pnkfelix](https://github.com/pnkfelix) +* [rylev](https://github.com/rylev) +* [seanmonstar](https://github.com/seanmonstar) +* [sticnarf](https://github.com/sticnarf) +* [Stupremee](https://github.com/Stupremee) +* [taiki-e](https://github.com/taiki-e) +* [ThatGeoGuy](https://github.com/ThatGeoGuy) +* [tmandry](https://github.com/tmandry) +* [wesleywiser](https://github.com/wesleywiser) From b4fba49f6846e7c5875a1aae72f6b4879bf3d4f1 Mon Sep 17 00:00:00 2001 From: nyanpasu64 Date: Fri, 16 Apr 2021 21:21:25 -0700 Subject: [PATCH 117/347] Fix formatting in "Alan tries using a socket Sink" Previously, indenting all bullet points by 4 spaces caused them to render as preformatted code blocks, requiring horizontal scrolling to read the bullet points, and breaking links and formatting. Dedenting them fixes this issue. --- .../status_quo/alan_tries_a_socket_sink.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/vision/status_quo/alan_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md index 8aa00b58..ff349eff 100644 --- a/src/vision/status_quo/alan_tries_a_socket_sink.md +++ b/src/vision/status_quo/alan_tries_a_socket_sink.md @@ -105,27 +105,27 @@ A few weeks later, Alan's work at his project at work is merged with his new for ### **What are the morals of the story?** - * There are often many sources of opinion in the community regarding futures and async, but these opinions aren't always backed up with examples of how it should be better accomplished. Sometimes we just find a thing that works and would prefer to stick with it, but others argue that some traits make implementations unnecessarily complex, and choose to leave it out. Disagreements like these in the ecosystem can be harmful to the reputation of the project and the participants. - * If there's a source of substantial disagreement, the community becomes even further fragmented, and this may cause additional confusion in newcomers. - * Alan is used to fragmentation from the communities he comes from, so this isn't too discouraging, but what's difficult is that there's enough functionality overlap in async libraries that it's tempting to get them to interop with each other as-needed, and this can lead to architectural challenges resulting from a difference in design philosophies. - * It's also unclear if Futures are core to the Rust asynchronous experience, much as Promises are in JavaScript, or if the situation is actually more complex. - * The `Sink` trait is complex but it solves a real problem, and the workarounds required to solve problems without it can be unsatisfactory. - * Disagreement about core abstractions like `Sink` can make interoperability between runtimes more difficult; it also makes it harder for people to reproduce patterns they are used to from one runtime to another. - * It is all too easy for technical discussions like this to become heated; it's important for all participants to try and provide each other with the "benefit of the doubt". +* There are often many sources of opinion in the community regarding futures and async, but these opinions aren't always backed up with examples of how it should be better accomplished. Sometimes we just find a thing that works and would prefer to stick with it, but others argue that some traits make implementations unnecessarily complex, and choose to leave it out. Disagreements like these in the ecosystem can be harmful to the reputation of the project and the participants. +* If there's a source of substantial disagreement, the community becomes even further fragmented, and this may cause additional confusion in newcomers. +* Alan is used to fragmentation from the communities he comes from, so this isn't too discouraging, but what's difficult is that there's enough functionality overlap in async libraries that it's tempting to get them to interop with each other as-needed, and this can lead to architectural challenges resulting from a difference in design philosophies. +* It's also unclear if Futures are core to the Rust asynchronous experience, much as Promises are in JavaScript, or if the situation is actually more complex. +* The `Sink` trait is complex but it solves a real problem, and the workarounds required to solve problems without it can be unsatisfactory. +* Disagreement about core abstractions like `Sink` can make interoperability between runtimes more difficult; it also makes it harder for people to reproduce patterns they are used to from one runtime to another. +* It is all too easy for technical discussions like this to become heated; it's important for all participants to try and provide each other with the "benefit of the doubt". ### **What are the sources for this story?** - * - * - Third pull request - * - Suggestion to use a broadcast channel - * - Where some of the original polling work is replaced - * - File with Sink solution - * - * - * - * +* + * - Third pull request + * - Suggestion to use a broadcast channel +* - Where some of the original polling work is replaced + * - File with Sink solution +* +* +* +* ### **Why did you choose [Alan](../characters/alan.md) to tell this story?** - * Alan is more representative of the original author's background in JS, TypeScript, and NodeJS. +* Alan is more representative of the original author's background in JS, TypeScript, and NodeJS. ### **How would this story have played out differently for the other characters?** - * (I'm not sure.) +* (I'm not sure.) [character]: ../characters.md [status quo stories]: ./status_quo.md From 254eeaba3b99f9e951aa003362e1bf005d615424 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 08:45:49 -0400 Subject: [PATCH 118/347] she's working on perf, not play --- src/vision/status_quo/barbara_bridges_sync_and_async.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index d0de0fb7..6d71ced0 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -17,7 +17,9 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee ### Introducing `block_on` -Barbara is working on the code for [perf.rust-lang.org](https://perf.rust-lang.org/) and she wants to do a web request to load various intermediate results. She has heard that the `reqwest` crate is quite nice, so she decides to give it a try. She writes up an async function that does her web request: +Barbara is working on the code for [perf.rust-lang.org] and she wants to do a web request to load various intermediate results. She has heard that the `reqwest` crate is quite nice, so she decides to give it a try. She writes up an async function that does her web request: + +[perf.rust-lang.org]: https://perf.rust-lang.org/ ```rust async fn do_web_request(url: &Url) -> Data { @@ -79,7 +81,7 @@ The code compiles, and it seems to work. ### Introducing `block_on` -As Barbara works on play, she realizes that she needs to do more and more async operations. She decides to convert her synchronous `main` function into an `async main`. She's using tokio, so she is able to do this very conveniently with the `#[tokio::main]` decorator: +As Barbara works on [perf.rust-lang.org], she realizes that she needs to do more and more async operations. She decides to convert her synchronous `main` function into an `async main`. She's using tokio, so she is able to do this very conveniently with the `#[tokio::main]` decorator: ```rust #[tokio::main] From b5be93081495a4ca44543a915a77f62766da460c Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 08:45:58 -0400 Subject: [PATCH 119/347] return vec --- .../barbara_bridges_sync_and_async.md | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index 6d71ced0..f9fe6ea4 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -134,12 +134,11 @@ But it seems to give her the same panic. Reading more into this problem, she realizes she is supposed to be using `spawn_blocking`. She tries replacing `block_on` with `tokio::task::spawn_blocking`: ```rust= -fn aggregate(urls: &[Url]) { - let data: Vec = - urls - .iter() - .map(|url| tokio::task::spawn_blocking(move || do_web_request(url))) - .collect(); +fn aggregate(urls: &[Url]) -> Vec { + urls + .iter() + .map(|url| tokio::task::spawn_blocking(move || do_web_request(url))) + .collect() } ``` @@ -159,16 +158,15 @@ error[E0277]: a value of type `Vec` cannot be built from an iterator over Of course! `spawn_blocking`, like `map`, just takes a regular closure, not an async closure. She's getting a bit frustrated now. "Well," she thinks, "I can use `spawn` to get into an async context!" So she adds a call to `spawn` inside the `spawn_blocking` closure: ```rust -fn aggregate(urls: &[Url]) { - let data: Vec = - urls - .iter() - .map(|url| tokio::task::spawn_blocking(move || { - tokio::task::spawn(async move { - do_web_request(url).await - }) - })) - .collect(); +fn aggregate(urls: &[Url]) -> Vec { + urls + .iter() + .map(|url| tokio::task::spawn_blocking(move || { + tokio::task::spawn(async move { + do_web_request(url).await + }) + })) + .collect() } ``` @@ -179,12 +177,12 @@ But this isn't really helping, as `spawn` still yields a future. She's getting t She remembers now that this whole drama started because she was converting her `main` function to be `async`. Maybe she doesn't have to bridge between sync and async? She starts digging around in the docs and finds `futures::join_all`. Using that, she can change `aggregate` to be an async function too: ```rust -async fn aggregate(urls: &[Url]) { - let data: Vec = futures::join_all( +async fn aggregate(urls: &[Url]) -> Vec { + futures::join_all( urls .iter() .map(|url| do_web_request(url)) - ).await; + ).await } ``` From 3a2f5227cc6c2b3e94d80d77846962716ba7869b Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 08:46:31 -0400 Subject: [PATCH 120/347] note that `join_all` has quadratic time complexity --- src/vision/status_quo/barbara_bridges_sync_and_async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index f9fe6ea4..f8f37f17 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -186,7 +186,7 @@ async fn aggregate(urls: &[Url]) -> Vec { } ``` -Things are working again now, so she is happy. +Things are working again now, so she is happy, although she notes that `join_all` has quadratic time complexity. That's not great. ### Filtering From b9bffc9436a3a5c6bfae485b7f79c746cdba24ac Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 08:51:00 -0400 Subject: [PATCH 121/347] explain the filtering business some more --- .../barbara_bridges_sync_and_async.md | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index f8f37f17..b9c86a29 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -190,7 +190,34 @@ Things are working again now, so she is happy, although she notes that `join_all ### Filtering -Later on, she would like to apply a filter to the aggregation operation. She realizes that if she wants to use the fetched data when doing the filtering, she has to filter the vector after the join has completed; `join_all` doesn't have a way to put a filter into the iterator chain like she wants. She is annoyed, but performance isn't critical, so it's ok. +Later on, she would like to apply a filter to the aggregation operation. She realizes that if she wants to use the fetched data when doing the filtering, she has to filter the vector after the join has completed. She wants to write something like + +```rust +async fn aggregate(urls: &[Url]) -> Vec { + futures::join_all( + urls + .iter() + .map(|url| do_web_request(url)) + .filter(|data| test(data)) + ).await +} +``` + +but she can't, because `data` is a future and not the `Data` itself. Instead she has to build the vector first and then post-process it: + +```rust +async fn aggregate(urls: &[Url]) -> Vec { + let mut data: Vec = futures::join_all( + urls + .iter() + .map(|url| do_web_request(url)) + ).await; + data.retain(test); + data +} +``` + +This is annoying, but performance isn't critical, so it's ok. ### And the cycle begins again @@ -207,7 +234,6 @@ Later on, she wants to call `aggregate` from another binary. This one doesn't ha * Big block of existing code. * Mixing sync and async code (`block_on`) can cause deadlocks that are really painful to diagnose. - ### Why did you choose Barbara to tell this story? * Because Mark (who experienced most of it) is a very experienced Rust developer. From 5fe6a52256434ceaa30147717057629c5c08c534 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 09:09:41 -0400 Subject: [PATCH 122/347] add FAQs about using sync APIs and making things into sync --- .../barbara_bridges_sync_and_async.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index b9c86a29..db0ab36e 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -243,6 +243,14 @@ Later on, she wants to call `aggregate` from another binary. This one doesn't ha I would expect it would work out fairly similarly, except that the type errors and things might well have been more challenging for people to figure out, assuming they aren't already familiar with Rust. +### Why didn't Barbara just use the sync API for reqwest? + +reqwest does offer a synchronous API, but it's not enabled by default, you have to use an optional feature. Further, not all crates offer synchronous APIs. Finally, Barbara has had some vague poor experience when using synchronous APIs, such as panics, and so she's learned the heuristic of "use the async API unless you're doing something really, really simple". + +Regardless, the synchronous reqwest API is actually itself implemented using `block_on`: so Barbara would have ultimately hit the same issues. Further, not all crates offer synchronous APIs -- some offer only async APIs. In fact, these same issues are probably the sources of those panics that Barbara encountered in the past. + +In general, though, embedded sync within async or vice versa works "ok", once you know the right tricks. Where things become challenging is when you have a "sandwich", with async-sync-async. + ### What are other ways people could experience similar problems mixing sync and async? * Using `std::Mutex` in async code. @@ -251,6 +259,17 @@ I would expect it would work out fairly similarly, except that the type errors a * These are commonly implemented by using some variant of `block_on` internally. * Therefore they can lead to panics or deadlocks depending on what async runtime they are built from and used with. +### Why wouldn't Barbara just make everything async from the start? + +There are times when converting synchronous code to async is difficult or even impossible. Here are some of the reasons: + +* [Asynchronous functions cannot appear in trait impls][trait]. +* Asynchronous functions cannot be called from APIs that take closures for callbacks, like `Iterator::map` in this example. +* Sometimes the synchronous functions come from other crates and are not fully under their control. +* It's just a lot of work! + +[trait]: ./alan_needs_async_in_traits.md + ### How many variants of `block_on` are there? * the `futures` crate offers a runtime-independent block-on (which can lead to deadlocks, as in this story) From ac9ed40d67aa768ca927ac08df1c1911d7350e1e Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 09:09:41 -0400 Subject: [PATCH 123/347] add FAQs about using sync APIs and making things into sync --- .../status_quo/barbara_bridges_sync_and_async.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index db0ab36e..03c47372 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -92,7 +92,7 @@ async fn main() { } ``` -Everything seems to work ok on her laptop, but when she pushes the code to production, it deadlocks immediately. "What's this?" she says. Confused, she runs the code on her laptop a few more times, but it seems to work fine. +Everything seems to work ok on her laptop, but when she pushes the code to production, it deadlocks immediately. "What's this?" she says. Confused, she runs the code on her laptop a few more times, but it seems to work fine. (There's a faq explaining what's going on. -ed.) She decides to try debugging. She fires up a debugger but finds it is isn't really giving her useful information about what is stuck (she has [basically the same problems that Alan has](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_tries_to_debug_a_hang.html)). [She wishes she could get insight into tokio's state.](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/barbara_wants_async_insights.html) @@ -243,6 +243,18 @@ Later on, she wants to call `aggregate` from another binary. This one doesn't ha I would expect it would work out fairly similarly, except that the type errors and things might well have been more challenging for people to figure out, assuming they aren't already familiar with Rust. +### Why did Barbara only get deadlocks in production, and not on her laptop? + +This is because the production instance she was using had only a single core, but her laptop is a multicore machine. The actual cause of the deadlocks is that `block_on` basically "takes over" the tokio worker thread, and hence the tokio scheduler cannot run. If that `block_on` is blocked on another future that will have to execute, then some other thread must take over of completing that future. On Barbara's multicore machine, there were more threads available, so the system did not deadlock. But on the production instance, there was only a single thread. Barbara could have encountered deadlocks on her local machine as well if she had enough instances of `block_on` running at once. + +### Could the runtime have prevented the deadlock? + +One way to resolve this problem would be to have a runtime that creates more threads as needed. This is what was proposed [in this blog post](https://async.rs/blog/stop-worrying-about-blocking-the-new-async-std-runtime/), for example. + +Adapting the number of worker threads has downsides. It requires knowing the right threshold for creating new threads (which is fundamentally unknowable). The result is that the runtime will sometimes observe that some thread seems to be taking a long time and create new threads *just before* that thread was about to finish. These new threads generate overhead and lower the overall performance. It also requires work stealing and other techniques that can lead to work running on mulitple cores and having less locality. Systems tuned for maximal performance tend to prefer a single thread per core for this reason. + +If some runtimes are adaptive, that may also lead to people writing libraries which block without caring. These libraries would then be a performance or deadlock hazard when used on a runtime that is not adaptive. + ### Why didn't Barbara just use the sync API for reqwest? reqwest does offer a synchronous API, but it's not enabled by default, you have to use an optional feature. Further, not all crates offer synchronous APIs. Finally, Barbara has had some vague poor experience when using synchronous APIs, such as panics, and so she's learned the heuristic of "use the async API unless you're doing something really, really simple". From 6a80b985096383447e80f9f82735101b65c4136d Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 09:22:20 -0400 Subject: [PATCH 124/347] change heading --- src/vision/status_quo/barbara_bridges_sync_and_async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index 03c47372..8248dc42 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -79,7 +79,7 @@ fn main() { The code compiles, and it seems to work. -### Introducing `block_on` +### Switching to async main As Barbara works on [perf.rust-lang.org], she realizes that she needs to do more and more async operations. She decides to convert her synchronous `main` function into an `async main`. She's using tokio, so she is able to do this very conveniently with the `#[tokio::main]` decorator: From 792fb6f4a44cd846817cefd7779d82eb8a83f05f Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 09:23:12 -0400 Subject: [PATCH 125/347] rewrite the "what the hey" code --- src/vision/status_quo/barbara_bridges_sync_and_async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index 8248dc42..b8997743 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -96,7 +96,7 @@ Everything seems to work ok on her laptop, but when she pushes the code to produ She decides to try debugging. She fires up a debugger but finds it is isn't really giving her useful information about what is stuck (she has [basically the same problems that Alan has](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_tries_to_debug_a_hang.html)). [She wishes she could get insight into tokio's state.](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/barbara_wants_async_insights.html) -Frustrated, she starts reading the tokio docs more closely and she realizes that `tokio` runtimes offer their own `block_on` method. "What the hey," she thinks, "let's see if that works any better." She changes the `aggregate` function to use tokio's `block_on`: +Frustrated, she starts reading the tokio docs more closely and she realizes that `tokio` runtimes offer their own `block_on` method. "Maybe using tokio's `block_on` will help?" she thinks, "Worth a try, anyway." She changes the `aggregate` function to use tokio's `block_on`: ```rust= fn block_on(f: impl Future) -> O { From a6632931aeb3f57edfe887398ac46010519f57d7 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 09:55:53 -0400 Subject: [PATCH 126/347] add a FAQ for another combo --- .../barbara_bridges_sync_and_async.md | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index b8997743..3dd17039 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -98,7 +98,7 @@ She decides to try debugging. She fires up a debugger but finds it is isn't real Frustrated, she starts reading the tokio docs more closely and she realizes that `tokio` runtimes offer their own `block_on` method. "Maybe using tokio's `block_on` will help?" she thinks, "Worth a try, anyway." She changes the `aggregate` function to use tokio's `block_on`: -```rust= +```rust fn block_on(f: impl Future) -> O { let rt = tokio::runtime::Runtime::new().unwrap(); rt.block_on(f) @@ -120,20 +120,20 @@ The good news is that the deadlock is gone. The bad news is that now she is gett ```rust fn aggregate(urls: &[&str]) -> Vec { - let handle = Handle::current(); + let handle = tokio::runtime::Handle::current(); urls.iter() .map(|url| handle.block_on(do_web_request(url))) .collect() } ``` -But it seems to give her the same panic. +But this also seems to panic in the same way. ### Trying out `spawn_blocking` Reading more into this problem, she realizes she is supposed to be using `spawn_blocking`. She tries replacing `block_on` with `tokio::task::spawn_blocking`: -```rust= +```rust fn aggregate(urls: &[Url]) -> Vec { urls .iter() @@ -255,6 +255,30 @@ Adapting the number of worker threads has downsides. It requires knowing the rig If some runtimes are adaptive, that may also lead to people writing libraries which block without caring. These libraries would then be a performance or deadlock hazard when used on a runtime that is not adaptive. +### Is there any way to have kept `aggregate` as a synchronous function? + +Yes, Barbara could have written something like this: + +```rust +fn aggregate(urls: &[Url]) -> Vec { + let handle = Handle::current(); + + urls.iter() + .map(|url| handle.block_on(do_web_request(url))) + .collect() +} + +#[tokio::main] +async fn main() { + let data = task::spawn_blocking(move || aggregate(&[Url, Url])) + .await + .unwrap(); + println!("done"); +} +``` + +This `aggregate` function can only safely be invoked from inside a tokio `spawn_blocking` call, however, since `Handle::current` will only work in that context. She could also have used the original futures variant of `block_on`, in that case, and things would also work. + ### Why didn't Barbara just use the sync API for reqwest? reqwest does offer a synchronous API, but it's not enabled by default, you have to use an optional feature. Further, not all crates offer synchronous APIs. Finally, Barbara has had some vague poor experience when using synchronous APIs, such as panics, and so she's learned the heuristic of "use the async API unless you're doing something really, really simple". From 02223e5af881f3519e19be15e93260108ec1577c Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 09:57:02 -0400 Subject: [PATCH 127/347] nit: the Handle, not that Handle --- src/vision/status_quo/barbara_bridges_sync_and_async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index 3dd17039..4ae33581 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -116,7 +116,7 @@ The good news is that the deadlock is gone. The bad news is that now she is gett > thread 'main' panicked at 'Cannot start a runtime from within a runtime. This happens because a function (like `block_on`) attempted to block the current thread while the thread is being used to drive asynchronous tasks.' -"Well," she thinks, "I could use that `Handle` API to get the current runtime, maybe that will work?" +"Well," she thinks, "I could use the `Handle` API to get the current runtime, maybe that will work?" ```rust fn aggregate(urls: &[&str]) -> Vec { From 69971776149a7e8661d7035ccbf9924d3c93dc8a Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 09:59:14 -0400 Subject: [PATCH 128/347] explain barbara's thinking a bit more --- src/vision/status_quo/barbara_bridges_sync_and_async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index 4ae33581..11d280f8 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -116,7 +116,7 @@ The good news is that the deadlock is gone. The bad news is that now she is gett > thread 'main' panicked at 'Cannot start a runtime from within a runtime. This happens because a function (like `block_on`) attempted to block the current thread while the thread is being used to drive asynchronous tasks.' -"Well," she thinks, "I could use the `Handle` API to get the current runtime, maybe that will work?" +"Well," she thinks, "I could use the `Handle` API to get the current runtime instead of creating a new one? Maybe that's the problem." ```rust fn aggregate(urls: &[&str]) -> Vec { From 3c2c5eea21c5358db3fa5e4f1b5a5b10d9d46780 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 10:01:27 -0400 Subject: [PATCH 129/347] clarify that async closures are not stable --- src/vision/status_quo/barbara_bridges_sync_and_async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index 11d280f8..29381ee3 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -155,7 +155,7 @@ error[E0277]: a value of type `Vec` cannot be built from an iterator over = help: the trait `FromIterator>` is not implemented for `Vec` ``` -Of course! `spawn_blocking`, like `map`, just takes a regular closure, not an async closure. She's getting a bit frustrated now. "Well," she thinks, "I can use `spawn` to get into an async context!" So she adds a call to `spawn` inside the `spawn_blocking` closure: +Of course! `spawn_blocking`, like `map`, just takes a regular closure, not an async closure; it's purpose is to embed some sync code within an async task, so a sync closure makes sense -- and moreover async closures aren't stable -- but it's all rather frustrating nonetheless. "Well," she thinks, "I can use `spawn` to get back into an async context!" So she adds a call to `spawn` inside the `spawn_blocking` closure: ```rust fn aggregate(urls: &[Url]) -> Vec { From 4cc94f0d1b04ea2446d806839ffbaebb8a342e49 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 10:04:57 -0400 Subject: [PATCH 130/347] apply pickfire suggestions --- src/vision/status_quo/barbara_bridges_sync_and_async.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index 29381ee3..895e0a7d 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -227,12 +227,12 @@ Later on, she wants to call `aggregate` from another binary. This one doesn't ha ### What are the morals of the story? -* Some projects don't care about max performance and just want things to work. +* Some projects don't care about max performance and just want things to work once the program compiles. * They would probably be happy with sync but as the most popular libraries for web requests, databases, etc, offer async interfaces, they may still be using async code. * There are contexts where you can't easily add an `await`. * For example, inside of an iterator chain. * Big block of existing code. -* Mixing sync and async code (`block_on`) can cause deadlocks that are really painful to diagnose. +* Mixing sync and async code can cause deadlocks that are really painful to diagnose, particularly when you have an async-sync-async sandwich. ### Why did you choose Barbara to tell this story? @@ -291,7 +291,7 @@ In general, though, embedded sync within async or vice versa works "ok", once yo * Using `std::Mutex` in async code. * Calling the blocking version of an asynchronous API. - * For example, `reqwest::blocking`, the synchronous `[zbus`](https://gitlab.freedesktop.org/dbus/zbus/-/blob/main/zbus/src/proxy.rs#L121) and [`rumqtt`](https://github.com/bytebeamio/rumqtt/blob/8de24cbc0484f459246251873aa6c80be8b6e85f/rumqttc/src/client.rs#L224) APIs. + * For example, `reqwest::blocking`, the synchronous [`zbus`](https://gitlab.freedesktop.org/dbus/zbus/-/blob/main/zbus/src/proxy.rs#L121) and [`rumqtt`](https://github.com/bytebeamio/rumqtt/blob/8de24cbc0484f459246251873aa6c80be8b6e85f/rumqttc/src/client.rs#L224) APIs. * These are commonly implemented by using some variant of `block_on` internally. * Therefore they can lead to panics or deadlocks depending on what async runtime they are built from and used with. From 380f3d8534b724ecbe1dd2aa064ec98d64fe9652 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 10:05:28 -0400 Subject: [PATCH 131/347] remove extra space --- src/vision/status_quo/barbara_bridges_sync_and_async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index 895e0a7d..27b9b38d 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -100,7 +100,7 @@ Frustrated, she starts reading the tokio docs more closely and she realizes that ```rust fn block_on(f: impl Future) -> O { - let rt = tokio::runtime::Runtime::new().unwrap(); + let rt = tokio::runtime::Runtime::new().unwrap(); rt.block_on(f) } From 4f9182bca1de5e4ab85a2a550b9391755c14391c Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 10:08:48 -0400 Subject: [PATCH 132/347] explain mixing spawn-blocking and spawn --- src/vision/status_quo/barbara_bridges_sync_and_async.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index 27b9b38d..e8599796 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -172,7 +172,7 @@ fn aggregate(urls: &[Url]) -> Vec { But this isn't really helping, as `spawn` still yields a future. She's getting the same errors. -### Async all the way +### Trying out `join_all` She remembers now that this whole drama started because she was converting her `main` function to be `async`. Maybe she doesn't have to bridge between sync and async? She starts digging around in the docs and finds `futures::join_all`. Using that, she can change `aggregate` to be an async function too: @@ -287,6 +287,12 @@ Regardless, the synchronous reqwest API is actually itself implemented using `bl In general, though, embedded sync within async or vice versa works "ok", once you know the right tricks. Where things become challenging is when you have a "sandwich", with async-sync-async. +### Do people mix `spawn_blocking` and `spawn` successfully in real code? + +Yes! Here is [some code from perf.rust-lang.org][egsb] doing exactly that. The catch is that it winds up giving you a future in the end, which didn't work for Barbara because her code is embedded within an iterator (and hence she can't make things async "all the way down"). + +[egsb]: https://github.com/rust-lang/rustc-perf/blob/3651aa744ab2a22e1adf96a698851165086ad835/site/src/main.rs#L35-L36 + ### What are other ways people could experience similar problems mixing sync and async? * Using `std::Mutex` in async code. From e5810ec045006579a32ba16dd38dc7a60f32b896 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 15 Apr 2021 18:53:50 -0400 Subject: [PATCH 133/347] add a pair of stories about how we could have a default runtime but allow you to change back and forth --- .../shiny_future/alan_switches_runtimes.md | 148 +++++++++++++ ...alans_trust_in_the_compiler_is_rewarded.md | 199 ++++++++++++++++++ 2 files changed, 347 insertions(+) create mode 100644 src/vision/shiny_future/alan_switches_runtimes.md create mode 100644 src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md diff --git a/src/vision/shiny_future/alan_switches_runtimes.md b/src/vision/shiny_future/alan_switches_runtimes.md new file mode 100644 index 00000000..a0476da8 --- /dev/null +++ b/src/vision/shiny_future/alan_switches_runtimes.md @@ -0,0 +1,148 @@ +# ✨ Shiny future stories: template + +[How To Vision: Shiny Future]: ../how_to_vision/shiny_future.md +[the raw source from this template]: https://raw.githubusercontent.com/rust-lang/wg-async-foundations/master/src/vision/shiny_future/template.md +[`shiny_future`]: https://github.com/rust-lang/wg-async-foundations/tree/master/src/vision/shiny_future +[`SUMMARY.md`]: https://github.com/rust-lang/wg-async-foundations/blob/master/src/SUMMARY.md + +## 🚧 Warning: Draft status 🚧 + +This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories [cannot be wrong]. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to [add your own shiny vision story][htvsq]! + +## The story + +Since his [early adventures](./alans_trust_in_the_compiler_is_rewarded.md) with Async I/O went so well, Alan has been looking for a way to learn more. He finds a job working in Rust. One of the projects he works on is [DistriData]. Looking at their code, he sees an annotation he has never seen before: + +```rust +#[async_runtime(humboldt)] +async fn main() -> Result<(), Box> { + let result = std::async_thread::spawn(async move { + do_something() + }); +} +``` + +He asks Barbara, one of his coworkers, "What is this `async_runtime` annotation? And what's `humboldt`?" She answers by explaining to him that Rust's support for async I/O is actually based around an underlying runtime. "Rust gives you a pretty decent runtime by default," she says, "but it's not tuned for our workloads. We wrote our own runtime, which we call `humboldt`." + +[DistriData]: ../projects/DistriData.md + +Alan asks, "What happens with the various std APIs? For example, I see we are calling `std::async_thread::spawn` -- when I used that before, it spawned tasks into the default runtime. What happens now?" + +Barbara explains that the "async" APIs in std generally execute relative to the current runtime that is in use. "When you call `std::async_thread::spawn`, it will spawn a task onto the current runtime. It's the same with the routines in `std::async_io` and and so forth. The `async_runtime` annotation just affects which runtime runs the `main` function, everything else follows from there." + +## Learning more about Humboldt + +Alan sees that some of the networking code that is being used in their application is creating network connections using humboldt APIs: + +```rust +use humboldt::network; +``` + +He asks Barbara, "Why don't we use the `std::async_io` APIs for that?" She explains that Humbolt makes use of some custom kernel extensions that, naturally enough, aren't part of the std library. "TCP is for rubes," she says, "we are using TTCP -- Turbo TCP." Her mind wanders briefly to [Turbo Pascal] and she has a brief moment of yearning for the days when computers had a "Turbo" button that changed them from 8 MHz to 12 MHz. She snaps back into the present day. "Anyway, the `std::async_io` APIs just call into humboldt's APIs via various traits. But we can code directly against `humboldt` when we want to access the extra capabilities it offers." + +[Turbo Pascal]: https://en.wikipedia.org/wiki/Turbo_Pascal + +## Integrating into other event loops + +Later on, Alan is working on a visualizer front-end that integrates with [DistriData] to give more details about their workloads. To do it, he needs to integrate with Cocoa APIs and he wants to run certain tasks on Grand Central Dispatch. He approaches Barbara and asks, "If everything is running on `humboldt`, is there a way for me to run some things on another event loop? How does that work?" + +Barbara explains, "That's easy. You just have to use the `gcd` wrapper crate -- you can find it on `crates.io`. It implements the runtime traits for `gcd` and it has a `spawn` method. Once you spawn your task onto `gcd`, everything you run within gdb will be running in that context." + +Alan says, "And so, if I want to get things running on `humboldt` again, I spawn a task back on `humboldt`?" + +"Exactly," says Barbara. "Humboldt has a global event loop, so you can do that by just doing `humboldt::spawn`. You can also just use the `humboldt::io` APIs directly and so forth if you want to do I/O with humboldt." + +Alan winds up with some code that looks like this: + +```rust +async fn do_something_on_humboldt() { + gcd::spawn(async move { + let foo = do_something_on_gcd(); + + let bar = humboldt::spawn(async move { + do_a_little_bit_of_stuff_on_humboldt(); + }); + + combine(foo.await, bar.await); + }); +} +``` + +## 🤔 Frequently Asked Questions + +### What status quo story or stories are you retelling? + +Good question! I'm not entirely sure! I have to go looking and think about it. Maybe we'll have to write some more. + +### What are the key points you were trying to convey with this status quo story? + +* There is some way to seamlessly change to a different default runtime to use for `async main`. +* There is no global runtime, just the current runtime. +* When you are using this different runtime, you can write code that is hard-coded to it and which exposes additional capabilities. +* You can integrate multiple runtimes relatively easily, and the std APIs work with whechever is the current runtime. + +### How do you imagine the std APIs and so forth know the current runtime? + +I was imagining that we would add fields to the `Context<'_>` struct that is supplied to each `async fn` when it runs. Users don't have direct access to this struct, but the compiler does. If the std APIs return futures, they would gain access to it that way as well. If not, we'd have to create some other mechanism. + +### What happens for runtimes that don't support all the features that std supports? + +That feels like a portability question. See the (yet to be written) sequel story, "Alan runs some things on WebAssembly". =) + +### **What is [Alan] most excited about in this future? Is he disappointed by anything?** + +Alan is excited about how easy it is to get async programs up and running, and he finds that they perform pretty well once he does so, so he's happy. + +### **What is [Grace] most excited about in this future? Is she disappointed by anything?** + +Grace is concerned with memory safety and being able to deploy her tricks she knows from other languages. Memory safety works fine here. In terms of tricks she knows and loves, she's happy that she can easily switch to another runtime. The default runtime is good and works well for most things, but for the [`DistriData`] project, they really need something tailored just for them. She is also happy she can use the extended APIs offered by `humboldt`. + +### **What is [Niklaus] most excited about in this future? Is he disappointed by anything?** + +Niklaus finds it async Rust quite accessible, for the same reasons cited as in ["Alan's Trust in the Rust Compiler is Rewarded"]. + +["Alan's Trust in the Rust Compiler is Rewarded"]: ../alans_trust_in_the_compiler_is_rewarded.md + +### **What is [Barbara] most excited about in this future? Is she disappointed by anything?** + +Depending on the technical details, Barbara may be a bit disappointed by the details of how std interfaces with the runtimes, as that may introduce some amount of overhead. This may not matter in practice, but it could also lead to library authors avoiding the std APIs in favor of writing generics or other mechanisms that are "zero overhead". + +### **What [projects] benefit the most from this future?** + +Projects like [DistriData] really benefit from being able to customize their runtime. + +### **Are there any [projects] that are hindered by this future?** + +We have to pay careful attention to embedded projects like [MonsterMesh]. Some of the most obvious ways to implement this future would lean on `dyn` types and perhaps boxing, and that would rule out embedded projects. Embedded runtimes like [embassy] are also the most different in their overall design and they would have the hardest time fitting into the std APIs (of course, many embedded projects are already no-std, but many of them make use of some subset of the std capabilities through the facade). + +[MonsterMesh]: ../projects/MonsterMesh.md +[embassy]: https://github.com/akiles/embassy + +### **What are the incremental steps towards realizing this shiny future?** + +There are a few steps required to realize this future: + +* We have to determine the core mechanism that is used for std types to interface with the current scheduler. + * Is it based on dynamic dispatch? Delayed linking? Some other tricks we have yet to invent? + * Depending on the details, language changes may be required. +* We have to hammer out the set of traits or other interfaces used to define the parts of a runtime (see below for some of the considerations). + * We can start with easier cases and proceed to more difficult ones, however. + +### **Does realizing this future require cooperation between many projects?** + +Yes. We will need to collaborate to define traits that std can use to interface with each runtime, and the runtimes will need to implement those traits. This is going to be non-trivial, because we want to preserve the ability for independent runtimes to experiment, while also preserving the ability to "max and match" and re-use components. For example, it'd probably be useful to have a bunch of shared I/O infrastructure, or to have utility crates for locks, for running threadpools, and the like. On the other hand, tokio takes advantage of the fact that it owns the I/O types *and* the locks *and* the scheduler to do some [nifty tricks](https://tokio.rs/blog/2020-04-preemption) and we would want to ensure that remains an option. + +### Is this story + +[character]: ../characters.md +[comment]: ./comment.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[projects]: ../projects.md +[htvsq]: ../how_to_vision/shiny_future.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade diff --git a/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md b/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md new file mode 100644 index 00000000..1af260f7 --- /dev/null +++ b/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md @@ -0,0 +1,199 @@ +# ✨ Shiny future stories: template + +[How To Vision: Shiny Future]: ../how_to_vision/shiny_future.md +[the raw source from this template]: https://raw.githubusercontent.com/rust-lang/wg-async-foundations/master/src/vision/shiny_future/template.md +[`shiny_future`]: https://github.com/rust-lang/wg-async-foundations/tree/master/src/vision/shiny_future +[`SUMMARY.md`]: https://github.com/rust-lang/wg-async-foundations/blob/master/src/SUMMARY.md + +## 🚧 Warning: Draft status 🚧 + +This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories [cannot be wrong]. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to [add your own shiny vision story][htvsq]! + +## The story + +### Trust the compiler +Alan has a lot of experience in C#, but in the meantime has created some successful projects in Rust. +He has dealt with his fair share of race conditions/thread safety issues during runtime in C#, but is now starting to trust that if his Rust code compiles, +he won't have those annoying runtime problems to deal with. + +This allows him to try to squeeze his programs for as much performance as he wants, because the compiler will stop him when he tries things that could result in runtime problems. +After seeing the performance and the lack of runtime problems, he starts to trust the compiler more and more with each project finished. + +He knows what he can do with external libraries, he does not need to fear concurrency issues if the library cannot be used from multiple threads, because the compiler would tell him. + +His trust in the compiler solidifies further the more he codes in Rust. + +### The first async project + +Alan now starts with his first async project. He opens up the Rust book to the "Async I/O" chapter and it guides him to writing his first program. He starts by writing some synchronous code to write to the file system: + +```rust,ignore +use std::fs::File; + +fn main() -> Result<(), Box> { + let mut file = File::create("a.txt")?; + file.write_all(b"Hello, world!")?; + Ok(()) +} +``` + +Next, he adapts that to run in an async fashion. He starts by converting `main` into `async fn main`: + +```rust,ignore +use std::fs::File; + +async fn main() -> Result<(), Box> { + let mut file = File::create("a.txt")?; + file.write_all(b"Hello, world!")?; + Ok(()) +} +``` + +The code compiles, but he gets a warning: + +``` +warning: using a blocking API within an async function + --> src/main.rs:4:25 +1 | use std::fs::File; + | ------------- try changing to `std::async_io::fs::File` + | ... +4 | let mut file: u32 = File::create("a.txt")?; + | ^^^^^^^^^^^^ blocking functions should not be used in async fn +help: try importing the async version of this type + --> src/main.rs:1 +1 | use std::async_fs::File; +``` + +"Oh, right," he says, "I am supposed to use the async variants of the APIs." He applies the suggested fix in his IDE, and now his code looks like: + +```rust +use std::async_fs::File; + +async fn main() -> Result<(), Box> { + let mut file = File::create("a.txt")?; + file.write_all(b"Hello, world!")?; + Ok(()) +} +``` + +His IDE recompiles instantaneously and he now sees two little squiggles, one under each `?`. Clicking on the errors, he sees: + +``` +error: missing await + --> src/main.rs:4:25 +4 | let mut file: u32 = File::create("a.txt")?; + | ^ returns a future, which requires an await +help: try adding an await + --> src/main.rs:1 +4 | let mut file: u32 = File::create("a.txt").await?; +``` + +He again applies the suggested fix, and his code now shows: + +```rust +use std::async_fs::File; + +async fn main() -> Result<(), Box> { + let mut file = File::create("a.txt").await?; + file.write_all(b"Hello, world!").await?; + Ok(()) +} +``` + +Happily, it compiles, and when he runs it, everything works as expected. "Cool," he thinks, "this async stuff is pretty easy!" + +### Making some web requests + +Next, Alan decides to experiment with some simple web requests. This isn't part of the standard library, but the `fetch_rs` package is listed in the Rust book. He runs `cargo add fetch_rs` to add it to his `Cargo.toml` and then writes: + +```rust +use std::async_fs::File; +use fetch_rs; + +async fn main() -> Result<(), Box> { + let mut file = File::create("a.txt")?; + file.write_all(b"Hello, world!")?; + + let body = fetch_rs::get("https://www.rust-lang.org") + .await? + .text() + .await?; + println!("{}", body); + + Ok(()) +} +``` + +This feels pretty easy! + +## 🤔 Frequently Asked Questions + +### What status quo story or stories are you retelling? + +* [Alan started trusting the Rust compiler, but then async](../status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md) + +### What are the key points you were trying to convey with this status quo story? + +* Getting started with async should be as automated as possible: + * change `main` to an `async fn`; + * use the APIs found in modules like `std::async_foo`, which should map as closely as possible to their non-async equivalents. +* You should get some sort of default runtime that is decent +* Lints should guide you in using async: + * identifying blocking functions + * identifying missing `await` +* You should be able to grab libraries from the ecosystem and they should integrate with the default runtime without fuss + +### Is there a "one size fits all" runtime in this future? + +This particular story doesn't talk about what happens when the default runtime isn't suitable. But you may want to read its sequel, ["Alan Switches Runtimes"](./alan_switches_runtimes.md). + +### **What is [Alan] most excited about in this future? Is he disappointed by anything?** + +Alan is excited about how easy it is to get async programs up and running. He also finds the performance is good. He's good. + +### **What is [Grace] most excited about in this future? Is she disappointed by anything?** + +Grace is happy because she is getting strong safety guarantees and isn't getting surprising runtime panics when composing libraries. The question of whether she's able to use the tricks she knows and loves is a good one, though. The default scheduler may not optimize for maximum performance -- this is something to explore in future stories. The ["Alan Switches Runtimes"](./alan_switches_runtimes.md), for example, talks more about the ability to change runtimes. + +### **What is [Niklaus] most excited about in this future? Is he disappointed by anything?** + +Niklaus is quite happy. Async Rust is fairly familiar and usable for him. Further, the standard library includes "just enough" infrastructure to enable a vibrant crates-io ecosystem without centralizing everything. + +### **What is [Barbara] most excited about in this future? Is she disappointed by anything?** + +Barbara quite likes that the std APIs for sync and sync fit together, and that there is a consistent naming scheme across them. She likes that there is a flourishing ecosystem of async crates that she can choose from. + +### **What [projects] benefit the most from this future?** + +A number of projects benefit: + +* Projects like [YouBuy] are able to get up and going faster. +* Libraries like [SLOW] become easier because they can target the std APIs and there is a defined plan for porting across runtimes. + +[YouBuy]: ../projects/YouBuy.md +[SLOW]: ../projects/SLOW.md + +### **Are there any [projects] that are hindered by this future?** + +It depends on the details of how we integrate other runtimes. If we wound up with a future where most libraries are "hard-coded" to a single default runtime, this could very well hinder any number of projects, but nobody wants that. + +### **What are the incremental steps towards realizing this shiny future?** + +This question can't really be answered in isolation, because so much depends on the story for how we integrate with other runtimes. I don't think we can accept a future where is literally a single runtime that everyone has to use, but I wanted to pull out the question of "non-default runtimes" (as well as more details about the default) to other stories. + +### **Does realizing this future require cooperation between many projects?** + +Yes. For external libraries like `fetch_rs` to interoperate they will want to use the std APIs (and probably traits). + +[character]: ../characters.md +[comment]: ./comment.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[projects]: ../projects.md +[htvsq]: ../how_to_vision/shiny_future.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From 1213c916fcec19d1e6acfde262f8ee7fd9499942 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 10:22:00 -0400 Subject: [PATCH 134/347] minor nits --- src/vision/shiny_future/alan_switches_runtimes.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/vision/shiny_future/alan_switches_runtimes.md b/src/vision/shiny_future/alan_switches_runtimes.md index a0476da8..5e0e2067 100644 --- a/src/vision/shiny_future/alan_switches_runtimes.md +++ b/src/vision/shiny_future/alan_switches_runtimes.md @@ -26,8 +26,6 @@ async fn main() -> Result<(), Box> { He asks Barbara, one of his coworkers, "What is this `async_runtime` annotation? And what's `humboldt`?" She answers by explaining to him that Rust's support for async I/O is actually based around an underlying runtime. "Rust gives you a pretty decent runtime by default," she says, "but it's not tuned for our workloads. We wrote our own runtime, which we call `humboldt`." -[DistriData]: ../projects/DistriData.md - Alan asks, "What happens with the various std APIs? For example, I see we are calling `std::async_thread::spawn` -- when I used that before, it spawned tasks into the default runtime. What happens now?" Barbara explains that the "async" APIs in std generally execute relative to the current runtime that is in use. "When you call `std::async_thread::spawn`, it will spawn a task onto the current runtime. It's the same with the routines in `std::async_io` and and so forth. The `async_runtime` annotation just affects which runtime runs the `main` function, everything else follows from there." @@ -117,7 +115,6 @@ Projects like [DistriData] really benefit from being able to customize their run We have to pay careful attention to embedded projects like [MonsterMesh]. Some of the most obvious ways to implement this future would lean on `dyn` types and perhaps boxing, and that would rule out embedded projects. Embedded runtimes like [embassy] are also the most different in their overall design and they would have the hardest time fitting into the std APIs (of course, many embedded projects are already no-std, but many of them make use of some subset of the std capabilities through the facade). -[MonsterMesh]: ../projects/MonsterMesh.md [embassy]: https://github.com/akiles/embassy ### **What are the incremental steps towards realizing this shiny future?** @@ -134,7 +131,6 @@ There are a few steps required to realize this future: Yes. We will need to collaborate to define traits that std can use to interface with each runtime, and the runtimes will need to implement those traits. This is going to be non-trivial, because we want to preserve the ability for independent runtimes to experiment, while also preserving the ability to "max and match" and re-use components. For example, it'd probably be useful to have a bunch of shared I/O infrastructure, or to have utility crates for locks, for running threadpools, and the like. On the other hand, tokio takes advantage of the fact that it owns the I/O types *and* the locks *and* the scheduler to do some [nifty tricks](https://tokio.rs/blog/2020-04-preemption) and we would want to ensure that remains an option. -### Is this story [character]: ../characters.md [comment]: ./comment.md @@ -146,3 +142,5 @@ Yes. We will need to collaborate to define traits that std can use to interface [projects]: ../projects.md [htvsq]: ../how_to_vision/shiny_future.md [cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade +[DistriData]: ../projects/DistriData.md +[MonsterMesh]: ../projects/MonsterMesh.md From 5f6b59a2aa3cb2460d8865f533fe10a57d13b92a Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 10:22:43 -0400 Subject: [PATCH 135/347] Apply suggestions from code review Co-authored-by: Stu --- src/vision/shiny_future/alan_switches_runtimes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vision/shiny_future/alan_switches_runtimes.md b/src/vision/shiny_future/alan_switches_runtimes.md index 5e0e2067..3e6cd498 100644 --- a/src/vision/shiny_future/alan_switches_runtimes.md +++ b/src/vision/shiny_future/alan_switches_runtimes.md @@ -28,7 +28,7 @@ He asks Barbara, one of his coworkers, "What is this `async_runtime` annotation? Alan asks, "What happens with the various std APIs? For example, I see we are calling `std::async_thread::spawn` -- when I used that before, it spawned tasks into the default runtime. What happens now?" -Barbara explains that the "async" APIs in std generally execute relative to the current runtime that is in use. "When you call `std::async_thread::spawn`, it will spawn a task onto the current runtime. It's the same with the routines in `std::async_io` and and so forth. The `async_runtime` annotation just affects which runtime runs the `main` function, everything else follows from there." +Barbara explains that the "async" APIs in std generally execute relative to the current runtime that is in use. "When you call `std::async_thread::spawn`, it will spawn a task onto the current runtime. It's the same with the routines in `std::async_io` and so forth. The `async_runtime` annotation just affects which runtime runs the `main` function, everything else follows from there." ## Learning more about Humboldt @@ -38,7 +38,7 @@ Alan sees that some of the networking code that is being used in their applicati use humboldt::network; ``` -He asks Barbara, "Why don't we use the `std::async_io` APIs for that?" She explains that Humbolt makes use of some custom kernel extensions that, naturally enough, aren't part of the std library. "TCP is for rubes," she says, "we are using TTCP -- Turbo TCP." Her mind wanders briefly to [Turbo Pascal] and she has a brief moment of yearning for the days when computers had a "Turbo" button that changed them from 8 MHz to 12 MHz. She snaps back into the present day. "Anyway, the `std::async_io` APIs just call into humboldt's APIs via various traits. But we can code directly against `humboldt` when we want to access the extra capabilities it offers." +He asks Barbara, "Why don't we use the `std::async_io` APIs for that?" She explains that Humboldt makes use of some custom kernel extensions that, naturally enough, aren't part of the std library. "TCP is for rubes," she says, "we are using TTCP -- Turbo TCP." Her mind wanders briefly to [Turbo Pascal] and she has a brief moment of yearning for the days when computers had a "Turbo" button that changed them from 8 MHz to 12 MHz. She snaps back into the present day. "Anyway, the `std::async_io` APIs just call into humboldt's APIs via various traits. But we can code directly against `humboldt` when we want to access the extra capabilities it offers." [Turbo Pascal]: https://en.wikipedia.org/wiki/Turbo_Pascal @@ -76,7 +76,7 @@ Good question! I'm not entirely sure! I have to go looking and think about it. M ### What are the key points you were trying to convey with this status quo story? -* There is some way to seamlessly change to a different default runtime to use for `async main`. +* There is some way to seamlessly change to a different default runtime to use for `async fn main`. * There is no global runtime, just the current runtime. * When you are using this different runtime, you can write code that is hard-coded to it and which exposes additional capabilities. * You can integrate multiple runtimes relatively easily, and the std APIs work with whechever is the current runtime. From 13973bc01f025a3e4d1f151b25427b4941961e01 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 10:24:40 -0400 Subject: [PATCH 136/347] clarify that using humboldt I/O apis direectly would not use the current runtime --- src/vision/shiny_future/alan_switches_runtimes.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vision/shiny_future/alan_switches_runtimes.md b/src/vision/shiny_future/alan_switches_runtimes.md index 3e6cd498..04c3da05 100644 --- a/src/vision/shiny_future/alan_switches_runtimes.md +++ b/src/vision/shiny_future/alan_switches_runtimes.md @@ -44,13 +44,15 @@ He asks Barbara, "Why don't we use the `std::async_io` APIs for that?" She expla ## Integrating into other event loops -Later on, Alan is working on a visualizer front-end that integrates with [DistriData] to give more details about their workloads. To do it, he needs to integrate with Cocoa APIs and he wants to run certain tasks on Grand Central Dispatch. He approaches Barbara and asks, "If everything is running on `humboldt`, is there a way for me to run some things on another event loop? How does that work?" +Later on, Alan is working on a visualizer front-end that integrates with [DistriData] to give more details about their workloads. To do it, he needs to integrate with Cocoa APIs and he wants to run certain tasks on [Grand Central Dispatch]. He approaches Barbara and asks, "If everything is running on `humboldt`, is there a way for me to run some things on another event loop? How does that work?" -Barbara explains, "That's easy. You just have to use the `gcd` wrapper crate -- you can find it on `crates.io`. It implements the runtime traits for `gcd` and it has a `spawn` method. Once you spawn your task onto `gcd`, everything you run within gdb will be running in that context." +[Grand Central Dispatch]: https://en.wikipedia.org/wiki/Grand_Central_Dispatch + +Barbara explains, "That's easy. You just have to use the `gcd` wrapper crate -- you can find it on `crates.io`. It implements the runtime traits for `gcd` and it has a `spawn` method. Once you spawn your task onto `gcd`, everything you run within `gcd` will be running in that context." Alan says, "And so, if I want to get things running on `humboldt` again, I spawn a task back on `humboldt`?" -"Exactly," says Barbara. "Humboldt has a global event loop, so you can do that by just doing `humboldt::spawn`. You can also just use the `humboldt::io` APIs directly and so forth if you want to do I/O with humboldt." +"Exactly," says Barbara. "Humboldt has a global event loop, so you can do that by just doing `humboldt::spawn`. You can also just use the `humboldt::io` APIs directly. They will always use the Humboldt I/O threads, rather than using the current runtime." Alan winds up with some code that looks like this: From cf5ce82c1141f8e93dade6c68510ff661e681cd4 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 10:29:57 -0400 Subject: [PATCH 137/347] clarify how humboldt::main works --- src/vision/shiny_future/alan_switches_runtimes.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vision/shiny_future/alan_switches_runtimes.md b/src/vision/shiny_future/alan_switches_runtimes.md index 04c3da05..dc3af71d 100644 --- a/src/vision/shiny_future/alan_switches_runtimes.md +++ b/src/vision/shiny_future/alan_switches_runtimes.md @@ -16,7 +16,7 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee Since his [early adventures](./alans_trust_in_the_compiler_is_rewarded.md) with Async I/O went so well, Alan has been looking for a way to learn more. He finds a job working in Rust. One of the projects he works on is [DistriData]. Looking at their code, he sees an annotation he has never seen before: ```rust -#[async_runtime(humboldt)] +#[humboldt::main] async fn main() -> Result<(), Box> { let result = std::async_thread::spawn(async move { do_something() @@ -24,11 +24,13 @@ async fn main() -> Result<(), Box> { } ``` -He asks Barbara, one of his coworkers, "What is this `async_runtime` annotation? And what's `humboldt`?" She answers by explaining to him that Rust's support for async I/O is actually based around an underlying runtime. "Rust gives you a pretty decent runtime by default," she says, "but it's not tuned for our workloads. We wrote our own runtime, which we call `humboldt`." +He asks Barbara, one of his coworkers, "What is this `humboldt::main` annotation? What's `humboldt`?" She answers by explaining to him that Rust's support for async I/O is actually based around an underlying runtime. "Rust gives you a pretty decent runtime by default," she says, "but it's not tuned for our workloads. We wrote our own runtime, which we call `humboldt`." Alan asks, "What happens with the various std APIs? For example, I see we are calling `std::async_thread::spawn` -- when I used that before, it spawned tasks into the default runtime. What happens now?" -Barbara explains that the "async" APIs in std generally execute relative to the current runtime that is in use. "When you call `std::async_thread::spawn`, it will spawn a task onto the current runtime. It's the same with the routines in `std::async_io` and so forth. The `async_runtime` annotation just affects which runtime runs the `main` function, everything else follows from there." +Barbara explains that the "async" APIs in std generally execute relative to the current runtime that is in use. "When you call `std::async_thread::spawn`, it will spawn a task onto the current runtime. It's the same with the routines in `std::async_io` and so forth. The `humboldt::main` annotation actually just creates a synchronous `main` function that initializes the `humboldt` runtime and launches the first future. When you just write an `async fn main` without any annotation, the compiler synthesizes the same `main` function with the default runtime." + + ## Learning more about Humboldt From 83fea6c4bdd8304e87defac7efc7469921646245 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 10:31:20 -0400 Subject: [PATCH 138/347] give stories proper titles --- src/vision/shiny_future/alan_switches_runtimes.md | 2 +- .../shiny_future/alans_trust_in_the_compiler_is_rewarded.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vision/shiny_future/alan_switches_runtimes.md b/src/vision/shiny_future/alan_switches_runtimes.md index dc3af71d..b393b5b6 100644 --- a/src/vision/shiny_future/alan_switches_runtimes.md +++ b/src/vision/shiny_future/alan_switches_runtimes.md @@ -1,4 +1,4 @@ -# ✨ Shiny future stories: template +# ✨ Shiny future stories: Alan switches runtimes [How To Vision: Shiny Future]: ../how_to_vision/shiny_future.md [the raw source from this template]: https://raw.githubusercontent.com/rust-lang/wg-async-foundations/master/src/vision/shiny_future/template.md diff --git a/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md b/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md index 1af260f7..e180308e 100644 --- a/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md +++ b/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md @@ -1,4 +1,4 @@ -# ✨ Shiny future stories: template +# ✨ Shiny future stories: Alan's trust in the compiler is rewarded [How To Vision: Shiny Future]: ../how_to_vision/shiny_future.md [the raw source from this template]: https://raw.githubusercontent.com/rust-lang/wg-async-foundations/master/src/vision/shiny_future/template.md From 099ae060f34a9b1df84f9ca98967c63b3ba4328d Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 10:32:19 -0400 Subject: [PATCH 139/347] remove some ignore annotations; gives better highlighting in vscode --- .../shiny_future/alans_trust_in_the_compiler_is_rewarded.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md b/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md index e180308e..d8f09066 100644 --- a/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md +++ b/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md @@ -29,7 +29,7 @@ His trust in the compiler solidifies further the more he codes in Rust. Alan now starts with his first async project. He opens up the Rust book to the "Async I/O" chapter and it guides him to writing his first program. He starts by writing some synchronous code to write to the file system: -```rust,ignore +```rust use std::fs::File; fn main() -> Result<(), Box> { @@ -41,7 +41,7 @@ fn main() -> Result<(), Box> { Next, he adapts that to run in an async fashion. He starts by converting `main` into `async fn main`: -```rust,ignore +```rust use std::fs::File; async fn main() -> Result<(), Box> { From f17a8a6f192b42a41196ff65751093806ca2bd3b Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 11:28:55 -0400 Subject: [PATCH 140/347] Update barbara_needs_async_helpers.md --- .../status_quo/barbara_needs_async_helpers.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_needs_async_helpers.md b/src/vision/status_quo/barbara_needs_async_helpers.md index 7073313d..e528b8f0 100644 --- a/src/vision/status_quo/barbara_needs_async_helpers.md +++ b/src/vision/status_quo/barbara_needs_async_helpers.md @@ -124,7 +124,18 @@ fn sum(n: usize) -> BoxFuture<'static, usize> { } ``` -She also asks one of her peers for a code review asynchronously, and after awaiting their response, she learns about the [`async-recursion`] crate. Then she adds [`async-recursion`] to the dependencies. +She also asks one of her peers for a code review asynchronously, and after awaiting their response, she learns about the [`async-recursion`] crate. Then she adds [`async-recursion`] to the dependencies. Now she can write the follwing, which seems reasonably clean: + +```rust +#[async_recursion] +async fn sum(n: usize) -> usize { + if n == 0 { + 0 + } else { + n + sum(n - 1).await + } +} +``` As she is working, she realizes that what she really needs is to write a `Stream` of data. She starts trying to write her `Stream` implementation and spends several hours banging her head against her desk in frustration (her challenges are pretty similar to what [Alan experienced](./alan_hates_writing_a_stream.md)). Ultimately she's stuck trying to figure out why her `&mut self.foo` call is giving her errors: From 57b6b757e17648bb56cdc1ea4d97cd287135ada0 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 11:34:21 -0400 Subject: [PATCH 141/347] Apply suggestions from code review --- src/vision/status_quo/alan_has_an_event_loop.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vision/status_quo/alan_has_an_event_loop.md b/src/vision/status_quo/alan_has_an_event_loop.md index 12ad86af..90051507 100644 --- a/src/vision/status_quo/alan_has_an_event_loop.md +++ b/src/vision/status_quo/alan_has_an_event_loop.md @@ -10,12 +10,12 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee As a first Rust Project, Alan decides to program his own IRC Client. -Since it is Alans first Project in Rust, it is going to be a private one. He is going to use it on is Mac, so he decides to go with the cocoa crate to not have to learn any Framework specific quirks. This way Alan can get a feel of Rust itself. +Since it is Alan's first Project in Rust, it is going to be a private one. He is going to use it on is Mac, so he decides to go with the cocoa crate to not have to learn any Framework specific quirks. This way Alan can get a feel of Rust itself. ### Alans hopes and dreams Despite a learning curve, he managed to creating a first window and have some buttons and menus works. After the initialisation is done, the App hand over control to [CFRunLoop::Run](https://developer.apple.com/documentation/corefoundation/1542011-cfrunlooprun?language=occ). -Once Alan is happy whit his Mock UI, he wants to hook it up with some actual features. He is happy to learn that Rust has Features he already knows. +Once Alan is happy with his Mock UI, he wants to make it actually do something. Reading about async Rust, he sees that several of the concepts there map pretty well to some core Cocoa concepts: * Promises => Futures * Observables => Streams. @@ -23,7 +23,7 @@ Alan smiles, thinking he knows what and more importantly how to do this. ### First time dealing with runtimes -Unfortunately, coming from frameworks like Angular or Node.js, Alan is not used that he himself is responsible for driving the progress of Async/Streams. +Unfortunately, coming from frameworks like Angular or Node.js, Alan is not used to being responsible for driving the processing of Futures/Streams. After reading up about Runtimes, his mental image of a runtime is something like: @@ -66,7 +66,7 @@ impl Runtime { } ``` -It could be soo easy. Unfortunately he does not find any such solution. Having already looked through quite a bit of low level documentation and runtime code, Alan thinks about implementing his own runtime... +It could be so easy. Unfortunately he does not find any such solution. Having already looked through quite a bit of low level documentation and runtime code, Alan thinks about implementing his own runtime... ...but only for a very short time. Soon after looking into it, he finds out that he has to deal with ```RawWakerVTable```, ```RawWaker```, ```Pointers```. Worst of all, he has to do that without the safety net of the rust compiler, because this stuff is ```unsafe```. From 6efe3b9b098bcf554c29262ca9a2df9e3485abdd Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 18 Apr 2021 11:35:19 -0400 Subject: [PATCH 142/347] Delete StrUI I'm deleting this file since I think the status quo story is better --- src/vision/projects/StrUI | 48 --------------------------------------- 1 file changed, 48 deletions(-) delete mode 100644 src/vision/projects/StrUI diff --git a/src/vision/projects/StrUI b/src/vision/projects/StrUI deleted file mode 100644 index 997d27fc..00000000 --- a/src/vision/projects/StrUI +++ /dev/null @@ -1,48 +0,0 @@ -# ⚡ Projects: Strui (GUI Framework) - -## What is this? -This is a sample project for use within the various "status quo" or "shiny future" stories. - -## Description -Finally a Rust GUI Framework for the masses :) - -It uses Streams as a way of Event Handling: -```rust -fn main() { - let search_field = EditField::new(); - //we want to limit the amount of HTTP requests, so we throttle it to once a second - search_field.key_pressed_handler(|s: dyn std::stream::Stream| { - s.throttle(1) - .map(|e: KeyEvent| { Actions::UpdateAutocomplete}) - }); - - let form_field = EditField::new(); - //Don't annoy the user with validation while he is typing. Delay it until 3 seconds after he's done. - search_field.key_pressed_handler(|s: dyn std::stream::Stream| { - s.debounce(3) - .map(|e: KeyEvent| { Actions::ValidateForm}) - }); -} -``` -This assumes we have something simmilar to [throttle](https://rxjs.dev/api/operators/throttle) and [debounce](https://rxjs.dev/api/operators/debounce). - -## 🤔 Frequently Asked Questions -* **What makes this project different from others?** - - It uses Streams not just for waiting for something to finish/happen but actively uses them to *control when* something should happen. - - This project exposes Streams in the API and is not just used internally. - - We use Streams to signal events. In contrast to asynchronously reading data, there is a chance you might not be interested in -events from the past but only in events from the future. This is the difference between [hot and cold]https://blog.thoughtram.io/angular/2016/06/16/cold-vs-hot-observables.html] in Observables known in the JS world. -* **Does this project require a custom tailored runtime?** - - Maybe. We don't have special requirements of the inner workings of the Runtime but we need to be able to -advance the Streams inside an external Event loop. This would require a ```fn tick()```function that ```poll``` `s all -the current awoken streams and immediately after gives control back so we can call ```tick()```again on the next iteration and poll tasks/streams that have been awoken by then. - - Another important factor is that the Streams are providing the events in the order they are being performed by the user. -* **How much of this project is likely to be built with open source components from crates.io?** - - This is meant as an open source framework so libraries it builds off of are open source as well. -* **What is of most concern to this project?** - - API surface of Strui needs to be easy for the Developer to use. - - Lag is critical. The time between a Stream is awakened and completely handled is important. Especially on events likely - Drag & Drop - - Cross-Platform support -* **What is of least concern to this project?** - - Coming from UI Frameworks running in Browsers, Memory Consumption is not that important From 43c43f3e29f5dfcee314d03d382ff32d32e85280 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 19 Apr 2021 09:03:23 -0400 Subject: [PATCH 143/347] Apply suggestions from code review --- src/vision/status_quo/alan_builds_a_cache.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vision/status_quo/alan_builds_a_cache.md b/src/vision/status_quo/alan_builds_a_cache.md index 813708d2..45a55669 100644 --- a/src/vision/status_quo/alan_builds_a_cache.md +++ b/src/vision/status_quo/alan_builds_a_cache.md @@ -11,12 +11,14 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee [Alan][] is working on an HTTP server. The server makes calls to some other service. The performance of the downstream service is somewhat poor, so Alan would like to implement some basic caching. +[Alan]: ../characters/alan.html + Alan writes up some code which does the caching: ```rust async fn get_response(&mut self, key: String) { // Try to get the response from cache - if let Some(cached_response) self.cache.get(key) { + if let Some(cached_response) = self.cache.get(key) { self.channel.send(cached_response).await; return; } @@ -32,7 +34,7 @@ async fn get_response(&mut self, key: String) { Alan is happy with how things are working, but notices every once in a while the downstream service hangs. To prevent that, Alan implements a timeout. -He remembers from the documentation for his favorite runtime that there is the `race` function which can kick off two futures and polls both until one completes. (similar to tokio's [select](https://docs.rs/tokio/1.5.0/tokio/macro.select.html) and async-std's [race](https://docs.rs/async-std/1.9.0/async_std/future/trait.Future.html#method.race) for example). +He remembers from the documentation for his favorite runtime that there is the `race` function which can kick off two futures and polls both until one completes (similar to tokio's [select](https://docs.rs/tokio/1.5.0/tokio/macro.select.html) and async-std's [race](https://docs.rs/async-std/1.9.0/async_std/future/trait.Future.html#method.race) for example). ```rust @@ -80,7 +82,7 @@ async fn get_response(&mut self, key: String) { * Futures can be "canceled" at any await point. Authors of futures must be aware that after an await, the code might not run. * This is similar to `panic` safety but way more likely to happen * Futures might be polled to completion causing the code to work. But then many years later, the code is changed and the future might conditionally not be polled to completion which breaks things. -* The burden falls on the user of to poll to completion, and there is no way for the lib author to enforce this - they can only document this invariant. +* The burden falls on the user of the future to poll to completion, and there is no way for the lib author to enforce this - they can only document this invariant. * Diagnosing and ultimately fixing this issue requires a fairly deep understanding of the semantics of futures. * Without a Barbara, it might be hard to even know where to start: No lints are available, Alan is left with a normal debugger and `println!`. From 64743cf6bf8292a95273a83bb1c0b8045a4fe3ea Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 19 Apr 2021 09:04:38 -0400 Subject: [PATCH 144/347] link to md, not html --- src/vision/status_quo/alan_builds_a_cache.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_builds_a_cache.md b/src/vision/status_quo/alan_builds_a_cache.md index 45a55669..3b4cd7b1 100644 --- a/src/vision/status_quo/alan_builds_a_cache.md +++ b/src/vision/status_quo/alan_builds_a_cache.md @@ -11,7 +11,7 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee [Alan][] is working on an HTTP server. The server makes calls to some other service. The performance of the downstream service is somewhat poor, so Alan would like to implement some basic caching. -[Alan]: ../characters/alan.html +[Alan]: ../characters/alan.md Alan writes up some code which does the caching: From d9cb8306a63ab9e73ac1536ad93fde3beed1c857 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 19 Apr 2021 09:06:43 -0400 Subject: [PATCH 145/347] Apply suggestions from code review Co-authored-by: Zeeshan Ali --- src/vision/status_quo/barbara_bridges_sync_and_async.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/barbara_bridges_sync_and_async.md b/src/vision/status_quo/barbara_bridges_sync_and_async.md index e8599796..e5c0af10 100644 --- a/src/vision/status_quo/barbara_bridges_sync_and_async.md +++ b/src/vision/status_quo/barbara_bridges_sync_and_async.md @@ -15,7 +15,6 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee ## The story -### Introducing `block_on` Barbara is working on the code for [perf.rust-lang.org] and she wants to do a web request to load various intermediate results. She has heard that the `reqwest` crate is quite nice, so she decides to give it a try. She writes up an async function that does her web request: @@ -58,7 +57,11 @@ error[E0277]: a value of type `Vec` cannot be built from an iterator over = help: the trait `FromIterator` is not implemented for `Vec` ``` -"Of course," she thinks, "I can't call an async function from a closure." She decides that since she is not overly concerned about performance, so she decides she'll just use a call to [`block_on` from the `futures` crate](https://docs.rs/futures/0.3.14/futures/executor/fn.block_on.html) and execute the function synchronously: +"Of course," she thinks, "I can't call an async function from a closure." + +### Introducing `block_on` + +She decides that since she is not overly concerned about performance, so she decides she'll just use a call to [`block_on` from the `futures` crate](https://docs.rs/futures/0.3.14/futures/executor/fn.block_on.html) and execute the function synchronously: ```rust async fn do_web_request(url: &Url) -> Data {...} From 237768fa7d6bb5809f193471f561001bd3a66e3b Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 19 Apr 2021 09:19:15 -0400 Subject: [PATCH 146/347] Update src/vision/shiny_future/alan_switches_runtimes.md Co-authored-by: Ryan Levick --- src/vision/shiny_future/alan_switches_runtimes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/shiny_future/alan_switches_runtimes.md b/src/vision/shiny_future/alan_switches_runtimes.md index b393b5b6..d41214fd 100644 --- a/src/vision/shiny_future/alan_switches_runtimes.md +++ b/src/vision/shiny_future/alan_switches_runtimes.md @@ -83,7 +83,7 @@ Good question! I'm not entirely sure! I have to go looking and think about it. M * There is some way to seamlessly change to a different default runtime to use for `async fn main`. * There is no global runtime, just the current runtime. * When you are using this different runtime, you can write code that is hard-coded to it and which exposes additional capabilities. -* You can integrate multiple runtimes relatively easily, and the std APIs work with whechever is the current runtime. +* You can integrate multiple runtimes relatively easily, and the std APIs work with whichever is the current runtime. ### How do you imagine the std APIs and so forth know the current runtime? From b2ab55378a64e4ca1e8542150c3a0f69fd98e21b Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 19 Apr 2021 09:22:00 -0400 Subject: [PATCH 147/347] Update alan_switches_runtimes.md --- src/vision/shiny_future/alan_switches_runtimes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vision/shiny_future/alan_switches_runtimes.md b/src/vision/shiny_future/alan_switches_runtimes.md index d41214fd..58c114fb 100644 --- a/src/vision/shiny_future/alan_switches_runtimes.md +++ b/src/vision/shiny_future/alan_switches_runtimes.md @@ -40,7 +40,7 @@ Alan sees that some of the networking code that is being used in their applicati use humboldt::network; ``` -He asks Barbara, "Why don't we use the `std::async_io` APIs for that?" She explains that Humboldt makes use of some custom kernel extensions that, naturally enough, aren't part of the std library. "TCP is for rubes," she says, "we are using TTCP -- Turbo TCP." Her mind wanders briefly to [Turbo Pascal] and she has a brief moment of yearning for the days when computers had a "Turbo" button that changed them from 8 MHz to 12 MHz. She snaps back into the present day. "Anyway, the `std::async_io` APIs just call into humboldt's APIs via various traits. But we can code directly against `humboldt` when we want to access the extra capabilities it offers." +He asks Barbara, "Why don't we use the `std::async_io` APIs for that?" She explains that Humboldt makes use of some custom kernel extensions that, naturally enough, aren't part of the std library. "TCP is for rubes," she says, "we are using TTCP -- Turbo TCP." Her mind wanders briefly to [Turbo Pascal] and she has a brief moment of yearning for the days when computers had a "Turbo" button that changed them from 8 MHz to 12 MHz. She snaps back into the present day. "Anyway, the `std::async_io` APIs just call into humboldt's APIs via various traits. But we can code directly against `humboldt` when we want to access the extra capabilities it offers. That *does* make it harder to change to another runtime later, though." [Turbo Pascal]: https://en.wikipedia.org/wiki/Turbo_Pascal @@ -117,7 +117,7 @@ Projects like [DistriData] really benefit from being able to customize their run ### **Are there any [projects] that are hindered by this future?** -We have to pay careful attention to embedded projects like [MonsterMesh]. Some of the most obvious ways to implement this future would lean on `dyn` types and perhaps boxing, and that would rule out embedded projects. Embedded runtimes like [embassy] are also the most different in their overall design and they would have the hardest time fitting into the std APIs (of course, many embedded projects are already no-std, but many of them make use of some subset of the std capabilities through the facade). +We have to pay careful attention to embedded projects like [MonsterMesh]. Some of the most obvious ways to implement this future would lean on `dyn` types and perhaps boxing, and that would rule out some embedded projects. Embedded runtimes like [embassy] are also the most different in their overall design and they would have the hardest time fitting into the std APIs (of course, many embedded projects are already no-std, but many of them make use of some subset of the std capabilities through the facade). In general, traits and generic functions in std could lead to larger code size, as well. [embassy]: https://github.com/akiles/embassy From d1be1712b6acdc98a0bd96f02793beac3cd8d61f Mon Sep 17 00:00:00 2001 From: Justus K Date: Mon, 19 Apr 2021 20:02:05 +0200 Subject: [PATCH 148/347] Synchronize SUMMARY.md with existing stories --- src/SUMMARY.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 706dd9cf..a7f8b1d4 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -23,7 +23,9 @@ - [SLOW (Protocol implementation)](./vision/projects/SLOW.md) - [😱 Status quo](./vision/status_quo.md) - [Template](./vision/status_quo/template.md) + - [Alan tries to cache requests, which doesn't always happen](./vision/status_quo/alan_builds_a_cache.md) - [Alan finds dropping database handles is hard](./vision/status_quo/alan_finds_database_drops_hard.md) + - [Alan has an external event loop](./vision/status_quo/alan_has_an_event_loop.md) - [Alan hates writing a `Stream`](./vision/status_quo/alan_hates_writing_a_stream.md) - [Alan iteratively regresses performance](./vision/status_quo/alan_iteratively_regresses.md) - [Alan lost the world](./vision/status_quo/alan_lost_the_world.md) @@ -31,16 +33,20 @@ - [Alan wants to migrate a web server to Rust](./vision/status_quo/alan_picks_web_server.md) - [Alan runs into stack trouble](./vision/status_quo/alan_runs_into_stack_trouble.md) - [Alan started trusting the Rust compiler, but then... async](./vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md) + - [Alan thinks he needs async locks](./vision/status_quo/alan_thinks_he_needs_async_locks.md) - [Alan tries using a socket Sink](./vision/status_quo/alan_tries_a_socket_sink.md) - [Alan tries to debug a hang](./vision/status_quo/alan_tries_to_debug_a_hang.md) - [Alan writes a web framework](./vision/status_quo/alan_writes_a_web_framework.md) - [Barbara anguishes over HTTP](./vision/status_quo/barbara_anguishes_over_http.md) - [Barbara carefully dismisses embedded `Future`](./vision/status_quo/barbara_carefully_dismisses_embedded_future.md) + - [Barbara compares some C++ code](./vision/status_quo/barbara_compares_some_cpp_code.md) - [Barbara makes their first foray into async](./vision/status_quo/barbara_makes_their_first_steps_into_async.md) + - [Barbara needs Async Helpers](./vision/status_quo/barbara_needs_async_helpers.md) - [Barbara plays with async](./vision/status_quo/barbara_plays_with_async.md) - [Barbara tries async streams](./vision/status_quo/barbara_tries_async_streams.md) - [Barbara trims a stacktrace](./vision/status_quo/barbara_trims_a_stacktrace.md) - [Barbara wants async insights](./vision/status_quo/barbara_wants_async_insights.md) + - [Barbara wants to use GhostCell-like cell borrowing](./vision/status_quo/barbara_wants_to_use_ghostcell.md) - [Grace deploys her service and hits obstacles](./vision/status_quo/grace_deploys_her_service.md) - [Grace tries new libraries](./vision/status_quo/grace_tries_new_libraries.md) - [Grace waits for gdb next](./vision/status_quo/grace_waits_for_gdb_next.md) @@ -49,6 +55,8 @@ - [Niklaus wants to share knowledge](./vision/status_quo/niklaus_wants_to_share_knowledge.md) - [✨ Shiny future](./vision/shiny_future.md) - [Template](./vision/shiny_future/template.md) + - [Alan switches runtimes](./vision/shiny_future/alan_switches_runtimes.md) + - [Alan's trust in the compiler is rewarded](./vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md) - [Barbara makes a wish](./vision/shiny_future/barbara_makes_a_wish.md) - [📅 Roadmap for 2021](./vision/roadmap.md) - [🔍 Triage meetings](./triage.md) From 9c5286b395c1adf9b17c145f4cc4835c349e419c Mon Sep 17 00:00:00 2001 From: Justus K Date: Mon, 19 Apr 2021 20:03:58 +0200 Subject: [PATCH 149/347] Fix wrong lexical order --- src/SUMMARY.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index a7f8b1d4..ef97d303 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -23,7 +23,6 @@ - [SLOW (Protocol implementation)](./vision/projects/SLOW.md) - [😱 Status quo](./vision/status_quo.md) - [Template](./vision/status_quo/template.md) - - [Alan tries to cache requests, which doesn't always happen](./vision/status_quo/alan_builds_a_cache.md) - [Alan finds dropping database handles is hard](./vision/status_quo/alan_finds_database_drops_hard.md) - [Alan has an external event loop](./vision/status_quo/alan_has_an_event_loop.md) - [Alan hates writing a `Stream`](./vision/status_quo/alan_hates_writing_a_stream.md) @@ -34,8 +33,9 @@ - [Alan runs into stack trouble](./vision/status_quo/alan_runs_into_stack_trouble.md) - [Alan started trusting the Rust compiler, but then... async](./vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md) - [Alan thinks he needs async locks](./vision/status_quo/alan_thinks_he_needs_async_locks.md) - - [Alan tries using a socket Sink](./vision/status_quo/alan_tries_a_socket_sink.md) + - [Alan tries to cache requests, which doesn't always happen](./vision/status_quo/alan_builds_a_cache.md) - [Alan tries to debug a hang](./vision/status_quo/alan_tries_to_debug_a_hang.md) + - [Alan tries using a socket Sink](./vision/status_quo/alan_tries_a_socket_sink.md) - [Alan writes a web framework](./vision/status_quo/alan_writes_a_web_framework.md) - [Barbara anguishes over HTTP](./vision/status_quo/barbara_anguishes_over_http.md) - [Barbara carefully dismisses embedded `Future`](./vision/status_quo/barbara_carefully_dismisses_embedded_future.md) From d5e8d8b488ac53aa884130c613711a2ae97b18a4 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 19 Apr 2021 15:07:08 -0400 Subject: [PATCH 150/347] alphabetical ordering by filename --- src/SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index ef97d303..9c03479d 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -23,6 +23,7 @@ - [SLOW (Protocol implementation)](./vision/projects/SLOW.md) - [😱 Status quo](./vision/status_quo.md) - [Template](./vision/status_quo/template.md) + - [Alan tries to cache requests, which doesn't always happen](./vision/status_quo/alan_builds_a_cache.md) - [Alan finds dropping database handles is hard](./vision/status_quo/alan_finds_database_drops_hard.md) - [Alan has an external event loop](./vision/status_quo/alan_has_an_event_loop.md) - [Alan hates writing a `Stream`](./vision/status_quo/alan_hates_writing_a_stream.md) @@ -33,7 +34,6 @@ - [Alan runs into stack trouble](./vision/status_quo/alan_runs_into_stack_trouble.md) - [Alan started trusting the Rust compiler, but then... async](./vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md) - [Alan thinks he needs async locks](./vision/status_quo/alan_thinks_he_needs_async_locks.md) - - [Alan tries to cache requests, which doesn't always happen](./vision/status_quo/alan_builds_a_cache.md) - [Alan tries to debug a hang](./vision/status_quo/alan_tries_to_debug_a_hang.md) - [Alan tries using a socket Sink](./vision/status_quo/alan_tries_a_socket_sink.md) - [Alan writes a web framework](./vision/status_quo/alan_writes_a_web_framework.md) From d66e91d543f5a477a3f127f2de85439341ecc1b4 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 19 Apr 2021 15:07:49 -0400 Subject: [PATCH 151/347] alphabetical order by filename --- src/SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 9c03479d..a7f8b1d4 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -34,8 +34,8 @@ - [Alan runs into stack trouble](./vision/status_quo/alan_runs_into_stack_trouble.md) - [Alan started trusting the Rust compiler, but then... async](./vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md) - [Alan thinks he needs async locks](./vision/status_quo/alan_thinks_he_needs_async_locks.md) - - [Alan tries to debug a hang](./vision/status_quo/alan_tries_to_debug_a_hang.md) - [Alan tries using a socket Sink](./vision/status_quo/alan_tries_a_socket_sink.md) + - [Alan tries to debug a hang](./vision/status_quo/alan_tries_to_debug_a_hang.md) - [Alan writes a web framework](./vision/status_quo/alan_writes_a_web_framework.md) - [Barbara anguishes over HTTP](./vision/status_quo/barbara_anguishes_over_http.md) - [Barbara carefully dismisses embedded `Future`](./vision/status_quo/barbara_carefully_dismisses_embedded_future.md) From 89f146ac649bae5af2112db691a16a7f77100bd4 Mon Sep 17 00:00:00 2001 From: Justus K Date: Tue, 20 Apr 2021 14:02:35 +0200 Subject: [PATCH 152/347] Add shiny-future label to get_contributors.sh --- get_contributors.sh | 6 +++++- src/acknowledgments.md | 16 +++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/get_contributors.sh b/get_contributors.sh index a1758eec..bd6f9909 100755 --- a/get_contributors.sh +++ b/get_contributors.sh @@ -34,9 +34,13 @@ function check_bin() { check_bin curl check_bin jq +function get_issue_numbers() { + curl -s -u $user:$token -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/rust-lang/wg-async-foundations/issues?state=all&labels=$1" | jq '.[].number' +} + # Get a list of users that participated in issues. function issue_contributors() { - local numbers=$(curl -s -u $user:$token -H "Accept: application/vnd.github.v3+json" 'https://api.github.com/repos/rust-lang/wg-async-foundations/issues?state=all&labels=status-quo-story-ideas' | jq '.[].number') + local numbers="$(get_issue_numbers status-quo-story-ideas) $(get_issue_numbers shiny-future)" for num in $numbers; do curl -s -u $user:$token -H "Accept: application/vnd.github.v3+json" \ diff --git a/src/acknowledgments.md b/src/acknowledgments.md index 1dc38a10..c4ade171 100644 --- a/src/acknowledgments.md +++ b/src/acknowledgments.md @@ -12,36 +12,38 @@ Thanks to everyone who helped writing Stories by participating in one of the Asy Thanks to everyone who discussed about stories, shiny future and new features. +* [Ar37-rs](https://github.com/Ar37-rs) * [broccolihighkicks](https://github.com/broccolihighkicks) * [cortopy](https://github.com/cortopy) -* [cryptoquick](https://github.com/cryptoquick) * [eminence](https://github.com/eminence) * [evan-brass](https://github.com/evan-brass) * [farnz](https://github.com/farnz) * [FreddieGilbraith](https://github.com/FreddieGilbraith) * [geropl](https://github.com/geropl) -* [Gottox](https://github.com/Gottox) +* [guswynn](https://github.com/guswynn) * [jbr](https://github.com/jbr) * [jlkiri](https://github.com/jlkiri) * [jonathandturner](https://github.com/jonathandturner) * [jzrake](https://github.com/jzrake) -* [kmeisthax](https://github.com/kmeisthax) * [laurieontech](https://github.com/laurieontech) +* [LucioFranco](https://github.com/LucioFranco) * [nikomatsakis](https://github.com/nikomatsakis) +* [o0Ignition0o](https://github.com/o0Ignition0o) * [pickfire](https://github.com/pickfire) * [pnkfelix](https://github.com/pnkfelix) * [rgreinho](https://github.com/rgreinho) * [rhmoller](https://github.com/rhmoller) -* [ririsoft](https://github.com/ririsoft) * [rylev](https://github.com/rylev) * [sticnarf](https://github.com/sticnarf) -* [tanriol](https://github.com/tanriol) +* [Stupremee](https://github.com/Stupremee) * [uazu](https://github.com/uazu) +* [urhein](https://github.com/urhein) * [vladinator1000](https://github.com/vladinator1000) * [wesleywiser](https://github.com/wesleywiser) * [wraithan](https://github.com/wraithan) * [y21](https://github.com/y21) * [yoshuawuyts](https://github.com/yoshuawuyts) +* [zeenix](https://github.com/zeenix) ## ✨ Directly contributing @@ -59,15 +61,15 @@ Thanks to everyone who opened a Pull Request and wrote a story, shiny future or * [erichgess](https://github.com/erichgess) * [Frederik-Baetens](https://github.com/Frederik-Baetens) * [Gottox](https://github.com/Gottox) +* [guswynn](https://github.com/guswynn) * [JakubKoralewski](https://github.com/JakubKoralewski) * [jonathandturner](https://github.com/jonathandturner) * [jrvanwhy](https://github.com/jrvanwhy) * [kmeisthax](https://github.com/kmeisthax) -* [LucioFranco](https://github.com/LucioFranco) * [MidasLamb](https://github.com/MidasLamb) -* [nealmcb](https://github.com/nealmcb) * [nellshamrell](https://github.com/nellshamrell) * [nikomatsakis](https://github.com/nikomatsakis) +* [o0Ignition0o](https://github.com/o0Ignition0o) * [pnkfelix](https://github.com/pnkfelix) * [rylev](https://github.com/rylev) * [seanmonstar](https://github.com/seanmonstar) From 0c5f4ffde8895cdcfcd80a00bb47884d0908cbb5 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 20 Apr 2021 20:57:07 -0400 Subject: [PATCH 153/347] link another status quo tory --- .../shiny_future/alans_trust_in_the_compiler_is_rewarded.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md b/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md index d8f09066..2ddd8427 100644 --- a/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md +++ b/src/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md @@ -133,6 +133,7 @@ This feels pretty easy! ### What status quo story or stories are you retelling? * [Alan started trusting the Rust compiler, but then async](../status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md) +* [Barbara makes their first foray into async](../status_quo/barbara_makes_their_first_steps_into_async.md) ### What are the key points you were trying to convey with this status quo story? From c87874fcad79c1db0c7d3d244ac5ff99aff8c6b4 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Wed, 21 Apr 2021 06:15:11 -0400 Subject: [PATCH 154/347] propose alternative FAQs for shiny futures Here are some streamlined FAQs for shiny future stories. --- src/vision/shiny_future/template.md | 36 +++++++++++++---------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/vision/shiny_future/template.md b/src/vision/shiny_future/template.md index 37c2be10..eb53ac53 100644 --- a/src/vision/shiny_future/template.md +++ b/src/vision/shiny_future/template.md @@ -25,35 +25,31 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee ## 🤔 Frequently Asked Questions -### **What status quo story or stories are you retelling?** -*Link to the status quo stories here. If there isn't a story that you're retelling, [write it](../how_to_vision/status_quo.md)!* +*NB: These are generic FAQs. Feel free to customize them to your story or to add more.* -### **What is [Alan] most excited about in this future? Is he disappointed by anything?** -*Think about Alan's top priority (performance) and the expectations he brings (ease of use, tooling, etc). How do they fare in this future?* +### What status quo stories are you retelling? -### **What is [Grace] most excited about in this future? Is she disappointed by anything?** -*Think about Grace's top priority (memory safety) and the expectations she brings (still able to use all the tricks she knows and loves). How do they fare in this future?* +*Link to status quo stories if they exist. If not, that's ok, we'll help find them.* -### **What is [Niklaus] most excited about in this future? Is he disappointed by anything?** -*Think about Niklaus's top priority (accessibility) and the expectations he brings (strong community that will support him). How do they fare in this future?* +### What are the key attributes of this shiny future? -### **What is [Barbara] most excited about in this future? Is she disappointed by anything?** -*Think about Barbara's top priority (productivity, maintenance over time) and the expectations she brings (fits well with Rust). How do they fare in this future?* +*Summarize the main attributes of the design you were trying to convey.* -### **If this is an alternative to another shiny future, which one, and what motivated you to write an alternative?** (Optional) -* *Cite the other story. Be specific, but focus on what you like about your version, not what you dislike about the other.* -* *If this is not an alternative, you can skip this one.* +### What is the "most shiny" about this future? -### **What [projects] benefit the most from this future?** +*Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Which benefit the most relative to today?* -### **Are there any [projects] that are hindered by this future?** +### What are some of the potential pitfalls about this future? -### **What are the incremental steps towards realizing this shiny future?** (Optional) -* *Talk about the actual work we will do. You can link to [design docs](../design_docs.md) or even add new ones, as appropriate.* -* *You don't have to have the whole path figured out yet!* +*Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Are any of them negatively impacted? Are there specific application areas that are impacted negatively? You might find the sample [projects] helpful in this regard, or perhaps looking at the goals of each [character].* -### **Does realizing this future require cooperation between many projects?** (Optional) -*For example, if you are describing an interface in libstd that runtimes will have to implement, talk about that.* +### What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written? + +*Often when writing stories, we think about various possibilities. Sketch out some of the turning points here -- maybe someone will want to turn them into a full story! Alternatively, if this is a variation on an existing story, link back to it here.* + +### What are some of the things we'll have to figure out to realize this future? What projects besides Rust itself are involved, if any? (Optional) + +*Often the 'shiny future' stories involve technical problems that we don't really know how to solve yet. If you see such problems, list them here!* [character]: ../characters.md [comment]: ./comment.md From c0316c1a70ea40438d9bf1541f065148e30c621d Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Wed, 21 Apr 2021 06:35:19 -0400 Subject: [PATCH 155/347] add a question about unexpected things --- src/vision/shiny_future/template.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/vision/shiny_future/template.md b/src/vision/shiny_future/template.md index eb53ac53..db8cffe0 100644 --- a/src/vision/shiny_future/template.md +++ b/src/vision/shiny_future/template.md @@ -43,6 +43,10 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee *Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Are any of them negatively impacted? Are there specific application areas that are impacted negatively? You might find the sample [projects] helpful in this regard, or perhaps looking at the goals of each [character].* +### Did anything surprise you when writing this story? Did the story go any place unexpected? + +*The act of writing shiny future stories can uncover things we didn't expect to find. Did you have any new and exciting ideas as you were writing? Realize some complications that you didn't foresee?* + ### What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written? *Often when writing stories, we think about various possibilities. Sketch out some of the turning points here -- maybe someone will want to turn them into a full story! Alternatively, if this is a variation on an existing story, link back to it here.* @@ -51,6 +55,8 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee *Often the 'shiny future' stories involve technical problems that we don't really know how to solve yet. If you see such problems, list them here!* + + [character]: ../characters.md [comment]: ./comment.md [status quo stories]: ./status_quo.md From 8f6fa4a9ece8388ea4b4449cbd15ad1f00c9f396 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 22 Apr 2021 14:46:19 -0400 Subject: [PATCH 156/347] add two missing stories --- src/SUMMARY.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index a7f8b1d4..d58298e9 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -38,6 +38,8 @@ - [Alan tries to debug a hang](./vision/status_quo/alan_tries_to_debug_a_hang.md) - [Alan writes a web framework](./vision/status_quo/alan_writes_a_web_framework.md) - [Barbara anguishes over HTTP](./vision/status_quo/barbara_anguishes_over_http.md) + - [Barbara Barbara bridges sync and async in `perf.rust-lang.org`](./vision/status_quo/barbara_bridges_sync_and_async.md) + - [Barbara builds an async executor](./vision/status_quo/barbara_builds_an_async_executor.md) - [Barbara carefully dismisses embedded `Future`](./vision/status_quo/barbara_carefully_dismisses_embedded_future.md) - [Barbara compares some C++ code](./vision/status_quo/barbara_compares_some_cpp_code.md) - [Barbara makes their first foray into async](./vision/status_quo/barbara_makes_their_first_steps_into_async.md) From ebf158a58ea891fe50537ab7257bf2bd5170ce39 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 22 Apr 2021 16:07:08 -0400 Subject: [PATCH 157/347] barbara gets burned by select --- .../barbara_gets_burned_by_select.md | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/vision/status_quo/barbara_gets_burned_by_select.md diff --git a/src/vision/status_quo/barbara_gets_burned_by_select.md b/src/vision/status_quo/barbara_gets_burned_by_select.md new file mode 100644 index 00000000..9f03c370 --- /dev/null +++ b/src/vision/status_quo/barbara_gets_burned_by_select.md @@ -0,0 +1,76 @@ +# 😱 Status quo stories: Template + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +Barbara is working on the [YouBuy] server. In one particular part of the story, she has a process that has to load records from a database on the disk. As she receives data from the database, the data is sent into a channel for later processing. She writes an `async fn` that looks something like this: + +```rust +async fn read_send(db: &mut Database, channel: &mut Sender<...>) { + loop { + let data = read_next(db).await; + let items = parse(&data); + for item in items { + channel.send(item).await; + } + } +} +``` + +This database load has to take place while also fielding requests from the user. The routine that invokes `read_send` uses [`select!`](https://docs.rs/futures/0.3.14/futures/macro.select.html) for this purpose. It looks something like this: + +```rust +let mut db = ...; +let mut channel = ...; +loop { + futures::select! { + _ = read_send(&mut file, &mut channel) => {}, + some_data = socket.read_packet() => { + // ... + } + } +} +``` + +This setup seems to work well a lot of the time, but Barbara notices that the data getting processed is sometimes incomplete. It seems to be randomly missing some of the rows from the middle of the database, or individual items from a row. + +### Debugging + +She's not sure what could be going wrong! She starts debugging with print-outs and logging. Eventually she realizes the problem. Whenever a packet arrives on the socket, the `select!` macro will drop the other futures. This can sometime cause the `read_send` function to be canceled in between reading the data from the disk and sending the items over the channel. Ugh! + +Barbara has a hard time figuring out the best way to fix this problem. + +## 🤔 Frequently Asked Questions + +### **What are the morals of the story?** + +* Cancellation doesn't always cancel the entire task; particularly with `select!`, it sometimes cancels just a small piece of a given task. + * This is in tension with Rust's original design, which was meant to tear down an entire thread or task at once, precisely because of the challenge of writing exception-safe code. +* Writing "cancellation safe" code is very challenging. + +### **What are the sources for this story?** + +This was based on [tomaka's blog post](https://tomaka.medium.com/a-look-back-at-asynchronous-rust-d54d63934a1c), which also includes a number of possible solutions, all of them quite grungy. + +### **Why did you choose Barbara to tell this story?** + +tomaka is a veteran Rust user. + +### **How would this story have played out differently for the other characters?** + +They would likely have a hard time diagnosing the problem. It really depends on how well they have come to understand the semantics of cancellation. This is fairly independent from programming language background; knowing non-async Rust doesn't help in particular, as this concept is specific to async code. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade +[YouBuy]; ../projects/YouBuy.md \ No newline at end of file From 4c4cb049dfd4ad58705912c17ba6de263e54a679 Mon Sep 17 00:00:00 2001 From: Sean McArthur Date: Thu, 22 Apr 2021 16:41:03 -0700 Subject: [PATCH 158/347] Add link to shiny future blog post --- src/vision/shiny_future.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vision/shiny_future.md b/src/vision/shiny_future.md index a2ddcff9..322025d5 100644 --- a/src/vision/shiny_future.md +++ b/src/vision/shiny_future.md @@ -10,7 +10,10 @@ We are still in the process of drafting the vision document. The stories you see The "shiny future" is here to tell you what we are trying to build over the next 2 to 3 years. That is, it presents our "best guess" as to what will look like a few years from now. When describing specific features, it also embeds links to [design notes] that describe the constraints and general plans around that feature. +🧐 You may also enjoy reading the [blog post] announcing the brainstorming effort. + [design notes]: ../design_notes.md +[blog post]: https://blog.rust-lang.org/2021/04/14/async-vision-doc-shiny-future.html ### Think big -- too big, if you have to From e78d64375f3ea2118e55a26d36bf5388cc10ebf2 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Fri, 23 Apr 2021 17:03:42 -0400 Subject: [PATCH 159/347] metanarrative Co-authored-by: Tyler Mandry --- src/vision/status_quo.md | 140 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 137 insertions(+), 3 deletions(-) diff --git a/src/vision/status_quo.md b/src/vision/status_quo.md index 9f8e051b..06ed217a 100644 --- a/src/vision/status_quo.md +++ b/src/vision/status_quo.md @@ -28,6 +28,140 @@ These stories may not be true, but they are not fiction. They are based on real- [roadmap]: ./roadmap.md -## Where are the stories? - -Check the sidebar with the table of contents bar! +## Metanarrative + +*What follows is a kind of "metanarrative" of using async Rust that summarizes the challenges that are present today. At each point, we link to the various stories; you can read the full set in the table of contents on the left. We would like to extend this to also cover some of its glories, since reading the current stories is a litany of difficulties, but obviouly we see great promise in async Rust. Note that many stories here appear more than once.* + +Rust strives to be a language that brings together performance, productivity, and correctness. Rust programs are designed to surface bugs early and to make common patterns both ergonomic and efficient, leading to a sense that "if it compiles, it generally works, and works efficiently". Async Rust aims to extend that same feeling to an async setting, in which a single process interweaves numerous tasks that execute concurrently. Sometimes this works beautifully. However, other times, the reality falls short of that goal. + +

Making hard choices from a complex ecosystem from the start + +The problems begin from the very first moment a user starts to try out async Rust. The async Rust support in Rust itself is very basic, consisting only of the core Future mechanism. Everything else -- including the basic async runtimes themselves -- lives in user space. This means that users must make a number of choices rom the very beginning: + +* what runtime to use + * [Barbara makes their first foray into async](status_quo/barbara_makes_their_first_steps_into_async.md) + * [Niklaus wants to share knowledge](status_quo/niklaus_wants_to_share_knowledge.md) +* what http libraries to use + * [Barbara anguishes over http](status_quo/barbara_anguishes_over_http.md) +* basic helpers and utility crates are hard to find, and there are many choices, often with subtle differences between them + * [Barbara needs async helpers](status_quo/barbara_needs_async_helpers.md) +* Furthermore, the async ecosystem is fractured. Choosing one library may entail choosing a specific runtime. Sometimes you may wind up with multiple runtimes running at once. + * [Alan started trusting the rust compiler but then async](status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md) + * [Barbara needs async helpers](status_quo/barbara_needs_async_helpers.md) + * 🚧 Need a story about multiple runtimes working together +* There is a lack of common, standardized abstractions, which means that often there are multiple attempts to establish common traits and different libraries will employ a distinct subset. + * [`Sink` is not implemented by async-std websockets](status_quo/alan_tries_a_socket_sink.md) + * 🚧 No standardized lower-level traits for read, write, iterators in an async setting + * 🚧 Lack of widely used higher-level abstractions (like those tower aims to provide) + * 🚧 Tokio doesn't support the futures `Stream` trait because of stability concerns +* Some of the problems are due to the design of Rust itself. The coherence rules in particular. + * 🚧 Write about how coherence makes it impossible to establish + +
+ +
Once your basic setup is done, the best design patterns are subtle and not always known. + +Writing async programs turns out to have all kinds of subtle tradeoffs. Rust aims to be a language that gives its users control, but that also means that users wind up having to make a lot of choices, and we don't give them much guidance. + +* If you need synchronization, you might want an async lock, but you might want a synchronous lock, it's hard to know. + * [Alan thinks he needs async locks](status_quo/alan_thinks_he_needs_async_locks.md) +* Mixing sync and async code is tricky and it's not always obvious how to do it -- something it's not even clear what is "sync" (how long does a loop have to run before you can consider it blocking?) + * [Barbara bridges sync and async](status_quo/barbara_bridges_sync_and_async.md) + * [Barbara compares some C++ code](status_quo/barbara_compares_some_cpp_code.md) +* There are often many options for doing things like writing futures or other core concepts; which libraries or patterns are best? + * [Barbara needs async helpers](status_quo/barbara_needs_async_helpers.md) + * [Grace wants to integrate c api](status_quo/grace_wants_to_integrate_c_api.html#the-second-problem-doing-this-many-times) + * [Barbara plays with async](status_quo/barbara_plays_with_async.md), where she tries a number of combinations before she lands on `Box::pin(async move { .. })` +* If you would to have data or task parallel operations, it's not always obvious how to do that + * [Barbara plays with async](status_quo/barbara_plays_with_async.md) + * [Barbara tries async streams](status_quo/barbara_tries_async_streams.md) + * [Niklaus builds a hydrodynamic simulator](status_quo/niklaus_simulates_hydrodynamics.md) +* Sometimes it's hard to understand what will happen when the code runs + * [Grace wants to integrate c api](status_quo/grace_wants_to_integrate_c_api.html#the-second-problem-doing-this-many-times) + * [Barbara bridges sync and async](status_quo/barbara_bridges_sync_and_async.md) +* Sometimes async may not even be the right solution + * [Niklaus builds a hydrodynamic simulator](status_quo/niklaus_simulates_hydrodynamics.md) + +
+ +
Even once you've chosen a pattern, gettings things to compile can be a challenge. + +* Async fn doesn't work everywhere + * [not in traits](status_quo/alan_needs_async_in_traits.md) + * not in closures -- [barbara plays with async](status_quo/barbara_plays_with_async.md) + * [barbara needs async helpers](status_quo/barbara_needs_async_helpers.md) +* Recursion doesn't work + * [barbara needs async helpers](status_quo/barbara_needs_async_helpers.md) +* Things have to be Send all the time, some things can't live across an await + * [send isn't what it means anymore](https://tomaka.medium.com/a-look-back-at-asynchronous-rust-d54d63934a1c) + * [alan thinks he needs async locks](status_quo/alan_thinks_he_needs_async_locks.md) +* The tricks you know from Sync rust apply but don't quite work + * e.g., Box::pin, not Box::new -- [barbara plays with async](status_quo/barbara_plays_with_async.md) +* Sometimes you have to add `boxed` + * [Grace tries new libraries](status_quo/grace_tries_new_libraries.md) +* Writing strings is hard + * [Grace wants to integrate a C API](status_quo/grace_wants_to_integrate_c_api.html#the-second-problem-doing-this-many-times) +* When you stray from the happy path, the complexity cliff is very steep + * Working with Pin is really hard, but necessary in various scenarios + * 🚧 Need a story about implementing async-read, async-write + * [Alan hates writing a stream](status_quo/alan_hates_writing_a_stream.md) + * It's easy to forget to invoke a waker + * [Alan hates writing a stream](status_quo/alan_hates_writing_a_stream.html#-frequently-asked-questions) + * [Grace deploys her service](status_quo/grace_deploys_her_service.md) + * Ownership and borrowing rules get really complicated when async is involved + * [Alan writes a web framework](status_quo/alan_writes_a_web_framework.md) + * Sometimes you want `&mut` access that ends while the future is suspended + * [Alan lost the world](status_quo/alan_lost_the_world.md) + * [Ghostcell](status_quo/barbara_wants_to_use_ghostcell.md) + * Writing executors is pretty non-trivial, things have to have references to one another in a way that is not very rusty + * [barbara builds an async executor](status_quo/barbara_builds_an_async_executor.md) + +
+ +
Once you get it to compile, things don't "just work" at runtime, or they may be unexpectedly slow. + +* Libraries are tied to particular runtimes and those runtimes can panic when combined, or require special setup + * [Alan started trusting the rust compiler but then async](status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md) + * [Alan picks a web server](status_quo/alan_picks_web_server.md) +* Cancellation can in principle occur at any point in time, which leads to subtle bugs + * [Alan builds a cache](status_quo/alan_builds_a_cache.md) + * [Alan finds dropping database handles is hard](status_quo/alan_finds_database_drops_hard.md) + * [Barbara gets burned by select](https://github.com/rust-lang/wg-async-foundations/pull/169) +* Dropping is synchronous but sometimes wants to do asynchronous things and block for them to complete + * [Alan finds dropping database handles is hard](status_quo/alan_finds_database_drops_hard.md) +* Nested awaits mean that outer awaits cannot make progress + * [Footgun with futures unordered](https://github.com/rust-lang/wg-async-foundations/issues/131) +* Async functions let you build up large futures that execute without allocation, which is great, but can be its own cost + * [Alan iteratively regresses](status_quo/alan_iteratively_regresses.md) + * [Alan runs into stack allocation trouble](status_quo/alan_runs_into_stack_trouble.md) +* It's easy to have async functions that inadvertently spend too long in between awaits + * [Barbara compares some C++ code](status_quo/barbara_compares_some_cpp_code.md) + +
+ +
When you have those problems, you can't readily debug them or get visibility into what is going on. + +* The state of the executor can be very opaque: what tasks exist? why are they blocked? + * [Alan tries to debug a hang](status_quo/alan_tries_to_debug_a_hang.md) + * [Barbara wants async insights](status_quo/barbara_wants_async_insights.md) + * [Grace deploys her service](status_quo/grace_deploys_her_service.md) +* Stacktraces are full of gobbly gook and hard to read. + * [Barbara trims a stacktrace](status_quo/barbara_trims_a_stacktrace.md) +* Tooling doesn't work as well with async or just plain doesn't exist. + * [Grace waits for gdb](status_quo/grace_waits_for_gdb_next.md) + * [Alan iteratively regresses](status_quo/alan_iteratively_regresses.md) + +
+ +
Rust has always aimed to interoperate well with other languages and to fit itself into every niche, but that's harder with async. + +* Runtimes like tokio and async-std are not designed to "share ownership" of the event loop with foreign runtimes + * [Alan has an event loop](status_quo/alan_has_an_event_loop.md) +* Embedded environments can have pretty stringent requirements; Future was designed to be minimal, but perhaps not minimal enough + * [Barbara carefully discusses embedded future](status_quo/barbara_carefully_dismisses_embedded_future.md) +* Evolving specs for C and C++ require careful thought to integrate with async Rust's polling model + * 🚧 Convert [these notes on C++](https://hackmd.io/DnArulWbTKSx1_8mijsRuQ) into a status quo story + * 🚧 Write about the challenges of io-uring integration +* Advanced new techniques like [Ghostcell](status_quo/barbara_wants_to_use_ghostcell.md) may not fit into the traits as designed + +
From b5987a46eef6c16455247133dc3523f6b2d52744 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Fri, 23 Apr 2021 17:10:25 -0400 Subject: [PATCH 160/347] wip:docs --- docs/.nojekyll | 1 + docs/404.html | 230 + docs/FontAwesome/css/font-awesome.css | 4 + docs/FontAwesome/fonts/FontAwesome.ttf | Bin 0 -> 165548 bytes .../FontAwesome/fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../FontAwesome/fonts/fontawesome-webfont.svg | 2671 ++++++++ .../FontAwesome/fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes docs/LICENSE-APACHE | 201 + docs/LICENSE-MIT | 23 + docs/acknowledgments.html | 311 + docs/ayu-highlight.css | 79 + docs/book.js | 660 ++ docs/clipboard.min.js | 7 + docs/conversations.html | 246 + .../2021-02-12-Twitter-Thread.html | 331 + docs/css/chrome.css | 495 ++ docs/css/general.css | 177 + docs/css/print.css | 54 + docs/css/variables.css | 253 + docs/design_docs.html | 258 + docs/design_docs/async_closures.html | 243 + docs/design_docs/async_drop.html | 243 + docs/design_docs/async_fn_in_traits.html | 311 + docs/design_docs/async_lifecycle.html | 243 + docs/design_docs/async_main.html | 246 + docs/design_docs/async_read_write.html | 243 + docs/design_docs/channels.html | 243 + .../design_docs/completion_based_futures.html | 244 + docs/design_docs/generator_syntax.html | 262 + docs/design_docs/join.html | 243 + docs/design_docs/mutex.html | 244 + docs/design_docs/select.html | 243 + docs/design_docs/sink_trait.html | 243 + docs/design_docs/stream.html | 289 + docs/design_docs/yield_safe.html | 265 + docs/elasticlunr.min.js | 10 + docs/favicon.png | Bin 0 -> 5679 bytes docs/favicon.svg | 22 + docs/fonts/OPEN-SANS-LICENSE.txt | 202 + docs/fonts/SOURCE-CODE-PRO-LICENSE.txt | 93 + docs/fonts/fonts.css | 100 + .../open-sans-v17-all-charsets-300.woff2 | Bin 0 -> 44352 bytes ...open-sans-v17-all-charsets-300italic.woff2 | Bin 0 -> 40656 bytes .../open-sans-v17-all-charsets-600.woff2 | Bin 0 -> 44936 bytes ...open-sans-v17-all-charsets-600italic.woff2 | Bin 0 -> 42120 bytes .../open-sans-v17-all-charsets-700.woff2 | Bin 0 -> 44988 bytes ...open-sans-v17-all-charsets-700italic.woff2 | Bin 0 -> 40800 bytes .../open-sans-v17-all-charsets-800.woff2 | Bin 0 -> 44536 bytes ...open-sans-v17-all-charsets-800italic.woff2 | Bin 0 -> 40812 bytes .../open-sans-v17-all-charsets-italic.woff2 | Bin 0 -> 41076 bytes .../open-sans-v17-all-charsets-regular.woff2 | Bin 0 -> 43236 bytes ...source-code-pro-v11-all-charsets-500.woff2 | Bin 0 -> 59140 bytes docs/highlight.css | 83 + docs/highlight.js | 6 + docs/index.html | 256 + docs/mark.min.js | 7 + docs/mermaid-init.js | 1 + docs/mermaid.min.js | 32 + docs/print.html | 5967 +++++++++++++++++ docs/searcher.js | 483 ++ docs/searchindex.js | 1 + docs/searchindex.json | 1 + docs/tomorrow-night.css | 104 + docs/triage.html | 284 + docs/vision.html | 262 + docs/vision/characters.html | 279 + docs/vision/characters/alan.html | 259 + docs/vision/characters/barbara.html | 256 + docs/vision/characters/grace.html | 253 + docs/vision/characters/niklaus.html | 254 + docs/vision/how_to_vision.html | 285 + docs/vision/how_to_vision/awards.html | 259 + docs/vision/how_to_vision/comment.html | 270 + docs/vision/how_to_vision/projects.html | 252 + docs/vision/how_to_vision/shiny_future.html | 352 + docs/vision/how_to_vision/status_quo.html | 331 + docs/vision/projects.html | 249 + docs/vision/projects/DistriData.html | 261 + docs/vision/projects/MonsterMesh.html | 261 + docs/vision/projects/SLOW.html | 260 + docs/vision/projects/TrafficMonitor.html | 268 + docs/vision/projects/YouBuy.html | 261 + docs/vision/projects/template.html | 254 + docs/vision/roadmap.html | 259 + docs/vision/shiny_future.html | 253 + .../shiny_future/alan_switches_runtimes.html | 332 + ...ans_trust_in_the_compiler_is_rewarded.html | 378 ++ .../shiny_future/barbara_makes_a_wish.html | 348 + docs/vision/shiny_future/template.html | 270 + docs/vision/status_quo.html | 487 ++ .../status_quo/alan_builds_a_cache.html | 323 + .../alan_finds_database_drops_hard.html | 313 + .../status_quo/alan_has_an_event_loop.html | 334 + .../alan_hates_writing_a_stream.html | 458 ++ .../alan_iteratively_regresses.html | 309 + .../status_quo/alan_lost_the_world.html | 426 ++ .../alan_needs_async_in_traits.html | 348 + .../status_quo/alan_picks_web_server.html | 283 + .../alan_runs_into_stack_trouble.html | 285 + ...ting_the_rust_compiler_but_then_async.html | 337 + .../alan_thinks_he_needs_async_locks.html | 345 + .../status_quo/alan_tries_a_socket_sink.html | 372 + .../alan_tries_to_debug_a_hang.html | 353 + .../alan_writes_a_web_framework.html | 458 ++ .../barbara_anguishes_over_http.html | 268 + .../barbara_bridges_sync_and_async.html | 515 ++ .../barbara_builds_an_async_executor.html | 400 ++ ...a_carefully_dismisses_embedded_future.html | 563 ++ .../barbara_compares_some_cpp_code.html | 374 ++ ...ra_makes_their_first_steps_into_async.html | 297 + .../barbara_needs_async_helpers.html | 422 ++ .../status_quo/barbara_plays_with_async.html | 594 ++ .../barbara_tries_async_streams.html | 278 + .../barbara_trims_a_stacktrace.html | 386 ++ .../barbara_wants_async_insights.html | 296 + .../barbara_wants_to_use_ghostcell.html | 593 ++ .../status_quo/grace_deploys_her_service.html | 279 + .../status_quo/grace_tries_new_libraries.html | 343 + .../status_quo/grace_waits_for_gdb_next.html | 304 + .../grace_wants_to_integrate_c_api.html | 422 ++ .../niklaus_simulates_hydrodynamics.html | 297 + .../niklaus_wants_to_share_knowledge.html | 267 + docs/vision/status_quo/template.html | 265 + docs/vision/tenets.html | 266 + docs/welcome.html | 256 + 127 files changed, 37540 insertions(+) create mode 100644 docs/.nojekyll create mode 100644 docs/404.html create mode 100644 docs/FontAwesome/css/font-awesome.css create mode 100644 docs/FontAwesome/fonts/FontAwesome.ttf create mode 100644 docs/FontAwesome/fonts/fontawesome-webfont.eot create mode 100644 docs/FontAwesome/fonts/fontawesome-webfont.svg create mode 100644 docs/FontAwesome/fonts/fontawesome-webfont.ttf create mode 100644 docs/FontAwesome/fonts/fontawesome-webfont.woff create mode 100644 docs/FontAwesome/fonts/fontawesome-webfont.woff2 create mode 100644 docs/LICENSE-APACHE create mode 100644 docs/LICENSE-MIT create mode 100644 docs/acknowledgments.html create mode 100644 docs/ayu-highlight.css create mode 100644 docs/book.js create mode 100644 docs/clipboard.min.js create mode 100644 docs/conversations.html create mode 100644 docs/conversations/2021-02-12-Twitter-Thread.html create mode 100644 docs/css/chrome.css create mode 100644 docs/css/general.css create mode 100644 docs/css/print.css create mode 100644 docs/css/variables.css create mode 100644 docs/design_docs.html create mode 100644 docs/design_docs/async_closures.html create mode 100644 docs/design_docs/async_drop.html create mode 100644 docs/design_docs/async_fn_in_traits.html create mode 100644 docs/design_docs/async_lifecycle.html create mode 100644 docs/design_docs/async_main.html create mode 100644 docs/design_docs/async_read_write.html create mode 100644 docs/design_docs/channels.html create mode 100644 docs/design_docs/completion_based_futures.html create mode 100644 docs/design_docs/generator_syntax.html create mode 100644 docs/design_docs/join.html create mode 100644 docs/design_docs/mutex.html create mode 100644 docs/design_docs/select.html create mode 100644 docs/design_docs/sink_trait.html create mode 100644 docs/design_docs/stream.html create mode 100644 docs/design_docs/yield_safe.html create mode 100644 docs/elasticlunr.min.js create mode 100644 docs/favicon.png create mode 100644 docs/favicon.svg create mode 100644 docs/fonts/OPEN-SANS-LICENSE.txt create mode 100644 docs/fonts/SOURCE-CODE-PRO-LICENSE.txt create mode 100644 docs/fonts/fonts.css create mode 100644 docs/fonts/open-sans-v17-all-charsets-300.woff2 create mode 100644 docs/fonts/open-sans-v17-all-charsets-300italic.woff2 create mode 100644 docs/fonts/open-sans-v17-all-charsets-600.woff2 create mode 100644 docs/fonts/open-sans-v17-all-charsets-600italic.woff2 create mode 100644 docs/fonts/open-sans-v17-all-charsets-700.woff2 create mode 100644 docs/fonts/open-sans-v17-all-charsets-700italic.woff2 create mode 100644 docs/fonts/open-sans-v17-all-charsets-800.woff2 create mode 100644 docs/fonts/open-sans-v17-all-charsets-800italic.woff2 create mode 100644 docs/fonts/open-sans-v17-all-charsets-italic.woff2 create mode 100644 docs/fonts/open-sans-v17-all-charsets-regular.woff2 create mode 100644 docs/fonts/source-code-pro-v11-all-charsets-500.woff2 create mode 100644 docs/highlight.css create mode 100644 docs/highlight.js create mode 100644 docs/index.html create mode 100644 docs/mark.min.js create mode 100644 docs/mermaid-init.js create mode 100644 docs/mermaid.min.js create mode 100644 docs/print.html create mode 100644 docs/searcher.js create mode 100644 docs/searchindex.js create mode 100644 docs/searchindex.json create mode 100644 docs/tomorrow-night.css create mode 100644 docs/triage.html create mode 100644 docs/vision.html create mode 100644 docs/vision/characters.html create mode 100644 docs/vision/characters/alan.html create mode 100644 docs/vision/characters/barbara.html create mode 100644 docs/vision/characters/grace.html create mode 100644 docs/vision/characters/niklaus.html create mode 100644 docs/vision/how_to_vision.html create mode 100644 docs/vision/how_to_vision/awards.html create mode 100644 docs/vision/how_to_vision/comment.html create mode 100644 docs/vision/how_to_vision/projects.html create mode 100644 docs/vision/how_to_vision/shiny_future.html create mode 100644 docs/vision/how_to_vision/status_quo.html create mode 100644 docs/vision/projects.html create mode 100644 docs/vision/projects/DistriData.html create mode 100644 docs/vision/projects/MonsterMesh.html create mode 100644 docs/vision/projects/SLOW.html create mode 100644 docs/vision/projects/TrafficMonitor.html create mode 100644 docs/vision/projects/YouBuy.html create mode 100644 docs/vision/projects/template.html create mode 100644 docs/vision/roadmap.html create mode 100644 docs/vision/shiny_future.html create mode 100644 docs/vision/shiny_future/alan_switches_runtimes.html create mode 100644 docs/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html create mode 100644 docs/vision/shiny_future/barbara_makes_a_wish.html create mode 100644 docs/vision/shiny_future/template.html create mode 100644 docs/vision/status_quo.html create mode 100644 docs/vision/status_quo/alan_builds_a_cache.html create mode 100644 docs/vision/status_quo/alan_finds_database_drops_hard.html create mode 100644 docs/vision/status_quo/alan_has_an_event_loop.html create mode 100644 docs/vision/status_quo/alan_hates_writing_a_stream.html create mode 100644 docs/vision/status_quo/alan_iteratively_regresses.html create mode 100644 docs/vision/status_quo/alan_lost_the_world.html create mode 100644 docs/vision/status_quo/alan_needs_async_in_traits.html create mode 100644 docs/vision/status_quo/alan_picks_web_server.html create mode 100644 docs/vision/status_quo/alan_runs_into_stack_trouble.html create mode 100644 docs/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html create mode 100644 docs/vision/status_quo/alan_thinks_he_needs_async_locks.html create mode 100644 docs/vision/status_quo/alan_tries_a_socket_sink.html create mode 100644 docs/vision/status_quo/alan_tries_to_debug_a_hang.html create mode 100644 docs/vision/status_quo/alan_writes_a_web_framework.html create mode 100644 docs/vision/status_quo/barbara_anguishes_over_http.html create mode 100644 docs/vision/status_quo/barbara_bridges_sync_and_async.html create mode 100644 docs/vision/status_quo/barbara_builds_an_async_executor.html create mode 100644 docs/vision/status_quo/barbara_carefully_dismisses_embedded_future.html create mode 100644 docs/vision/status_quo/barbara_compares_some_cpp_code.html create mode 100644 docs/vision/status_quo/barbara_makes_their_first_steps_into_async.html create mode 100644 docs/vision/status_quo/barbara_needs_async_helpers.html create mode 100644 docs/vision/status_quo/barbara_plays_with_async.html create mode 100644 docs/vision/status_quo/barbara_tries_async_streams.html create mode 100644 docs/vision/status_quo/barbara_trims_a_stacktrace.html create mode 100644 docs/vision/status_quo/barbara_wants_async_insights.html create mode 100644 docs/vision/status_quo/barbara_wants_to_use_ghostcell.html create mode 100644 docs/vision/status_quo/grace_deploys_her_service.html create mode 100644 docs/vision/status_quo/grace_tries_new_libraries.html create mode 100644 docs/vision/status_quo/grace_waits_for_gdb_next.html create mode 100644 docs/vision/status_quo/grace_wants_to_integrate_c_api.html create mode 100644 docs/vision/status_quo/niklaus_simulates_hydrodynamics.html create mode 100644 docs/vision/status_quo/niklaus_wants_to_share_knowledge.html create mode 100644 docs/vision/status_quo/template.html create mode 100644 docs/vision/tenets.html create mode 100644 docs/welcome.html diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 00000000..f1731109 --- /dev/null +++ b/docs/.nojekyll @@ -0,0 +1 @@ +This file makes sure that Github Pages doesn't process mdBook's output. diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 00000000..f2b7f9d2 --- /dev/null +++ b/docs/404.html @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

Document not found (404)

+

This URL is invalid, sorry. Please use the navigation bar or search to continue.

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/FontAwesome/css/font-awesome.css b/docs/FontAwesome/css/font-awesome.css new file mode 100644 index 00000000..540440ce --- /dev/null +++ b/docs/FontAwesome/css/font-awesome.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/docs/FontAwesome/fonts/FontAwesome.ttf b/docs/FontAwesome/fonts/FontAwesome.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35acda2fa1196aad98c2adf4378a7611dd713aa3 GIT binary patch literal 165548 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 z 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 d0mW2@EHO9NV8h3u2x_sp}KECIB>@9+Qn{FBV{ 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 G*yFsbY~cLNXLP73aA74Mq6M9f^&YV`isWW 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

5q!RY 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 + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/FontAwesome/fonts/fontawesome-webfont.ttf b/docs/FontAwesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35acda2fa1196aad98c2adf4378a7611dd713aa3 GIT binary patch literal 165548 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 z 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 d0mRO}xo^G_%I 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 SdSQM28?+M|D(2r_;{O0|uQ74} literal 0 HcmV?d00001 diff --git a/docs/FontAwesome/fonts/fontawesome-webfont.woff2 b/docs/FontAwesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d13fc60404b91e398a37200c4a77b645cfd9586 GIT binary patch literal 77160 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 literal 0 HcmV?d00001 diff --git a/docs/LICENSE-APACHE b/docs/LICENSE-APACHE new file mode 100644 index 00000000..11069edd --- /dev/null +++ b/docs/LICENSE-APACHE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/docs/LICENSE-MIT b/docs/LICENSE-MIT new file mode 100644 index 00000000..31aa7938 --- /dev/null +++ b/docs/LICENSE-MIT @@ -0,0 +1,23 @@ +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/docs/acknowledgments.html b/docs/acknowledgments.html new file mode 100644 index 00000000..e0b588c3 --- /dev/null +++ b/docs/acknowledgments.html @@ -0,0 +1,311 @@ + + + + + + ❤️ Acknowledgments - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+ + + + + + + + + + + +
+
+

❤️ Acknowledgments

+

Thanks to everyone who helped forming the future of Rust async.

+

✍️ Participating in an writing session

+

Thanks to everyone who helped writing Stories by participating in one of the Async Rust writing sessions.

+
    +
  • todo
  • +
+

💬 Discussing about stories

+

Thanks to everyone who discussed about stories, shiny future and new features.

+ +

✨ Directly contributing

+

Thanks to everyone who opened a Pull Request and wrote a story, shiny future or improved the organization of the repository.

+ + +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/ayu-highlight.css b/docs/ayu-highlight.css new file mode 100644 index 00000000..0c45c6f1 --- /dev/null +++ b/docs/ayu-highlight.css @@ -0,0 +1,79 @@ +/* +Based off of the Ayu theme +Original by Dempfi (https://github.com/dempfi/ayu) +*/ + +.hljs { + display: block; + overflow-x: auto; + background: #191f26; + color: #e6e1cf; + padding: 0.5em; +} + +.hljs-comment, +.hljs-quote { + color: #5c6773; + font-style: italic; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-attr, +.hljs-regexp, +.hljs-link, +.hljs-selector-id, +.hljs-selector-class { + color: #ff7733; +} + +.hljs-number, +.hljs-meta, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #ffee99; +} + +.hljs-string, +.hljs-bullet { + color: #b8cc52; +} + +.hljs-title, +.hljs-built_in, +.hljs-section { + color: #ffb454; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-symbol { + color: #ff7733; +} + +.hljs-name { + color: #36a3d9; +} + +.hljs-tag { + color: #00568d; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-addition { + color: #91b362; +} + +.hljs-deletion { + color: #d96c75; +} diff --git a/docs/book.js b/docs/book.js new file mode 100644 index 00000000..5e386369 --- /dev/null +++ b/docs/book.js @@ -0,0 +1,660 @@ +"use strict"; + +// Fix back button cache problem +window.onunload = function () { }; + +// Global variable, shared between modules +function playground_text(playground) { + let code_block = playground.querySelector("code"); + + if (window.ace && code_block.classList.contains("editable")) { + let editor = window.ace.edit(code_block); + return editor.getValue(); + } else { + return code_block.textContent; + } +} + +(function codeSnippets() { + function fetch_with_timeout(url, options, timeout = 6000) { + return Promise.race([ + fetch(url, options), + new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), timeout)) + ]); + } + + var playgrounds = Array.from(document.querySelectorAll(".playground")); + if (playgrounds.length > 0) { + fetch_with_timeout("https://play.rust-lang.org/meta/crates", { + headers: { + 'Content-Type': "application/json", + }, + method: 'POST', + mode: 'cors', + }) + .then(response => response.json()) + .then(response => { + // get list of crates available in the rust playground + let playground_crates = response.crates.map(item => item["id"]); + playgrounds.forEach(block => handle_crate_list_update(block, playground_crates)); + }); + } + + function handle_crate_list_update(playground_block, playground_crates) { + // update the play buttons after receiving the response + update_play_button(playground_block, playground_crates); + + // and install on change listener to dynamically update ACE editors + if (window.ace) { + let code_block = playground_block.querySelector("code"); + if (code_block.classList.contains("editable")) { + let editor = window.ace.edit(code_block); + editor.addEventListener("change", function (e) { + update_play_button(playground_block, playground_crates); + }); + // add Ctrl-Enter command to execute rust code + editor.commands.addCommand({ + name: "run", + bindKey: { + win: "Ctrl-Enter", + mac: "Ctrl-Enter" + }, + exec: _editor => run_rust_code(playground_block) + }); + } + } + } + + // updates the visibility of play button based on `no_run` class and + // used crates vs ones available on http://play.rust-lang.org + function update_play_button(pre_block, playground_crates) { + var play_button = pre_block.querySelector(".play-button"); + + // skip if code is `no_run` + if (pre_block.querySelector('code').classList.contains("no_run")) { + play_button.classList.add("hidden"); + return; + } + + // get list of `extern crate`'s from snippet + var txt = playground_text(pre_block); + var re = /extern\s+crate\s+([a-zA-Z_0-9]+)\s*;/g; + var snippet_crates = []; + var item; + while (item = re.exec(txt)) { + snippet_crates.push(item[1]); + } + + // check if all used crates are available on play.rust-lang.org + var all_available = snippet_crates.every(function (elem) { + return playground_crates.indexOf(elem) > -1; + }); + + if (all_available) { + play_button.classList.remove("hidden"); + } else { + play_button.classList.add("hidden"); + } + } + + function run_rust_code(code_block) { + var result_block = code_block.querySelector(".result"); + if (!result_block) { + result_block = document.createElement('code'); + result_block.className = 'result hljs language-bash'; + + code_block.append(result_block); + } + + let text = playground_text(code_block); + let classes = code_block.querySelector('code').classList; + let has_2018 = classes.contains("edition2018"); + let edition = has_2018 ? "2018" : "2015"; + + var params = { + version: "stable", + optimize: "0", + code: text, + edition: edition + }; + + if (text.indexOf("#![feature") !== -1) { + params.version = "nightly"; + } + + result_block.innerText = "Running..."; + + fetch_with_timeout("https://play.rust-lang.org/evaluate.json", { + headers: { + 'Content-Type': "application/json", + }, + method: 'POST', + mode: 'cors', + body: JSON.stringify(params) + }) + .then(response => response.json()) + .then(response => result_block.innerText = response.result) + .catch(error => result_block.innerText = "Playground Communication: " + error.message); + } + + // Syntax highlighting Configuration + hljs.configure({ + tabReplace: ' ', // 4 spaces + languages: [], // Languages used for auto-detection + }); + + let code_nodes = Array + .from(document.querySelectorAll('code')) + // Don't highlight `inline code` blocks in headers. + .filter(function (node) {return !node.parentElement.classList.contains("header"); }); + + if (window.ace) { + // language-rust class needs to be removed for editable + // blocks or highlightjs will capture events + Array + .from(document.querySelectorAll('code.editable')) + .forEach(function (block) { block.classList.remove('language-rust'); }); + + Array + .from(document.querySelectorAll('code:not(.editable)')) + .forEach(function (block) { hljs.highlightBlock(block); }); + } else { + code_nodes.forEach(function (block) { hljs.highlightBlock(block); }); + } + + // Adding the hljs class gives code blocks the color css + // even if highlighting doesn't apply + code_nodes.forEach(function (block) { block.classList.add('hljs'); }); + + Array.from(document.querySelectorAll("code.language-rust")).forEach(function (block) { + + var lines = Array.from(block.querySelectorAll('.boring')); + // If no lines were hidden, return + if (!lines.length) { return; } + block.classList.add("hide-boring"); + + var buttons = document.createElement('div'); + buttons.className = 'buttons'; + buttons.innerHTML = ""; + + // add expand button + var pre_block = block.parentNode; + pre_block.insertBefore(buttons, pre_block.firstChild); + + pre_block.querySelector('.buttons').addEventListener('click', function (e) { + if (e.target.classList.contains('fa-eye')) { + e.target.classList.remove('fa-eye'); + e.target.classList.add('fa-eye-slash'); + e.target.title = 'Hide lines'; + e.target.setAttribute('aria-label', e.target.title); + + block.classList.remove('hide-boring'); + } else if (e.target.classList.contains('fa-eye-slash')) { + e.target.classList.remove('fa-eye-slash'); + e.target.classList.add('fa-eye'); + e.target.title = 'Show hidden lines'; + e.target.setAttribute('aria-label', e.target.title); + + block.classList.add('hide-boring'); + } + }); + }); + + if (window.playground_copyable) { + Array.from(document.querySelectorAll('pre code')).forEach(function (block) { + var pre_block = block.parentNode; + if (!pre_block.classList.contains('playground')) { + var buttons = pre_block.querySelector(".buttons"); + if (!buttons) { + buttons = document.createElement('div'); + buttons.className = 'buttons'; + pre_block.insertBefore(buttons, pre_block.firstChild); + } + + var clipButton = document.createElement('button'); + clipButton.className = 'fa fa-copy clip-button'; + clipButton.title = 'Copy to clipboard'; + clipButton.setAttribute('aria-label', clipButton.title); + clipButton.innerHTML = ''; + + buttons.insertBefore(clipButton, buttons.firstChild); + } + }); + } + + // Process playground code blocks + Array.from(document.querySelectorAll(".playground")).forEach(function (pre_block) { + // Add play button + var buttons = pre_block.querySelector(".buttons"); + if (!buttons) { + buttons = document.createElement('div'); + buttons.className = 'buttons'; + pre_block.insertBefore(buttons, pre_block.firstChild); + } + + var runCodeButton = document.createElement('button'); + runCodeButton.className = 'fa fa-play play-button'; + runCodeButton.hidden = true; + runCodeButton.title = 'Run this code'; + runCodeButton.setAttribute('aria-label', runCodeButton.title); + + buttons.insertBefore(runCodeButton, buttons.firstChild); + runCodeButton.addEventListener('click', function (e) { + run_rust_code(pre_block); + }); + + if (window.playground_copyable) { + var copyCodeClipboardButton = document.createElement('button'); + copyCodeClipboardButton.className = 'fa fa-copy clip-button'; + copyCodeClipboardButton.innerHTML = ''; + copyCodeClipboardButton.title = 'Copy to clipboard'; + copyCodeClipboardButton.setAttribute('aria-label', copyCodeClipboardButton.title); + + buttons.insertBefore(copyCodeClipboardButton, buttons.firstChild); + } + + let code_block = pre_block.querySelector("code"); + if (window.ace && code_block.classList.contains("editable")) { + var undoChangesButton = document.createElement('button'); + undoChangesButton.className = 'fa fa-history reset-button'; + undoChangesButton.title = 'Undo changes'; + undoChangesButton.setAttribute('aria-label', undoChangesButton.title); + + buttons.insertBefore(undoChangesButton, buttons.firstChild); + + undoChangesButton.addEventListener('click', function () { + let editor = window.ace.edit(code_block); + editor.setValue(editor.originalCode); + editor.clearSelection(); + }); + } + }); +})(); + +(function themes() { + var html = document.querySelector('html'); + var themeToggleButton = document.getElementById('theme-toggle'); + var themePopup = document.getElementById('theme-list'); + var themeColorMetaTag = document.querySelector('meta[name="theme-color"]'); + var stylesheets = { + ayuHighlight: document.querySelector("[href$='ayu-highlight.css']"), + tomorrowNight: document.querySelector("[href$='tomorrow-night.css']"), + highlight: document.querySelector("[href$='highlight.css']"), + }; + + function showThemes() { + themePopup.style.display = 'block'; + themeToggleButton.setAttribute('aria-expanded', true); + themePopup.querySelector("button#" + get_theme()).focus(); + } + + function hideThemes() { + themePopup.style.display = 'none'; + themeToggleButton.setAttribute('aria-expanded', false); + themeToggleButton.focus(); + } + + function get_theme() { + var theme; + try { theme = localStorage.getItem('mdbook-theme'); } catch (e) { } + if (theme === null || theme === undefined) { + return default_theme; + } else { + return theme; + } + } + + function set_theme(theme, store = true) { + let ace_theme; + + if (theme == 'coal' || theme == 'navy') { + stylesheets.ayuHighlight.disabled = true; + stylesheets.tomorrowNight.disabled = false; + stylesheets.highlight.disabled = true; + + ace_theme = "ace/theme/tomorrow_night"; + } else if (theme == 'ayu') { + stylesheets.ayuHighlight.disabled = false; + stylesheets.tomorrowNight.disabled = true; + stylesheets.highlight.disabled = true; + ace_theme = "ace/theme/tomorrow_night"; + } else { + stylesheets.ayuHighlight.disabled = true; + stylesheets.tomorrowNight.disabled = true; + stylesheets.highlight.disabled = false; + ace_theme = "ace/theme/dawn"; + } + + setTimeout(function () { + themeColorMetaTag.content = getComputedStyle(document.body).backgroundColor; + }, 1); + + if (window.ace && window.editors) { + window.editors.forEach(function (editor) { + editor.setTheme(ace_theme); + }); + } + + var previousTheme = get_theme(); + + if (store) { + try { localStorage.setItem('mdbook-theme', theme); } catch (e) { } + } + + html.classList.remove(previousTheme); + html.classList.add(theme); + } + + // Set theme + var theme = get_theme(); + + set_theme(theme, false); + + themeToggleButton.addEventListener('click', function () { + if (themePopup.style.display === 'block') { + hideThemes(); + } else { + showThemes(); + } + }); + + themePopup.addEventListener('click', function (e) { + var theme = e.target.id || e.target.parentElement.id; + set_theme(theme); + }); + + themePopup.addEventListener('focusout', function(e) { + // e.relatedTarget is null in Safari and Firefox on macOS (see workaround below) + if (!!e.relatedTarget && !themeToggleButton.contains(e.relatedTarget) && !themePopup.contains(e.relatedTarget)) { + hideThemes(); + } + }); + + // Should not be needed, but it works around an issue on macOS & iOS: https://github.com/rust-lang/mdBook/issues/628 + document.addEventListener('click', function(e) { + if (themePopup.style.display === 'block' && !themeToggleButton.contains(e.target) && !themePopup.contains(e.target)) { + hideThemes(); + } + }); + + document.addEventListener('keydown', function (e) { + if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; } + if (!themePopup.contains(e.target)) { return; } + + switch (e.key) { + case 'Escape': + e.preventDefault(); + hideThemes(); + break; + case 'ArrowUp': + e.preventDefault(); + var li = document.activeElement.parentElement; + if (li && li.previousElementSibling) { + li.previousElementSibling.querySelector('button').focus(); + } + break; + case 'ArrowDown': + e.preventDefault(); + var li = document.activeElement.parentElement; + if (li && li.nextElementSibling) { + li.nextElementSibling.querySelector('button').focus(); + } + break; + case 'Home': + e.preventDefault(); + themePopup.querySelector('li:first-child button').focus(); + break; + case 'End': + e.preventDefault(); + themePopup.querySelector('li:last-child button').focus(); + break; + } + }); +})(); + +(function sidebar() { + var html = document.querySelector("html"); + var sidebar = document.getElementById("sidebar"); + var sidebarLinks = document.querySelectorAll('#sidebar a'); + var sidebarToggleButton = document.getElementById("sidebar-toggle"); + var sidebarResizeHandle = document.getElementById("sidebar-resize-handle"); + var firstContact = null; + + function showSidebar() { + html.classList.remove('sidebar-hidden') + html.classList.add('sidebar-visible'); + Array.from(sidebarLinks).forEach(function (link) { + link.setAttribute('tabIndex', 0); + }); + sidebarToggleButton.setAttribute('aria-expanded', true); + sidebar.setAttribute('aria-hidden', false); + try { localStorage.setItem('mdbook-sidebar', 'visible'); } catch (e) { } + } + + + var sidebarAnchorToggles = document.querySelectorAll('#sidebar a.toggle'); + + function toggleSection(ev) { + ev.currentTarget.parentElement.classList.toggle('expanded'); + } + + Array.from(sidebarAnchorToggles).forEach(function (el) { + el.addEventListener('click', toggleSection); + }); + + function hideSidebar() { + html.classList.remove('sidebar-visible') + html.classList.add('sidebar-hidden'); + Array.from(sidebarLinks).forEach(function (link) { + link.setAttribute('tabIndex', -1); + }); + sidebarToggleButton.setAttribute('aria-expanded', false); + sidebar.setAttribute('aria-hidden', true); + try { localStorage.setItem('mdbook-sidebar', 'hidden'); } catch (e) { } + } + + // Toggle sidebar + sidebarToggleButton.addEventListener('click', function sidebarToggle() { + if (html.classList.contains("sidebar-hidden")) { + var current_width = parseInt( + document.documentElement.style.getPropertyValue('--sidebar-width'), 10); + if (current_width < 150) { + document.documentElement.style.setProperty('--sidebar-width', '150px'); + } + showSidebar(); + } else if (html.classList.contains("sidebar-visible")) { + hideSidebar(); + } else { + if (getComputedStyle(sidebar)['transform'] === 'none') { + hideSidebar(); + } else { + showSidebar(); + } + } + }); + + sidebarResizeHandle.addEventListener('mousedown', initResize, false); + + function initResize(e) { + window.addEventListener('mousemove', resize, false); + window.addEventListener('mouseup', stopResize, false); + html.classList.add('sidebar-resizing'); + } + function resize(e) { + var pos = (e.clientX - sidebar.offsetLeft); + if (pos < 20) { + hideSidebar(); + } else { + if (html.classList.contains("sidebar-hidden")) { + showSidebar(); + } + pos = Math.min(pos, window.innerWidth - 100); + document.documentElement.style.setProperty('--sidebar-width', pos + 'px'); + } + } + //on mouseup remove windows functions mousemove & mouseup + function stopResize(e) { + html.classList.remove('sidebar-resizing'); + window.removeEventListener('mousemove', resize, false); + window.removeEventListener('mouseup', stopResize, false); + } + + document.addEventListener('touchstart', function (e) { + firstContact = { + x: e.touches[0].clientX, + time: Date.now() + }; + }, { passive: true }); + + document.addEventListener('touchmove', function (e) { + if (!firstContact) + return; + + var curX = e.touches[0].clientX; + var xDiff = curX - firstContact.x, + tDiff = Date.now() - firstContact.time; + + if (tDiff < 250 && Math.abs(xDiff) >= 150) { + if (xDiff >= 0 && firstContact.x < Math.min(document.body.clientWidth * 0.25, 300)) + showSidebar(); + else if (xDiff < 0 && curX < 300) + hideSidebar(); + + firstContact = null; + } + }, { passive: true }); + + // Scroll sidebar to current active section + var activeSection = document.getElementById("sidebar").querySelector(".active"); + if (activeSection) { + // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView + activeSection.scrollIntoView({ block: 'center' }); + } +})(); + +(function chapterNavigation() { + document.addEventListener('keydown', function (e) { + if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; } + if (window.search && window.search.hasFocus()) { return; } + + switch (e.key) { + case 'ArrowRight': + e.preventDefault(); + var nextButton = document.querySelector('.nav-chapters.next'); + if (nextButton) { + window.location.href = nextButton.href; + } + break; + case 'ArrowLeft': + e.preventDefault(); + var previousButton = document.querySelector('.nav-chapters.previous'); + if (previousButton) { + window.location.href = previousButton.href; + } + break; + } + }); +})(); + +(function clipboard() { + var clipButtons = document.querySelectorAll('.clip-button'); + + function hideTooltip(elem) { + elem.firstChild.innerText = ""; + elem.className = 'fa fa-copy clip-button'; + } + + function showTooltip(elem, msg) { + elem.firstChild.innerText = msg; + elem.className = 'fa fa-copy tooltipped'; + } + + var clipboardSnippets = new ClipboardJS('.clip-button', { + text: function (trigger) { + hideTooltip(trigger); + let playground = trigger.closest("pre"); + return playground_text(playground); + } + }); + + Array.from(clipButtons).forEach(function (clipButton) { + clipButton.addEventListener('mouseout', function (e) { + hideTooltip(e.currentTarget); + }); + }); + + clipboardSnippets.on('success', function (e) { + e.clearSelection(); + showTooltip(e.trigger, "Copied!"); + }); + + clipboardSnippets.on('error', function (e) { + showTooltip(e.trigger, "Clipboard error!"); + }); +})(); + +(function scrollToTop () { + var menuTitle = document.querySelector('.menu-title'); + + menuTitle.addEventListener('click', function () { + document.scrollingElement.scrollTo({ top: 0, behavior: 'smooth' }); + }); +})(); + +(function controllMenu() { + var menu = document.getElementById('menu-bar'); + + (function controllPosition() { + var scrollTop = document.scrollingElement.scrollTop; + var prevScrollTop = scrollTop; + var minMenuY = -menu.clientHeight - 50; + // When the script loads, the page can be at any scroll (e.g. if you reforesh it). + menu.style.top = scrollTop + 'px'; + // Same as parseInt(menu.style.top.slice(0, -2), but faster + var topCache = menu.style.top.slice(0, -2); + menu.classList.remove('sticky'); + var stickyCache = false; // Same as menu.classList.contains('sticky'), but faster + document.addEventListener('scroll', function () { + scrollTop = Math.max(document.scrollingElement.scrollTop, 0); + // `null` means that it doesn't need to be updated + var nextSticky = null; + var nextTop = null; + var scrollDown = scrollTop > prevScrollTop; + var menuPosAbsoluteY = topCache - scrollTop; + if (scrollDown) { + nextSticky = false; + if (menuPosAbsoluteY > 0) { + nextTop = prevScrollTop; + } + } else { + if (menuPosAbsoluteY > 0) { + nextSticky = true; + } else if (menuPosAbsoluteY < minMenuY) { + nextTop = prevScrollTop + minMenuY; + } + } + if (nextSticky === true && stickyCache === false) { + menu.classList.add('sticky'); + stickyCache = true; + } else if (nextSticky === false && stickyCache === true) { + menu.classList.remove('sticky'); + stickyCache = false; + } + if (nextTop !== null) { + menu.style.top = nextTop + 'px'; + topCache = nextTop; + } + prevScrollTop = scrollTop; + }, { passive: true }); + })(); + (function controllBorder() { + menu.classList.remove('bordered'); + document.addEventListener('scroll', function () { + if (menu.offsetTop === 0) { + menu.classList.remove('bordered'); + } else { + menu.classList.add('bordered'); + } + }, { passive: true }); + })(); +})(); diff --git a/docs/clipboard.min.js b/docs/clipboard.min.js new file mode 100644 index 00000000..02c549e3 --- /dev/null +++ b/docs/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.4 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(n){var o={};function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}return r.m=n,r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function o(t,e){for(var n=0;n + + + + + 💬 Conversations - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

💬 Conversations

+

This section contains notes and summaries from conversations that we have had with people are using Rust and async and describing their experiences. These conversations and links are used as "evidence" when building the "status quo" section.

+

Not exhaustive nor mandatory

+

This section is not meant to be an "exhaustive list" of all sources. That would be impossible. Many conversations are short, not recorded, and hard to summaize. Others are subject to NDA. We certainly don't require that all claims in the status quo section are backed by evidence found here. Still, it's useful to have a place to dump notes and things for future reference.

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/conversations/2021-02-12-Twitter-Thread.html b/docs/conversations/2021-02-12-Twitter-Thread.html new file mode 100644 index 00000000..55366c9d --- /dev/null +++ b/docs/conversations/2021-02-12-Twitter-Thread.html @@ -0,0 +1,331 @@ + + + + + + 🐦 2021-02-12 Twitter thread - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

🐦 2021-02-12 Twitter thread

+

Notes taken from the thread in response to Niko's tweet.

+
    +
  • Enzo +
      +
    • A default event loop. "choosing your own event loop" takes time, then you have to understand the differences between each event loop etc.
    • +
    • Standard way of doing for await (variable of iterable) would be nice.
    • +
    • Standard promise combinators.
    • +
    +
  • +
  • creepy_owlet +
      +
    • https://github.com/dtantsur/rust-osauth/blob/master/src/sync.rs
    • +
    +
  • +
  • async trait -- +
      +
    • https://twitter.com/jcsp_tweets/status/1359820431151267843
    • +
    • "I thought async was built-in"?
    • +
    • nasty compiler errors
    • +
    • ownership puzzle blog post
    • +
    +
  • +
  • rubdos +
      +
    • blog post describes integrating two event loops
    • +
    • mentions desire for runtime independent libraries
    • +
    • qt provides a mechanism to integrate one's own event loop
    • +
    • llvm bug generates invalid arm7 assembly
    • +
    +
  • +
  • alexmiberry +
      +
    • kotlin/scala code, blocked by absence of async trait
    • +
    +
  • +
  • helpful blog post +
      +
    • jamesmcm +
        +
      • note that join and Result play poorly together + +
      • +
      +
    • +
    • the post mentions rayon but this isn't really a case where one ought to use rayon -- still, Rayon's APIs here are SO much nicer :)
    • +
    • rust aws and lambda
    • +
    +
  • +
  • issue requiring async drop
  • +
  • fasterthanlime -- +
      +
    • this post is amazing
    • +
    • the discussion on Send bounds and the ways to debug it is great
    • +
    +
  • +
  • bridging different runtimes using GATs
  • +
  • first server app, great thread with problems +
      +
    • "I wasn't expecting that it will be easy but after Go and Node.js development it felt extremely hard to start off anything with Rust."
    • +
    • "felt like I have to re-learn everything from scratch: structuring project and modules, dependency injection, managing the DB and of course dealing with concurrency"
    • +
    • common thread: poor docs, though only somewhat in async libraries +
        +
      • I had enums in the DB and it was a bit more complex to map them to my custom Rust enums but I succeeded with the help of a couple of blog posts – and not with Diesel documentation
      • +
      • I used Rusoto for dealing with AWS services. It's also pretty straightforward and high quality package – but again the documentation was sooo poor.
      • +
      +
    • +
    +
  • +
  • implaustin wrote a very nice post but it felt more like a "look how well this worked" post than one with actionable feedback +
      +
    • "Async has worked well so far. My top wishlist items are Sink and Stream traits in std. It's quite difficult to abstract over types that asynchronously produce or consume values."
    • +
    • "AsyncRead/AsyncWrite work fine for files, tcp streams, etc. But once you are past I/O and want to pass around structs, Sink and Stream are needed. One example of fragmentation is that Tokio channels used to implement the futures Sink/Stream traits, but no longer do in 1.0."
    • +
    • "I usually use Sink/Stream to abstract over different async channel types. Sometimes to hide the details of external dependencies from a task (e.g. where is this data going?). And sometimes to write common utility methods."
    • +
    • "One thing I can think of: there are still a lot of popular libraries that don't have async support (or are just getting there). Rocket, Criterion, Crossterm's execute, etc."
    • +
    +
  • +
  • EchoRior: +
      +
    • "I've written a bit of rust before, but rust is my first introduction to Async. My main gripes are that it's hard to figure our what the "blessed" way of doing async is. I'd love to see async included in the book, but I understand that async is still evolving too much for that."
    • +
    • "Adding to the confusion: theres multiple executors, and they have a bit of lock in. Async libraries being dependent on which executor version I use is also confusing for newcomers. In other langs, it seems like one just uses everything from the stdlib and everything is compatible"
    • +
    • "That kind of gave me a lot of hesitation/fomo in the beginning, because it felt like I had to make some big choices around my tech stack that I felt I would be stuck with later. I ended up chatting about this in the discord & researching for multiple days before getting started."
    • +
    • "Also, due to there not being a "blessed" approach, I don't know if I'm working with some misconceptions around async in rust, and will end up discovering I will need to redo large parts of what I wrote."
    • +
    +
  • +
+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/css/chrome.css b/docs/css/chrome.css new file mode 100644 index 00000000..21c08b93 --- /dev/null +++ b/docs/css/chrome.css @@ -0,0 +1,495 @@ +/* CSS for UI elements (a.k.a. chrome) */ + +@import 'variables.css'; + +::-webkit-scrollbar { + background: var(--bg); +} +::-webkit-scrollbar-thumb { + background: var(--scrollbar); +} +html { + scrollbar-color: var(--scrollbar) var(--bg); +} +#searchresults a, +.content a:link, +a:visited, +a > .hljs { + color: var(--links); +} + +/* Menu Bar */ + +#menu-bar, +#menu-bar-hover-placeholder { + z-index: 101; + margin: auto calc(0px - var(--page-padding)); +} +#menu-bar { + position: relative; + display: flex; + flex-wrap: wrap; + background-color: var(--bg); + border-bottom-color: var(--bg); + border-bottom-width: 1px; + border-bottom-style: solid; +} +#menu-bar.sticky, +.js #menu-bar-hover-placeholder:hover + #menu-bar, +.js #menu-bar:hover, +.js.sidebar-visible #menu-bar { + position: -webkit-sticky; + position: sticky; + top: 0 !important; +} +#menu-bar-hover-placeholder { + position: sticky; + position: -webkit-sticky; + top: 0; + height: var(--menu-bar-height); +} +#menu-bar.bordered { + border-bottom-color: var(--table-border-color); +} +#menu-bar i, #menu-bar .icon-button { + position: relative; + padding: 0 8px; + z-index: 10; + line-height: var(--menu-bar-height); + cursor: pointer; + transition: color 0.5s; +} +@media only screen and (max-width: 420px) { + #menu-bar i, #menu-bar .icon-button { + padding: 0 5px; + } +} + +.icon-button { + border: none; + background: none; + padding: 0; + color: inherit; +} +.icon-button i { + margin: 0; +} + +.right-buttons { + margin: 0 15px; +} +.right-buttons a { + text-decoration: none; +} + +.left-buttons { + display: flex; + margin: 0 5px; +} +.no-js .left-buttons { + display: none; +} + +.menu-title { + display: inline-block; + font-weight: 200; + font-size: 2.4rem; + line-height: var(--menu-bar-height); + text-align: center; + margin: 0; + flex: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.js .menu-title { + cursor: pointer; +} + +.menu-bar, +.menu-bar:visited, +.nav-chapters, +.nav-chapters:visited, +.mobile-nav-chapters, +.mobile-nav-chapters:visited, +.menu-bar .icon-button, +.menu-bar a i { + color: var(--icons); +} + +.menu-bar i:hover, +.menu-bar .icon-button:hover, +.nav-chapters:hover, +.mobile-nav-chapters i:hover { + color: var(--icons-hover); +} + +/* Nav Icons */ + +.nav-chapters { + font-size: 2.5em; + text-align: center; + text-decoration: none; + + position: fixed; + top: 0; + bottom: 0; + margin: 0; + max-width: 150px; + min-width: 90px; + + display: flex; + justify-content: center; + align-content: center; + flex-direction: column; + + transition: color 0.5s, background-color 0.5s; +} + +.nav-chapters:hover { + text-decoration: none; + background-color: var(--theme-hover); + transition: background-color 0.15s, color 0.15s; +} + +.nav-wrapper { + margin-top: 50px; + display: none; +} + +.mobile-nav-chapters { + font-size: 2.5em; + text-align: center; + text-decoration: none; + width: 90px; + border-radius: 5px; + background-color: var(--sidebar-bg); +} + +.previous { + float: left; +} + +.next { + float: right; + right: var(--page-padding); +} + +@media only screen and (max-width: 1080px) { + .nav-wide-wrapper { display: none; } + .nav-wrapper { display: block; } +} + +@media only screen and (max-width: 1380px) { + .sidebar-visible .nav-wide-wrapper { display: none; } + .sidebar-visible .nav-wrapper { display: block; } +} + +/* Inline code */ + +:not(pre) > .hljs { + display: inline; + padding: 0.1em 0.3em; + border-radius: 3px; +} + +:not(pre):not(a) > .hljs { + color: var(--inline-code-color); + overflow-x: initial; +} + +a:hover > .hljs { + text-decoration: underline; +} + +pre { + position: relative; +} +pre > .buttons { + position: absolute; + z-index: 100; + right: 5px; + top: 5px; + + color: var(--sidebar-fg); + cursor: pointer; +} +pre > .buttons :hover { + color: var(--sidebar-active); +} +pre > .buttons i { + margin-left: 8px; +} +pre > .buttons button { + color: inherit; + background: transparent; + border: none; + cursor: inherit; +} +pre > .result { + margin-top: 10px; +} + +/* Search */ + +#searchresults a { + text-decoration: none; +} + +mark { + border-radius: 2px; + padding: 0 3px 1px 3px; + margin: 0 -3px -1px -3px; + background-color: var(--search-mark-bg); + transition: background-color 300ms linear; + cursor: pointer; +} + +mark.fade-out { + background-color: rgba(0,0,0,0) !important; + cursor: auto; +} + +.searchbar-outer { + margin-left: auto; + margin-right: auto; + max-width: var(--content-max-width); +} + +#searchbar { + width: 100%; + margin: 5px auto 0px auto; + padding: 10px 16px; + transition: box-shadow 300ms ease-in-out; + border: 1px solid var(--searchbar-border-color); + border-radius: 3px; + background-color: var(--searchbar-bg); + color: var(--searchbar-fg); +} +#searchbar:focus, +#searchbar.active { + box-shadow: 0 0 3px var(--searchbar-shadow-color); +} + +.searchresults-header { + font-weight: bold; + font-size: 1em; + padding: 18px 0 0 5px; + color: var(--searchresults-header-fg); +} + +.searchresults-outer { + margin-left: auto; + margin-right: auto; + max-width: var(--content-max-width); + border-bottom: 1px dashed var(--searchresults-border-color); +} + +ul#searchresults { + list-style: none; + padding-left: 20px; +} +ul#searchresults li { + margin: 10px 0px; + padding: 2px; + border-radius: 2px; +} +ul#searchresults li.focus { + background-color: var(--searchresults-li-bg); +} +ul#searchresults span.teaser { + display: block; + clear: both; + margin: 5px 0 0 20px; + font-size: 0.8em; +} +ul#searchresults span.teaser em { + font-weight: bold; + font-style: normal; +} + +/* Sidebar */ + +.sidebar { + position: fixed; + left: 0; + top: 0; + bottom: 0; + width: var(--sidebar-width); + font-size: 0.875em; + box-sizing: border-box; + -webkit-overflow-scrolling: touch; + overscroll-behavior-y: contain; + background-color: var(--sidebar-bg); + color: var(--sidebar-fg); +} +.sidebar-resizing { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.js:not(.sidebar-resizing) .sidebar { + transition: transform 0.3s; /* Animation: slide away */ +} +.sidebar code { + line-height: 2em; +} +.sidebar .sidebar-scrollbox { + overflow-y: auto; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + padding: 10px 10px; +} +.sidebar .sidebar-resize-handle { + position: absolute; + cursor: col-resize; + width: 0; + right: 0; + top: 0; + bottom: 0; +} +.js .sidebar .sidebar-resize-handle { + cursor: col-resize; + width: 5px; +} +.sidebar-hidden .sidebar { + transform: translateX(calc(0px - var(--sidebar-width))); +} +.sidebar::-webkit-scrollbar { + background: var(--sidebar-bg); +} +.sidebar::-webkit-scrollbar-thumb { + background: var(--scrollbar); +} + +.sidebar-visible .page-wrapper { + transform: translateX(var(--sidebar-width)); +} +@media only screen and (min-width: 620px) { + .sidebar-visible .page-wrapper { + transform: none; + margin-left: var(--sidebar-width); + } +} + +.chapter { + list-style: none outside none; + padding-left: 0; + line-height: 2.2em; +} + +.chapter ol { + width: 100%; +} + +.chapter li { + display: flex; + color: var(--sidebar-non-existant); +} +.chapter li a { + display: block; + padding: 0; + text-decoration: none; + color: var(--sidebar-fg); +} + +.chapter li a:hover { + color: var(--sidebar-active); +} + +.chapter li a.active { + color: var(--sidebar-active); +} + +.chapter li > a.toggle { + cursor: pointer; + display: block; + margin-left: auto; + padding: 0 10px; + user-select: none; + opacity: 0.68; +} + +.chapter li > a.toggle div { + transition: transform 0.5s; +} + +/* collapse the section */ +.chapter li:not(.expanded) + li > ol { + display: none; +} + +.chapter li.chapter-item { + line-height: 1.5em; + margin-top: 0.6em; +} + +.chapter li.expanded > a.toggle div { + transform: rotate(90deg); +} + +.spacer { + width: 100%; + height: 3px; + margin: 5px 0px; +} +.chapter .spacer { + background-color: var(--sidebar-spacer); +} + +@media (-moz-touch-enabled: 1), (pointer: coarse) { + .chapter li a { padding: 5px 0; } + .spacer { margin: 10px 0; } +} + +.section { + list-style: none outside none; + padding-left: 20px; + line-height: 1.9em; +} + +/* Theme Menu Popup */ + +.theme-popup { + position: absolute; + left: 10px; + top: var(--menu-bar-height); + z-index: 1000; + border-radius: 4px; + font-size: 0.7em; + color: var(--fg); + background: var(--theme-popup-bg); + border: 1px solid var(--theme-popup-border); + margin: 0; + padding: 0; + list-style: none; + display: none; +} +.theme-popup .default { + color: var(--icons); +} +.theme-popup .theme { + width: 100%; + border: 0; + margin: 0; + padding: 2px 10px; + line-height: 25px; + white-space: nowrap; + text-align: left; + cursor: pointer; + color: inherit; + background: inherit; + font-size: inherit; +} +.theme-popup .theme:hover { + background-color: var(--theme-hover); +} +.theme-popup .theme:hover:first-child, +.theme-popup .theme:hover:last-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} diff --git a/docs/css/general.css b/docs/css/general.css new file mode 100644 index 00000000..d437b51c --- /dev/null +++ b/docs/css/general.css @@ -0,0 +1,177 @@ +/* Base styles and content styles */ + +@import 'variables.css'; + +:root { + /* Browser default font-size is 16px, this way 1 rem = 10px */ + font-size: 62.5%; +} + +html { + font-family: "Open Sans", sans-serif; + color: var(--fg); + background-color: var(--bg); + text-size-adjust: none; +} + +body { + margin: 0; + font-size: 1.6rem; + overflow-x: hidden; +} + +code { + font-family: "Source Code Pro", Consolas, "Ubuntu Mono", Menlo, "DejaVu Sans Mono", monospace, monospace !important; + font-size: 0.875em; /* please adjust the ace font size accordingly in editor.js */ +} + +/* Don't change font size in headers. */ +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + font-size: unset; +} + +.left { float: left; } +.right { float: right; } +.boring { opacity: 0.6; } +.hide-boring .boring { display: none; } +.hidden { display: none !important; } + +h2, h3 { margin-top: 2.5em; } +h4, h5 { margin-top: 2em; } + +.header + .header h3, +.header + .header h4, +.header + .header h5 { + margin-top: 1em; +} + +h1:target::before, +h2:target::before, +h3:target::before, +h4:target::before, +h5:target::before, +h6:target::before { + display: inline-block; + content: "»"; + margin-left: -30px; + width: 30px; +} + +/* This is broken on Safari as of version 14, but is fixed + in Safari Technology Preview 117 which I think will be Safari 14.2. + https://bugs.webkit.org/show_bug.cgi?id=218076 +*/ +:target { + scroll-margin-top: calc(var(--menu-bar-height) + 0.5em); +} + +.page { + outline: 0; + padding: 0 var(--page-padding); + margin-top: calc(0px - var(--menu-bar-height)); /* Compensate for the #menu-bar-hover-placeholder */ +} +.page-wrapper { + box-sizing: border-box; +} +.js:not(.sidebar-resizing) .page-wrapper { + transition: margin-left 0.3s ease, transform 0.3s ease; /* Animation: slide away */ +} + +.content { + overflow-y: auto; + padding: 0 15px; + padding-bottom: 50px; +} +.content main { + margin-left: auto; + margin-right: auto; + max-width: var(--content-max-width); +} +.content p { line-height: 1.45em; } +.content ol { line-height: 1.45em; } +.content ul { line-height: 1.45em; } +.content a { text-decoration: none; } +.content a:hover { text-decoration: underline; } +.content img { max-width: 100%; } +.content .header:link, +.content .header:visited { + color: var(--fg); +} +.content .header:link, +.content .header:visited:hover { + text-decoration: none; +} + +table { + margin: 0 auto; + border-collapse: collapse; +} +table td { + padding: 3px 20px; + border: 1px var(--table-border-color) solid; +} +table thead { + background: var(--table-header-bg); +} +table thead td { + font-weight: 700; + border: none; +} +table thead th { + padding: 3px 20px; +} +table thead tr { + border: 1px var(--table-header-bg) solid; +} +/* Alternate background colors for rows */ +table tbody tr:nth-child(2n) { + background: var(--table-alternate-bg); +} + + +blockquote { + margin: 20px 0; + padding: 0 20px; + color: var(--fg); + background-color: var(--quote-bg); + border-top: .1em solid var(--quote-border); + border-bottom: .1em solid var(--quote-border); +} + + +:not(.footnote-definition) + .footnote-definition, +.footnote-definition + :not(.footnote-definition) { + margin-top: 2em; +} +.footnote-definition { + font-size: 0.9em; + margin: 0.5em 0; +} +.footnote-definition p { + display: inline; +} + +.tooltiptext { + position: absolute; + visibility: hidden; + color: #fff; + background-color: #333; + transform: translateX(-50%); /* Center by moving tooltip 50% of its width left */ + left: -8px; /* Half of the width of the icon */ + top: -35px; + font-size: 0.8em; + text-align: center; + border-radius: 6px; + padding: 5px 8px; + margin: 5px; + z-index: 1000; +} +.tooltipped .tooltiptext { + visibility: visible; +} + +.chapter li.part-title { + color: var(--sidebar-fg); + margin: 5px 0px; + font-weight: bold; +} diff --git a/docs/css/print.css b/docs/css/print.css new file mode 100644 index 00000000..5e690f75 --- /dev/null +++ b/docs/css/print.css @@ -0,0 +1,54 @@ + +#sidebar, +#menu-bar, +.nav-chapters, +.mobile-nav-chapters { + display: none; +} + +#page-wrapper.page-wrapper { + transform: none; + margin-left: 0px; + overflow-y: initial; +} + +#content { + max-width: none; + margin: 0; + padding: 0; +} + +.page { + overflow-y: initial; +} + +code { + background-color: #666666; + border-radius: 5px; + + /* Force background to be printed in Chrome */ + -webkit-print-color-adjust: exact; +} + +pre > .buttons { + z-index: 2; +} + +a, a:visited, a:active, a:hover { + color: #4183c4; + text-decoration: none; +} + +h1, h2, h3, h4, h5, h6 { + page-break-inside: avoid; + page-break-after: avoid; +} + +pre, code { + page-break-inside: avoid; + white-space: pre-wrap; +} + +.fa { + display: none !important; +} diff --git a/docs/css/variables.css b/docs/css/variables.css new file mode 100644 index 00000000..9ff64d6b --- /dev/null +++ b/docs/css/variables.css @@ -0,0 +1,253 @@ + +/* Globals */ + +:root { + --sidebar-width: 300px; + --page-padding: 15px; + --content-max-width: 750px; + --menu-bar-height: 50px; +} + +/* Themes */ + +.ayu { + --bg: hsl(210, 25%, 8%); + --fg: #c5c5c5; + + --sidebar-bg: #14191f; + --sidebar-fg: #c8c9db; + --sidebar-non-existant: #5c6773; + --sidebar-active: #ffb454; + --sidebar-spacer: #2d334f; + + --scrollbar: var(--sidebar-fg); + + --icons: #737480; + --icons-hover: #b7b9cc; + + --links: #0096cf; + + --inline-code-color: #ffb454; + + --theme-popup-bg: #14191f; + --theme-popup-border: #5c6773; + --theme-hover: #191f26; + + --quote-bg: hsl(226, 15%, 17%); + --quote-border: hsl(226, 15%, 22%); + + --table-border-color: hsl(210, 25%, 13%); + --table-header-bg: hsl(210, 25%, 28%); + --table-alternate-bg: hsl(210, 25%, 11%); + + --searchbar-border-color: #848484; + --searchbar-bg: #424242; + --searchbar-fg: #fff; + --searchbar-shadow-color: #d4c89f; + --searchresults-header-fg: #666; + --searchresults-border-color: #888; + --searchresults-li-bg: #252932; + --search-mark-bg: #e3b171; +} + +.coal { + --bg: hsl(200, 7%, 8%); + --fg: #98a3ad; + + --sidebar-bg: #292c2f; + --sidebar-fg: #a1adb8; + --sidebar-non-existant: #505254; + --sidebar-active: #3473ad; + --sidebar-spacer: #393939; + + --scrollbar: var(--sidebar-fg); + + --icons: #43484d; + --icons-hover: #b3c0cc; + + --links: #2b79a2; + + --inline-code-color: #c5c8c6;; + + --theme-popup-bg: #141617; + --theme-popup-border: #43484d; + --theme-hover: #1f2124; + + --quote-bg: hsl(234, 21%, 18%); + --quote-border: hsl(234, 21%, 23%); + + --table-border-color: hsl(200, 7%, 13%); + --table-header-bg: hsl(200, 7%, 28%); + --table-alternate-bg: hsl(200, 7%, 11%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #b7b7b7; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #666; + --searchresults-border-color: #98a3ad; + --searchresults-li-bg: #2b2b2f; + --search-mark-bg: #355c7d; +} + +.light { + --bg: hsl(0, 0%, 100%); + --fg: hsl(0, 0%, 0%); + + --sidebar-bg: #fafafa; + --sidebar-fg: hsl(0, 0%, 0%); + --sidebar-non-existant: #aaaaaa; + --sidebar-active: #1f1fff; + --sidebar-spacer: #f4f4f4; + + --scrollbar: #8F8F8F; + + --icons: #747474; + --icons-hover: #000000; + + --links: #20609f; + + --inline-code-color: #301900; + + --theme-popup-bg: #fafafa; + --theme-popup-border: #cccccc; + --theme-hover: #e6e6e6; + + --quote-bg: hsl(197, 37%, 96%); + --quote-border: hsl(197, 37%, 91%); + + --table-border-color: hsl(0, 0%, 95%); + --table-header-bg: hsl(0, 0%, 80%); + --table-alternate-bg: hsl(0, 0%, 97%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #fafafa; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #666; + --searchresults-border-color: #888; + --searchresults-li-bg: #e4f2fe; + --search-mark-bg: #a2cff5; +} + +.navy { + --bg: hsl(226, 23%, 11%); + --fg: #bcbdd0; + + --sidebar-bg: #282d3f; + --sidebar-fg: #c8c9db; + --sidebar-non-existant: #505274; + --sidebar-active: #2b79a2; + --sidebar-spacer: #2d334f; + + --scrollbar: var(--sidebar-fg); + + --icons: #737480; + --icons-hover: #b7b9cc; + + --links: #2b79a2; + + --inline-code-color: #c5c8c6;; + + --theme-popup-bg: #161923; + --theme-popup-border: #737480; + --theme-hover: #282e40; + + --quote-bg: hsl(226, 15%, 17%); + --quote-border: hsl(226, 15%, 22%); + + --table-border-color: hsl(226, 23%, 16%); + --table-header-bg: hsl(226, 23%, 31%); + --table-alternate-bg: hsl(226, 23%, 14%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #aeaec6; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #5f5f71; + --searchresults-border-color: #5c5c68; + --searchresults-li-bg: #242430; + --search-mark-bg: #a2cff5; +} + +.rust { + --bg: hsl(60, 9%, 87%); + --fg: #262625; + + --sidebar-bg: #3b2e2a; + --sidebar-fg: #c8c9db; + --sidebar-non-existant: #505254; + --sidebar-active: #e69f67; + --sidebar-spacer: #45373a; + + --scrollbar: var(--sidebar-fg); + + --icons: #737480; + --icons-hover: #262625; + + --links: #2b79a2; + + --inline-code-color: #6e6b5e; + + --theme-popup-bg: #e1e1db; + --theme-popup-border: #b38f6b; + --theme-hover: #99908a; + + --quote-bg: hsl(60, 5%, 75%); + --quote-border: hsl(60, 5%, 70%); + + --table-border-color: hsl(60, 9%, 82%); + --table-header-bg: #b3a497; + --table-alternate-bg: hsl(60, 9%, 84%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #fafafa; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #666; + --searchresults-border-color: #888; + --searchresults-li-bg: #dec2a2; + --search-mark-bg: #e69f67; +} + +@media (prefers-color-scheme: dark) { + .light.no-js { + --bg: hsl(200, 7%, 8%); + --fg: #98a3ad; + + --sidebar-bg: #292c2f; + --sidebar-fg: #a1adb8; + --sidebar-non-existant: #505254; + --sidebar-active: #3473ad; + --sidebar-spacer: #393939; + + --scrollbar: var(--sidebar-fg); + + --icons: #43484d; + --icons-hover: #b3c0cc; + + --links: #2b79a2; + + --inline-code-color: #c5c8c6;; + + --theme-popup-bg: #141617; + --theme-popup-border: #43484d; + --theme-hover: #1f2124; + + --quote-bg: hsl(234, 21%, 18%); + --quote-border: hsl(234, 21%, 23%); + + --table-border-color: hsl(200, 7%, 13%); + --table-header-bg: hsl(200, 7%, 28%); + --table-alternate-bg: hsl(200, 7%, 11%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #b7b7b7; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #666; + --searchresults-border-color: #98a3ad; + --searchresults-li-bg: #2b2b2f; + --search-mark-bg: #355c7d; + } +} diff --git a/docs/design_docs.html b/docs/design_docs.html new file mode 100644 index 00000000..c350907e --- /dev/null +++ b/docs/design_docs.html @@ -0,0 +1,258 @@ + + + + + + 🔬 Design docs - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

🔬 Design documents

+

The design documents (or "design docs", more commonly) describe potential designs. These docs vary greatly in terms of their readiness to be implemented:

+
    +
  • Early on, they describe a vague idea for a future. Often this takes the shape of capturing constraints on the solution, rather than the solution itself.
  • +
  • When a feature is getting ready to ship, they can evolve into a full blown RFC, with links to tracking issues or other notes.
  • +
+

Early stage design docs

+

In the early stages, design docs are meant to capture interesting bits of "async design space". They are often updated to capture the results of a fruitful conversation or thread which uncovered contraints or challenges in solving a particular problem. They will capture a combination of the following:

+
    +
  • use cases;
  • +
  • interesting aspects to the design;
  • +
  • alternatives;
  • +
  • interactions with other features.
  • +
+

Late stage design docs

+

As a design progresses, the doc should get more and more complete, until it becomes something akin to an RFC. (Often, at that point, we will expand the design document into a directory, adding an actual RFC draft and other contents; those things can live in this repo or elsewhere, depending.) Once we decide to put a design doc onto the roadmap, it will also contain links to tracking issues or other places to track the status.

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/async_closures.html b/docs/design_docs/async_closures.html new file mode 100644 index 00000000..84342f59 --- /dev/null +++ b/docs/design_docs/async_closures.html @@ -0,0 +1,243 @@ + + + + + + 📦 Async closures - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

📦 Async closures

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/async_drop.html b/docs/design_docs/async_drop.html new file mode 100644 index 00000000..11fc14b9 --- /dev/null +++ b/docs/design_docs/async_drop.html @@ -0,0 +1,243 @@ + + + + + + 🗑️ Async drop - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

🗑️ Async drop

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/async_fn_in_traits.html b/docs/design_docs/async_fn_in_traits.html new file mode 100644 index 00000000..9da80552 --- /dev/null +++ b/docs/design_docs/async_fn_in_traits.html @@ -0,0 +1,311 @@ + + + + + + 🧬 Async fn in traits - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

🧬 Async fn in traits

+ +

General goal

+
trait Foo {
+    // Currently disallowed:
+    async fn bar();
+}
+
+

Concerns

+

How to name the resulting future

+

If you wanted to name the future that results from calling bar (or whatever), you can't.

+

Also true for functions fn bar() -> impl Trait.

+

Requiring Send on futures

+

Relevant thread

+
async fn foo() {}
+
+// desugars to
+fn foo() -> impl Future<Output = ()> { } // resulting type is Send if it can be
+
+// alternative desugaring we chose not to adopt would require Send
+fn foo() -> impl Future + Send { }
+
+

If I want to constrain the future I get back from a method, it is difficult to do without a name:

+
trait Service {
+    async fn request(&self);
+}
+
+fn parallel_service<S: Service>()
+where
+    S::Future: Send,
+{
+    ...
+}
+
+
    +
  • Should this be solved at the impl trait layer
  • +
  • Or should we specialize something for async functions
  • +
  • Would be nice, if there are many, associated types, to have some shorthand
  • +
+

Example use case: the Service

+
trait Service {
+    type Future: Future<Output = Response>;
+
+    fn request(&self, ...) -> Self::Future;
+}
+
+impl Service for MyService {
+    type Future = impl Future<Output = Response>;
+
+    fn request(&self) -> Self::Future {
+        async move { .. }
+    }
+}
+
+
    +
  • Dependent on impl Trait, see lang-team repo
  • +
+

Example use case: capturing lifetimes of arguments

+
trait MyMethod {
+    async fn foo(&self);
+}
+
+

🤔 Frequently Asked Questions

+

What do people say about this to their friends on twitter?

+
    +
  • (Explain your key points here)
  • +
+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/async_lifecycle.html b/docs/design_docs/async_lifecycle.html new file mode 100644 index 00000000..17dc703e --- /dev/null +++ b/docs/design_docs/async_lifecycle.html @@ -0,0 +1,243 @@ + + + + + + ♻️ Async lifecycle - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

♻️ Async lifecycle

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/async_main.html b/docs/design_docs/async_main.html new file mode 100644 index 00000000..a908a304 --- /dev/null +++ b/docs/design_docs/async_main.html @@ -0,0 +1,246 @@ + + + + + + 🎇 Async main - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/async_read_write.html b/docs/design_docs/async_read_write.html new file mode 100644 index 00000000..72af85de --- /dev/null +++ b/docs/design_docs/async_read_write.html @@ -0,0 +1,243 @@ + + + + + + 📝 AsyncRead, AsyncWrite traits - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

📝 AsyncRead, AsyncWrite traits

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/channels.html b/docs/design_docs/channels.html new file mode 100644 index 00000000..62915322 --- /dev/null +++ b/docs/design_docs/channels.html @@ -0,0 +1,243 @@ + + + + + + 📺 Async aware channels - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

📺 Async aware channels

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/completion_based_futures.html b/docs/design_docs/completion_based_futures.html new file mode 100644 index 00000000..3cc98ae6 --- /dev/null +++ b/docs/design_docs/completion_based_futures.html @@ -0,0 +1,244 @@ + + + + + + ⏳ Completion-based futures - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

⏳ Completion-based futures

+

Notes on io_uring

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/generator_syntax.html b/docs/design_docs/generator_syntax.html new file mode 100644 index 00000000..6bedcc1c --- /dev/null +++ b/docs/design_docs/generator_syntax.html @@ -0,0 +1,262 @@ + + + + + + ⚡ Generator syntax - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

⚡ Generator syntax

+
    +
  • It would be useful to be able to write a function to return an iterator or (in the async context) a generator
  • +
  • The basic shape might be (modulo bikeshedding) gen fn that contains yield
  • +
  • Some question marks: +
      +
    • How general of a mechanism do we want? +
        +
      • Just target iterators and streams, or shoot for something more general?
      • +
      +
    • +
    +
  • +
  • Some of the question marks that arise if you go beyond iterators and streams: +
      +
    • Return values that are not unit
    • +
    • Have yield return a value that is passed by the caller of next ("resume args")
    • +
    +
  • +
+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/join.html b/docs/design_docs/join.html new file mode 100644 index 00000000..4c6d7728 --- /dev/null +++ b/docs/design_docs/join.html @@ -0,0 +1,243 @@ + + + + + + 🤝 Join combinator - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

🤝 Join combinator

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/mutex.html b/docs/design_docs/mutex.html new file mode 100644 index 00000000..d16da2a3 --- /dev/null +++ b/docs/design_docs/mutex.html @@ -0,0 +1,244 @@ + + + + + + 🔒 Mutex (future-aware) - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/select.html b/docs/design_docs/select.html new file mode 100644 index 00000000..acb7f437 --- /dev/null +++ b/docs/design_docs/select.html @@ -0,0 +1,243 @@ + + + + + + 🤷‍♀️ Select combinator - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

🤷‍♀️ Select combinator

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/sink_trait.html b/docs/design_docs/sink_trait.html new file mode 100644 index 00000000..5b4a9d94 --- /dev/null +++ b/docs/design_docs/sink_trait.html @@ -0,0 +1,243 @@ + + + + + + 🚰 Sink trait - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

🚰 Sink trait

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/stream.html b/docs/design_docs/stream.html new file mode 100644 index 00000000..7233f6d0 --- /dev/null +++ b/docs/design_docs/stream.html @@ -0,0 +1,289 @@ + + + + + + ☔ Stream trait - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

☔ Stream trait

+ +

Trait definition

+
pub trait Stream {
+    type Item;
+
+    fn poll_next(
+        self: Pin<&mut Self>,
+        cx: &mut Context<'_>,
+    ) -> Poll<Option<Self::Item>>;
+
+    #[inline]
+    fn size_hint(&self) -> (usize, Option<usize>) {
+        (0, None)
+    }
+}
+
+

Concerns

+

Poll-based design

+
    +
  • You have to think about Pin if you implement this trait.
  • +
  • Combinators can be more difficult.
  • +
  • One solution: generator syntax.
  • +
+

Attached streams are commonly desired

+

Sometimes streams need to reuse internal storage (Discussion).

+

Combinators

+
    +
  • Currently the combinations are stored in the StreamExt module.
  • +
  • In some cases, this is because of the lack of async closures support. +
      +
    • Also serves as a "semver barrier".
    • +
    • Also no-std compatibility.
    • +
    +
  • +
  • One question: what combinators (if any) to include when stabilizing? +
      +
    • e.g., poll_next_unpin can make working with pin easier, albeit at a loss of generality +
        +
      • folks who are new to pinning could use this method, and it can help us to guide the diagnostics by suggesting that they Box::pin
      • +
      +
    • +
    +
  • +
+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/design_docs/yield_safe.html b/docs/design_docs/yield_safe.html new file mode 100644 index 00000000..6e7d12a2 --- /dev/null +++ b/docs/design_docs/yield_safe.html @@ -0,0 +1,265 @@ + + + + + + ⚠️ Yield-safe lint - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

⚠️ Yield-safe lint

+

Use-case

+

Some types should not be held across a "yield" bound. A typical example is a MutexGuard:

+
async fn example(x: &Lock<u32>) {
+    let data = x.lock().unwrap();
+    something().await;
+    *data += 1;
+}
+
+async fn something() { }
+
+

In practice, a lot of these issues are avoided because MutexGuard is not Send, but single-thread runtimes hit these issues.

+

Types where this would apply

+
    +
  • MutexGuard for mutexes, read-write locks
  • +
  • Guards for ref-cells
  • +
  • Things that might use these types internally and wish to bubble it up
  • +
+ +
    +
  • The #[must_use] lint on types, we would want their design to work very closely.
  • +
  • Non-async-friendly functions like sleep or task::block_on.
  • +
+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/elasticlunr.min.js b/docs/elasticlunr.min.js new file mode 100644 index 00000000..94b20dd2 --- /dev/null +++ b/docs/elasticlunr.min.js @@ -0,0 +1,10 @@ +/** + * elasticlunr - http://weixsong.github.io + * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.9.5 + * + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + * MIT Licensed + * @license + */ +!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.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 A;{X5v literal 0 HcmV?d00001 diff --git a/docs/favicon.svg b/docs/favicon.svg new file mode 100644 index 00000000..90e0ea58 --- /dev/null +++ b/docs/favicon.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/docs/fonts/OPEN-SANS-LICENSE.txt b/docs/fonts/OPEN-SANS-LICENSE.txt new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/docs/fonts/OPEN-SANS-LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/docs/fonts/SOURCE-CODE-PRO-LICENSE.txt b/docs/fonts/SOURCE-CODE-PRO-LICENSE.txt new file mode 100644 index 00000000..366206f5 --- /dev/null +++ b/docs/fonts/SOURCE-CODE-PRO-LICENSE.txt @@ -0,0 +1,93 @@ +Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/fonts/fonts.css b/docs/fonts/fonts.css new file mode 100644 index 00000000..858efa59 --- /dev/null +++ b/docs/fonts/fonts.css @@ -0,0 +1,100 @@ +/* Open Sans is licensed under the Apache License, Version 2.0. See http://www.apache.org/licenses/LICENSE-2.0 */ +/* Source Code Pro is under the Open Font License. See https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL */ + +/* open-sans-300 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), + url('open-sans-v17-all-charsets-300.woff2') format('woff2'); +} + +/* open-sans-300italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: local('Open Sans Light Italic'), local('OpenSans-LightItalic'), + url('open-sans-v17-all-charsets-300italic.woff2') format('woff2'); +} + +/* open-sans-regular - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans Regular'), local('OpenSans-Regular'), + url('open-sans-v17-all-charsets-regular.woff2') format('woff2'); +} + +/* open-sans-italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), + url('open-sans-v17-all-charsets-italic.woff2') format('woff2'); +} + +/* open-sans-600 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), + url('open-sans-v17-all-charsets-600.woff2') format('woff2'); +} + +/* open-sans-600italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans SemiBold Italic'), local('OpenSans-SemiBoldItalic'), + url('open-sans-v17-all-charsets-600italic.woff2') format('woff2'); +} + +/* open-sans-700 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), + url('open-sans-v17-all-charsets-700.woff2') format('woff2'); +} + +/* open-sans-700italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), + url('open-sans-v17-all-charsets-700italic.woff2') format('woff2'); +} + +/* open-sans-800 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 800; + src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'), + url('open-sans-v17-all-charsets-800.woff2') format('woff2'); +} + +/* open-sans-800italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 800; + src: local('Open Sans ExtraBold Italic'), local('OpenSans-ExtraBoldItalic'), + url('open-sans-v17-all-charsets-800italic.woff2') format('woff2'); +} + +/* source-code-pro-500 - latin_vietnamese_latin-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Source Code Pro'; + font-style: normal; + font-weight: 500; + src: url('source-code-pro-v11-all-charsets-500.woff2') format('woff2'); +} diff --git a/docs/fonts/open-sans-v17-all-charsets-300.woff2 b/docs/fonts/open-sans-v17-all-charsets-300.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9f51be370fa913ce6de2922b580c262c4822b337 GIT binary patch literal 44352 zcmV(;K-<4}Pew8T0RR910Ifg(5dZ)H0f7hr0Ib{q0RR9100000000000000000000 z0000QE*lUWfmQ}!0EY+&fhq})G!YOAg!yQMtSAeP3IG8%0we>R0t6rhgFFYi4Ge-h zTM$x_K;*{m=TyO<(oF`$dr#+gT@uRz<@OP72f1way{Ld4djxa`IG0*=K;{4c|Nq>i zF~-^s+Z{rPn$}0zLzV=G*ddk#MfRZCOSo7Svxg)@O1QTM(GtC{-8am>TkfXJ&}5JO zXokZnNWAaG&x#r1r&DFc3k@sfl$|@RDaX?kWW{EN@TZnHp}gCDd}u9PW@H>gZ142z+QEhtr+J1&#|>KAj6Y2`)3tZkBe+ebjmTS6=W*;+$iHPBB3Un)Qo?6q*dE(P3T9y565vHowfyevYxI9K2P(y z$<_L{@8?J5hBF;TxvX%vUMY{MW;AQOFw;MRE?UNs>(i)Pw#F30SO&%}gA&nV#5ynh z%lr4w|41^EwI78NR7X_&MdMPeXq|gj4oJ6}tzd{4Fvwwq1Zjy_sfS1l0YYgJLOuSa zG~qZt#{MG5VL1;uY?c0qywYwhjn*_`$CiZFZCFDFz-?kG;zz}gkK?(Z;(4Ip0|Y@p zL`0q-DhfWlFW)O~_Uv1l(z*7n%=kiif-51?{(S1>dTz;-%RXz{zW_NG4POWVdSfQ{H?gb&VPWmSuI@as@lXQ zCML+EVq_sv+K31qR)E!rHdbOZcI*#x`rpX1-FQZd2?w2J5+HD^d^xN_9WLUu;R1_>$Sl2l1j{i_PqRoxBKXmEfAv5RRCG~gHz zoRPqp)jl)`>4DtY_ee=+oD0vBlrtv1+}R|)Aj>WYFNl--dsEGJL13vB!x?g=A&fDlOONKn#&pyZ<<^Gt#Y5O9+B{||V8CFK!GIY^G7 ziird-fZ=XPfYkAzOvx!^1&5rvR8_9Zlqy%TZCti4x_G(NsHD}UoUD}Q&&1ywU=hnR zK_eK;d!w1V-89?ZEBgl|7bFMOFTBI&;bU#pwZ9KM5d*ckoOlTrnn@#e=0bxf_LKF$ zd-0Mi4MXYT*CGx?Tq%ZXXdY`yIWWVJf|?K(5DNrL%GP_mZs@nw-vBb}Rw0W;wB!)N z5TjzUSNZXIA7943^nXK*r#Dw9|Mtf&ksu-=h_`Yp9V;Dkh;8<4psUZVb-$?#qp%T! ziAdB1b$5t5hjOzR8iD$*)2$e71R6>Zt8%DEY$Sg2KWN&b4Cqr8h>8`6#((@8#L}XktLaTS zryU~vMx03nNxOB%uQY)H>VL7pz)zP2nhY%8WH@)-0RsdY-07d0c5ee-ah{%=QSM%u z*8so2)#K3GU!m!|?O$6+?&yD~(Fj>ZOxK05BApxGi zJr7YET6WG{j1#TYt(MkW%SPIA4dOUU&zsN+<{}nS6r*LQrr)v8tl?2R`* z6w<>(odO>Dg>%+<`=H~%Re+D2bI267Gb@WPo}vT*tKEȮck{9tEK*~BMoW% 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 literal 0 HcmV?d00001 diff --git a/docs/fonts/open-sans-v17-all-charsets-300italic.woff2 b/docs/fonts/open-sans-v17-all-charsets-300italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2f545448418cba6668a2e7d49e9616e8c69dfd15 GIT binary patch literal 40656 zcmV(R0t6rhgMJ6P4Ge-L zTiq{l2Wz+8KSCvL8xTy{L)*rM&j!=5aWG<-{hd)T-R_{=4x}+x_n^Z6|Nnn>Qjsy! z0BN_4F#$ZP;(y4k++D;?MDnnK$U$-{VT)368$|9Q6Q<6sHj^4EV(GVRa>t5IiR`hm z!=2tme@0wR@|fT;{E62@ZW%&yI3y-AL)?jCTi;0^<0MG?;IiraP}uHN8o1z%thkIE z;&td&iuMyVv6_8w6?2Hq-Ff=SRUNM`eXXn`LoVTKPU8sSAtbn2;0t=IrkJiLS;?h} zX0BVWcq@{9-@$?KzhPWi*LO!+#ePnfNq&RQ!!T zkC}Sw-Q)>B(AfQ-O6;7VPd7E{)HNVRUIxa-Nb5&L#kxNAh5sl2{{I_`b>0^dDH7CF z1g71YsW05SYaZoRRdsiQ%AP_qOgI=Z)}%?0j7et2fKgUFCz{g{+sA+Rb!PUyugWvi z^UdW0vY!k?@c^Y+Iwi-sktUe1)FG7S{vm_{A~}c2vhgn-G-19h!H6uPWm!auc;Zb{ zO36{YFnY6*W@v_`ES?ve(gW`l9mE0Hrf%j;(h95st55-p(So3$QevSPg^@jV+DmoA zSUPpONL{6F`@jC?B7gpJ83&YT!fD8Hc5AHvZr8?jxmE$7BeFmm$Oeu;p-^$=STa0v zcRD-SJP#T#gybiD`L7^a?Qa^$;V#(Zg5c$kff>6?6z-={qcM4 z0rC-Y;GA^k6Sl}I>s_W_c9;heB~F3t+}1*dT-#9s54pi@UcABZ4HGSi5I>*OdIyFS zW`-~@fIvtY?Q$!u{U;~J34|`hR{v_dskZF=Zlhnn&a2Yb8Bw<^FM0?C&Lg0Z-Tg`; z2*^gk#oB@UTuBISFr0Ct>fysmH3gg^U)7J{0L+zej(ma&ROV|2P$U)k&Y_Hux?&;a z&aF!qUGA(wJ@0dcQVF9L-Mnu^^y}In777H}PpWDEX5NH|3BVu_B*Ddotd+fT$g2w= zxsv4z$@X3KQ!c7gQT^-MtNP#6zdjy7x5p}mB@lxCs@bdDu*^41T^s`)gE9ehOVY;p zk=l;xR-OWPEow`02;ugqSwH`C)^p?5b3npmYb^&33JEcqF^Mxhy8`D&lYI>*uhp%k zT)~Xn+Q;V$fdUZN*R98zD&MC;bk=1LkfXV_h`sxNU#iyiHySNACDKbO>~JzUk(wy) zY~3l1H%&;V*~2ZS?)U%i-w~k!&oJ6Mxa{F{NT+yT|KI5=wRNQoE6#M+ z>4lPC6*^}l=Zk}QpdR5ryRABJEvS*kqm z{|#vW;wT_*K@Y>sI$;bgOMU-|ArU(RA!C-oCONgI-rC#xf8I9xevo#?VQ6Y-2q^@Y z8vSOg_dT2{Z|7s1{A0!{Fq;7;*i>A>9pUiD5Zn51$9!3sgjlf&#!46)>*Vwk$KF%2hQ0qqC1i#6TQ4vBX1VDltOX4`834oRWVf=m*>{`p8qp zHNXI_4^5vCwytd6wFh91$hJ#f1ppy%lr36_W`?`-FIr#c8z4{yrj54GkKJMPx*?z%iJnZ-Vbzmr^E*hZeu*7$HSkBDUnG9H7ITb&=0WOK14YQhv>IFX+6VlVLy7d8bd!V0hiO$90f8%$oS)dkSqC0;tWk!L=DC$G2Z z-`P4t=AgD%JWs-!D=^z7^dLr#gf3PS6kdV)_#P<(@Y@9<9osTBRgoo8;5n9|0Ywrx zh9WSuyV-YbQ&(k?$59ygo@E-krfThXOKxk6DuK}dmxsB19Dr2=s>oVelA*HWgiV@y zm4wGPlosHn#30L1M+XQ{X;GnNlvTbGRZgsH)+_2n7LVk0c6~#Yih<9L-@lHB25f@X zuI(g#leFAHwZPTOnpk)_80vo|@H zBw2ISkHIeA_kh6rOgW8_dxlAbQtmm}34c0S8v<>E8$#CLuw^Th!-f?e+P?XP7lUlF z(EFxox*WBjwU26hTJp;aPlhydl!)ltzjGsLX3(~c8?=&~m<`%3%UrlxI3y(^>Hh_+ z(&qmaLJi51gSinP8gR@iL8eG4E&MW%%GArg+PY1l=a0xg<@GL~Glc|OaJ_fg4MU{ zVU5~F#AgtTAWmrqQeC;^&84xSB^EOmEl92WnHI!+4OShzyql{4MSQmZ z#L0(i^2#Zv+bluV)|!$skWpL);$WGn?QK@xkV)*ax)VUDrncgoQ{p5m6Sf*MzQ96Tz}rLaijfJD`&uBT8|xv72er%B=}%W?MuXfa(+{ zDZ}it&C>X4;u2u1WEb3kyp6(nDVFl=Jh((TBi^u}8GQT>OwS@&h-vU*R$8GT9I)od z&N$=}Cgy&Ez;K;&fTqoI$_9q*WyfGj%E>@^kC6#MVHzu(&#`36`kTrg@jNp8rb#P zmbxV!ktg(BarSkrMN~q$v79Ikl3Bgp2RYKx3^}TjxahZ$Lb`C$X?$=6XywK>VHQ6C z1AtV2lVkCXp{$j2%2yc2>kfc=3CNb-na*-=%_2UVfhe7TmQIVyH8C2X$D1fES4J{T z`KQF~{DMx*J@X(3JM*VSRX#6O6)wll*lYTUcNRNZ~@a_ef%w*e&)EAGto@8g0?kd>Mhc5SF~?!y2;q!Q_i*J#}gd z70wC^7eJZeO4Jy(?{I*{>Os#FXP-E3>J?=lGI1lPYbWcyt9;eE^SKRi~;%0T)X*KrU3`8*sBwZPS zk4PzFQGEjQM4$yl0y&}RC%6JKcIVJIsD#u!q~+sZ(hWeyYsN=`B6Yz%2wPF03n-2ZSEZM&Li9oz+4@{#KpaF25be)AO?yCS5CSV zQ3ZjD>1qbtXjGlyG8wNE!0?NC?+n&Q8%X3zw&1BwoqtjmTD zn*d#nDU;E65xW_-0}EExeQ=a0(6?h~6at}kUG|GKAS0zxw+NxK16>$&RM4qggq#Ht zT?N{yQC1|OC62|C@r&*9?-sHHi$((IJ8`&DoZl`5z!Yr=CGn>L=0C(_veA+RFv8wB zP!SDb1(wJN1W`kO9{kuxSD14oLUI6Zq!01V5DOvG%qmrDs^lA0f8kqR7|DZofQ_}W zG@5a}6dfUGP`D~8t+sJo@Lz=*jiL_~oqP-Ot{x^;d%-djmF%lV;@ zuj_+64JNB;Zild+E)L^}8|+w6tL9Y0cFT!PFdzgRJ5?NPOLRVmuZu7y-gtl9U%fU8 zrlz~3i@%!Axzm5edjLdqC`fP$*_Yti?i_T@Df!_PlJZ0h!oJRakji-m%*<(QZi|4x5T{vQ7R z4+DDj*rmS9=`n3?Xy!NVG?%u?u@(hQqCSewJyK0Q)rMb0qvS?)UeZsDn|7N-%v9Ii zt@0IrXx*CGc|Xr<8cqq1FX#-HsjOXR*3Y>wlyMx0hM|LAFoc;VP4PEy7c92 ze~uW5Vzk&B*&|U~AHR-kSo0Tgl2Nv|Ee9YNcL{qb05TOqWYKN30+X!({bgjCAPVvwX`G-QYK*#dj$WiT)x z_AHLsu-3;ooq#HF!oZEIaUsDgwT1p_m)JW8>wGeE;FOgE$^Ke=Db(*SBwc$0VxE8ccWtDKmGE4%zvo-{U<$x{XG(k8>Fpo;I zty)^7jY+j?VjfDF9g1b*Cu&eioKt;V zjc%q-RKY|(DGR}G&wxtz(gGj=Y3Ee-K(r#=f7x@?m~SP<{%Cm(l`1jfM3lp2)FM)p z{McaEf;fwm50bu>`MIIBQw7?s2=^zz$=9}z4vdmkPa1=a_-3_ef7tfKmRETm-~bma z&wyY86V=>%6dGdLrum9R!A!AN-DVgkNl zwc|_UzeDyKXG4>PiUoe`01(cfA?Unr6K-rXu$LtKQ~GGY&&JhT*iixY{KbZuL`V>8 z>?XQzE9+GhH~nzk?*?02LGlVXzW6cdc>uF)JapO-ltDfS`k)*nF&1LRU)_QFp@aN$ zI=bUnI=tD&#w^Skv|}FylQ51>d@hl?Wi4<+H9Ns(%8EO9T(J|vaFggOEJ8|vp7owi zXs(tFw8d+**hP2>e!TRC=xL|Z#l{Zoc_e-2X>9|CE+!lXy+UTVrN;uKUXLoa5lO<4 zl;i;8h7Z>FS}BhIAW{vrY-eIGv)N3;1E;mB%Z;6{-E2T>0xM0NnFU$2lu`hype_qt`QAPhC1yB9p-t#Ezy0uM!vOj+gy@py#a|($FlEyy+inkx zK~c2g-nDM4#`$XUGVWgGS=~a{aL)A$=CtqjFhw*NqRuWdus2s{LF$4{9Bt3RGbPwl16@v<$U? zwSX=fSYfJzvWv`QO)AI8Dnk-d_M8LUZfMe~`c6@ni!;tC1GWknnx+Q6;^AXJkD{SY zxC&@*{jL%Q776W&oY59_mywJvE(+NBX!O5bZ*bRVFVi`flKFAN_0RNeRQ;M}^~%al z>wd=DJ82j|56AC97JP=;x!ggOBXb7C0p0bf6+vj0IA_hWTTsHQWItEXEY0%FG)O+618bS#yy>Yp! z;Vjm@gjerldo+?_t&>c9w7U!f6C38I0O7wiwAebeWv&VUhOwm4$NIU)_u_ z&Yb#GUC*2J5`2VZtr;oD5Owo=e+<8sKfBJ7lYm0Nz7oq!OIOUl8!M%#;%zTH#h0wo zQA=RlVz@f`uF}BJP^~fk0S_U8YKv3CpzPa$!tmQl1ooiPAWXSJ5b|RYdCLr8-JSGp z5_WwK?qIElRaL|!iTX6DY7K<962J%muey9E?qld~W8CW%90#ZBKGAWC5I-gjWxmy5 zpAaj8NBE+ukaR^D_!aPc67K|ZOxB&HDh7;z=k45|F4q~V5QnS|T$I2B{Y{Z$tb5Gcn#)tC8<8PCPX@NB_8|Dw3^MLi2`eGcL>MGakQS3JArg4dx; zgqD-A1k#7r-`#5*GjCPGQKvkA6|&z1ghBlXxBkbdLEeyT<7H5PrOx4?in{W^A=lBd z+@l14t70b3WH_NIrUPnfV0d5T&}b6$^B71uo9O_z=h!j%-t0Wvw3>79<9`5M$oiHj z_~938kASATY49O<8Yu%D7`KCn-Es60K>vb*S)^`yFO#k5v7GA2vyUt)?`u&BBN?@@ z=~saUySHM(c(U9 zQ#Rb+@_dEESp%?5eeuD<==3*cFk=wdmmLCe${w(5wx@lNVGRngOa?5Qs07Nata#wK zEVy~#YD6u9!KRg&8zJmrukH}26kYqWO++JDyLOiEi3cMk{QZ)E5MMoiryDtJ{o5@k zfk+J->QJkg@2j*h9+$9XXk9YV8IadOA3s6X=iNi{fBW>85-yC@8RRqP87+PDO;F2b z<&j=>BGF!KsVnfdof%x63H6TwgcwE4m<<{}cyjEalFa!wm35RY8z=`&`US|X_<(v! zLCJ3-JCxnHCWJ4zmm`XHcio*66jA__)%|E%Mhr2DKydQzS>&oVDn86uyaslh4t^zD z+H*J?Vc5p`S(pnUng?h#NhqVEFT5u|wY~fn_$I=MF}PlKIa66ys>VgjCH;Av;`mKd zZxrzWc$Ab6!HShcoalV8V+hKq4jm~ER#TofQ?;H6TU%K{wotvUG%h~wQ1AIcnQhL| zfC~#RnB0)!a1-4|bE#)$6|Ohco`?3e+FQc1Vu&KAq1s1A@dLZ(eY--)C)!&egVjSf zg2!X(C)N|0Au=o$L?-=ywG=rdre!ivLdGgIv8NbiKmIRu(QCy{@;=zN2I8I{P~?Ia z=ozE;DGxUS`HVpbA%b|#7)Bk&P*7-4*{&@$7+?#nv&@zojyrRKmYg-vYUx2(s-zWo zjaLFv&*I3v5W~cO^)5h`>Kl)a9MBX+S8@4n(N#-4AErx zN&ABKJP{cfxz4m&9{S)c7LR*<-dNVIi^i|jkq9bzSOt_Y)VffiiU>)Qt?{+&yey?Y zmU(awnIgjK#9QqhHau~Pde8dyD6@Ub(UlcFEOpV5KiPM4)a4sb4E+PjN)AS~lo4c7 zcPYdG)k?$i-O#2V*n}f_QXsnoG`g(J3QU>7HIl9CxI3D8GKx;R$(BQ1DIVo*qSDL|odoL4s$~%)KAj2-#mAvtDTOyVI>q+@q2P`~lZ_RnxVEII^P7oY zdRI~foC)Cw^H?^7W8mb3rehHb^W6!7gAaW>5CecA&^%Kpi)s^mWq~u>QwkW1=|e;R z0)gC9#aVs?_peZ6;h^>OQ(ap(vE{ZU%~T;vijEo@(F8?^#)Nz{!O!O<7_&v`4CT{= z|A}kCmY{3{%n5KuU`rg2a0@6ggsU^XIZZsUY#j1gZ;15cQR(wA6B>~K!y;3AQQPMR z^+FE~8T}4mLMu39yjbV!a3Z4#$XHTQlBzKSa9ivcQSX}|gcKCc3JOKT&PZ7U&@!uU z3|4s~V9Z&vSlH_}+_7z}G4yeh9h;sYQ_AC4(`G|A`d(lvORR1Ou5TG8EqpkO9-6;9 zP*e+NXP`AVGb>_7YLP(}%Dn2YL^`M32vp?vb5 zf8T7#*0_pE_9?+tj=v*sYcTazE{bdKANOS$1wa<;Hp%l5EqgxhSm6V7IdDd_ZLEmI z0)OX#97g=ue+_S7-jZbih_XgN#U(T_*&Y>+l$B+y5M0`pKnb_h<7QdO{h)!s#hTL4 zy*y^5fys^!`fRRjG;y4VkD)&kGe)c4Rxza(**kRy)+DNO56 z;-`ApTwJ&4!4Bfy=yv`4{rCgN&vGSxmQOS8>V}+TEet_ws|*T?Uu;hvKA{Ix;GoDm zW$w#kEP;{it=nBu{xNNVi2G=h%i z`WxbAU$13p>G`lwAIXjr-t)NO1MBGuH+I^&Q>NP<9aPU4=gl-gG)e=V)@&`>KqwKp zLd-h@WsuOoh&R-%GC=RJrwR>hOz*ed5E)t&z#-U|k4@fb1XFfn1&DA*3366Qa6}2= zeS-}V+($~$tT%!t%ga4Upqf_bZGgCy#Ae|PvRZTcT7%a~iKgi88jv}KgoZue zXMaJcE(SnYj6J%fH9CM>S=Z1!)OGoq?Pl4suB2L}kG$Cm-Y8C8{W$jI4UqXIT4J~> z#gFS#3Ue687|m|Dn)-LL=A=I993WJ~j3HcKE~P8|sgcjL(hv=w=gVU8dluBUoWR-S{1{pL^sU zX5a5Ezp(dX_kLh16FQnFZS*3=8ee`?wZ`(;q{pE*F~P!3V0bG2M84T#xG(pKMfkvy za1p=w8-D9Q^CJ{$+Lt`v&e$t42bqf;oa_MY`^*Nl931e^DfQ0ie*{scOYcWvu8MFg z3Z5!_>T`>nFi$e!vFEwd#q77K?nK}LZ$i7;0e3G}(7)x@5Q2QO>dostnHgul;%<$N zHJb9hVCvkOKpb@a^wNrk>``_9p>@j>_8tsOdc+?DxvmQM7jlGr5=~u>=z3NPH}X7( zP(u}|-GRG1{;9f{|3+^93EB7EV7q*AEw1oQVXw7UOjNp#NfxM(zS!IA+*eYzckIJv zBloV~;s0kclE?KqyniEcbh@3jv`!q53kHXj>Frohyj`9m1#aG=oZ zLglPH6p;*^86KdE-O8o})DL-(MgzrM<GZ21$SNgpepPdUQeHRVMNh`Ya@}!Izmha2Dqa z(tW{&ab4#itdMRD5~~s?5r>~W$x7hvfg*l`WDO#g^Oy912d$*ti_S9mo0G&ZrnQiw z8EV4p72ikM^08-R5}CxNb0iOI&DdMgsr9Y>6?|_|mj>#}dqY>7-b(|8pDau*lF?H} z!x;hggWpfM=x=91lD7m!y$Re26SDH~u>HFs-s-;2M8{@eJ$O;D`ruoK2*w!y+g}wA zSd~Hg?abjBHX$GRN^y9ROx6#IuFMd8lxR0aJ5H{4!>%XQZ9Nn`#g$9gVnu4K201hi-CB}}&7$7U=dt-05$U)2Vr%nAgf z9~oh6W?Ep=o0o=;L{U(nm3=opF@04n>Kpt*;Q&u6Jq?2bg3&_$+7x;nYA-`!goB0Q zzPeW@9ASUp*@xG%f#QkqZsT@(gPZR}dm%=akr>k2pMm*QnkjI+W2JjgD7uU~we*R( z#nM*Pm~eeesg2GeBuj-jT-pxn4zkYiM>7+Cg2|xSZj*)-aGn5?sazi&_4ua#xo8hC z6mXnNX90=4ErvuDShSO6t(BJQa|Tj)Ss!z<^3{I%jF5g(T#Gm1)dqYoG(r87;z%?; z)fYkfaejot$M9q$v_T;a>5Uz>+vBInfkKrlH8}*`2Y>XXSSgh!9A)nXIv0&s^<|)l z`*t56!qW|~D|etb=$*p4O8cn$94HgvvF~LI-zDZ8&th!&p}uK~H|VxNNovb4h-VOY zuSEYrVpn7*T!9kIP=-o^rDP+;f0q;pa$e?uzGnLt0DmuLNn_#^ffwa79{+ua-w4GIH=y6r^lo%&JZom zw8<3uz;HsZW`)FExt`H@1iK=*UT%Ly`rfGcL~A&uT%o=`4Ij+o+WJJ8N&=lF@c}y$ z#bxpluKj`DWKmW}+n~VyKu<#+ZS1N6g7g zCb8|fynOtC?y;s+lZrvz2prDayE4y=Up;QuY3MM}%xiArxA7;li4XezHq$6#K${>4 z!I$PjwIUQqJ3z(-HHH$&rOf{*Y=u^KJT7sBN|GFQB#J15B+7n+RE~?%~J&=nWy@GZ5{hJp3UmXq-#`3 zDk}1UPKVvj>!0h`-If|XJo=nK6(Ap^jmXH>Ci=UU;Tth z#?+iP```|8St7Jl%vEh1o)UYj&q*M9PV&JD$&FAs7@fDEd7=)b-ZL4gV=)){u% z(9F7|FYEiG+Li++-=?>VCep*N7POT26_J{Kl9Q}6Q%9PP+kQr@(*CGNg@c9g<3Z|n z&@02ICYx%;&#q&Oaar@}>1lJfW4mW=&JPW&-+zeX28Ipr2DUa3@9zbjK3Q7TQ`azY z>3BnI?j-10$;5C@1i3OT_>A|V;XGkofw8}ng5gDZ)TdXefzWW8ZruH@A%)sATl*Jo z%=Tvfd{o$9ajl@aVj!Q==9?(A&d3<6pS1;`9=Y3F`v`{tMtjJBP9p{-*L*WPA`2&)P z=EBljBblLIk&zCOkf>q1n*1|npbH#rjkb&{4WCUmTp3B>h=dFo=jc9uxTv(bxG(?r zi-s0)u_ML9tdG_TWH@3`-(q)DxZ2SzPnNJ+0fZf^V%jU{08a%C8v>bx7(2a zXAZyHeM-A&pXRtviX?--S;i#tg8BQVZANj1e(HV>WCbbs3`hP+lydvYI3m{!rvFiX z;4!*f?Y*AXswDUH`gni$?3rO5nLPc15%CqxH$N@_9j(=`-Wux9>J@has%t7TX&3Gu zo@}12U$FIp3Rj)3A8Y*h?BU02b;Aykz3{QO+r?-kq4e>*_8Bz&b$<#-VUCkJ0eJF2`u z%YnPy)s#^^(O{~iQF-%UEnAu)Mn*xs4e?cJBP$Bbmkx8n2=qPjs22te>hfh_2abu zI^H$;X0}bluj}_tFDeIbSh#*{Eht&p;`Y)fjA$0Z{SgZ%Zy#*&HlhV!lKili?bysC znVA_g8=O+^5R7JJ!16PnvLy_k9jOwq%gg+_@tJ&&T*D+DLHbcJ>k5c9uO8+sQT}wp zT?P8zoB3vnc81chNT3WZ1=FLPY0FQ~+CD1(;S5=CaYzcPG+wdEK2cBDOXmC?ee-)eL5?^B+qWLaH>zAb}EBQng>MiPK=nTDzx?L0tp zKQzLB^VctRRu(AC|CZF0FG5XeRQxyuVuU~gFd?d-42hblgsjGwC@LS9OlfrdI0y{C z``rfPW-?n70YKHnskB-epe$8HFmoW)9B99N&mUYk55qvyY>P4uDO!9c{$qDv&f@}6 zH55s<0m@P8uXI*uWv;gKf1HzpC^C-b)?Ew!8Afo-;|J}{TN^G6*x$u%F#n{M(ww0Y zFXwWd2+4#*m89v5<(R!2E%{nmmpa+s&&W9`Mofzv?qGfsiVIs}F0~siL=AVbpFt~dreX1!_!53!M#-;)$%TwT zs74Q({>1i64eXy6Wsl7?lUH{$@JDEYxFf;Zf6@6&n452c4=vqaIbM(bw%n0gnG<(B z;FP~ngv)5_!P>IMpvYRZloP4+=}W{}gsduxMl&mU4JU^a?CBA4x@Bs-hAS%mmsMZ` zu<`w!Ex}BEO#)5ZD>^k^I}bMeO^x_XZDq`Gu)f6{y@CYb|5xmVC3^@H&n-q}BkvLn z!w8m^?@035iVXdKMa5H}A|@AaHkQ6|V&g1Hxu@{~#`qd~a{R){I1vU1v8Af=huDpm zw%SUldEvcE1FC&C)ir=mj-vFmczS7YP&YF+IhD_(~;3m>aNy)X6`}m)_%r%FI7ih z`@onl{K?E1t$e`9+i1YbSJ+5HgXUL%t>=ik%EM@O{=H3$xOjQH%O?n_(U37nv?5m- zW2G|{33&;LR9tHr(#$iJ^u(X2DEG$W_x67P**{H`HTALSgYhVs-5=THq1^D>UnRwb*`XbhMO)~x zmAhwF8)#o=_s^fcfB8%^E?Q(8HE*>q!(@b}UAWSdZgZ@sc~s-0TI+lf<-p1$E>zAs zGra41eO_hr%)-l!Q9mxot|*2bN^iRtC`HU~pG$CIJl|)`+|1$_QP`HInJDLSt)s8Y zzJ=7fbeR`AxZlspnJ6-6^Xl%Q{{)v5v?hesp&(dAql~@{Rm7=b85WRd$b4JwUrO=(4LmKRjmKCJ^$TtV^^ z9&3%r(d8UcadqtvV@%7CssWydRGwJL8AS+Jx$POd&`74#25WbpoL4!0fBFOtIib?h zA(zK{jhu)!SV3wnJg<75bKCB-8t>|r^efqCpt~$MQ2Ap>9?94tQktz~726;iks+{Y zR}3uR@e4dD=oMywwm-3)lmEg5t$p&IY9PFH!~j5U1(NNDyTT2}QBrFRHH_;|Aj5QE z4T38uW@{wUtMn>5vupJLRO&9Oi4zsLH<+YXF3yet%AkNDyg(<7WV@#qti3~A`7}$D z3N4xfKW7^qYey-9S>8n-bz_HT^4?HKj&j zDmG2PI^Cq#0HpI+mc`=MoUQE5%;5NH zRlp|{6cWb7YG!v+1_yIUpAmFH_>rp5crvlnlCP!&f-e$7x3{0~0SKO`diAS!)0-(85V)3Xx9+>|X+KjVsPsC%{?EXKd8ItZF46IE46WQh__9g_!!`B!x4CH^1e z5g6(oS@C$V(M)@Iq{xe~S@h-ikk-w_CU?U1qL*KvekQ&sna{i?V;*qlzKF$VG7hdL z^^6hmIT(XCRoOQM6R~{JMq__2a@yAY?rymil zs7A2ZRh1FmMDpB=MMZJ2^$Cp9V1cs}!!f%a?O$4tl04VE1_z5T1**-hz>!cc^p(>BDH~+A+j|=zw>jLIBpYMt>NIe zIZt&)DZc$kj%I`c-_l#!w)}D6MX4%z*56bA9ps?%$nc10FE-m z7R&IYcL2d>XrBkMI-`S5>PAFqD-L zm4*{TGu+S@-+bfgyQK%k0}T0Vaao1wX@u3*RDPW1*QLYpgii&fMJJ1TWkwdZ8uo>EU!Ng9}yl5T+qQ-_hM$W&-^ z?>60OkR$eZ2pfm{AW^-|)AVDOBB~f1m75oAs~}`fvzx(K3_3VyZxG5Ki^F1h%if^i z06^_8Nhbun`JXZsLwCxOYbO1W%?CtnzvNFGMQ>eyP?lXbj&W*|oO5}gB&>Ll+4nHQ zeSe(Q0b|Dzg?Q1!S5(-cZpTo$c<$nq>{?%y-NLgepgy6$B7VUy1Q1xqYoXhoTkCh{ z5&HvAOFh4O862`oMI3hl6xdeH`eSj&f@nTR{g2cl?8G!GE{Q(&)$|TE8!)l^2+zTX!^y&m9hd*F z^I^EC7ydz&)v)#_2sAw3AdvYyI8eLF6<$Z_SV(=DqK>$OWXj9mze(D`)XpaXKS^gZ zS5)|N2=W%6iCd2MW#U5UZ4gSc)f$)X-~C`p4`BNn1fLS4@NfV!Wbizgv8tLLzQxQybe+-x6cLi@C*f`S6%-MylM0(#9*4Mj%#x|rvlrhzw461iq+H90o+{@6h|O zIe}>e;P#$~RzgZ%F|5yE_ni5{j~vd|Do`5cz}>jgY&aP= zjdkJO6g4R2`WUNX^;6kOQ~u0x?BhEnLda3q@=S2Lu8#f**ijU!5+v#?qvbDl?)|OB zKZR5-R2!7~7Hl;%;^hPN*Pm(AtHzW*?I@0ku7xt>d-3JFhp&Lh^i?R6E`9O>v4oIO z4WLszugf+{Tw`>mQw;qs$adNbB!zTdkLkFMvhW$-kHHYr#Rx#64jS_vNcv&-9LfoF z_rm%?*$b+U2f{d_j3|O;qRrj?Uh`;*9_EwA;d8GMAn?Its z@+J-~pLKfL+qC@(whDC)&q!vl;$juj`psa_9_2+NiD&BXs|L%y?!G85mjINzr>~!v z8`|$k82GiX(QpsAGD|ZE9{X|k+`fmvc!syc)~0e?^iZxd^9p>WiJBGB+495{Bu+)cN(Y|3f>bn_xj&0I27wK(>_8!_`CEHc?Z7qjnw6wY74 z_7>f##@Nx{Dbd)uAJuS)VA`{f&}M;qXOuEPy~z?6KX-`y7r%1$EE9zoKfYhw zeKWI8&q*^osH1;t_5X%j2eTYsNSMky628LhJ>4s^wE*CTeJYTZhTOIUv8+wdKOn43 zAj{002a=`jfS@!fUi8mGG*rV<8i-;wN)U(zT9GCcaf>>n3&AXVI2is| z8#euu&G{BFXT(+4f_5VR?@cSXnL+RTk*+kx?7rk!K%Rcp*@mjrTbr4Um<%1Z4cfui z+}Ao1dY+8<=h3w>YIG%$)}>pcOzFb79`U11UATA%AMdP2^4xfIdOowP*yZ8t80{;A z)=FgvUQ8}Xq_r)B?%+&ERq>3|K}UT-=8mT?_ly_M^>+*%Otr-g#Mj2AC(-R;L_ZuO zB$mdnaT<(nEBWh?mSZ<>9a(Ssk~N(kb)`6sI2TO-pg#OrZtWknN>oajm@dnY%8N}W zFT&AgEEMdxZFK)kYf0JgR5L^-P%|u%RC8tI(Eb8HGpbDu%%{9QDJCL6DxKzO~hFFut+(G|BG;dEV6kMXVr8cDChcaL^j>r7a&i9g=C5I)!O8?=}A~CLod7#fe)f8MA^Mlos_AD%eNsp z7!U1dz_klwhElvb4vLNd{kX|fMa-%OjmYy$j*10wmGy`ms|YXKP;YN+CB`dzu(SyN zBtSdQCd-RRgs0PvynB1gOeO=GQ<+e)er3)sRX$7zB8NlBMx`q84I})Flj*Z~XBR_n z>o?>B-a%9<5(x?Ky1Ai3dB+j|LVoMaj0?TG1ug295No-F(6p5{@Q%f=<4U1IUIzI4s8Nc%i~ zScYw-BU3;rZYs$M@ug>Zc!vbVTO3B#txhes2mYKGEEQVmAUQdX@{A8>Z|&S)?KW3$ zKX(O4`~bt)Tvdns0vpMm9A59vI#kN~eS%_gMGvQY7v&wUMUzW{SaB1C0gLR*S_s>d(<4i_k|BK;2)~(w^vnwmC%zODt=9_>5xu|{`eEt2} ziEi{{|NFMeDxG6f`^2VUs6^>(M1HlG@MKESd%ds&`+lWjk8qawN?jLc8g%<8>4 zx#!z~VjEMH&mqWQD@(jeoXhglz69em2wF*ri^O@_3(08DX{{G-x4)mvGTn0V{Y#*V z6UJsDAjQ>R+1@h-qPiJCDAWTeJpGGQw%xGWexktNisWz20v4_wiPo#+>>esML zwe>P!Wzl|qh9q!F?Wx0OD|0KSV(OMF1amd4dL}Ke64o1tjrMZ_G8{uG41E8&bc;3p z4(1*8HO`%^m`gJibTJD+VNSyo6%`Z|6z{8eVpKRc(W-Vid0E=+YK$`&VJ5fKRuQEd z1A@{W!7MV6bt3LPVtjvBB~~>^qsUVvCj^0kXybp>fY2f4EYxxeYy) z-4_;OzP@~3i;!k<&u%=?`1ms(1f{2$SCuYL{!CeKWb$1;L|=2qCx&s(OI*64-ZeG< zoLHO5qgQ0Uzw&Typ`xv@!zO8Ite%dmBY$7eh#Jdly;{6*ERR;1{^9bY)3-)hOJSE~ zA4RN_j!MfER4(T*_L^BLlliO03JO}Q5*`Rj`y!sm7%){bf#vdW+&L{D#Er+$|9>Tb z`H~3;3z=#2N;VLNxj!V$FusxOr8ok2jmYK4E)k}$lIFXw>42Q+N-{s1XV7h(07^i$ zztanV?H?vZU&l}7_n&DwBj{Y3U8=jhIsG*E(9`axG5yaMpV#YqA8Q^we)Wi@OtE_P z;kuHF%kN@FH>U9!lDG$#A1sa=WJrKfGo>30L0?>Id2ZgsflO!YsiM21^TW1UtCAR{ z;Uqlcr|)r@BrsLN%W^B?!*cybb@(6!K(W=`j=OhGSGwB>hdYf9Esr#8cIbO>MdyI2 z5xaGTyfp)u7h8lCR=i7`4{nb&&zjGAp!Y_4?=*i$Q6}zx zy!v8Ga-@8?yX~?Wd-_AgxksQnTc#e?KSWW9`WoRTwkWe(F?9J?cKY6fjwsKt=0U$k-8Oduu z9a?to()O)|W-pmpMC`7h$-%=tO@p}!i>e~f*w_Ef);`?2TP&t0$JnZ-%Vk?~q4YhL zRrTqK$z8pt(Veb&IFBe)n2?z;G8`1{r!{Jo*fLm^PY%dy=5>3vdI(VtI7ciyB*J6V zEY#50xAfX^e)&P22epN*gKLN9TdAK;w%+r*F6W6=Y}(c0oM#qbM)GbnN1vNFH{Cul zv^&DX3bW^Y`ugEi{XTPB=jY-3b=s<)T`DNWHGv{Z0#X(`MY;pi8B_Vr3-mxG1b)~~ z0X>$uD>`x4KD~k34_C@cuxEe~DS_!H`h}YP3>_{laQe$696#cK91(0sc@qRJgPF;A z0gLV}G77e}AdnHY#Sz);RPoHHmHAutEKd4)2#3{{g5au zb0OqDFZcfn)Kn!((4hs4TrWx6ov+ zIyNh%*o?H=ri|2`s8Up>G&k(NQIaE@BGYiYv_Q3QwE1|QoGtcnJ7Qd)l;K}cfj=Wu zBa=JBCq()yJCpGsIg03NN@_V4@tie+${^9+%3-=8bQ*j3x2pZWAO=Tu1Q~XILs4~BMhKMeu4Lf5f@~So%rj+T8Thyp6~%#9=zcWjlzmff@cHwk)KXh;{`E?+ zn5ypyM`LTcV?(L9zE4ow&ASX(fUa&L9zuOT5wYg##*66^jQa|=oW$m&gV~{)`yVf# z9X{CK&CzS;-Nb{5(+yVmY6x9311C;NEo<0cEfy4VY~9~&iuPrHQsY_5Wa;;08uJ<* zs%h28!iq&);{!-+5!+H5+wfUqqEi++bMofu^#<~jI$l9&hjhCnX1uS4 z04&Po#YMG`lj25H%a9zw)8on|Z50{I&BhUgpW5+m<S+|DxV_&FkYNsB08uiTd{!#Z6Q@8~a<<^M%Tm*W z{o)D$<~e)xj!T@aV%uaWq7a3T^qsdZ=FuH{sA<6{VFB1QO#yX@!yj?>Ucj@EFi%SfsV+hyQ19MA+4BOf(sc=ZMQ64m>bC=ELk zzps=y2^w1K$0DxLUwHc?QlwXWkxkvCxzFFFax5~E1J#?}Vf9+#kYBnhY&5=E0zM{3yv zM_MSOV@#*gQ#-V}3Z+sYXM@VdpgMXSA5p4wl^Rq{%zMEs#{z;0m}Tmr?F?Z#`@jWA z_yUAwPa!s2t@Iqo?&UrZsb8H7e_Vql&K0THIAPQdjySDGT7th^GXI|Z~mL4Sl5b1w%iF%B;zhjV}-B2fO4Gnf$xrNs$#KqLB_%{Ng ze!IH-J-l~>i-sRa&n`enm-W~RnTuf3#HZ;OSU4!->Sl?G0a*pvxuk;vdG~?DPn zk%LYC?avaIW{PkNO|k5Z+_J1B(qfa~(VntKiw zHkOZ!=n1S?kkB}t2-6=;c^zr##a(qLS9MQPZ7afZl{cAj#JIpa z@R1e|tu~dx_0eFeBv-o}05kj zLK2G))bkjepu~csh=<#>(tCJC{DZKPhtYD<>s{m<`43r-S@}0;4boTTo-+-5Vf`Ok z%4GTvRR8%@+urqmeZ}rkPoB&uhFmI%B^Cu*uzT+2w$wml`jPZQIq4b@B_$;#|BZv- z_Ib5WM|%#f9i6IodePtXBy>|cR=V^3pnC~yjnmqq=YICGib=rQKsGEHG0O%Uy+#;NFai=%{6{KSnv^_?k&-`0O5x8T z)ZYP?r57zqqcFh8Vsn(YMeB)sk%rjDQ%Z@gk_2qkm(YKx{8hKLA|cu`iV;omzBxWw zjfs(kqem+$$Bq<4CQ^E`pSUS5yqtL_ikO<<63-<58x=&lATydBn=u_0m%(PoWrT&K zvc1wh)6zIr>geWDQ+RLq0~>a9W#6Ck4X0ZCIpK)lMMGtlzC*fCPGo#i0V>syZkFT5 zPD;&V3zKuRIs>NS^j&+f`;`fz{Eu|Zu7@>NSQD|VD>u83SyQCn7N?^08mC-d>r7UJC2xyOjc$C-)jV-O$Uef%4sYO%eet|X0ZwoJ|g zqC*4tue8_2H-`u`Lcj7BtUE_TD(Y^v!xaxq>clK3#`%>sH`nbI;A3*dV}fQ>-}uj7 z(YEdIVXpmDpU4-z8L$2e#+TNRch{$tax^T#_NDM`a`0#SN(lD5FD(yUe#gtyxM663 zpRXTes#O*(%1g_rKReT1K!&sUe#z<8?4KaQFaL8FS20(!U_d<4MrNL_M_E(^G=;G9#UZNbE1+91rfOZ zdL~Pl-dZz}qkng(7FVQRY8jDHFAB!cQGP=7nc#kHG9kuR7JV9SpL}+S`E)564i_$o zlgDniP)&$>u_^=zy?2czt0vpX zgd_u!vyy?y)Y2O`G$&atIr({4J0}1T++5LHSSbDm+1ygmQ&>>hUDvW&S-HAWS@|^j zpfK5=g0Mx+$sDvtxsej-k=Mj*e>;RBtk2$at0x2zVj2?8l66{$8P}rGTJjsBVmXb- zmk^KTDUanzkKsw5qd)B(tbKjqF{Ge;dgWsGC}F`hz>+jQKnO?Pvv-Dv1Uget9?2n| z+8|^=V1R#6kdJR*5Gn{AsH5Pqm8Lq89((A=%^Yz_b5ps%y%x0}~%=Bi??b-hjDq~<&Q3OmO-Cr{Qfbs(0W)>+dus6opfH4Dyb!zPs$zj>eh4j zy`6ML6rEb+^|q|=-G7y7^?Wxkz3Q9VVG9PHv9aCnSMkh4JjVZo(yIWMR34iroDJ&3$HC@wp#$fb_bU>i)EIF+b*6RUcJO2c7%!ovG z0IRKmp=qn2km$!uOJGMQ#xYrmanbBFA)W4yM!CA6QSKf-{$8$Ve_e~V^4Ly~wn`(< z(7uC3TEC-c<+W)rFf(Ze0$I6hXbdp3T2SG-zIQd=Pw-3RTL>yaqPS_Nou6!*Y$Z=Z z;{BwlMO)}4b`=d4T?R^yU2=TC%`%~h1ZwXmOv9WdHaB^?nYHSbanrDYlSg|@8%Eiu z6VR1+y(j87#pq|6v{3THWvo{IrR%wcVIJOaS`3PCcQ!*=AmLg8 z_naO990uQ0Oz_Pcegt3W$uzucL&-!{5>A{-=$CjssI3z)T=boIVLH)*MIu{j6W@fe?A+a29j z$m+wgvNp$n(3U~!0*N||p`3IuCoI4CIQ<6h%`G+Jmg6g)>=qbT6O&!DX|N_|VYev0 z@D1G|KzR(v8e=P@7$zP&)NYDa4XcA=@~Z7G+_H5UU4S98l8^|GB1jCfIV4q6v?uhx z|2)-j{8vwYJsx@1ApnuRn`4ukLgyU`My*^DowqrG#cfgcg|)Hz1+eSJmv+;Qt;&!} zD@YFMcXi_L$kgBYPQSSp=|Vc}z{ajW#*T1#meIG!9<6HPt@}*JW}mltR!|k7mSN(H zZHJAzMC4qJx!bnLl^FcDMe?9k+mMlQ9|EjCnEQjm#{0|PQbR&UtEXT$SOduT0jBQJ zNt7!J@vYv|qklP0|F(RVV`3a45-|FfGw>G7$+Tf6dKEm~v@%BTXvn}h7n0m!<@|_Mi)u&_j7_MKKDK159`J;X1ge*NXWqyE3ezGOa|rQ_aG|Y>10tyu1ogK79Gh z-)ty8ku25ocbq@MWhwsx`!t)o^2H=Of6AYbbi>Eh!&>s~SyQxP&aGsDGo5@mO_^4a zBULIo8GhLdVcgP>b4N^%8NsJHmAT@mQGdK6J&nRVXMB=n@3X2@p^@H!A!SGwD$w7| z7=a!AI}RZ!U&8(R4~rc0Sp* zIlDk{=xH8xT5r*(ozdWGdge!_rMO_N&xfvCGXJSx>u8Yvoziea;jA19`bUN5MPRT!Jq)y$hN!QOnI z7_xqMPVE@q*z91#VT(EK>-))2@}Sb!Yi$KLR~mMzEv6k|W<66qfd8)6m)#ccqMgQC zt+X0jWMvx{to1D9p*9!mfa-x5n0ZFIe(~n`OrG1*rDipCfB$Wmdb&vU$QU2exo6Zv z>>C0M5`jm@*?RjDuw6JbWmn z`~K0b{!w(L_fiM7!TBSm24TF0S0e$j8RqX=@!Ix2M6V7mlvTuyg7eiQ%tMSw0BfVp zkYo`J*gu(~4m}-y=aq)R5o5>9e5b*nl0%)vsYlX63#fZZc2=ZBH;w}SZgpZO%42PGyL8%lHmB!H_>C)~O>p3ZCX zqU>XC9t*<);6@#@^yRcbwJxW*VKwi52PSPPbILb_rw%LYre7kYE9<9U#PJ^)o8fTm zE;EPot)p=%!zwyymk4Rf`f%#KX(~3u48-}MV}5jZ=akExJkJ>Zy+;aPV84r(yAY}S z5<|xt7g0If&8Md>JX%}opnN|xbX(z%*3xS|sd_U#t%r5t!@8qpe!9c6Zh;oZJhVrX zb%$TJXb+p9bcc^SVN4_*`ok7}TEm(~=s&VlG7P0>)8cU=q{kYT0t?HQQPwdacOcQs=p!*rZ9v`CFH|2oO*RUrrcuhQ3acPw$;>j^(zNji(N*OvgR=`Z<%SL>H z?p;LV)qVHMFnGnOnK!`q6$O4!ua&Ut74}4iIRUGe zUMY(e=j+9VLC*A%yGyCpxI;>%(atjV$MLU3;GK{d?yD%T5(+G)EsIDDxpgG(MdbET|aeVtn@GQ4KX-^L|L=eyi2kV4s6Pk-=C#k#v+D zwO`1529Z9N@H4@0k-CmC0BOuijlcVtRI>4Ea}R982gxV1*C`f)n?l`|vssrSmkNno zrdn{W^6glMNA8!=Dq>45-^Kd#2^4k_@)Db<^wGtQe*3!Nl@IbULc`I@a7wc*h=jM0SVx^T_)RS zeb5R`a|v>w=ad+OQuKbaTlv%5Lz#B-S1KYcVly4GCVvgJU@u*``_xYVV+_`W8)nZD zFYM#%9qwsAQcn1gxF-_|?Og4o^18jEvB;>!s*4rGe<$sz(}cLBogyrY#84k#EvSZ| zB~|?AEX8b-NpBr{4m5V1=j$bk9AYoU61Y(`stF^09(35eQOF%g3RZ38nX-927$ zzVDgeyLO<(`76z^7ksy7k*(nvnrv~v--BjvX#9m{b=q9|4g@Y;MQc-F^ZjJz-AX7_98dm%L&CFLu|f;p(lIqpg;60JxmE z?-(nmoyQ2+ohFBtM-F$3t?qW-rNR;YLQfmX8ovV*r<0Vtlv-HO79{H@Q~|#;TE5Q6 zs9wJ*5p_N)X|HEu&hjXUGl*2bX+k+&G_1tax66h}Ic{Y{gP&jqObjt$cAfQxVQYHR z&-kDf-~nYw?roGZ%5HYo85=yuqDT_J_Q$GFwo=5u#dxaeNH}eS)-MQ{`(sIop-y7lGJpKF$Zj(hD+7T*=o&&`V~ z@{Z}FhEg$;Zy08+4W!(?l=dl#`LR;?LHyao?4W}-m2^y~dt%wsg=pi#XB!3KK3E;j z^5yLZ>v>N9jSaAZA;1WK?J%*VI!^P*fi6jl%R+Fxq$%vfzM^=3R$;;9A@|mBL6FB0 z+Ft?jI^zIf`^N;wD)%&u8m3>ix|haW*qVWqsvhIU4mFVD(Pz)R^C)@%l%K%p(#&!Y z@D2REvvpeaV$9G4{sR{8k&+3Hm-rZ%p;8LCyjZKx2t?8+wZw(BC~s`V2PuJVENwq4 z$sp_cLGpn|fc5T)&0SM!qY)R>54NiTsm1Qex022U-|I`WJ>4HNl-tNjJb>PyTGzob&h9Dy?5bKap`O0QS1^>!glybUnN)4 zHuAW{8yOkk{!x>{T2vWaRIpg3Q)e$ZzF_F0NOO`Y zDi^2r><=&(gBOyLgbl`W>tIc(k2+uQQ4sT7Bgs25l^J{LF=O9*KA0~t_=5ITrs{++ z!q{U!p>|t921m6GDS$siys{ftz$IN1rWaM`rdp}-k=6$48xXWdUoLd*`efgKSD(Kw zt_I`!%8BExRkBxYA2AvT1v z0eNNhvuEEc?_knEu7(odUTGgX9~E7u-hTZ^u3CM3JeR^-LE+>3G^_1zf8PFkAl`oV zYNd-h)&sx$8hzH6uire+P5@Pu?G#T7>$B8@GBdYNUaBCxn&{@^OgL0KzIb7Pr*n9q z?_h^_j^MYy2N(QPv5D z8u|XGAmeQy#`yOgf#rxmvbQa4c!NIgmZOWdo5?CZ`)cH?$s}4$WS=+|1;gyWwn5PT z9-Sdm6g+hOT>90dF`=}+`;W@jYg6|UAtxv>7TEfsu$Cq)B?WJOZEzAN;#?JcTPxS$ z)atY>FUfZTkI&rB+?2n!O#X_eOZ!_ykxXF|)q5)g-LcWy0m-`!ukKH2-`>eDyH zDY(y@Kd;@~qO&vXZkwfj1lS?a!MN5LlDM0t zi!AO)Li4HWE3v?^KsZ~S^$HkfrhVv;^v$b>`^t89DyD|Bkg?=pJ8Z>Da{PrtR~lA@ z@YPEL6xOJQH=7gz%5PRo0M`Zh{KNMpbQ39?yLI?rmQ;4^(H*&h!^@Y4YjBkY(um|> zxFP+IQ79-zuVLb_c-vh27>CN8zF)Wt5;>@btJ7d)vx_u{Ml2yjlfEHk_xcT4yTz2| z3wy-w?_O`$K3rrTaT#y{CM`v%+4e;OLX>?>~l-aLFi=;W>^V<(k^H}tq*q7Y&*uzt8h*ul{b7oT`F za_;QpmiB9H70-7S$E{9Ko(WYH6aE;nlc*G3c2ermEbejjsONTNN6%Ud#FnpVkCFKNap&Df8SO3`%cXyT@51*K9BRTvO_d4l@AsjdLRO{ zI?`63e*h{w3eA#|45*?QMp{v>W=?`qf=C-SxIErLFGB_9gjgwyU0k+hGb7lcX_b(O zaQ4&ZA;;U#AJ6#Q?3hQ`f&5f%6Ul__fx7-xxd^+GsXB& zNOMnPNE0;yJdd(_4%$6b^)(Sv?OflE-YN4X?EyH_@DC|5GGeS(w#xqIbbsw?W#gW1 z&wA9NRVeSZ3e6FQf98)*F2AC#IxkQ?J}=ncUY9=?bXPPU7YtS>f6rMSqKkjxss?qj zxo5=fO(eLx`(m#WZR2)R#!>ETeFrouWd2z9nj5O}-==Jw{V!YtW!igNnah7xvr+v2 zM}BSe?7{by&I_p-5A?6cneoBLRnZPo@8H_C$L}7UYD1_TJV5NSjCZ%7_`xB6SGyf!5U7jX3s1Vk4EMo3+KJI^1_r)WIOcz`Q_p zE_(i0N>;H!x1Ik6vg!QPL{~+9bzTrO&J-$Ry|D9gg*OH#dpl7}lMb}bOIq{CYg%R? zQR|Pl=Z=*0H@7o~jME*t>2|Y5w58ii2WRg+JE1Id7i}v{h0U>Yy&E}7BOoZ<@+GCh z`MaCC*K`Z;##*{c_8WX7C>H!$99%Gba_>Ze0WvrXozMo_<7W>G;K=Ne*6EI z6CDb;ACZmq8YUbUMr?tg%GLD#V@P7={bGaIhD4UXflWpaTb$N!kosR}l8<)!xQ2-s zX@1}Gydm*`Ass0j)~mGFElgj*W6ieLvFT^j-|j;X+lzQL?OIMUqDZOw;RM!x4Dn`}rQR71k(o93LPVc~CM3c?N_~t5j@E zVot2X9~JbZqCox&r0mhlIE{AR?9@a}ap)W1A41?aXXWBo?nXB}`s0vaK)4x5Pq6BQ z;$)&OnF(V@MEJWo|C4A%Gz@ll>_I3JL^0y^p;$#O&=M2i;b6y)ghiQRoecwz?|iF7 zH(sez957Wf`8<)q?#II6b~`}^!8IuuAcWpcl=(8>v&_l)@ni&G5Zt~+jW}!A@N0Bc_3!#(ZVgnJCb{P_s%m_bl6`wHKTn)C z=Dh3KaIPp<8uJW^f{KG79;p8o7R)Cs6!+DYm5U?(Nu5^Niq+=f4lFpmcnrOJ=EvXy z4wTuF1s1}X*+AV}YHJkL+9n0J%aI50RQn{Cjx#9K9D^4grcQ)~;`>d}37(!YE*EDD zcucCo7r2Z=-nHNo$@=v(5Ukaqz(N(rwjJ{zwKYT|+Lvz^ZJ)6`-6d@wl0(3)?6?5B zGK9;U9IC=+__GplSGHwemD(DyT6`A0k=p9qUeV@s(f%!sDQ^P+yQMZO19p>^Ic!VQZ_mrx9VuxS;YArozyf^G(+V9@7f zibqH$@EcTZU|>l$jI+1d%*!ah>^wXKt>^{v|a z9%}&z6z;UbWJOp%x-0Qi;xMh}vRA#NeW<4Un5^sM)Hfc*+dOmayJ3ODAk0NmfE5Zy zUfK9zKWqN&_kETG<{`7I_FVqc^iSLLygLw*@^l#5mW!Qfm5_aPzW=Xx>TB;NXWTQ( z)xz%2;sl&)<#74%83f(O;&V90GxfbbQfh0?V8z$Mt6};+`OML&xha&2T%#e2-DpKS zI?;u0^k6G?6+2H3i@3XEL*sSSdmoA1Al@RsUUUGv!;j^#eF!PGZudRkA^q-?Zf=&N ztEZupXO}UAM#tXkeN5#9@z3(x0w223=^fUdts1gY+C#9#7i~N$O*WmF7-vgQ=UAiR zEXdtU8v&hJYlcItm6&DntZ~*gp`lXl4;30~{j@>|nmc#En2<_M4C8QlC~lO>pYGbl zso1?s?&DAP?~2l0MH*o3a5I?}@kNQukl(Og{*{wx32k1j_KSgpklVs56U>+@Nn>{fV zjqkkLEz9hIKz@~+vYBXckbmd5AXtqvo{-PaxS>602=6lK{P#|~SNj;~_tEo0XUEQr zLJ#5p*>F{EOL~*a-#sxk8@j95e$t-qSV@>;!PLFD1iCRk-!InR$L#*p^h0UT^y-@6 z=CZjq@C!_3E%SBAp1FBB8+YFMUw5@_iZtKcUZ8(s=mo78vhg4_-Ohu7mSNH#u1iC* z(wp>|QC}*xW8V$jNrPcBSdp5eR69vF@0os%ae6*_hZV@GR#!5?u6b2vBN+4ZQ{iwH zUVn5CxTJ-k>582yheNiOU3*j*=lq`=ua0*W8b%Ge-2};FH*yG+edY?^Va;Te?n47H z`ia+Wh_1c%aC5gfb4<>{Cw||n_CW`EMr%jj)biqqc<7V8;w@?dO=}00Jk`Y3QC9l9 z)N#SxwHWWd{9^KShU$8`t%so8ZuzCVq1m4Y0?i#m-%MsUAPXz6(y6>1kk7!JHmA)Q zbH<#Vo^>6#`)#Xr7C5u*6x?gyR*~;DZRYZ6p!uxQoHysqhS@Mrs1rWuy&9=mX>-LXIPibrIh##9j}DHXR!+{?m^0?=^sFBi)e@6A z=pO<*B@fbgFbAeeQ%kT^e)RoH1w2+38si z8PPQ?#qvHe!QNr~A&LFmlCm~5~Em2u$MU$%VqC=ZQzdS^r>F1f_Gmh z!l8U!#Sd>l0pDvk_nHr7N+uGPemI8uElQ2im8PQTL8#nBd6x}o?pl#AyGvCrD>VVh zdkZHX4$`I~YA*u=v{`!k$=W*jx&l479g-IaQL2JT>78gLgAkw|_q7}c3orVAdUYQ+ z@k;exzombC{vhA*2K&3T{$l8Bx8GMc5;lKmBJ!6?9r0VL_4~-nQYVl@1i+1d-{pgp zw+_H{a;?2BG(e}BnK;E1r=7sH?r9RArh@8vEc>S`N|8jOJYbp>E0w~lLVHB?y5 z*NXT+#pL2qc)mh5sNJsy`KuOycTY&ZsacRmOtcj9kZY7;P#M>o8le;j)Mhe%SSt>B zw*>)dLdbneb{D`~)L0=a2&BB32?GUmzI&QJeJ=0wQ+LiV|@iOGxnp&Nk zI$MLvx{FaEMB2>UWQ~o3CWO7`8e7SuO^PlMCr7M+%<(IeM+z`FZ8|_rQUyphti{NB zlUjJSZUN#uYJ9=j4HcdHzENY;m{BdD{aovt-fGoMc{jt*RQeJ;J)T6t6MLzuT(<@_ z^xXTCztWrXgZo}v4Hr^%EA6g6wFVhOw6?<)(1!J9L?}5eC1Fp&(U2+AL=*-N zBoghBsa`oqulU0E`&4a!qxu+X6HG`F)S<5TjhbyIO8OLc=_|(5Q>kzgmLWEAr^{Kv zFWGpetjI!5Vv$_>r?P*byuc^q7_m2Z+91b8{kvP%;QPV7&@V$X8q4>wRv#Uy7owcJ z6hGR*3#l0}1EmIXVwU0Lp|jHW!OLn%U?X~>(Hg!vOCJnqc@mB-$tkWta=i#|f(G!~wnC}uQCD*9rdC*kTH`Jx%9GsOCV$y6LNZ%_UmShf&Vw!`}MysNwlRfH)@ z>&+^=HC7AQgq}@K-0gtgVSBQk66D25 zKxCE?nmAzZ8GK#Qn;xn33$pkX_NCvD@-m1f4HaPZ>hUZ>HlKAMdud zvGG*%5!*=N?;$sxV~DXAk5&w5J%)7=NJ{nzBC+Fb_U&yWiyNzIKQT=e^B=t2D(&EMcVK_CN^(ETrhg6c7@g@?504XC7vZ)Wowkj|S$|c5y6Qr?@wax7O7a|J5?( zu3ie5v(-{ZhU}LkPW4>F93N+R=Gdy8Ac2RP?Dw7X5AEs|uLyAzo%|)&LR*2TEy_6E zy$~fLeAApc8ZuWCr8YA!&n;u_dQ2jnW7CrZiR24v<7t?b8TpMvK776*VCifhwBk{C z@vYf!u7j0~^~Gia)zaCt#1`-tdyQ zJj@3-L3x0wT9D}UbKEkbBq5lNETjEfg6hRF0deV{upi=<u{(Vh@F-sfLQar#6fMK;8jR+BSZx6~etC%v0@*$#pEAKp;jbGM!|y zTj2ycXJ#&;mnqV>P{21P>!Y?tf9oj&^WdjT$g4A51=5^BLvD4fOisILl1hobE{bIO zTP(Lm^-CDDts=Qq0cSF};?AYqG8dERxeQw90b)lehoNp7c8%`KL(;dZmS zsZqFtQrrk6eE)!#{wEDVSaUWZ4^e$~>KF$N6L=yEhaK`v5CtbOp<(fzqzu}?qn^-F zXo-};BPmha%Gr(ud=(9DHb(HAE;kt3F&Tskt~oFzDBL~L3B-SR)*hjPT=qGdu|yUc zg>Z2;@D@F4{*(_@AhL~+nS=EQI6LA6_Lvn(!M^9f6P76J!Na5i$lXoj_2zX%U%v~%6$AT=7bRb%J|FHv-NQ+ZEuVGM0 z5T$DNstD*d|IH&^5YG8EKK8zz!WsmCa;OG#8W%@|g#+ie` z1>hs^h_^KHpw`J7aqlK}6)^_Bi&@sa*W_gBl`KmYzJMwgv_v?yD%J_;SU z(U9CCDoZlj06WOGav}_Qa4HR?Vzfy=ciASL9$s|;!3&8@69Xi0jYm$^#2p1MGG3-s z73%_=nB`K=d@*DM{Db}>={hPQxSW+mj&`61eW+K74yX+uBXe;TP=oi)o{ut!v5XYU z*sE=2E8s!N8?ofY%9Ynt7F@6;WN!pn=-_@gVcX6n+Xywc5HP|y`!?c^ufu2 z;7FUNScJ~Z@R-d$R3&Jl07C+)Z_`5H5Zbo8ZDet=mrw^+XLRJ?f%~QeP|1R&x@@ zT+``af6x@sb6LSLNOeITFjXSiUr7RfMT9>m&=0EsESw2oT?9cb6=K3BSioS=rpcm!Blsi7{be;AGJ`DVSyJI}fvh2U7f*>bMnq z33|a!mO?^U)M%4UGh^G{ip@8@xpn~q-~Rj4pKjH7sd~d4xcnQ+0iS?<1=G+T^vwBQ zM6^;fpgZrh;8ar>Ff-un0fx>2AS{VTD#IJ9MET0czw&b>&cB8{f?Y6dq>Vqv^;v)Hj{h>PeC?nwlmE!oc zy$aG`4CdDkK#$?Fn2s4 z{d4+Drr%^CWRd}&{{ByG#6De%`Y7TZ&FiFzhCqrFQh`1df$FzaIhqi$1xQi|OmFs8 zRM?J~235(Umel2$a%7ON$feu(mC3y_5Jbn^^&hMTq5UO+6mJ8s z*RZ*=vG(JIh0Ub5X?-x01s`6+Bv}<-SfLH!j90Hv@t!}k_%Vs4mrQy(w0L?lsdahz z>Kb2nRte27jQc$>ZK$Rn;1|nkIfPPJ`fmrizTdnQY$si{-gRND$znqZ*xy$6%@8hT@N@ zvC0oK-*+*KBWav83$-Mgqzf@EL`+F10ecy_2n{S*B_9=pYrIX%#wn2v;>{IfRc?DG zUlMM1rGziBNb@pMIwhf;PzYmTEXLxp5KQN?}?a0DBp;`Nav z)^<^#1}2H#!VU1^Z0L-Y;wvPi+zfuf1CEiW+N^EVp^Y$P#*C?;lEgc@sq+K3Da=`{ zqQeTcm8{v0^ge~(ku`mv_fl$ySyyhb&eoim|7cyi-FV5MTm*n0EX0E*}|vo zg_U}=T1|B{U7XURvxr7VFQ1BVxCjWL0>K#do2SAZPP+oJuJ));|J>=#y>RI(3^^FGa)ZB)^29!7M>zO_=eQzpTLe$(i|`Y6iNhCvP576hmkP`Z3D!fN)c ztvxt4CSua6yfM{dJwVfcS%RgLATEG<=vi;UINBPYM#p0vUm& z9MYuJIf#BP%D}lRXWnd)$MkQf` zx{GT!l3blaEu=V*aA3q=Wp>dGE_;zEkmN&z2+P4Ho{=5fb0^!6iLn?-23t5=*85~# zo)tJ;fdTJXoSF7ulu9&nX=;ZR*2;?SakFhWuXx?ST)D)2?@D%=#j8yC@Izto;fG5! zSx*;x;8+t=Hr-fuRf-ief)G6%4&u@N&}X=j;7347ETMIjWK}B+!q;pQCz+@kHjymW z8+0Rd1!blpplM1TrwLYKLE5myNw^-?Tt@Oizjlx@!*R_K8m zic^g{5TQ+)iP*XwX=G+}v1=gL!HsnA!@~G-ktGR}=eJiFgG>qiFVvkAf={5Y_f(Gf z3ny;0GCtq9BSRHo?l1&|M1J6dS#tW`nt^Otg|1ROqi|m>v7?}+W6`cVCi%iPuVB9x z{e39q_Ki&~x>VR;*?Oq-54B>2t6?qk8dYYEjF^wqB=ZA3v>?T)bHScuMwN~ z6=a;tYX+!iOBX{r9wLBf0}Noqk=BfJ1*40s8i)DQbfRL$AiB^e|H-^2TO8Z90EKoz z9Bd(2*@R!1gdBTs#kQm2pzF-Dv;63c*?45@yHQV824u=>w71*I@wlH?RGO-vV*_-N zr|OJAwjdxZmWv0Cv6}%88u;^#BOL*Qr)o5ykk8aeQ?}#?=|jp21U1GduGLqtH!s^$ zRGT#?D9IeA$J0Ed(QA%$4tCaXWj6awQi>BMgVHV!nPe@;k|k#sP)CT8ag}Jv$b`rM z?;b9$NPPD*kc z=#x(GJDg40O|r~oAo*zrAWxwSLlGpfM!#}q$vVc)55H;_JKX7rmA#LsxO1lq=lD4K zy^-+k9ygvkIOeYhFx{uGvtPQKVm!R6PX}H_yqu&BDxW4R+@W=Ey03IF=&G@%50&$tEL3BF@ll;+Ji8*db<$Xvy#x4`0JYOI5N*dnX$4JuBzQm3#Hil zW2$4XnpM}f8G?g$+d-{(Yj>e4;&NCllk%XCY{a#5X%?v~X8PhZm|(n;r3o&QA`L6D zKts$+G}srTdmy4}wTBX(Yo6b$)7cK}H-3e-JDCxo`B6(W&dFDUIV z=D2ea9yaDDsosj*&qUwMH0qA2uJ*9TItJK{MVs!qk{w~M2J%T#lXm-<3e5n3UCi9N zz_ByeyX4^zi-b4XC6OXa<~@nBjsBtZCJ2UwkpmX)9MF}J3QONK0N_7>-+cG+sbKK& z{&)eL6mm|GV8Dg{5x<3$;mDhMu37&O(m+0pisF`g4LlPZ4cv1_rC+&!^xjo+IySZx z%t1SlnH7>SW~4*~#|9|jxSaBjKI8|e6h!IltJ+x<0<`8fRaIkc;5mQ}moBEV>$`?W zLStYeiQg^fc}V$B@oPC!2&@YJ0AbG-uv0i?k`(@jn;&!mjZa`aRof*0Mw*J!iA{cy zxeHfsxtI{2PA8stB2`bA_6nzD3SOlr{(?W5$M2XhPi0$vILtK8GX*#sW$#qmEhXrZ zeM5cXI`=}QD}%UXM%i70o3(O%x9~UqJ9l@oF!+`+fqL|I-^I!5jg#S3W$=JWPBNiW zVn9y=4BKfWYTRz)((H%m9W@MIS%SA_Syyk>x=Zij`Gwon)i?^IXvHJ(y)eRRr!#lw zy%}6h9re?o>}oOrV|@@bTiek2k}q0Nxr<1>2;D@*uCt6pBD@Qt$o62IL~IB{;UF=# zhHn%SiI^&T1)GUJUxfPhsDCs0q$No0dTU!i9~=U8?|YV!EFh zT3H`np&IX?m^DPMnL)Q6XGo%4n!<{%Z-d(%t{X@bE1`WA_>e^yN&^6$%@z{%exRip zHqxH5>RyzBo`W?#U~=4wQ#($8DqN!4MnCu;%FEC?c2unrk9Q=mm-`Jq2AqGKJEFUfxkXMh9XgEJE5da&rwSQcQuR#rU~KG7zWzWtjn zPL%u9@1m>#!*H3IP>qY?UhK?XF^&Mit>U}tPD3OLYOJ@8lyL4#fh@3KqD(Ti(6yU0 zP|4PTuA^^%_fT8bZnM37l0t@bX)Xd+&hAe62PvH-99c9|p>WhbgkP(q+K=xubvAX-t#zCr?IWSDD!RP$6N;QXsb-?aWJm<3$Y3S^DEq%{h`~&vW*;1}_Trv;AP+%Ncj>&jd}^vZXSkY`{L)bZbe+%a3k@ z7=hh6YDCFt*g9UUq0~LM6%Rh#-YPUOrxk*JFJ5`t*)9Idm8HwYStrs!RH zw1BgjX#XdMkmQB{MM2Y1`nasL5q#CIQl;s+y^gDjndWDm*83}>bEGf zgYi#A($qt{^olt#H7zlD2Oei*M@Mni?Ujc-=NqldEL+CFAi6meQ95g2Bde>*7>(N$ z?b#fql3^WV^db`1zip@_Jl+;LePK?)2@`V2>3*g|nS?*-*iK4+KWT*--QaBlwQ(Bd z90juCu8c2oRhF*`-3iU$Ud#sy>#h3vE*WfA$BrN45pZckD`7Nwk*>*N+Bg; zU(K|BLnTT$Y{nKM`n!1>0NYYQyV=Z>a)_o+-F3H=dd&D0VW_}+Vxhm=!;b@Lg;O<4 zXC|&hgBNm+*(zD4{$q;zNUP&#nfH6UBgpeU+XEck>wA{Z+Y0Qer`C0$lQ>GJ0q?`Eh0v7Pff(fsfOFgPI7t)Yv@QN;9#AMd@ZwFYkm z{GR(6GQw9@B;qdBjH+{Y8Qv%_{X zK~l8IoX*FChswYWyf+9}ym1n}g<#JmIb>n7m>MagL1x9e-ituewj-1Z+4|{2XC>~? zGwfHY8=`|<2vbEJ@28X$2G zme~n%@vw+@)X4ZymJ*`lxPeU@HO*NbuW2Q@5<9;Ndh17*5NJLBt^5ar2F^+5#)@9yE9AA=9>sDJ2V=xVLwVSv8-T@0xkpDo}FQnIQzu8w@H|K3R|tux6n3p~lsbe^uK+x9^81~|G= zYm<*Ca_f@#wQ2K@f?9DsaRRGZ{6Z<3dV<6pQ9~uaFQJB>G3Acor@Fh}sAe|$d1oH& zecpQkH9(YzoJLj4q!9&r#O}u$ufomVv`b2`tG=Yd7rt^Mm&UKw^&sehJaNPGAO*cj zWRi%^ur-+SJ}3I@hWYf{>TJ7hAZXyJLAQhxS&NBQq5Xohg))Yx_YfBx5vX(S(uhD+fC8UOD59+e z-2VQd4@Mh6` zK4ITfbMa97{DS?UO!vjPiT^Q=nQqu(=a#wULTyegrW_Jf%$Di$kI+dW5rb`)!AWbS zClLn<1=YgY>I!WQ?NH`~*gd#;If4p#*o(51Q}sjMsY*dL4wiI5FT^a^=O9SYn}Y~5 zh|^FElg4jT?bORK*cFe3F`Ae?SIju-VT=M5#mW1=c>elI1fe!7p1 z&d|}+2=e+35>S{Ic5-#|sB*Mk$f<$xx}B+XrG3StD^pV>{&2rcd)k|GwHji7-Y|dpFlS#LBn^5U%Nt zNra_J53ShGEgVbI`}xDxrl<=WB$0xb{1`tq82>oI z79CFJqbv&u4FVMx7y?~P_)}G^vlHk0y`jwE8s8PIb@|QM^%Cv-^zNEDW8($@%+g6{ znW~j#8mcGvk^Qb12FjpA4+yUCwHgeP-D)S!z2?8Y%DwMH)dKM+4ce=X95N7`)<8y< zcD8Eps>g+Vzj-Fa$^|>`YMc0^j&o)x>ow?~W<@*)44aEpQk5Yu{Pd$qQxQY?Y(SuNS4eR?m+zoCm+*Zxb zpUh-`6WQLpYQQ^{Gm>lzec76|S z1JzBU{l(l0mh18pFUtTeB<4oyG;zy4fi1b5`bOQo2NW`Ck&o2y%#X9zQ-@sErp%`( zc`;ysrmPXa0=e#}V6~l;pp&;3R&}Nv6rxeW@#4acmZCEGDjItU#Dv64Tq;WIgmYwW z#J25Aa!J`q2L&Do0ht60p>gdvQ~QuKXl}>UTnY*IhKAi`@~qdRqo|nvG8~~xlN=p_ z!7l6d*(i;3`olYC*85+)6cN0O@6IK$H6$ zT-;CWP)!uFzW0GU5R+bi8ME%&BenFIZ-sd7penGxAx3XN2NTq$=pQmpt!v($$>>5u zu$K&bamM;@^bd4~1T-Aa$bnz%yt`-kf9VlV#=Rsqp6R06AXY-3K?uv(rO&LPYS$8%2jC8sf!M7XjLfrpQ7OLIqkRe9VoqPQc}x|J>DYUp#I@Cv zJ?bp<-%L=`!<$f~!+8moqoGF1ul4+fTxpf}xb^k(Uy-d|ILIK#uIRgJM_U5kT5772 zo2r}M1JK?1G~x^WcWzlNPyR2{YjZQY*~3mWnS^82(Md?0$TT_?8%DzS3=hdS8&QX& zi+g&C?%3$Zf0|#%@isL)`{xq$Q`8OWt>Og6kLx5BTn&5^*qs#yR9+G;srm;ucyq{2 zz?SF^oF;&E0y1a8b)Pg4h4S3cEd_I77aV07V=Om(=}K3UMed%9a8iqWDD2%s%#_+9 zZ;&sG%}xam{RPTdq~yHK(EGm@-XD#ERoJXM+oI)y9tZ-n1uKPX%jc45@;`qt*^O7+ zQgjMCA%keF|EhXz7RphV8i;Z{Z9>7dU{)EVHhmv$)nO_ADj^_fuv; z6#hkNw^XLLQSMRBY5-Z9=1)mOqM!rnQ|dIggz@j(!&;*@vqVm)Sl{bHi04y*RRs(u z47*Dt$)`JBYs7vb8#ZAy&WKvp;M+bFfzD1pk;uIvY>MM<4d!KSM6AU?8ary@pAUz_ zKT!6p7FU(jHuWtduIHAGFbI=c(5VikIeJD{$`WENkrp4g@L3fs1HDqUN0n|>0}sO;zQ7OU#?@0ZYot(2MGnypV19~I{H5}d*?!RZ8| zAt<4gt5@(K!8j}r1RRGeVf-oI^Ep|-V1X7b`_?RXDVe#1I#m)@NP$Vv-GyEs00-Wi zBc#+tjRRKZaJ3@6z@paV_D@0Ga;b>`EQ&qhVtMjVih!J|uIPPi`Ycwhc9k0{n0d^w zTL}CRvTKAQ293E@RJ-r%T%nO1nL$^>@#DSCgviL;_E0|qW&`BU`0Go%{RHb3{#XUQ zQuxoToV4&C09V>5O34UZSWsv&PPo{Ih-RQbQ((&a0Ph*wNwW(WVj^>B-aI7Tq{2@o z4`lYg^>QtR+}Xd>(#kW(mf}+kh8>q?T#m~6YfXK8FAmeUdZNAUY$FAJ=mhFb0D3OatNaU~m6v%|U*It&xz*8Gz?d7V`#T3B3Kn*Ue`+uxgVZJO5G> zK6IpLa&#rWle}??GOXJP!iOM6$;eh`jn7|@mRwPRAtt!FR3?Y+g`d5qg>$kWFFn>s3kNXZ zHoFsXYEg)C+|dmC)S-Un)EQCe=^2M5c0644gvb3q45Mv(+d8o+d}@+$G!59I&oa59 zWHZ`V!=UE1X$F=WpSds`n59Tq9nVi>94rqChN$$|Gc=S*nnLlXPCbSi?PUqHY$NG< zFP$ipuNZMFLa>;bEJZG{yJthu3{5<;PD!3ZiX9sY_N%P(1Dh_Re$|;dD7xgDm!v0o z8q2m3TvJB{+?NFQh~jzJevRP4M;c)Z$JNowX8$Fu%yNWx3VHE;B;g5a>^eZ9I;-^7E^BnBdHfd zq3AkG5GDJsG!$4t{P1_FThHi;FRj;3H%VlFvyEh~aZxfD6uzZ^Cfz+DU%4vz6SU8I ze7sr_Dr9D#lwPDTWstX}r7ol4xKAL`Rm$h*QtZo={s~&gv5P>Vj9vRI-yy2EYNKBt zkj?JVI7$6kT~&;s#_cPd|9}{yWB`3;o>me2>Boc1Eu`^&`DHTOeQ~BS%St-<^U~MN zAgeG?Zzh4c=Mtb5OufFq_c{V&$-EO*+!30xYl2^aJX|UmtsrbFnw?dS$9!D#oSRuH`V*^Fh%HCb(E@t-3tjR&=}Krt zJ4neMzZl$g!wz{P)A!3Qu#7TEIdh28TEqLLg>B4X3N!IlY6dy2oP|_F1x%aL$o1y zuZ0Cxto0-+CoT+{BgWQGwUawva5E|yUnl-vgJ{b%%47N{@63lMEvox`^3zKwMBe)N z_rxKPHi4=MAD@_$t9*r|o03TfPoj>&!rzf(Qo2Xm=O`QD5Mgt2y#sE1>cMW z%{9{+)a6y^&P2jW}`G2%KNL z*^-(4Lu|~e7Sr;JyYiY>J-TlYP~qZ6b$l4T512N9aJl@MBNW<5y@iy~UF0A@{Wr$M zFG=@U=W|5W3U+K6-5B&JF-L2S>`0=YHbVYO2K))ZT_LfC`_=_*nTSDK~Nx|`1fuhP$Nb2Z=w$_ z`@C8~JHsXRAJ}_%`72SU$e1`v{sAUy7tSA}sxR;~yZ)~&%>T@EeEa4RDqn^veq;}+ z7+5`hLXpQyAa5Eu-#Y>&0 zw(TxpP}B0Vi|B_Dl}DfuhcjMB!Wx!PRhD6!mU7;jLms4@Rive#q_*Cu_qA#v^ZZka zE@vY3^!y#;o2>c|d0x3uSKUeUUV4QYCf1P(+Z8miuTit$s{bI|J2(9P797O4=zpj( zQb>LaA%O+{D4Wic3?=)5LSSeQ;r}h4U6TZ18}S=fx_I$4p&VXj-~KhMc)TVcc^LQq z`dA8^04lf#QwGOx0Oa5f75}Y7$>RTuN3crqg1L)l;IwhG=6^$3zwNNi?~AX|@@oHZ zb$9dc`u_GoQ_GL@S5yL=k5^UUb)JdMU~o}Fo!)>L$FYo3Mlc%Gz_5uo7>XDNfpgi? zjIJwHwJ35QS>j7IaZAJt!;}t}RhSun${5^Qk)awyZI8qhL9PrlpOq8&*f6=02ABep zl5NYTsfpxt=@(PYrSrmm5BBbSO>T8FkNTit*!q?V>br1XtHYU0%tfY=7kD?8d7!~X z-ZhPue=@xOmZ`It=-HP~v3YAZVFMwhB{8d3qq7bx4&^FR?^etg3`U2VxYC=cWu?QivU%rZi4EKvH9fZygakxDmv{`8= zdNbQ?Rz1$RZxF->2?*EO)yu`F#!^3>2jWIK zjCd(o?@nA%LlKcxdnL^KzK=M~facYkuyz0sz|`qJ3-K#6%`r+X*s>8Y% zCL;D^F7zaB<-m3SY*zR%Cz%JkzwA zNTP1djCB=5^$?5Q0D_?i(Z)3F?H}RslO&F~;3>nviw+1=!UF`cv54g2QejAj8=5qav4*RDcY{uY4znAy8uf+5AENwFuhVbTaPh_sC>0 zlR9Zy-d05BHDM+51n-9|n92Il}(^rdKz9OWwkvz?U*JAd+uXgC3 z9t^sG?i&L$Pmfql5*eH>@xO@xa`e06j5Z{^FAfkGhT??yDi*t~%W(fWKmS|3O8x%; zt5E-OG;(>P!Xt2{~v6s z9xlZHjHd$=26yR>{6CEiHhu`$Bdu{j;=ys(|H4#0OaCDLU-!1n|JzZ6p5N#2YFk4xBYB8U&%brmmmnVIM z9+Q<7&>)kv@pt+=J6~g)ypM7fV%$0sjn`}1z$8-qoA;*Y9vnNK@|0@*D%LD zX1;<;o6h(N>EmKXDRw+NVR|O6!7H)royK-8f`r4Ns2=#-d=r!cNf(8RQH>(E3A)D$ zw01)Vc0o^R{_LPLukNxHdpA1h2j{%S3`_*;J64W#LIeq+$q=&oUrX3mf(RV8{ZFo5 zn5ABz$qU;cKp8UH#0p~NovwfbD`t`L<;bKLFWy@pZQKIdIi bQBM5)6s%p?oy_T)fR3IrepgG2|qH4K6n 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

D& zKmG7e67!kl#@t`?2092GluuaI?(wqHGc$CxbhOu&-QklBs;yusvX`9XbS$sFoH+FwvSs*$VNBEt-3}x$RNG$?<{E4Ybo(b3OQlfghskNz z9}K5Z3VQ3758HkG0jW@{RIXI$g7RShkH;@~Tu&=BS_r#d@9~%{hig#_2T@|P9H)w? z=gh}5S>q^Cq)p*cpk@GaSXq4sH<14^6;np5c+t|$J9x&lS&Se9UXJl& z`)tC!CGF^PM{9Gle70PoNpUr~Y%X6Z!}+OG>@qySno#@WZs|(!*Vl)pnmp&Xm-VKQ zd#My=>7WO!yH+kA!}m@QP$?RL){Bk$Qv*y2cO;BUYachhU4q|dA!Mv|yd}&v+!gE% z{DqB_ousX_y~Gbfu*tQR**BQz*PQqTVG6mV8#<{f+pRkMaZ3L)vy(`szQ9`Qf3L->DdXY}1dMc^^Csk2NTKs7&QcmZsc@0=Q*+*}0+ubaVYp z?_|MQ3hbnc(VG!jcF*kMaE)V8EC4oZFthXNL(^I^9lZlOJ$lJAO5=PrN|Oa{fGt+^ z86n<5N4dk4So5{kLjS&dhC18h8m3KH)**}vqTFD5^iMTKEbcl&5* zW^QC_D;06l5fzsu|eN0BcF>w|9d0O=b_CFVJ+E}_9y>Lu<@sRBZRB_KQXt_6*y+3*^M zE`8Gx-~2b)<#e>sMPht9=HdY`yV6x{- z64g$bGMR7NOT#uSC|2C5PQzyT^d!Zjg}qSQ?g6h$P4ccGk1(o5QhVy0CTs#8Vc)~9 zOq7?zT_f$!BRru4nCKiVUdJbNGaH|)2T8r+vx5vQZAuho$o6xH5)jXZGCov~fcRfT z&bKQLJ3z=#;>0N62R2Ai419Sb^WkaElLsFHLI;>$2KQ0{9@j2ZT<&_5+_Qnn+unjA znR%4OQ<~yW{LJ??8#ND;4y+f5FkhH;oGaMu*V%`Yil((-`_{i*wzrFu0@>r@;Q!@9 ztG-5C$|o66q0!cO8N3oR-ZuJgm%HhR9u|9gr72nkgf z`o9%BG~SIbmXx=T6}XWG!96o?82ddt~la{g9g5aRjJlk4d!jyanU_J7pF% z77h|AA4MVw=oD5BKVh$ZqKjco|ES*^`7lni8w`M~OOWG;!0pS{gxy|=mLhl`j&hO$ zyh#a7>{8aWnp$JtTk9*E)-=y}7@o8Aa4GKMcm(?Dkj`*yw&d^BbmmXdiwG6W=0S!H zhPH0Do+Bm19r|tQO1}!sqQwXgXJt)nTYP{voU&oA`&wBCy5wXMu+q{aM~Pnu^`Xm% z>~wKZWVqL`FH-T@4e}yAN80yR(3BfT^Ox^K6v1kT9mt8Me)EpvvO~*=Dzl0TbRG>Y z021OhH){SbYUb?JJhVvyjO_=O!9SzJSr7p`)%p3ee#i#M@JWL}?M@`DqCi*ZE@Tjp F{|Bsk2y6fV literal 0 HcmV?d00001 diff --git a/docs/fonts/open-sans-v17-all-charsets-600italic.woff2 b/docs/fonts/open-sans-v17-all-charsets-600italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c99aabe80340fd88a6aeb5729251e76c9a6f35ec GIT binary patch literal 42120 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 E9}-z&tN;K2 literal 0 HcmV?d00001 diff --git a/docs/fonts/open-sans-v17-all-charsets-700.woff2 b/docs/fonts/open-sans-v17-all-charsets-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..421a1ab25fa88105ab776552d7201205f7899841 GIT binary patch literal 44988 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 literal 0 HcmV?d00001 diff --git a/docs/fonts/open-sans-v17-all-charsets-700italic.woff2 b/docs/fonts/open-sans-v17-all-charsets-700italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..12ce3d20d1ce2288206e8b4f31c20f76452efe37 GIT binary patch literal 40800 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%0DER>;wf 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%0Deo9y(?}8?riQx3p&>dOY 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

33OR1_N*!%ylDDa|3D1;gP8brBkv%FrMeyX$5% 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�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 literal 0 HcmV?d00001 diff --git a/docs/fonts/open-sans-v17-all-charsets-italic.woff2 b/docs/fonts/open-sans-v17-all-charsets-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..398b68a0853fbf6368758deb1da49d347e3e7d89 GIT binary patch literal 41076 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

  • ~`;p}3;==ZtNy# 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 literal 0 HcmV?d00001 diff --git a/docs/fonts/open-sans-v17-all-charsets-regular.woff2 b/docs/fonts/open-sans-v17-all-charsets-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8383e94c65478622baf43553262e0e31b8725e2b GIT binary patch literal 43236 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⪚aqC6F-jh=?`}zBG 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/g,">").replace(/"/g,""").replace(/'/g,"'")}function r(e,...n){var t={};for(const n in e)t[n]=e[n];return n.forEach((function(e){for(const n in e)t[n]=e[n]})),t}function a(e){return e.nodeName.toLowerCase()}var i=Object.freeze({__proto__:null,escapeHTML:t,inherit:r,nodeStream:function(e){var n=[];return function e(t,r){for(var i=t.firstChild;i;i=i.nextSibling)3===i.nodeType?r+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:r,node:i}),r=e(i,r),a(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:r,node:i}));return r}(e,0),n},mergeStreams:function(e,n,r){var i=0,s="",o=[];function l(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function u(e){s+=""}function d(e){("start"===e.event?c:u)(e.node)}for(;e.length||n.length;){var g=l();if(s+=t(r.substring(i,g[0].offset)),i=g[0].offset,g===e){o.reverse().forEach(u);do{d(g.splice(0,1)[0]),g=l()}while(g===e&&g.length&&g[0].offset===i);o.reverse().forEach(c)}else"start"===g[0].event?o.push(g[0].node):o.pop(),d(g.splice(0,1)[0])}return s+t(r.substr(i))}});const s="",o=e=>!!e.kind;class l{constructor(e,n){this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){this.buffer+=t(e)}openNode(e){if(!o(e))return;let n=e.kind;e.sublanguage||(n=`${this.classPrefix}${n}`),this.span(n)}closeNode(e){o(e)&&(this.buffer+=s)}value(){return this.buffer}span(e){this.buffer+=``}}class c{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const n={kind:e,children:[]};this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n),n.children.forEach(n=>this._walk(e,n)),e.closeNode(n)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(e=>"string"==typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{c._collapse(e)}))}}class u extends c{constructor(e){super(),this.options=e}addKeyword(e,n){""!==e&&(this.openNode(n),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,n){const t=e.root;t.kind=n,t.sublanguage=!0,this.add(t)}toHTML(){return new l(this,this.options).value()}finalize(){return!0}}function d(e){return e?"string"==typeof e?e:e.source:null}const g="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",h={begin:"\\\\[\\s\\S]",relevance:0},f={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[h]},p={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[h]},b={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},m=function(e,n,t={}){var a=r({className:"comment",begin:e,end:n,contains:[]},t);return a.contains.push(b),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),a},v=m("//","$"),x=m("/\\*","\\*/"),E=m("#","$");var _=Object.freeze({__proto__:null,IDENT_RE:"[a-zA-Z]\\w*",UNDERSCORE_IDENT_RE:"[a-zA-Z_]\\w*",NUMBER_RE:"\\b\\d+(\\.\\d+)?",C_NUMBER_RE:g,BINARY_NUMBER_RE:"\\b(0b[01]+)",RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const n=/^#![ ]*\//;return e.binary&&(e.begin=function(...e){return e.map(e=>d(e)).join("")}(n,/.*\b/,e.binary,/\b.*/)),r({className:"meta",begin:n,end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)},BACKSLASH_ESCAPE:h,APOS_STRING_MODE:f,QUOTE_STRING_MODE:p,PHRASAL_WORDS_MODE:b,COMMENT:m,C_LINE_COMMENT_MODE:v,C_BLOCK_COMMENT_MODE:x,HASH_COMMENT_MODE:E,NUMBER_MODE:{className:"number",begin:"\\b\\d+(\\.\\d+)?",relevance:0},C_NUMBER_MODE:{className:"number",begin:g,relevance:0},BINARY_NUMBER_MODE:{className:"number",begin:"\\b(0b[01]+)",relevance:0},CSS_NUMBER_MODE:{className:"number",begin:"\\b\\d+(\\.\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[h,{begin:/\[/,end:/\]/,relevance:0,contains:[h]}]}]},TITLE_MODE:{className:"title",begin:"[a-zA-Z]\\w*",relevance:0},UNDERSCORE_TITLE_MODE:{className:"title",begin:"[a-zA-Z_]\\w*",relevance:0},METHOD_GUARD:{begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{n.data._beginMatch!==e[1]&&n.ignoreMatch()}})}}),N="of and for in not or if then".split(" ");function w(e,n){return n?+n:function(e){return N.includes(e.toLowerCase())}(e)?0:1}const R=t,y=r,{nodeStream:k,mergeStreams:O}=i,M=Symbol("nomatch");return function(t){var a=[],i={},s={},o=[],l=!0,c=/(^(<[^>]+>|\t|)+|\n)/gm,g="Could not find the language '{}', did you forget to load/include a language module?";const h={disableAutodetect:!0,name:"Plain text",contains:[]};var f={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:u};function p(e){return f.noHighlightRe.test(e)}function b(e,n,t,r){var a={code:n,language:e};S("before:highlight",a);var i=a.result?a.result:m(a.language,a.code,t,r);return i.code=a.code,S("after:highlight",i),i}function m(e,t,a,s){var o=t;function c(e,n){var t=E.case_insensitive?n[0].toLowerCase():n[0];return Object.prototype.hasOwnProperty.call(e.keywords,t)&&e.keywords[t]}function u(){null!=y.subLanguage?function(){if(""!==A){var e=null;if("string"==typeof y.subLanguage){if(!i[y.subLanguage])return void O.addText(A);e=m(y.subLanguage,A,!0,k[y.subLanguage]),k[y.subLanguage]=e.top}else e=v(A,y.subLanguage.length?y.subLanguage:null);y.relevance>0&&(I+=e.relevance),O.addSublanguage(e.emitter,e.language)}}():function(){if(!y.keywords)return void O.addText(A);let e=0;y.keywordPatternRe.lastIndex=0;let n=y.keywordPatternRe.exec(A),t="";for(;n;){t+=A.substring(e,n.index);const r=c(y,n);if(r){const[e,a]=r;O.addText(t),t="",I+=a,O.addKeyword(n[0],e)}else t+=n[0];e=y.keywordPatternRe.lastIndex,n=y.keywordPatternRe.exec(A)}t+=A.substr(e),O.addText(t)}(),A=""}function h(e){return e.className&&O.openNode(e.className),y=Object.create(e,{parent:{value:y}})}function p(e){return 0===y.matcher.regexIndex?(A+=e[0],1):(L=!0,0)}var b={};function x(t,r){var i=r&&r[0];if(A+=t,null==i)return u(),0;if("begin"===b.type&&"end"===r.type&&b.index===r.index&&""===i){if(A+=o.slice(r.index,r.index+1),!l){const n=Error("0 width match regex");throw n.languageName=e,n.badRule=b.rule,n}return 1}if(b=r,"begin"===r.type)return function(e){var t=e[0],r=e.rule;const a=new n(r),i=[r.__beforeBegin,r["on:begin"]];for(const n of i)if(n&&(n(e,a),a.ignore))return p(t);return r&&r.endSameAsBegin&&(r.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),r.skip?A+=t:(r.excludeBegin&&(A+=t),u(),r.returnBegin||r.excludeBegin||(A=t)),h(r),r.returnBegin?0:t.length}(r);if("illegal"===r.type&&!a){const e=Error('Illegal lexeme "'+i+'" for mode "'+(y.className||"")+'"');throw e.mode=y,e}if("end"===r.type){var s=function(e){var t=e[0],r=o.substr(e.index),a=function e(t,r,a){let i=function(e,n){var t=e&&e.exec(n);return t&&0===t.index}(t.endRe,a);if(i){if(t["on:end"]){const e=new n(t);t["on:end"](r,e),e.ignore&&(i=!1)}if(i){for(;t.endsParent&&t.parent;)t=t.parent;return t}}if(t.endsWithParent)return e(t.parent,r,a)}(y,e,r);if(!a)return M;var i=y;i.skip?A+=t:(i.returnEnd||i.excludeEnd||(A+=t),u(),i.excludeEnd&&(A=t));do{y.className&&O.closeNode(),y.skip||y.subLanguage||(I+=y.relevance),y=y.parent}while(y!==a.parent);return a.starts&&(a.endSameAsBegin&&(a.starts.endRe=a.endRe),h(a.starts)),i.returnEnd?0:t.length}(r);if(s!==M)return s}if("illegal"===r.type&&""===i)return 1;if(B>1e5&&B>3*r.index)throw Error("potential infinite loop, way more iterations than matches");return A+=i,i.length}var E=T(e);if(!E)throw console.error(g.replace("{}",e)),Error('Unknown language: "'+e+'"');var _=function(e){function n(n,t){return RegExp(d(n),"m"+(e.case_insensitive?"i":"")+(t?"g":""))}class t{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,n){n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]),this.matchAt+=function(e){return RegExp(e.toString()+"|").exec("").length-1}(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=n(function(e,n="|"){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i0&&(a+=n),a+="(";o.length>0;){var l=t.exec(o);if(null==l){a+=o;break}a+=o.substring(0,l.index),o=o.substring(l.index+l[0].length),"\\"===l[0][0]&&l[1]?a+="\\"+(+l[1]+s):(a+=l[0],"("===l[0]&&r++)}a+=")"}return a}(e),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const n=this.matcherRe.exec(e);if(!n)return null;const t=n.findIndex((e,n)=>n>0&&void 0!==e),r=this.matchIndexes[t];return n.splice(0,t),Object.assign(n,r)}}class a{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const n=new t;return this.rules.slice(e).forEach(([e,t])=>n.addRule(e,t)),n.compile(),this.multiRegexes[e]=n,n}considerAll(){this.regexIndex=0}addRule(e,n){this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex;const t=n.exec(e);return t&&(this.regexIndex+=t.position+1,this.regexIndex===this.count&&(this.regexIndex=0)),t}}function i(e,n){const t=e.input[e.index-1],r=e.input[e.index+e[0].length];"."!==t&&"."!==r||n.ignoreMatch()}if(e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return function t(s,o){const l=s;if(s.compiled)return l;s.compiled=!0,s.__beforeBegin=null,s.keywords=s.keywords||s.beginKeywords;let c=null;if("object"==typeof s.keywords&&(c=s.keywords.$pattern,delete s.keywords.$pattern),s.keywords&&(s.keywords=function(e,n){var t={};return"string"==typeof e?r("keyword",e):Object.keys(e).forEach((function(n){r(n,e[n])})),t;function r(e,r){n&&(r=r.toLowerCase()),r.split(" ").forEach((function(n){var r=n.split("|");t[r[0]]=[e,w(r[0],r[1])]}))}}(s.keywords,e.case_insensitive)),s.lexemes&&c)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return l.keywordPatternRe=n(s.lexemes||c||/\w+/,!0),o&&(s.beginKeywords&&(s.begin="\\b("+s.beginKeywords.split(" ").join("|")+")(?=\\b|\\s)",s.__beforeBegin=i),s.begin||(s.begin=/\B|\b/),l.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),s.end&&(l.endRe=n(s.end)),l.terminator_end=d(s.end)||"",s.endsWithParent&&o.terminator_end&&(l.terminator_end+=(s.end?"|":"")+o.terminator_end)),s.illegal&&(l.illegalRe=n(s.illegal)),void 0===s.relevance&&(s.relevance=1),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((function(e){return function(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map((function(n){return r(e,{variants:null},n)}))),e.cached_variants?e.cached_variants:function e(n){return!!n&&(n.endsWithParent||e(n.starts))}(e)?r(e,{starts:e.starts?r(e.starts):null}):Object.isFrozen(e)?r(e):e}("self"===e?s:e)}))),s.contains.forEach((function(e){t(e,l)})),s.starts&&t(s.starts,o),l.matcher=function(e){const n=new a;return e.contains.forEach(e=>n.addRule(e.begin,{rule:e,type:"begin"})),e.terminator_end&&n.addRule(e.terminator_end,{type:"end"}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n}(l),l}(e)}(E),N="",y=s||_,k={},O=new f.__emitter(f);!function(){for(var e=[],n=y;n!==E;n=n.parent)n.className&&e.unshift(n.className);e.forEach(e=>O.openNode(e))}();var A="",I=0,S=0,B=0,L=!1;try{for(y.matcher.considerAll();;){B++,L?L=!1:(y.matcher.lastIndex=S,y.matcher.considerAll());const e=y.matcher.exec(o);if(!e)break;const n=x(o.substring(S,e.index),e);S=e.index+n}return x(o.substr(S)),O.closeAllNodes(),O.finalize(),N=O.toHTML(),{relevance:I,value:N,language:e,illegal:!1,emitter:O,top:y}}catch(n){if(n.message&&n.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:n.message,context:o.slice(S-100,S+100),mode:n.mode},sofar:N,relevance:0,value:R(o),emitter:O};if(l)return{illegal:!1,relevance:0,value:R(o),emitter:O,language:e,top:y,errorRaised:n};throw n}}function v(e,n){n=n||f.languages||Object.keys(i);var t=function(e){const n={relevance:0,emitter:new f.__emitter(f),value:R(e),illegal:!1,top:h};return n.emitter.addText(e),n}(e),r=t;return n.filter(T).filter(I).forEach((function(n){var a=m(n,e,!1);a.language=n,a.relevance>r.relevance&&(r=a),a.relevance>t.relevance&&(r=t,t=a)})),r.language&&(t.second_best=r),t}function x(e){return f.tabReplace||f.useBR?e.replace(c,e=>"\n"===e?f.useBR?"
    ":e:f.tabReplace?e.replace(/\t/g,f.tabReplace):e):e}function E(e){let n=null;const t=function(e){var n=e.className+" ";n+=e.parentNode?e.parentNode.className:"";const t=f.languageDetectRe.exec(n);if(t){var r=T(t[1]);return r||(console.warn(g.replace("{}",t[1])),console.warn("Falling back to no-highlight mode for this block.",e)),r?t[1]:"no-highlight"}return n.split(/\s+/).find(e=>p(e)||T(e))}(e);if(p(t))return;S("before:highlightBlock",{block:e,language:t}),f.useBR?(n=document.createElement("div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n"):n=e;const r=n.textContent,a=t?b(t,r,!0):v(r),i=k(n);if(i.length){const e=document.createElement("div");e.innerHTML=a.value,a.value=O(i,k(e),r)}a.value=x(a.value),S("after:highlightBlock",{block:e,result:a}),e.innerHTML=a.value,e.className=function(e,n,t){var r=n?s[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),e.includes(r)||a.push(r),a.join(" ").trim()}(e.className,t,a.language),e.result={language:a.language,re:a.relevance,relavance:a.relevance},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.relevance,relavance:a.second_best.relevance})}const N=()=>{if(!N.called){N.called=!0;var e=document.querySelectorAll("pre code");a.forEach.call(e,E)}};function T(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]}function A(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach(e=>{s[e]=n})}function I(e){var n=T(e);return n&&!n.disableAutodetect}function S(e,n){var t=e;o.forEach((function(e){e[t]&&e[t](n)}))}Object.assign(t,{highlight:b,highlightAuto:v,fixMarkup:x,highlightBlock:E,configure:function(e){f=y(f,e)},initHighlighting:N,initHighlightingOnLoad:function(){window.addEventListener("DOMContentLoaded",N,!1)},registerLanguage:function(e,n){var r=null;try{r=n(t)}catch(n){if(console.error("Language definition for '{}' could not be registered.".replace("{}",e)),!l)throw n;console.error(n),r=h}r.name||(r.name=e),i[e]=r,r.rawDefinition=n.bind(null,t),r.aliases&&A(r.aliases,{languageName:e})},listLanguages:function(){return Object.keys(i)},getLanguage:T,registerAliases:A,requireLanguage:function(e){var n=T(e);if(n)return n;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))},autoDetection:I,inherit:y,addPlugin:function(e){o.push(e)}}),t.debugMode=function(){l=!1},t.safeMode=function(){l=!0},t.versionString="10.1.1";for(const n in _)"object"==typeof _[n]&&e(_[n]);return Object.assign(t,_),t}({})}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);hljs.registerLanguage("php",function(){"use strict";return function(e){var r={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},t={className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{begin:/\?>/}]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},i={keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list new object or private protected public real return string switch throw trait try unset use var void while xor yield",literal:"false null true",built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Throwable Traversable WeakReference Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass"};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:i,contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler"}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},t,{className:"keyword",begin:/\$this\b/},r,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:i,contains:["self",r,e.C_BLOCK_COMMENT_MODE,a,n]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},a,n]}}}());hljs.registerLanguage("nginx",function(){"use strict";return function(e){var n={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{/,end:/}/},{begin:"[\\$\\@]"+e.UNDERSCORE_IDENT_RE}]},a={endsWithParent:!0,keywords:{$pattern:"[a-z/_]+",literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[n]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:"\\s\\^",end:"\\s|{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},n]};return{name:"Nginx config",aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE+"\\s+{",returnBegin:!0,end:"{",contains:[{className:"section",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{begin:e.UNDERSCORE_IDENT_RE+"\\s",end:";|{",returnBegin:!0,contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:a}],relevance:0}],illegal:"[^\\s\\}]"}}}());hljs.registerLanguage("csharp",function(){"use strict";return function(e){var n={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},i=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},s={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},t=e.inherit(s,{illegal:/\n/}),l={className:"subst",begin:"{",end:"}",keywords:n},r=e.inherit(l,{illegal:/\n/}),c={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,r]},o={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},l]},g=e.inherit(o,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]});l.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],r.contains=[g,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var d={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},i]},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",b={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},d,a,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},i,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+_+"\\s+)+"+e.IDENT_RE+"\\s*(\\<.+\\>)?\\s*\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{begin:e.IDENT_RE+"\\s*(\\<.+\\>)?\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE,E],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,contains:[d,a,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}}());hljs.registerLanguage("perl",function(){"use strict";return function(e){var n={$pattern:/[\w.]+/,keyword:"getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qq fileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmget sub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedir ioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when"},t={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:n},s={begin:"->{",end:"}"},r={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},i=[e.BACKSLASH_ESCAPE,t,r],a=[r,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),s,{className:"string",contains:i,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return t.contains=a,s.contains=a,{name:"Perl",aliases:["pl","pm"],keywords:n,contains:a}}}());hljs.registerLanguage("swift",function(){"use strict";return function(e){var i={keyword:"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c compactMap contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),t={className:"subst",begin:/\\\(/,end:"\\)",keywords:i,contains:[]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}]},r={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0};return t.contains=[r],{name:"Swift",keywords:i,contains:[a,e.C_LINE_COMMENT_MODE,n,{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*[!?]"},{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},r,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:i,contains:["self",r,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:i,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)\\b"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,n]}]}}}());hljs.registerLanguage("makefile",function(){"use strict";return function(e){var i={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:"",relevance:10,contains:[a,i,t,s,{begin:"\\[",end:"\\]",contains:[{className:"meta",begin:"",contains:[a,s,i,t]}]}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},n,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:")",end:">",keywords:{name:"style"},contains:[c],starts:{end:"",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:")",end:">",keywords:{name:"script"},contains:[c],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:"",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},c]}]}}}());hljs.registerLanguage("bash",function(){"use strict";return function(e){const s={};Object.assign(s,{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{/,end:/\}/,contains:[{begin:/:-/,contains:[s]}]}]});const t={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,t]};t.contains.push(n);const a={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,s]},i=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10}),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b-?[a-z\._]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[i,e.SHEBANG(),c,a,e.HASH_COMMENT_MODE,n,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},s]}}}());hljs.registerLanguage("c-like",function(){"use strict";return function(e){function t(e){return"(?:"+e+")?"}var n="(decltype\\(auto\\)|"+t("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+t("<.*?>")+")",r={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},a={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},i={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},s={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(a,{className:"meta-string"}),{className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},o={className:"title",begin:t("[a-zA-Z_]\\w*::")+e.IDENT_RE,relevance:0},c=t("[a-zA-Z_]\\w*::")+e.IDENT_RE+"\\s*\\(",l={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary",literal:"true false nullptr NULL"},d=[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,a],_={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:l,contains:d.concat([{begin:/\(/,end:/\)/,keywords:l,contains:d.concat(["self"]),relevance:0}]),relevance:0},u={className:"function",begin:"("+n+"[\\*&\\s]+)+"+c,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:l,illegal:/[^\w\s\*&:<>]/,contains:[{begin:"decltype\\(auto\\)",keywords:l,relevance:0},{begin:c,returnBegin:!0,contains:[o],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,i,r,{begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,i,r]}]},r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s]};return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:l,disableAutodetect:!0,illegal:"",keywords:l,contains:["self",r]},{begin:e.IDENT_RE+"::",keywords:l},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin://,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:s,strings:a,keywords:l}}}}());hljs.registerLanguage("coffeescript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);return function(r){var t={keyword:e.concat(["then","unless","until","loop","by","when","and","or","is","isnt","not"]).filter((e=>n=>!e.includes(n))(["var","const","let","function","static"])).join(" "),literal:n.concat(["yes","no","on","off"]).join(" "),built_in:a.concat(["npm","print"]).join(" ")},i="[A-Za-z$_][0-9A-Za-z$_]*",s={className:"subst",begin:/#\{/,end:/}/,keywords:t},o=[r.BINARY_NUMBER_MODE,r.inherit(r.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[r.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[r.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[r.BACKSLASH_ESCAPE,s]},{begin:/"/,end:/"/,contains:[r.BACKSLASH_ESCAPE,s]}]},{className:"regexp",variants:[{begin:"///",end:"///",contains:[s,r.HASH_COMMENT_MODE]},{begin:"//[gim]{0,3}(?=\\W)",relevance:0},{begin:/\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/}]},{begin:"@"+i},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{begin:"```",end:"```"},{begin:"`",end:"`"}]}];s.contains=o;var c=r.inherit(r.TITLE_MODE,{begin:i}),l={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(o)}]};return{name:"CoffeeScript",aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/,contains:o.concat([r.COMMENT("###","###"),r.HASH_COMMENT_MODE,{className:"function",begin:"^\\s*"+i+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[c,l]},{begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[l]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[c]},c]},{begin:i+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}}());hljs.registerLanguage("ruby",function(){"use strict";return function(e){var n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",a={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},s={className:"doctag",begin:"@[A-Za-z]+"},i={begin:"#<",end:">"},r=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^\\=begin","^\\=end",{contains:[s],relevance:10}),e.COMMENT("^__END__","\\n$")],c={className:"subst",begin:"#\\{",end:"}",keywords:a},t={className:"string",contains:[e.BACKSLASH_ESCAPE,c],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,c]})]}]},b={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:a},d=[t,i,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(r)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:n}),b].concat(r)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[t,{begin:n}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[i,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(r),relevance:0}].concat(r);c.contains=d,b.contains=d;var g=[{begin:/^\s*=>/,starts:{end:"$",contains:d}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:d}}];return{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:r.concat(g).concat(d)}}}());hljs.registerLanguage("yaml",function(){"use strict";return function(e){var n="true false yes no null",a="[\\w#;/?:@&=+$,.~*\\'()[\\]]+",s={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]},i=e.inherit(s,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l={end:",",endsWithParent:!0,excludeEnd:!0,contains:[],keywords:n,relevance:0},t={begin:"{",end:"}",contains:[l],illegal:"\\n",relevance:0},g={begin:"\\[",end:"\\]",contains:[l],illegal:"\\n",relevance:0},b=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type",begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"\\-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},{className:"number",begin:e.C_NUMBER_RE+"\\b"},t,g,s],c=[...b];return c.pop(),c.push(i),l.contains=c,{name:"YAML",case_insensitive:!0,aliases:["yml","YAML"],contains:b}}}());hljs.registerLanguage("d",function(){"use strict";return function(e){var a={$pattern:e.UNDERSCORE_IDENT_RE,keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},d="((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))",n="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",t={className:"number",begin:"\\b"+d+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},_={className:"number",begin:"\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|"+d+"(i|[fF]i|Li))",relevance:0},r={className:"string",begin:"'("+n+"|.)",end:"'",illegal:"."},i={className:"string",begin:'"',contains:[{begin:n,relevance:0}],end:'"[cwd]?'},s=e.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{name:"D",keywords:a,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},i,{className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},{className:"string",begin:"`",end:"`[cwd]?"},{className:"string",begin:'q"\\{',end:'\\}"'},_,t,r,{className:"meta",begin:"^#!",end:"$",relevance:5},{className:"meta",begin:"#(line)",end:"$",relevance:5},{className:"keyword",begin:"@[a-zA-Z_][a-zA-Z_\\d]*"}]}}}());hljs.registerLanguage("properties",function(){"use strict";return function(e){var n="[ \\t\\f]*",t="("+n+"[:=]"+n+"|[ \\t\\f]+)",a="([^\\\\:= \\t\\f\\n]|\\\\.)+",s={end:t,relevance:0,starts:{className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\n"}]}};return{name:".properties",case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT("^\\s*[!#]","$"),{begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+"+t,returnBegin:!0,contains:[{className:"attr",begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",endsParent:!0,relevance:0}],starts:s},{begin:a+t,returnBegin:!0,relevance:0,contains:[{className:"meta",begin:a,endsParent:!0,relevance:0}],starts:s},{className:"attr",relevance:0,begin:a+n+"$"}]}}}());hljs.registerLanguage("http",function(){"use strict";return function(e){var n="HTTP/[0-9\\.]+";return{name:"HTTP",aliases:["https"],illegal:"\\S",contains:[{begin:"^"+n,end:"$",contains:[{className:"number",begin:"\\b\\d{3}\\b"}]},{begin:"^[A-Z]+ (.*?) "+n+"$",returnBegin:!0,end:"$",contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{begin:n},{className:"keyword",begin:"[A-Z]+"}]},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,illegal:"\\n|\\s|=",starts:{end:"$",relevance:0}},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}]}}}());hljs.registerLanguage("haskell",function(){"use strict";return function(e){var n={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},i={className:"meta",begin:"{-#",end:"#-}"},a={className:"meta",begin:"^#",end:"$"},s={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},l={begin:"\\(",end:"\\)",illegal:'"',contains:[i,a,{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{begin:"[_a-z][\\w']*"}),n]};return{name:"Haskell",aliases:["hs"],keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",contains:[{beginKeywords:"module",end:"where",keywords:"module where",contains:[l,n],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$",keywords:"import qualified as hiding",contains:[l,n],illegal:"\\W\\.|;"},{className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where",keywords:"class family instance where",contains:[s,l,n]},{className:"class",begin:"\\b(data|(new)?type)\\b",end:"$",keywords:"data family type newtype deriving",contains:[i,s,l,{begin:"{",end:"}",contains:l.contains},n]},{beginKeywords:"default",end:"$",contains:[s,l,n]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,n]},{begin:"\\bforeign\\b",end:"$",keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",contains:[s,e.QUOTE_STRING_MODE,n]},{className:"meta",begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$"},i,a,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,s,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),n,{begin:"->|<-"}]}}}());hljs.registerLanguage("handlebars",function(){"use strict";function e(...e){return e.map(e=>(function(e){return e?"string"==typeof e?e:e.source:null})(e)).join("")}return function(n){const a={"builtin-name":"action bindattr collection component concat debugger each each-in get hash if in input link-to loc log lookup mut outlet partial query-params render template textarea unbound unless view with yield"},t=/\[.*?\]/,s=/[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/,i=e("(",/'.*?'/,"|",/".*?"/,"|",t,"|",s,"|",/\.|\//,")+"),r=e("(",t,"|",s,")(?==)"),l={begin:i,lexemes:/[\w.\/]+/},c=n.inherit(l,{keywords:{literal:"true false undefined null"}}),o={begin:/\(/,end:/\)/},m={className:"attr",begin:r,relevance:0,starts:{begin:/=/,end:/=/,starts:{contains:[n.NUMBER_MODE,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,c,o]}}},d={contains:[n.NUMBER_MODE,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,{begin:/as\s+\|/,keywords:{keyword:"as"},end:/\|/,contains:[{begin:/\w+/}]},m,c,o],returnEnd:!0},g=n.inherit(l,{className:"name",keywords:a,starts:n.inherit(d,{end:/\)/})});o.contains=[g];const u=n.inherit(l,{keywords:a,className:"name",starts:n.inherit(d,{end:/}}/})}),b=n.inherit(l,{keywords:a,className:"name"}),h=n.inherit(l,{className:"name",keywords:a,starts:n.inherit(d,{end:/}}/})});return{name:"Handlebars",aliases:["hbs","html.hbs","html.handlebars","htmlbars"],case_insensitive:!0,subLanguage:"xml",contains:[{begin:/\\\{\{/,skip:!0},{begin:/\\\\(?=\{\{)/,skip:!0},n.COMMENT(/\{\{!--/,/--\}\}/),n.COMMENT(/\{\{!/,/\}\}/),{className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[u],starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[b]},{className:"template-tag",begin:/\{\{#/,end:/\}\}/,contains:[u]},{className:"template-tag",begin:/\{\{(?=else\}\})/,end:/\}\}/,keywords:"else"},{className:"template-tag",begin:/\{\{\//,end:/\}\}/,contains:[b]},{className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,contains:[h]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[h]}]}}}());hljs.registerLanguage("rust",function(){"use strict";return function(e){var n="([ui](8|16|32|64|128|size)|f(32|64))?",t="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",literal:"true false Some None Ok Err",built_in:t},illegal:""}]}}}());hljs.registerLanguage("cpp",function(){"use strict";return function(e){var t=e.getLanguage("c-like").rawDefinition();return t.disableAutodetect=!1,t.name="C++",t.aliases=["cc","c++","h++","hpp","hh","hxx","cxx"],t}}());hljs.registerLanguage("ini",function(){"use strict";function e(e){return e?"string"==typeof e?e:e.source:null}function n(...n){return n.map(n=>e(n)).join("")}return function(a){var s={className:"number",relevance:0,variants:[{begin:/([\+\-]+)?[\d]+_[\d_]+/},{begin:a.NUMBER_RE}]},i=a.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];var t={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)}/}]},r={className:"literal",begin:/\bon|off|true|false|yes|no\b/},l={className:"string",contains:[a.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,s,"self"],relevance:0},g="("+[/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/].map(n=>e(n)).join("|")+")";return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[i,{className:"section",begin:/\[+/,end:/\]+/},{begin:n(g,"(\\s*\\.\\s*",g,")*",n("(?=",/\s*=\s*[^#\s]/,")")),className:"attr",starts:{end:/$/,contains:[i,c,r,t,l,s]}}]}}}());hljs.registerLanguage("objectivec",function(){"use strict";return function(e){var n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n,keyword:"@interface @class @protocol @implementation"};return{name:"Objective-C",aliases:["mm","objc","obj-c"],keywords:{$pattern:n,keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+_.keyword.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:_,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}}());hljs.registerLanguage("apache",function(){"use strict";return function(e){var n={className:"number",begin:"\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?"};return{name:"Apache config",aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:"",contains:[n,{className:"number",begin:":\\d{1,5}"},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:"attribute",begin:/\w+/,relevance:0,keywords:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{end:/$/,relevance:0,keywords:{literal:"on off all deny allow"},contains:[{className:"meta",begin:"\\s\\[",end:"\\]$"},{className:"variable",begin:"[\\$%]\\{",end:"\\}",contains:["self",{className:"number",begin:"[\\$%]\\d+"}]},n,{className:"number",begin:"\\d+"},e.QUOTE_STRING_MODE]}}],illegal:/\S/}}}());hljs.registerLanguage("java",function(){"use strict";function e(e){return e?"string"==typeof e?e:e.source:null}function n(e){return a("(",e,")?")}function a(...n){return n.map(n=>e(n)).join("")}function s(...n){return"("+n.map(n=>e(n)).join("|")+")"}return function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",i={className:"meta",begin:"@[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},r=e=>a("[",e,"]+([",e,"_]*[",e,"]+)?"),c={className:"number",variants:[{begin:`\\b(0[bB]${r("01")})[lL]?`},{begin:`\\b(0${r("0-7")})[dDfFlL]?`},{begin:a(/\b0[xX]/,s(a(r("a-fA-F0-9"),/\./,r("a-fA-F0-9")),a(r("a-fA-F0-9"),/\.?/),a(/\./,r("a-fA-F0-9"))),/([pP][+-]?(\d+))?/,/[fFdDlL]?/)},{begin:a(/\b/,s(a(/\d*\./,r("\\d")),r("\\d")),/[eE][+-]?[\d]+[dDfF]?/)},{begin:a(/\b/,r(/\d/),n(/\.?/),n(r(/\d/)),/[dDfFlL]?/)}],relevance:0};return{name:"Java",aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},c,i]}}}());hljs.registerLanguage("x86asm",function(){"use strict";return function(s){return{name:"Intel x86 Assembly",case_insensitive:!0,keywords:{$pattern:"[.%]?"+s.IDENT_RE,keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},contains:[s.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},s.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{className:"meta",begin:/^\s*\.[\w_-]+/}]}}}());hljs.registerLanguage("kotlin",function(){"use strict";return function(e){var n={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},a={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},i={className:"subst",begin:"\\${",end:"}",contains:[e.C_NUMBER_MODE]},s={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},t={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[s,i]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,s,i]}]};i.contains.push(t);var r={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},l={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(t,{className:"meta-string"})]}]},c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),o={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},d=o;return d.variants[1].contains=[o],o.variants[1].contains=[d],{name:"Kotlin",aliases:["kt"],keywords:n,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},a,r,l,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:n,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[o,e.C_LINE_COMMENT_MODE,c],relevance:0},e.C_LINE_COMMENT_MODE,c,r,l,t,e.C_NUMBER_MODE]},c]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},r,l]},t,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},{className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0}]}}}());hljs.registerLanguage("armasm",function(){"use strict";return function(s){const e={variants:[s.COMMENT("^[ \\t]*(?=#)","$",{relevance:0,excludeBegin:!0}),s.COMMENT("[;@]","$",{relevance:0}),s.C_LINE_COMMENT_MODE,s.C_BLOCK_COMMENT_MODE]};return{name:"ARM Assembly",case_insensitive:!0,aliases:["arm"],keywords:{$pattern:"\\.?"+s.IDENT_RE,meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"},contains:[{className:"keyword",begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?(?=\\s)"},e,s.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"[=#]\\w+"}],relevance:0}]}}}());hljs.registerLanguage("go",function(){"use strict";return function(e){var n={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{name:"Go",aliases:["golang"],keywords:n,illegal:">>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:n,illegal:/#/},s={begin:/\{\{/,relevance:0},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,s,i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},l={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},t={className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:["self",a,l,r,e.HASH_COMMENT_MODE]}]};return i.contains=[r,l,a],{name:"Python",aliases:["py","gyp","ipython"],keywords:n,illegal:/(<\/|->|\?)|=>/,contains:[a,l,{beginKeywords:"if",relevance:0},r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,t,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}}());hljs.registerLanguage("shell",function(){"use strict";return function(s){return{name:"Shell Session",aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}}());hljs.registerLanguage("scala",function(){"use strict";return function(e){var n={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},a={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,n]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[n],relevance:10}]},s={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},t={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},i={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[s]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[s]},t]},l={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[t]};return{name:"Scala",keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},s,l,i,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}}());hljs.registerLanguage("julia",function(){"use strict";return function(e){var r="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",t={$pattern:r,keyword:"in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias ",literal:"true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ ",built_in:"ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool "},a={keywords:t,illegal:/<\//},n={className:"subst",begin:/\$\(/,end:/\)/,keywords:t},o={className:"variable",begin:"\\$"+r},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n,o],variants:[{begin:/\w*"""/,end:/"""\w*/,relevance:10},{begin:/\w*"/,end:/"\w*/}]},l={className:"string",contains:[e.BACKSLASH_ESCAPE,n,o],begin:"`",end:"`"},s={className:"meta",begin:"@"+r};return a.name="Julia",a.contains=[{className:"number",begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},i,l,s,{className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#",end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword",begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/}],n.contains=a.contains,a}}());hljs.registerLanguage("php-template",function(){"use strict";return function(n){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},n.inherit(n.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),n.inherit(n.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}}());hljs.registerLanguage("scss",function(){"use strict";return function(e){var t={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},i={className:"number",begin:"#[0-9A-Fa-f]+"};return e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"\\#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{className:"selector-attr",begin:"\\[",end:"\\]",illegal:"$"},{className:"selector-tag",begin:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{className:"selector-pseudo",begin:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{className:"selector-pseudo",begin:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{className:"attribute",begin:"\\b(src|z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",illegal:"[^\\s]"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[t,i,e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"meta",begin:"!important"}]},{begin:"@(page|font-face)",lexemes:"@[a-z-]+",keywords:"@page @font-face"},{begin:"@",end:"[{;]",returnBegin:!0,keywords:"and or not only",contains:[{begin:"@[a-z-]+",className:"keyword"},t,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,i,e.CSS_NUMBER_MODE]}]}}}());hljs.registerLanguage("r",function(){"use strict";return function(e){var n="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{name:"R",contains:[e.HASH_COMMENT_MODE,{begin:n,keywords:{$pattern:n,keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{begin:"`",end:"`",relevance:0},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]}]}}}());hljs.registerLanguage("sql",function(){"use strict";return function(e){var t=e.COMMENT("--","$");return{name:"SQL",case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",end:/;/,endsWithParent:!0,keywords:{$pattern:/[\w\.]+/,keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:"`",end:"`"},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]}}}());hljs.registerLanguage("c",function(){"use strict";return function(e){var n=e.getLanguage("c-like").rawDefinition();return n.name="C",n.aliases=["c","h"],n}}());hljs.registerLanguage("json",function(){"use strict";return function(n){var e={literal:"true false null"},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],t=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],a={end:",",endsWithParent:!0,excludeEnd:!0,contains:t,keywords:e},l={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(a,{begin:/:/})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(a)],illegal:"\\S"};return t.push(l,s),i.forEach((function(n){t.push(n)})),{name:"JSON",contains:t,keywords:e,illegal:"\\S"}}}());hljs.registerLanguage("python-repl",function(){"use strict";return function(n){return{aliases:["pycon"],contains:[{className:"meta",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}}());hljs.registerLanguage("markdown",function(){"use strict";return function(n){const e={begin:"<",end:">",subLanguage:"xml",relevance:0},a={begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},i={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},s={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};i.contains.push(s),s.contains.push(i);var c=[e,a];return i.contains=i.contains.concat(c),s.contains=s.contains.concat(c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:c=c.concat(i,s)},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:c}]}]},e,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:c,end:"$"},{className:"code",variants:[{begin:"(`{3,})(.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})(.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}}());hljs.registerLanguage("javascript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function s(e){return r("(?=",e,")")}function r(...e){return e.map(e=>(function(e){return e?"string"==typeof e?e:e.source:null})(e)).join("")}return function(t){var i="[A-Za-z$_][0-9A-Za-z$_]*",c={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/},o={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:e.join(" "),literal:n.join(" "),built_in:a.join(" ")},l={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:t.C_NUMBER_RE+"n?"}],relevance:0},E={className:"subst",begin:"\\$\\{",end:"\\}",keywords:o,contains:[]},d={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,E],subLanguage:"xml"}},g={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,E],subLanguage:"css"}},u={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,E]};E.contains=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,d,g,u,l,t.REGEXP_MODE];var b=E.contains.concat([{begin:/\(/,end:/\)/,contains:["self"].concat(E.contains,[t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE])},t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]),_={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:b};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:o,contains:[t.SHEBANG({binary:"node",relevance:5}),{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,d,g,u,t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,l,{begin:r(/[{,\n]\s*/,s(r(/(((\/\/.*)|(\/\*(.|\n)*\*\/))\s*)*/,i+"\\s*:"))),relevance:0,contains:[{className:"attr",begin:i+s("\\s*:"),relevance:0}]},{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.REGEXP_MODE,{className:"function",begin:"(\\([^(]*(\\([^(]*(\\([^(]*\\))?\\))?\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:b}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:"<>",end:""},{begin:c.begin,end:c.end}],subLanguage:"xml",contains:[{begin:c.begin,end:c.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[t.inherit(t.TITLE_MODE,{begin:i}),_],illegal:/\[|%/},{begin:/\$[(.]/},t.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0},{begin:"(get|set)\\s+(?="+i+"\\()",end:/{/,keywords:"get set",contains:[t.inherit(t.TITLE_MODE,{begin:i}),{begin:/\(\)/},_]}],illegal:/#(?!!)/}}}());hljs.registerLanguage("typescript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);return function(r){var t={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:e.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]).join(" "),literal:n.join(" "),built_in:a.concat(["any","void","number","boolean","string","object","never","enum"]).join(" ")},s={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:r.C_NUMBER_RE+"n?"}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:t,contains:[]},c={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[r.BACKSLASH_ESCAPE,o],subLanguage:"xml"}},l={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[r.BACKSLASH_ESCAPE,o],subLanguage:"css"}},E={className:"string",begin:"`",end:"`",contains:[r.BACKSLASH_ESCAPE,o]};o.contains=[r.APOS_STRING_MODE,r.QUOTE_STRING_MODE,c,l,E,i,r.REGEXP_MODE];var d={begin:"\\(",end:/\)/,keywords:t,contains:["self",r.QUOTE_STRING_MODE,r.APOS_STRING_MODE,r.NUMBER_MODE]},u={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,s,d]};return{name:"TypeScript",aliases:["ts"],keywords:t,contains:[r.SHEBANG(),{className:"meta",begin:/^\s*['"]use strict['"]/},r.APOS_STRING_MODE,r.QUOTE_STRING_MODE,c,l,E,r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,i,{begin:"("+r.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,r.REGEXP_MODE,{className:"function",begin:"(\\([^(]*(\\([^(]*(\\([^(]*\\))?\\))?\\)|"+r.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:r.UNDERSCORE_IDENT_RE},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:d.contains}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[\{;]/,excludeEnd:!0,keywords:t,contains:["self",r.inherit(r.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*"}),u],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/[\{;]/,excludeEnd:!0,contains:["self",u]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+r.IDENT_RE,relevance:0},s,d]}}}());hljs.registerLanguage("plaintext",function(){"use strict";return function(t){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}}());hljs.registerLanguage("less",function(){"use strict";return function(e){var n="([\\w-]+|@{[\\w-]+})",a=[],s=[],t=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},r=function(e,n,a){return{className:e,begin:n,relevance:a}},i={begin:"\\(",end:"\\)",contains:s,relevance:0};s.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t("'"),t('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},r("number","#[0-9A-Fa-f]+\\b"),i,r("variable","@@?[\\w-]+",10),r("variable","@{[\\w-]+}"),r("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},{className:"meta",begin:"!important"});var c=s.concat({begin:"{",end:"}",contains:a}),l={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(s)},o={begin:n+"\\s*:",returnBegin:!0,end:"[;}]",relevance:0,contains:[{className:"attribute",begin:n,end:":",excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:s}}]},g={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",returnEnd:!0,contains:s,relevance:0}},d={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:c}},b={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:n,end:"{"}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,r("keyword","all\\b"),r("variable","@{[\\w-]+}"),r("selector-tag",n+"%?",0),r("selector-id","#"+n),r("selector-class","\\."+n,0),r("selector-tag","&",0),{className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"\\(",end:"\\)",contains:c},{begin:"!important"}]};return a.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,g,d,o,b),{name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:a}}}());hljs.registerLanguage("lua",function(){"use strict";return function(e){var t={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},a=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[t],relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:a.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:a}].concat(a)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[t],relevance:5}])}}}()); diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..a9b8745b --- /dev/null +++ b/docs/index.html @@ -0,0 +1,256 @@ + + + + + + 👋🏽 Welcome - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + + + + + + + +
    +
    +

    👋🏽 Welcome

    +

    Welcome to the wg-async-foundations website!

    +

    Leads

    +

    The leads of this working group are @tmandry and @nikomatsakis. Both of them can be found on Zulip.

    +

    Getting involved

    +

    There is a weekly triage meeting that takes place in our Zulip stream. Feel free to stop by then (or any time!) to introduce yourself.

    +

    If you're interested in fixing bugs, though, there is no need to wait for the meeting! Take a look at the instructions here.

    +

    What is the goal of this working group?

    +

    This working group is focused around implementation/design of the “foundations” for Async I/O. This means that we are focused on designing and implementing extensions to the language, standard library, and other "core" bits of support offered by the Rust organization. We do not directly work on external projects like tokio, async-std, smol, embassy and so forth, although we definitely discuss ideas and coordinate with them where appropriate.

    +

    Zulip

    +

    We hold discussions on the #wg-async-foundations stream in Zulip

    +

    License

    +

    Licensed under either of

    +
      +
    • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
    • +
    • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
    • +
    +

    at your option.

    +

    Contribution

    +

    Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in this crate by you, as defined in the Apache-2.0 license, shall +be dual licensed as above, without any additional terms or conditions.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/mark.min.js b/docs/mark.min.js new file mode 100644 index 00000000..16362318 --- /dev/null +++ b/docs/mark.min.js @@ -0,0 +1,7 @@ +/*!*************************************************** +* mark.js v8.11.1 +* https://markjs.io/ +* Copyright (c) 2014–2018, Julian Kühnel +* Released under the MIT license https://git.io/vwTVl +*****************************************************/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Mark=t()}(this,function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=i,this.iframesTimeout=o}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach(function(t){var n=e.filter(function(e){return e.contains(t)}).length>0;-1!==e.indexOf(t)||n||e.push(t)}),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var i=e.contentWindow;if(r=i.document,!i||!r)throw new Error("iframe inaccessible")}catch(e){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,i=!1,o=null,a=function a(){if(!i){i=!0,clearTimeout(o);try{r.isIframeBlank(e)||(e.removeEventListener("load",a),r.getIframeContents(e,t,n))}catch(e){n()}}};e.addEventListener("load",a),o=setTimeout(a,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(e){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,function(){return!0},function(e){r++,n.waitForIframes(e.querySelector("html"),function(){--r||t()})},function(e){e||t()})}},{key:"forEachIframe",value:function(t,n,r){var i=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=t.querySelectorAll("iframe"),s=a.length,c=0;a=Array.prototype.slice.call(a);var u=function(){--s<=0&&o(c)};s||u(),a.forEach(function(t){e.matches(t,i.exclude)?u():i.onIframeReady(t,function(e){n(t)&&(c++,r(e)),u()},u)})}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:null===t?e.nextNode():e.nextNode()&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var i=!1,o=!1;return r.forEach(function(e,t){e.val===n&&(i=t,o=e.handled)}),this.compareNodeIframe(e,t,n)?(!1!==i||o?!1===i||o||(r[i].handled=!0):r.push({val:n,handled:!0}),!0):(!1===i&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var i=this;e.forEach(function(e){e.handled||i.getIframeContents(e.val,function(e){i.createInstanceOnIframe(e).forEachNode(t,n,r)})})}},{key:"iterateThroughNodes",value:function(e,t,n,r,i){for(var o,a=this,s=this.createIterator(t,e,r),c=[],u=[],l=void 0,h=void 0;void 0,o=a.getIteratorNode(s),h=o.prevNode,l=o.node;)this.iframes&&this.forEachIframe(t,function(e){return a.checkIframeFilter(l,h,e,c)},function(t){a.createInstanceOnIframe(t).forEachNode(e,function(e){return u.push(e)},r)}),u.push(l);u.forEach(function(e){n(e)}),this.iframes&&this.handleOpenIframes(c,e,n,r),i()}},{key:"forEachNode",value:function(e,t,n){var r=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=this.getContexts(),a=o.length;a||i(),o.forEach(function(o){var s=function(){r.iterateThroughNodes(e,o,t,n,function(){--a<=0&&i()})};r.iframes?r.waitForIframes(o,s):s()})}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var i=!1;return n.every(function(t){return!r.call(e,t)||(i=!0,!1)}),i}return!1}}]),e}(),o=function(){function e(n){t(this,e),this.opt=r({},{diacritics:!0,synonyms:{},accuracy:"partially",caseSensitive:!1,ignoreJoiners:!1,ignorePunctuation:[],wildcards:"disabled"},n)}return n(e,[{key:"create",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),new RegExp(e,"gm"+(this.opt.caseSensitive?"":"i"))}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var i in t)if(t.hasOwnProperty(i)){var o=t[i],a="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(i):this.escapeStr(i),s="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);""!==a&&""!==s&&(e=e.replace(new RegExp("("+this.escapeStr(a)+"|"+this.escapeStr(s)+")","gm"+n),r+"("+this.processSynonyms(a)+"|"+this.processSynonyms(s)+")"+r))}return e}},{key:"processSynonyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,function(e){return"\\"===e.charAt(0)?"?":""})).replace(/(?:\\)*\*/g,function(e){return"\\"===e.charAt(0)?"*":""})}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"})}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"],r=[];return e.split("").forEach(function(i){n.every(function(n){if(-1!==n.indexOf(i)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0})}),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n=this.opt.accuracy,r="string"==typeof n?n:n.value,i="";switch(("string"==typeof n?[]:n.limiters).forEach(function(e){i+="|"+t.escapeStr(e)}),r){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿")))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}}]),e}(),a=function(){function a(e){t(this,a),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(a,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach(function(e){t.opt.separateWordSearch?e.split(" ").forEach(function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)}):e.trim()&&-1===n.indexOf(e)&&n.push(e)}),{keywords:n.sort(function(e,t){return t.length-e.length}),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort(function(e,t){return e.start-t.start}).forEach(function(e){var i=t.callNoMatchOnInvalidRanges(e,r),o=i.start,a=i.end;i.valid&&(e.start=o,e.length=a-o,n.push(e),r=a)}),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,i=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?i=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:i}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,i=!0,o=n.length,a=t-o,s=parseInt(e.start,10)-a;return(r=(s=s>o?o:s)+parseInt(e.length,10))>o&&(r=o,this.log("End range automatically set to the max value of "+o)),s<0||r-s<0||s>o||r>o?(i=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(s,r).replace(/\s+/g,"")&&(i=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:s,end:r,valid:i}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})},function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){e({value:n,nodes:r})})}},{key:"matchesExclude",value:function(e){return i.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",i=e.splitText(t),o=i.splitText(n-t),a=document.createElement(r);return a.setAttribute("data-markjs","true"),this.opt.className&&a.setAttribute("class",this.opt.className),a.textContent=i.textContent,i.parentNode.replaceChild(a,i),o}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,i){var o=this;e.nodes.every(function(a,s){var c=e.nodes[s+1];if(void 0===c||c.start>t){if(!r(a.node))return!1;var u=t-a.start,l=(n>a.end?a.end:n)-a.start,h=e.value.substr(0,a.start),f=e.value.substr(l+a.start);if(a.node=o.wrapRangeInTextNode(a.node,u,l),e.value=h+f,e.nodes.forEach(function(t,n){n>=s&&(e.nodes[n].start>0&&n!==s&&(e.nodes[n].start-=l),e.nodes[n].end-=l)}),n-=l,i(a.node.previousSibling,a.start),!(n>a.end))return!1;t=a.end}return!0})}},{key:"wrapGroups",value:function(e,t,n,r){return r((e=this.wrapRangeInTextNode(e,t,t+n)).previousSibling),e}},{key:"separateGroups",value:function(e,t,n,r,i){for(var o=t.length,a=1;a-1&&r(t[a],e)&&(e=this.wrapGroups(e,s,t[a].length,i))}return e}},{key:"wrapMatches",value:function(e,t,n,r,i){var o=this,a=0===t?0:t+1;this.getTextNodes(function(t){t.nodes.forEach(function(t){t=t.node;for(var i=void 0;null!==(i=e.exec(t.textContent))&&""!==i[a];){if(o.opt.separateGroups)t=o.separateGroups(t,i,a,n,r);else{if(!n(i[a],t))continue;var s=i.index;if(0!==a)for(var c=1;ce?1:t>=e?0:NaN},i=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return r(e(t),n)}),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r>>1;t(e[a],n)<0?r=a+1:i=a}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r>>1;t(e[a],n)>0?i=a:r=a+1}return r}}};var a=i(r),o=a.right,s=a.left,c=o,u=function(t,e){null==e&&(e=l);for(var n=0,r=t.length-1,i=t[0],a=new Array(r<0?0:r);nt?1:e>=t?0:NaN},d=function(t){return null===t?NaN:+t},p=function(t,e){var n,r,i=t.length,a=0,o=-1,s=0,c=0;if(null==e)for(;++o1)return c/(a-1)},g=function(t,e){var n=p(t,e);return n?Math.sqrt(n):n},y=function(t,e){var n,r,i,a=t.length,o=-1;if(null==e){for(;++o=n)for(r=i=n;++on&&(r=n),i=n)for(r=i=n;++on&&(r=n),i0)return[t];if((r=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s=0?(a>=w?10:a>=E?5:a>=T?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=w?10:a>=E?5:a>=T?2:1)}function S(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=w?i*=10:a>=E?i*=5:a>=T&&(i*=2),eh;)f.pop(),--d;var p,g=new Array(d+1);for(i=0;i<=d;++i)(p=g[i]=[]).x0=i>0?f[i-1]:l,p.x1=i=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,a=Math.floor(i),o=+n(t[a],a,t);return o+(+n(t[a+1],a+1,t)-o)*(i-a)}},N=function(t,e,n){return t=b.call(t,d).sort(r),Math.ceil((n-e)/(2*(D(t,.75)-D(t,.25))*Math.pow(t.length,-1/3)))},B=function(t,e,n){return Math.ceil((n-e)/(3.5*g(t)*Math.pow(t.length,-1/3)))},L=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a=n)for(r=n;++ar&&(r=n)}else for(;++a=n)for(r=n;++ar&&(r=n);return r},F=function(t,e){var n,r=t.length,i=r,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(r=t[i]).length;--e>=0;)n[--o]=r[e];return n},j=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a=n)for(r=n;++an&&(r=n)}else for(;++a=n)for(r=n;++an&&(r=n);return r},R=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]];return r},Y=function(t,e){if(n=t.length){var n,i,a=0,o=0,s=t[o];for(null==e&&(e=r);++a=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function ct(t,e){for(var n,r=0,i=t.length;r0)for(var n,r,i=new Array(n),a=0;ae?1:t>=e?0:NaN}var _t="http://www.w3.org/1999/xhtml",kt={svg:"http://www.w3.org/2000/svg",xhtml:_t,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},wt=function(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),kt.hasOwnProperty(e)?{space:kt[e],local:t}:t};function Et(t){return function(){this.removeAttribute(t)}}function Tt(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ct(t,e){return function(){this.setAttribute(t,e)}}function At(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function St(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function Mt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}var Ot=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};function Dt(t){return function(){this.style.removeProperty(t)}}function Nt(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Bt(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Lt(t,e){return t.style.getPropertyValue(e)||Ot(t).getComputedStyle(t,null).getPropertyValue(e)}function Ft(t){return function(){delete this[t]}}function Pt(t,e){return function(){this[t]=e}}function It(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function jt(t){return t.trim().split(/^|\s+/)}function Rt(t){return t.classList||new Yt(t)}function Yt(t){this._node=t,this._names=jt(t.getAttribute("class")||"")}function zt(t,e){for(var n=Rt(t),r=-1,i=e.length;++r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Vt(){this.textContent=""}function Gt(t){return function(){this.textContent=t}}function qt(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function Xt(){this.innerHTML=""}function Zt(t){return function(){this.innerHTML=t}}function Jt(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function Kt(){this.nextSibling&&this.parentNode.appendChild(this)}function Qt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function te(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===_t&&e.documentElement.namespaceURI===_t?e.createElement(t):e.createElementNS(n,t)}}function ee(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}var ne=function(t){var e=wt(t);return(e.local?ee:te)(e)};function re(){return null}function ie(){var t=this.parentNode;t&&t.removeChild(this)}function ae(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function oe(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}var se={},ce=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(se={mouseenter:"mouseover",mouseleave:"mouseout"}));function ue(t,e,n){return t=le(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function le(t,e,n){return function(r){var i=ce;ce=r;try{t.call(this,this.__data__,e,n)}finally{ce=i}}}function he(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function fe(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r=_&&(_=x+1);!(b=v[_])&&++_=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=xt);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a1?this.each((null==e?Dt:"function"==typeof e?Bt:Nt)(t,e,null==n?"":n)):Lt(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?Ft:"function"==typeof e?It:Pt)(t,e)):this.node()[t]},classed:function(t,e){var n=jt(t+"");if(arguments.length<2){for(var r=Rt(this.node()),i=-1,a=n.length;++i>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?new qe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?new qe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Le.exec(t))?new qe(e[1],e[2],e[3],1):(e=Fe.exec(t))?new qe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Pe.exec(t))?He(e[1],e[2],e[3],e[4]):(e=Ie.exec(t))?He(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=je.exec(t))?Ke(e[1],e[2]/100,e[3]/100,1):(e=Re.exec(t))?Ke(e[1],e[2]/100,e[3]/100,e[4]):Ye.hasOwnProperty(t)?We(Ye[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function We(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function He(t,e,n,r){return r<=0&&(t=e=n=NaN),new qe(t,e,n,r)}function Ve(t){return t instanceof Me||(t=$e(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function Ge(t,e,n,r){return 1===arguments.length?Ve(t):new qe(t,e,n,null==r?1:r)}function qe(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function Xe(){return"#"+Je(this.r)+Je(this.g)+Je(this.b)}function Ze(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Je(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Ke(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new en(t,e,n,r)}function Qe(t){if(t instanceof en)return new en(t.h,t.s,t.l,t.opacity);if(t instanceof Me||(t=$e(t)),!t)return new en;if(t instanceof en)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n0&&c<1?0:o,new en(o,s,c,t.opacity)}function tn(t,e,n,r){return 1===arguments.length?Qe(t):new en(t,e,n,null==r?1:r)}function en(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function nn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function rn(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}Ae(Me,$e,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:ze,formatHex:ze,formatHsl:function(){return Qe(this).formatHsl()},formatRgb:Ue,toString:Ue}),Ae(qe,Ge,Se(Me,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Xe,formatHex:Xe,formatRgb:Ze,toString:Ze})),Ae(en,tn,Se(Me,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new en(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new en(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new qe(nn(t>=240?t-240:t+120,i,r),nn(t,i,r),nn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var an=function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=r180||n<-180?n-360*Math.round(n/360):n):sn(isNaN(t)?e:t)}function ln(t){return 1==(t=+t)?hn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):sn(isNaN(e)?n:e)}}function hn(t,e){var n=e-t;return n?cn(t,n):sn(isNaN(t)?e:t)}var fn=function t(e){var n=ln(e);function r(t,e){var r=n((t=Ge(t)).r,(e=Ge(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=hn(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function dn(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;na&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,c.push({i:o,x:_n(n,r)})),a=En.lastIndex;return a=0&&e._call.call(null,t),e=e._next;--Bn}function Vn(){In=(Pn=Rn.now())+jn,Bn=Ln=0;try{Hn()}finally{Bn=0,function(){var t,e,n=Tn,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Tn=e);Cn=t,qn(r)}(),In=0}}function Gn(){var t=Rn.now(),e=t-Pn;e>1e3&&(jn-=e,Pn=t)}function qn(t){Bn||(Ln&&(Ln=clearTimeout(Ln)),t-In>24?(t<1/0&&(Ln=setTimeout(Vn,t-Rn.now()-jn)),Fn&&(Fn=clearInterval(Fn))):(Fn||(Pn=Rn.now(),Fn=setInterval(Gn,1e3)),Bn=1,Yn(Vn)))}$n.prototype=Wn.prototype={constructor:$n,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?zn():+n)+(null==e?0:+e),this._next||Cn===this||(Cn?Cn._next=this:Tn=this,Cn=this),this._call=t,this._time=n,qn()},stop:function(){this._call&&(this._call=null,this._time=1/0,qn())}};var Xn=function(t,e,n){var r=new $n;return e=null==e?0:+e,r.restart((function(n){r.stop(),t(n+e)}),e,n),r},Zn=lt("start","end","cancel","interrupt"),Jn=[],Kn=function(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(c){var u,l,h,f;if(1!==n.state)return s();for(u in i)if((f=i[u]).name===n.name){if(3===f.state)return Xn(a);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[u]):+u0)throw new Error("too late; already scheduled");return n}function tr(t,e){var n=er(t,e);if(n.state>3)throw new Error("too late; already running");return n}function er(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}var nr,rr,ir,ar,or=function(t,e){var n,r,i,a=t.__transition,o=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}},sr=180/Math.PI,cr={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},ur=function(t,e,n,r,i,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:_n(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,c),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:_n(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,c),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:_n(t,n)},{i:s-2,x:_n(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,c),a=o=null,function(t){for(var e,n=-1,r=c.length;++n=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Qn:tr;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var Br=_e.prototype.constructor;function Lr(t){return function(){this.style.removeProperty(t)}}function Fr(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function Pr(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&Fr(t,a,n)),r}return a._value=e,a}function Ir(t){return function(e){this.textContent=t.call(this,e)}}function jr(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&Ir(r)),e}return r._value=t,r}var Rr=0;function Yr(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function zr(t){return _e().transition(t)}function Ur(){return++Rr}var $r=_e.prototype;function Wr(t){return t*t*t}function Hr(t){return--t*t*t+1}function Vr(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}Yr.prototype=zr.prototype={constructor:Yr,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=ft(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o1&&n.name===e)return new Yr([[t]],Xr,e,+r);return null},Jr=function(t){return function(){return t}},Kr=function(t,e,n){this.target=t,this.type=e,this.selection=n};function Qr(){ce.stopImmediatePropagation()}var ti=function(){ce.preventDefault(),ce.stopImmediatePropagation()},ei={name:"drag"},ni={name:"space"},ri={name:"handle"},ii={name:"center"};function ai(t){return[+t[0],+t[1]]}function oi(t){return[ai(t[0]),ai(t[1])]}function si(t){return function(e){return Dn(e,ce.touches,t)}}var ci={name:"x",handles:["w","e"].map(yi),input:function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},ui={name:"y",handles:["n","s"].map(yi),input:function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},li={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(yi),input:function(t){return null==t?null:oi(t)},output:function(t){return t}},hi={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},fi={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},di={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},pi={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},gi={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function yi(t){return{type:t}}function vi(){return!ce.ctrlKey&&!ce.button}function mi(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function bi(){return navigator.maxTouchPoints||"ontouchstart"in this}function xi(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function _i(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function ki(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function wi(){return Ci(ci)}function Ei(){return Ci(ui)}var Ti=function(){return Ci(li)};function Ci(t){var e,n=mi,r=vi,i=bi,a=!0,o=lt("start","brush","end"),s=6;function c(e){var n=e.property("__brush",g).selectAll(".overlay").data([yi("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",hi.overlay).merge(n).each((function(){var t=xi(this).extent;ke(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),e.selectAll(".selection").data([yi("selection")]).enter().append("rect").attr("class","selection").attr("cursor",hi.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=e.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return hi[t.type]})),e.each(u).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",f).filter(i).on("touchstart.brush",f).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function u(){var t=ke(this),e=xi(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?e[1][0]-s/2:e[0][0]-s/2})).attr("y",(function(t){return"s"===t.type[0]?e[1][1]-s/2:e[0][1]-s/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+s:s})).attr("height",(function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+s:s}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function l(t,e,n){return!n&&t.__brush.emitter||new h(t,e)}function h(t,e){this.that=t,this.args=e,this.state=t.__brush,this.active=0}function f(){if((!e||ce.touches)&&r.apply(this,arguments)){var n,i,o,s,c,h,f,d,p,g,y,v=this,m=ce.target.__data__.type,b="selection"===(a&&ce.metaKey?m="overlay":m)?ei:a&&ce.altKey?ii:ri,x=t===ui?null:pi[m],_=t===ci?null:gi[m],k=xi(v),w=k.extent,E=k.selection,T=w[0][0],C=w[0][1],A=w[1][0],S=w[1][1],M=0,O=0,D=x&&_&&a&&ce.shiftKey,N=ce.touches?si(ce.changedTouches[0].identifier):Nn,B=N(v),L=B,F=l(v,arguments,!0).beforestart();"overlay"===m?(E&&(p=!0),k.selection=E=[[n=t===ui?T:B[0],o=t===ci?C:B[1]],[c=t===ui?A:n,f=t===ci?S:o]]):(n=E[0][0],o=E[0][1],c=E[1][0],f=E[1][1]),i=n,s=o,h=c,d=f;var P=ke(v).attr("pointer-events","none"),I=P.selectAll(".overlay").attr("cursor",hi[m]);if(ce.touches)F.moved=R,F.ended=z;else{var j=ke(ce.view).on("mousemove.brush",R,!0).on("mouseup.brush",z,!0);a&&j.on("keydown.brush",U,!0).on("keyup.brush",$,!0),Te(ce.view)}Qr(),or(v),u.call(v),F.start()}function R(){var t=N(v);!D||g||y||(Math.abs(t[0]-L[0])>Math.abs(t[1]-L[1])?y=!0:g=!0),L=t,p=!0,ti(),Y()}function Y(){var t;switch(M=L[0]-B[0],O=L[1]-B[1],b){case ni:case ei:x&&(M=Math.max(T-n,Math.min(A-c,M)),i=n+M,h=c+M),_&&(O=Math.max(C-o,Math.min(S-f,O)),s=o+O,d=f+O);break;case ri:x<0?(M=Math.max(T-n,Math.min(A-n,M)),i=n+M,h=c):x>0&&(M=Math.max(T-c,Math.min(A-c,M)),i=n,h=c+M),_<0?(O=Math.max(C-o,Math.min(S-o,O)),s=o+O,d=f):_>0&&(O=Math.max(C-f,Math.min(S-f,O)),s=o,d=f+O);break;case ii:x&&(i=Math.max(T,Math.min(A,n-M*x)),h=Math.max(T,Math.min(A,c+M*x))),_&&(s=Math.max(C,Math.min(S,o-O*_)),d=Math.max(C,Math.min(S,f+O*_)))}h0&&(n=i-M),_<0?f=d-O:_>0&&(o=s-O),b=ni,I.attr("cursor",hi.selection),Y());break;default:return}ti()}function $(){switch(ce.keyCode){case 16:D&&(g=y=D=!1,Y());break;case 18:b===ii&&(x<0?c=h:x>0&&(n=i),_<0?f=d:_>0&&(o=s),b=ri,Y());break;case 32:b===ni&&(ce.altKey?(x&&(c=h-M*x,n=i+M*x),_&&(f=d-O*_,o=s+O*_),b=ii):(x<0?c=h:x>0&&(n=i),_<0?f=d:_>0&&(o=s),b=ri),I.attr("cursor",hi[m]),Y());break;default:return}ti()}}function d(){l(this,arguments).moved()}function p(){l(this,arguments).ended()}function g(){var e=this.__brush||{selection:null};return e.extent=oi(n.apply(this,arguments)),e.dim=t,e}return c.move=function(e,n){e.selection?e.on("start.brush",(function(){l(this,arguments).beforestart().start()})).on("interrupt.brush end.brush",(function(){l(this,arguments).end()})).tween("brush",(function(){var e=this,r=e.__brush,i=l(e,arguments),a=r.selection,o=t.input("function"==typeof n?n.apply(this,arguments):n,r.extent),s=Sn(a,o);function c(t){r.selection=1===t&&null===o?null:s(t),u.call(e),i.brush()}return null!==a&&null!==o?c:c(1)})):e.each((function(){var e=this,r=arguments,i=e.__brush,a=t.input("function"==typeof n?n.apply(e,r):n,i.extent),o=l(e,r).beforestart();or(e),i.selection=null===a?null:a,u.call(e),o.start().brush().end()}))},c.clear=function(t){c.move(t,null)},h.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(e){pe(new Kr(c,e,t.output(this.state.selection)),o.apply,o,[e,this.that,this.args])}},c.extent=function(t){return arguments.length?(n="function"==typeof t?t:Jr(oi(t)),c):n},c.filter=function(t){return arguments.length?(r="function"==typeof t?t:Jr(!!t),c):r},c.touchable=function(t){return arguments.length?(i="function"==typeof t?t:Jr(!!t),c):i},c.handleSize=function(t){return arguments.length?(s=+t,c):s},c.keyModifiers=function(t){return arguments.length?(a=!!t,c):a},c.on=function(){var t=o.on.apply(o,arguments);return t===o?c:t},c}var Ai=Math.cos,Si=Math.sin,Mi=Math.PI,Oi=Mi/2,Di=2*Mi,Ni=Math.max;function Bi(t){return function(e,n){return t(e.source.value+e.target.value,n.source.value+n.target.value)}}var Li=function(){var t=0,e=null,n=null,r=null;function i(i){var a,o,s,c,u,l,h=i.length,f=[],d=k(h),p=[],g=[],y=g.groups=new Array(h),v=new Array(h*h);for(a=0,u=-1;++u1e-6)if(Math.abs(l*s-c*u)>1e-6&&i){var f=n-a,d=r-o,p=s*s+c*c,g=f*f+d*d,y=Math.sqrt(p),v=Math.sqrt(h),m=i*Math.tan((Ii-Math.acos((p+h-g)/(2*y*v)))/2),b=m/v,x=m/y;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*u)+","+(e+b*l)),this._+="A"+i+","+i+",0,0,"+ +(l*f>u*d)+","+(this._x1=t+x*s)+","+(this._y1=e+x*c)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,r,i,a){t=+t,e=+e,a=!!a;var o=(n=+n)*Math.cos(r),s=n*Math.sin(r),c=t+o,u=e+s,l=1^a,h=a?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+c+","+u:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-u)>1e-6)&&(this._+="L"+c+","+u),n&&(h<0&&(h=h%ji+ji),h>Ri?this._+="A"+n+","+n+",0,1,"+l+","+(t-o)+","+(e-s)+"A"+n+","+n+",0,1,"+l+","+(this._x1=c)+","+(this._y1=u):h>1e-6&&(this._+="A"+n+","+n+",0,"+ +(h>=Ii)+","+l+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var Ui=zi;function $i(t){return t.source}function Wi(t){return t.target}function Hi(t){return t.radius}function Vi(t){return t.startAngle}function Gi(t){return t.endAngle}var qi=function(){var t=$i,e=Wi,n=Hi,r=Vi,i=Gi,a=null;function o(){var o,s=Fi.call(arguments),c=t.apply(this,s),u=e.apply(this,s),l=+n.apply(this,(s[0]=c,s)),h=r.apply(this,s)-Oi,f=i.apply(this,s)-Oi,d=l*Ai(h),p=l*Si(h),g=+n.apply(this,(s[0]=u,s)),y=r.apply(this,s)-Oi,v=i.apply(this,s)-Oi;if(a||(a=o=Ui()),a.moveTo(d,p),a.arc(0,0,l,h,f),h===y&&f===v||(a.quadraticCurveTo(0,0,g*Ai(y),g*Si(y)),a.arc(0,0,g,y,v)),a.quadraticCurveTo(0,0,d,p),a.closePath(),o)return a=null,o+""||null}return o.radius=function(t){return arguments.length?(n="function"==typeof t?t:Pi(+t),o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:Pi(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:Pi(+t),o):i},o.source=function(e){return arguments.length?(t=e,o):t},o.target=function(t){return arguments.length?(e=t,o):e},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o};function Xi(){}function Zi(t,e){var n=new Xi;if(t instanceof Xi)t.each((function(t,e){n.set(e,t)}));else if(Array.isArray(t)){var r,i=-1,a=t.length;if(null==e)for(;++i=r.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var c,u,l,h=-1,f=n.length,d=r[i++],p=Ji(),g=o();++hr.length)return n;var o,s=i[a-1];return null!=e&&a>=r.length?o=n.entries():(o=[],n.each((function(e,n){o.push({key:n,values:t(e,a)})}))),null!=s?o.sort((function(t,e){return s(t.key,e.key)})):o}(a(t,0,ea,na),0)},key:function(t){return r.push(t),n},sortKeys:function(t){return i[r.length-1]=t,n},sortValues:function(e){return t=e,n},rollup:function(t){return e=t,n}}};function Qi(){return{}}function ta(t,e,n){t[e]=n}function ea(){return Ji()}function na(t,e,n){t.set(e,n)}function ra(){}var ia=Ji.prototype;function aa(t,e){var n=new ra;if(t instanceof ra)t.each((function(t){n.add(t)}));else if(t){var r=-1,i=t.length;if(null==e)for(;++r6/29*(6/29)*(6/29)?Math.pow(t,1/3):t/(6/29*3*(6/29))+4/29}function va(t){return t>6/29?t*t*t:6/29*3*(6/29)*(t-4/29)}function ma(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ba(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function xa(t){if(t instanceof wa)return new wa(t.h,t.c,t.l,t.opacity);if(t instanceof ga||(t=fa(t)),0===t.a&&0===t.b)return new wa(NaN,0r!=d>r&&n<(f-u)*(r-l)/(d-l)+u&&(i=-i)}return i}function Ia(t,e,n){var r,i,a,o;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[r=+(t[0]===e[0])],a=n[r],o=e[r],i<=a&&a<=o||o<=a&&a<=i)}var ja=function(){},Ra=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]],Ya=function(){var t=1,e=1,n=M,r=s;function i(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort(Ba);else{var r=y(t),i=r[0],o=r[1];e=S(i,o,e),e=k(Math.floor(i/e)*e,Math.floor(o/e)*e,e)}return e.map((function(e){return a(t,e)}))}function a(n,i){var a=[],s=[];return function(n,r,i){var a,s,c,u,l,h,f=new Array,d=new Array;a=s=-1,u=n[0]>=r,Ra[u<<1].forEach(p);for(;++a=r,Ra[c|u<<1].forEach(p);Ra[u<<0].forEach(p);for(;++s=r,l=n[s*t]>=r,Ra[u<<1|l<<2].forEach(p);++a=r,h=l,l=n[s*t+a+1]>=r,Ra[c|u<<1|l<<2|h<<3].forEach(p);Ra[u|l<<3].forEach(p)}a=-1,l=n[s*t]>=r,Ra[l<<2].forEach(p);for(;++a=r,Ra[l<<2|h<<3].forEach(p);function p(t){var e,n,r=[t[0][0]+a,t[0][1]+s],c=[t[1][0]+a,t[1][1]+s],u=o(r),l=o(c);(e=d[u])?(n=f[l])?(delete d[e.end],delete f[n.start],e===n?(e.ring.push(c),i(e.ring)):f[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete d[e.end],e.ring.push(c),d[e.end=l]=e):(e=f[l])?(n=d[u])?(delete f[e.start],delete d[n.end],e===n?(e.ring.push(c),i(e.ring)):f[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete f[e.start],e.ring.unshift(r),f[e.start=u]=e):f[u]=d[l]={start:u,end:l,ring:[r,c]}}Ra[l<<3].forEach(p)}(n,i,(function(t){r(t,n,i),function(t){for(var e=0,n=t.length,r=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];++e0?a.push([t]):s.push(t)})),s.forEach((function(t){for(var e,n=0,r=a.length;n0&&o0&&s0&&a>0))throw new Error("invalid size");return t=r,e=a,i},i.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?La(Na.call(t)):La(t),i):n},i.smooth=function(t){return arguments.length?(r=t?s:ja,i):r===s},i};function za(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o=n&&(s>=a&&(c-=t.data[s-a+o*r]),e.data[s-n+o*r]=c/Math.min(s+1,r-1+a-s,a))}function Ua(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o=n&&(s>=a&&(c-=t.data[o+(s-a)*r]),e.data[o+(s-n)*r]=c/Math.min(s+1,i-1+a-s,a))}function $a(t){return t[0]}function Wa(t){return t[1]}function Ha(){return 1}var Va=function(){var t=$a,e=Wa,n=Ha,r=960,i=500,a=20,o=2,s=3*a,c=r+2*s>>o,u=i+2*s>>o,l=La(20);function h(r){var i=new Float32Array(c*u),h=new Float32Array(c*u);r.forEach((function(r,a,l){var h=+t(r,a,l)+s>>o,f=+e(r,a,l)+s>>o,d=+n(r,a,l);h>=0&&h=0&&f>o),Ua({width:c,height:u,data:h},{width:c,height:u,data:i},a>>o),za({width:c,height:u,data:i},{width:c,height:u,data:h},a>>o),Ua({width:c,height:u,data:h},{width:c,height:u,data:i},a>>o),za({width:c,height:u,data:i},{width:c,height:u,data:h},a>>o),Ua({width:c,height:u,data:h},{width:c,height:u,data:i},a>>o);var d=l(i);if(!Array.isArray(d)){var p=L(i);d=S(0,p,d),(d=k(0,Math.floor(p/d)*d,d)).shift()}return Ya().thresholds(d).size([c,u])(i).map(f)}function f(t){return t.value*=Math.pow(2,-2*o),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,o)-s,t[1]=t[1]*Math.pow(2,o)-s}function y(){return c=r+2*(s=3*a)>>o,u=i+2*s>>o,h}return h.x=function(e){return arguments.length?(t="function"==typeof e?e:La(+e),h):t},h.y=function(t){return arguments.length?(e="function"==typeof t?t:La(+t),h):e},h.weight=function(t){return arguments.length?(n="function"==typeof t?t:La(+t),h):n},h.size=function(t){if(!arguments.length)return[r,i];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return r=e,i=n,y()},h.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(t)/Math.LN2),y()},h.thresholds=function(t){return arguments.length?(l="function"==typeof t?t:Array.isArray(t)?La(Na.call(t)):La(t),h):l},h.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},h},Ga=function(t){return function(){return t}};function qa(t,e,n,r,i,a,o,s,c,u){this.target=t,this.type=e,this.subject=n,this.identifier=r,this.active=i,this.x=a,this.y=o,this.dx=s,this.dy=c,this._=u}function Xa(){return!ce.ctrlKey&&!ce.button}function Za(){return this.parentNode}function Ja(t){return null==t?{x:ce.x,y:ce.y}:t}function Ka(){return navigator.maxTouchPoints||"ontouchstart"in this}qa.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var Qa=function(){var t,e,n,r,i=Xa,a=Za,o=Ja,s=Ka,c={},u=lt("start","drag","end"),l=0,h=0;function f(t){t.on("mousedown.drag",d).filter(s).on("touchstart.drag",y).on("touchmove.drag",v).on("touchend.drag touchcancel.drag",m).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(){if(!r&&i.apply(this,arguments)){var o=b("mouse",a.apply(this,arguments),Nn,this,arguments);o&&(ke(ce.view).on("mousemove.drag",p,!0).on("mouseup.drag",g,!0),Te(ce.view),we(),n=!1,t=ce.clientX,e=ce.clientY,o("start"))}}function p(){if(Ee(),!n){var r=ce.clientX-t,i=ce.clientY-e;n=r*r+i*i>h}c.mouse("drag")}function g(){ke(ce.view).on("mousemove.drag mouseup.drag",null),Ce(ce.view,n),Ee(),c.mouse("end")}function y(){if(i.apply(this,arguments)){var t,e,n=ce.changedTouches,r=a.apply(this,arguments),o=n.length;for(t=0;t9999?"+"+io(e,6):io(e,4))+"-"+io(t.getUTCMonth()+1,2)+"-"+io(t.getUTCDate(),2)+(a?"T"+io(n,2)+":"+io(r,2)+":"+io(i,2)+"."+io(a,3)+"Z":i?"T"+io(n,2)+":"+io(r,2)+":"+io(i,2)+"Z":r||n?"T"+io(n,2)+":"+io(r,2)+"Z":"")}var oo=function(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function r(t,e){var r,i=[],a=t.length,o=0,s=0,c=a<=0,u=!1;function l(){if(c)return eo;if(u)return u=!1,to;var e,r,i=o;if(34===t.charCodeAt(i)){for(;o++=a?c=!0:10===(r=t.charCodeAt(o++))?u=!0:13===r&&(u=!0,10===t.charCodeAt(o)&&++o),t.slice(i+1,e-1).replace(/""/g,'"')}for(;o=(a=(g+v)/2))?g=a:v=a,(l=n>=(o=(y+m)/2))?y=o:m=o,i=d,!(d=d[h=l<<1|u]))return i[h]=p,t;if(s=+t._x.call(null,d.data),c=+t._y.call(null,d.data),e===s&&n===c)return p.next=d,i?i[h]=p:t._root=p,t;do{i=i?i[h]=new Array(4):t._root=new Array(4),(u=e>=(a=(g+v)/2))?g=a:v=a,(l=n>=(o=(y+m)/2))?y=o:m=o}while((h=l<<1|u)==(f=(c>=o)<<1|s>=a));return i[f]=d,i[h]=p,t}var _s=function(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i};function ks(t){return t[0]}function ws(t){return t[1]}function Es(t,e,n){var r=new Ts(null==e?ks:e,null==n?ws:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Ts(t,e,n,r,i,a){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function Cs(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var As=Es.prototype=Ts.prototype;function Ss(t){return t.x+t.vx}function Ms(t){return t.y+t.vy}As.copy=function(){var t,e,n=new Ts(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=Cs(r),n;for(t=[{source:r,target:n._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(e=r.source[i])&&(e.length?t.push({source:e,target:r.target[i]=new Array(4)}):r.target[i]=Cs(e));return n},As.add=function(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return xs(this.cover(e,n),e,n,t)},As.addAll=function(t){var e,n,r,i,a=t.length,o=new Array(a),s=new Array(a),c=1/0,u=1/0,l=-1/0,h=-1/0;for(n=0;nl&&(l=r),ih&&(h=i));if(c>l||u>h)return this;for(this.cover(c,u).cover(l,h),n=0;nt||t>=i||r>e||e>=a;)switch(s=(ef||(a=c.y0)>d||(o=c.x1)=v)<<1|t>=y)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-u],p[p.length-1-u]=c)}else{var m=t-+this._x.call(null,g.data),b=e-+this._y.call(null,g.data),x=m*m+b*b;if(x=(s=(p+y)/2))?p=s:y=s,(l=o>=(c=(g+v)/2))?g=c:v=c,e=d,!(d=d[h=l<<1|u]))return this;if(!d.length)break;(e[h+1&3]||e[h+2&3]||e[h+3&3])&&(n=e,f=h)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[h]=i:delete e[h],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[f]=d:this._root=d),this):(this._root=i,this)},As.removeAll=function(t){for(var e=0,n=t.length;ec+d||iu+d||as.index){var p=c-o.x-o.vx,g=u-o.y-o.vy,y=p*p+g*g;yt.r&&(t.r=t[e].r)}function s(){if(e){var r,i,a=e.length;for(n=new Array(a),r=0;r1?(null==n?s.remove(t):s.set(t,d(n)),e):s.get(t)},find:function(e,n,r){var i,a,o,s,c,u=0,l=t.length;for(null==r?r=1/0:r*=r,u=0;u1?(u.on(t,n),e):u.on(t)}}},js=function(){var t,e,n,r,i=ms(-30),a=1,o=1/0,s=.81;function c(r){var i,a=t.length,o=Es(t,Ls,Fs).visitAfter(l);for(n=r,i=0;i=o)){(t.data!==e||t.next)&&(0===l&&(d+=(l=bs())*l),0===h&&(d+=(h=bs())*h),d1?r[0]+r.slice(2):r,+t.slice(n+1)]},$s=function(t){return(t=Us(Math.abs(t)))?t[1]:NaN},Ws=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Hs(t){if(!(e=Ws.exec(t)))throw new Error("invalid format: "+t);var e;return new Vs({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Vs(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}Hs.prototype=Vs.prototype,Vs.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Gs,qs,Xs,Zs,Js=function(t,e){var n=Us(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},Ks={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return Js(100*t,e)},r:Js,s:function(t,e){var n=Us(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(Gs=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Us(t,Math.max(0,e+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},Qs=function(t){return t},tc=Array.prototype.map,ec=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],nc=function(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Qs:(e=tc.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(t.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Qs:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(tc.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",u=void 0===t.minus?"-":t.minus+"",l=void 0===t.nan?"NaN":t.nan+"";function h(t){var e=(t=Hs(t)).fill,n=t.align,h=t.sign,f=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,v=t.trim,m=t.type;"n"===m?(g=!0,m="g"):Ks[m]||(void 0===y&&(y=12),v=!0,m="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===f?i:"#"===f&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",x="$"===f?a:/[%p]/.test(m)?c:"",_=Ks[m],k=/[defgprs%]/.test(m);function w(t){var i,a,c,f=b,w=x;if("c"===m)w=_(t)+w,t="";else{var E=(t=+t)<0;if(t=isNaN(t)?l:_(Math.abs(t),y),v&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),E&&0==+t&&(E=!1),f=(E?"("===h?h:u:"-"===h||"("===h?"":h)+f,w=("s"===m?ec[8+Gs/3]:"")+w+(E&&"("===h?")":""),k)for(i=-1,a=t.length;++i(c=t.charCodeAt(i))||c>57){w=(46===c?o+t.slice(i+1):t.slice(i))+w,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var T=f.length+t.length+w.length,C=T>1)+f+t+w+C.slice(T);break;default:t=C+f+t+w}return s(t)}return y=void 0===y?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),w.toString=function(){return t+""},w}return{format:h,formatPrefix:function(t,e){var n=h(((t=Hs(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor($s(e)/3))),i=Math.pow(10,-r),a=ec[8+r/3];return function(t){return n(i*t)+a}}}};function rc(t){return qs=nc(t),Xs=qs.format,Zs=qs.formatPrefix,qs}rc({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"});var ic=function(t){return Math.max(0,-$s(Math.abs(t)))},ac=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor($s(e)/3)))-$s(Math.abs(t)))},oc=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,$s(e)-$s(t))+1},sc=function(){return new cc};function cc(){this.reset()}cc.prototype={constructor:cc,reset:function(){this.s=this.t=0},add:function(t){lc(uc,t,this.t),lc(this,uc.s,this.s),this.s?this.t+=uc.t:this.s=uc.t},valueOf:function(){return this.s}};var uc=new cc;function lc(t,e,n){var r=t.s=e+n,i=r-e,a=r-i;t.t=e-a+(n-i)}var hc=Math.PI,fc=hc/2,dc=hc/4,pc=2*hc,gc=180/hc,yc=hc/180,vc=Math.abs,mc=Math.atan,bc=Math.atan2,xc=Math.cos,_c=Math.ceil,kc=Math.exp,wc=(Math.floor,Math.log),Ec=Math.pow,Tc=Math.sin,Cc=Math.sign||function(t){return t>0?1:t<0?-1:0},Ac=Math.sqrt,Sc=Math.tan;function Mc(t){return t>1?0:t<-1?hc:Math.acos(t)}function Oc(t){return t>1?fc:t<-1?-fc:Math.asin(t)}function Dc(t){return(t=Tc(t/2))*t}function Nc(){}function Bc(t,e){t&&Fc.hasOwnProperty(t.type)&&Fc[t.type](t,e)}var Lc={Feature:function(t,e){Bc(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r=0?1:-1,i=r*n,a=xc(e=(e*=yc)/2+dc),o=Tc(e),s=Uc*o,c=zc*a+s*xc(i),u=s*r*Tc(i);Wc.add(bc(u,c)),Yc=t,zc=a,Uc=o}var Jc=function(t){return Hc.reset(),$c(t,Vc),2*Hc};function Kc(t){return[bc(t[1],t[0]),Oc(t[2])]}function Qc(t){var e=t[0],n=t[1],r=xc(n);return[r*xc(e),r*Tc(e),Tc(n)]}function tu(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function eu(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function nu(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function ru(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function iu(t){var e=Ac(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var au,ou,su,cu,uu,lu,hu,fu,du,pu,gu=sc(),yu={point:vu,lineStart:bu,lineEnd:xu,polygonStart:function(){yu.point=_u,yu.lineStart=ku,yu.lineEnd=wu,gu.reset(),Vc.polygonStart()},polygonEnd:function(){Vc.polygonEnd(),yu.point=vu,yu.lineStart=bu,yu.lineEnd=xu,Wc<0?(au=-(su=180),ou=-(cu=90)):gu>1e-6?cu=90:gu<-1e-6&&(ou=-90),pu[0]=au,pu[1]=su},sphere:function(){au=-(su=180),ou=-(cu=90)}};function vu(t,e){du.push(pu=[au=t,su=t]),ecu&&(cu=e)}function mu(t,e){var n=Qc([t*yc,e*yc]);if(fu){var r=eu(fu,n),i=eu([r[1],-r[0],0],r);iu(i),i=Kc(i);var a,o=t-uu,s=o>0?1:-1,c=i[0]*gc*s,u=vc(o)>180;u^(s*uucu&&(cu=a):u^(s*uu<(c=(c+360)%360-180)&&ccu&&(cu=e)),u?tEu(au,su)&&(su=t):Eu(t,su)>Eu(au,su)&&(au=t):su>=au?(tsu&&(su=t)):t>uu?Eu(au,t)>Eu(au,su)&&(su=t):Eu(t,su)>Eu(au,su)&&(au=t)}else du.push(pu=[au=t,su=t]);ecu&&(cu=e),fu=n,uu=t}function bu(){yu.point=mu}function xu(){pu[0]=au,pu[1]=su,yu.point=vu,fu=null}function _u(t,e){if(fu){var n=t-uu;gu.add(vc(n)>180?n+(n>0?360:-360):n)}else lu=t,hu=e;Vc.point(t,e),mu(t,e)}function ku(){Vc.lineStart()}function wu(){_u(lu,hu),Vc.lineEnd(),vc(gu)>1e-6&&(au=-(su=180)),pu[0]=au,pu[1]=su,fu=null}function Eu(t,e){return(e-=t)<0?e+360:e}function Tu(t,e){return t[0]-e[0]}function Cu(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:eEu(r[0],r[1])&&(r[1]=i[1]),Eu(i[0],r[1])>Eu(r[0],r[1])&&(r[0]=i[0])):a.push(r=i);for(o=-1/0,e=0,r=a[n=a.length-1];e<=n;r=i,++e)i=a[e],(s=Eu(r[1],i[0]))>o&&(o=s,au=i[0],su=r[1])}return du=pu=null,au===1/0||ou===1/0?[[NaN,NaN],[NaN,NaN]]:[[au,ou],[su,cu]]},Wu={sphere:Nc,point:Hu,lineStart:Gu,lineEnd:Zu,polygonStart:function(){Wu.lineStart=Ju,Wu.lineEnd=Ku},polygonEnd:function(){Wu.lineStart=Gu,Wu.lineEnd=Zu}};function Hu(t,e){t*=yc;var n=xc(e*=yc);Vu(n*xc(t),n*Tc(t),Tc(e))}function Vu(t,e,n){++Au,Mu+=(t-Mu)/Au,Ou+=(e-Ou)/Au,Du+=(n-Du)/Au}function Gu(){Wu.point=qu}function qu(t,e){t*=yc;var n=xc(e*=yc);Yu=n*xc(t),zu=n*Tc(t),Uu=Tc(e),Wu.point=Xu,Vu(Yu,zu,Uu)}function Xu(t,e){t*=yc;var n=xc(e*=yc),r=n*xc(t),i=n*Tc(t),a=Tc(e),o=bc(Ac((o=zu*a-Uu*i)*o+(o=Uu*r-Yu*a)*o+(o=Yu*i-zu*r)*o),Yu*r+zu*i+Uu*a);Su+=o,Nu+=o*(Yu+(Yu=r)),Bu+=o*(zu+(zu=i)),Lu+=o*(Uu+(Uu=a)),Vu(Yu,zu,Uu)}function Zu(){Wu.point=Hu}function Ju(){Wu.point=Qu}function Ku(){tl(ju,Ru),Wu.point=Hu}function Qu(t,e){ju=t,Ru=e,t*=yc,e*=yc,Wu.point=tl;var n=xc(e);Yu=n*xc(t),zu=n*Tc(t),Uu=Tc(e),Vu(Yu,zu,Uu)}function tl(t,e){t*=yc;var n=xc(e*=yc),r=n*xc(t),i=n*Tc(t),a=Tc(e),o=zu*a-Uu*i,s=Uu*r-Yu*a,c=Yu*i-zu*r,u=Ac(o*o+s*s+c*c),l=Oc(u),h=u&&-l/u;Fu+=h*o,Pu+=h*s,Iu+=h*c,Su+=l,Nu+=l*(Yu+(Yu=r)),Bu+=l*(zu+(zu=i)),Lu+=l*(Uu+(Uu=a)),Vu(Yu,zu,Uu)}var el=function(t){Au=Su=Mu=Ou=Du=Nu=Bu=Lu=Fu=Pu=Iu=0,$c(t,Wu);var e=Fu,n=Pu,r=Iu,i=e*e+n*n+r*r;return i<1e-12&&(e=Nu,n=Bu,r=Lu,Su<1e-6&&(e=Mu,n=Ou,r=Du),(i=e*e+n*n+r*r)<1e-12)?[NaN,NaN]:[bc(n,e)*gc,Oc(r/Ac(i))*gc]},nl=function(t){return function(){return t}},rl=function(t,e){function n(n,r){return n=t(n,r),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,r){return(n=e.invert(n,r))&&t.invert(n[0],n[1])}),n};function il(t,e){return[vc(t)>hc?t+Math.round(-t/pc)*pc:t,e]}function al(t,e,n){return(t%=pc)?e||n?rl(sl(t),cl(e,n)):sl(t):e||n?cl(e,n):il}function ol(t){return function(e,n){return[(e+=t)>hc?e-pc:e<-hc?e+pc:e,n]}}function sl(t){var e=ol(t);return e.invert=ol(-t),e}function cl(t,e){var n=xc(t),r=Tc(t),i=xc(e),a=Tc(e);function o(t,e){var o=xc(e),s=xc(t)*o,c=Tc(t)*o,u=Tc(e),l=u*n+s*r;return[bc(c*i-l*a,s*n-u*r),Oc(l*i+c*a)]}return o.invert=function(t,e){var o=xc(e),s=xc(t)*o,c=Tc(t)*o,u=Tc(e),l=u*i-c*a;return[bc(c*i+u*a,s*n+l*r),Oc(l*n-s*r)]},o}il.invert=il;var ul=function(t){function e(e){return(e=t(e[0]*yc,e[1]*yc))[0]*=gc,e[1]*=gc,e}return t=al(t[0]*yc,t[1]*yc,t.length>2?t[2]*yc:0),e.invert=function(e){return(e=t.invert(e[0]*yc,e[1]*yc))[0]*=gc,e[1]*=gc,e},e};function ll(t,e,n,r,i,a){if(n){var o=xc(e),s=Tc(e),c=r*n;null==i?(i=e+r*pc,a=e-c/2):(i=hl(o,i),a=hl(o,a),(r>0?ia)&&(i+=r*pc));for(var u,l=i;r>0?l>a:l1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}},pl=function(t,e){return vc(t[0]-e[0])<1e-6&&vc(t[1]-e[1])<1e-6};function gl(t,e,n,r){this.x=t,this.z=e,this.o=n,this.e=r,this.v=!1,this.n=this.p=null}var yl=function(t,e,n,r,i){var a,o,s=[],c=[];if(t.forEach((function(t){if(!((e=t.length-1)<=0)){var e,n,r=t[0],o=t[e];if(pl(r,o)){for(i.lineStart(),a=0;a=0;--a)i.point((l=u[a])[0],l[1]);else r(f.x,f.p.x,-1,i);f=f.p}u=(f=f.o).z,d=!d}while(!f.v);i.lineEnd()}}};function vl(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r=0?1:-1,T=E*w,C=T>hc,A=g*_;if(ml.add(bc(A*E*Tc(T),y*k+A*xc(T))),o+=C?w+E*pc:w,C^d>=n^b>=n){var S=eu(Qc(f),Qc(m));iu(S);var M=eu(a,S);iu(M);var O=(C^w>=0?-1:1)*Oc(M[2]);(r>O||r===O&&(S[0]||S[1]))&&(s+=C^w>=0?1:-1)}}return(o<-1e-6||o<1e-6&&ml<-1e-6)^1&s},_l=function(t,e,n,r){return function(i){var a,o,s,c=e(i),u=dl(),l=e(u),h=!1,f={point:d,lineStart:g,lineEnd:y,polygonStart:function(){f.point=v,f.lineStart=m,f.lineEnd=b,o=[],a=[]},polygonEnd:function(){f.point=d,f.lineStart=g,f.lineEnd=y,o=I(o);var t=xl(a,r);o.length?(h||(i.polygonStart(),h=!0),yl(o,wl,t,n,i)):t&&(h||(i.polygonStart(),h=!0),i.lineStart(),n(null,null,1,i),i.lineEnd()),h&&(i.polygonEnd(),h=!1),o=a=null},sphere:function(){i.polygonStart(),i.lineStart(),n(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(e,n){t(e,n)&&i.point(e,n)}function p(t,e){c.point(t,e)}function g(){f.point=p,c.lineStart()}function y(){f.point=d,c.lineEnd()}function v(t,e){s.push([t,e]),l.point(t,e)}function m(){l.lineStart(),s=[]}function b(){v(s[0][0],s[0][1]),l.lineEnd();var t,e,n,r,c=l.clean(),f=u.result(),d=f.length;if(s.pop(),a.push(s),s=null,d)if(1&c){if((e=(n=f[0]).length-1)>0){for(h||(i.polygonStart(),h=!0),i.lineStart(),t=0;t1&&2&c&&f.push(f.pop().concat(f.shift())),o.push(f.filter(kl))}return f}};function kl(t){return t.length>1}function wl(t,e){return((t=t.x)[0]<0?t[1]-fc-1e-6:fc-t[1])-((e=e.x)[0]<0?e[1]-fc-1e-6:fc-e[1])}var El=_l((function(){return!0}),(function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var s=a>0?hc:-hc,c=vc(a-n);vc(c-hc)<1e-6?(t.point(n,r=(r+o)/2>0?fc:-fc),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),t.point(a,r),e=0):i!==s&&c>=hc&&(vc(n-i)<1e-6&&(n-=1e-6*i),vc(a-s)<1e-6&&(a-=1e-6*s),r=function(t,e,n,r){var i,a,o=Tc(t-n);return vc(o)>1e-6?mc((Tc(e)*(a=xc(r))*Tc(n)-Tc(r)*(i=xc(e))*Tc(t))/(i*a*o)):(e+r)/2}(n,r,a,o),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),e=0),t.point(n=a,r=o),i=s},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}}),(function(t,e,n,r){var i;if(null==t)i=n*fc,r.point(-hc,i),r.point(0,i),r.point(hc,i),r.point(hc,0),r.point(hc,-i),r.point(0,-i),r.point(-hc,-i),r.point(-hc,0),r.point(-hc,i);else if(vc(t[0]-e[0])>1e-6){var a=t[0]0,i=vc(e)>1e-6;function a(t,n){return xc(t)*xc(n)>e}function o(t,n,r){var i=[1,0,0],a=eu(Qc(t),Qc(n)),o=tu(a,a),s=a[0],c=o-s*s;if(!c)return!r&&t;var u=e*o/c,l=-e*s/c,h=eu(i,a),f=ru(i,u);nu(f,ru(a,l));var d=h,p=tu(f,d),g=tu(d,d),y=p*p-g*(tu(f,f)-1);if(!(y<0)){var v=Ac(y),m=ru(d,(-p-v)/g);if(nu(m,f),m=Kc(m),!r)return m;var b,x=t[0],_=n[0],k=t[1],w=n[1];_0^m[1]<(vc(m[0]-x)<1e-6?k:w):k<=m[1]&&m[1]<=w:E>hc^(x<=m[0]&&m[0]<=_)){var C=ru(d,(-p+v)/g);return nu(C,f),[m,Kc(C)]}}}function s(e,n){var i=r?t:hc-t,a=0;return e<-i?a|=1:e>i&&(a|=2),n<-i?a|=4:n>i&&(a|=8),a}return _l(a,(function(t){var e,n,c,u,l;return{lineStart:function(){u=c=!1,l=1},point:function(h,f){var d,p=[h,f],g=a(h,f),y=r?g?0:s(h,f):g?s(h+(h<0?hc:-hc),f):0;if(!e&&(u=c=g)&&t.lineStart(),g!==c&&(!(d=o(e,p))||pl(e,d)||pl(p,d))&&(p[0]+=1e-6,p[1]+=1e-6,g=a(p[0],p[1])),g!==c)l=0,g?(t.lineStart(),d=o(p,e),t.point(d[0],d[1])):(d=o(e,p),t.point(d[0],d[1]),t.lineEnd()),e=d;else if(i&&e&&r^g){var v;y&n||!(v=o(p,e,!0))||(l=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||e&&pl(e,p)||t.point(p[0],p[1]),e=p,c=g,n=y},lineEnd:function(){c&&t.lineEnd(),e=null},clean:function(){return l|(u&&c)<<1}}}),(function(e,r,i,a){ll(a,t,n,i,e,r)}),r?[0,-t]:[-hc,t-hc])};function Cl(t,e,n,r){function i(i,a){return t<=i&&i<=n&&e<=a&&a<=r}function a(i,a,s,u){var l=0,h=0;if(null==i||(l=o(i,s))!==(h=o(a,s))||c(i,a)<0^s>0)do{u.point(0===l||3===l?t:n,l>1?r:e)}while((l=(l+s+4)%4)!==h);else u.point(a[0],a[1])}function o(r,i){return vc(r[0]-t)<1e-6?i>0?0:3:vc(r[0]-n)<1e-6?i>0?2:1:vc(r[1]-e)<1e-6?i>0?1:0:i>0?3:2}function s(t,e){return c(t.x,e.x)}function c(t,e){var n=o(t,1),r=o(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(o){var c,u,l,h,f,d,p,g,y,v,m,b=o,x=dl(),_={point:k,lineStart:function(){_.point=w,u&&u.push(l=[]);v=!0,y=!1,p=g=NaN},lineEnd:function(){c&&(w(h,f),d&&y&&x.rejoin(),c.push(x.result()));_.point=k,y&&b.lineEnd()},polygonStart:function(){b=x,c=[],u=[],m=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=u.length;nr&&(f-a)*(r-o)>(d-o)*(t-a)&&++e:d<=r&&(f-a)*(r-o)<(d-o)*(t-a)&&--e;return e}(),n=m&&e,i=(c=I(c)).length;(n||i)&&(o.polygonStart(),n&&(o.lineStart(),a(null,null,1,o),o.lineEnd()),i&&yl(c,s,e,a,o),o.polygonEnd());b=o,c=u=l=null}};function k(t,e){i(t,e)&&b.point(t,e)}function w(a,o){var s=i(a,o);if(u&&l.push([a,o]),v)h=a,f=o,d=s,v=!1,s&&(b.lineStart(),b.point(a,o));else if(s&&y)b.point(a,o);else{var c=[p=Math.max(-1e9,Math.min(1e9,p)),g=Math.max(-1e9,Math.min(1e9,g))],x=[a=Math.max(-1e9,Math.min(1e9,a)),o=Math.max(-1e9,Math.min(1e9,o))];!function(t,e,n,r,i,a){var o,s=t[0],c=t[1],u=0,l=1,h=e[0]-s,f=e[1]-c;if(o=n-s,h||!(o>0)){if(o/=h,h<0){if(o0){if(o>l)return;o>u&&(u=o)}if(o=i-s,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>u&&(u=o)}else if(h>0){if(o0)){if(o/=f,f<0){if(o0){if(o>l)return;o>u&&(u=o)}if(o=a-c,f||!(o<0)){if(o/=f,f<0){if(o>l)return;o>u&&(u=o)}else if(f>0){if(o0&&(t[0]=s+u*h,t[1]=c+u*f),l<1&&(e[0]=s+l*h,e[1]=c+l*f),!0}}}}}(c,x,t,e,n,r)?s&&(b.lineStart(),b.point(a,o),m=!1):(y||(b.lineStart(),b.point(c[0],c[1])),b.point(x[0],x[1]),s||b.lineEnd(),m=!1)}p=a,g=o,y=s}return _}}var Al,Sl,Ml,Ol=function(){var t,e,n,r=0,i=0,a=960,o=500;return n={stream:function(n){return t&&e===n?t:t=Cl(r,i,a,o)(e=n)},extent:function(s){return arguments.length?(r=+s[0][0],i=+s[0][1],a=+s[1][0],o=+s[1][1],t=e=null,n):[[r,i],[a,o]]}}},Dl=sc(),Nl={sphere:Nc,point:Nc,lineStart:function(){Nl.point=Ll,Nl.lineEnd=Bl},lineEnd:Nc,polygonStart:Nc,polygonEnd:Nc};function Bl(){Nl.point=Nl.lineEnd=Nc}function Ll(t,e){Al=t*=yc,Sl=Tc(e*=yc),Ml=xc(e),Nl.point=Fl}function Fl(t,e){t*=yc;var n=Tc(e*=yc),r=xc(e),i=vc(t-Al),a=xc(i),o=r*Tc(i),s=Ml*n-Sl*r*a,c=Sl*n+Ml*r*a;Dl.add(bc(Ac(o*o+s*s),c)),Al=t,Sl=n,Ml=r}var Pl=function(t){return Dl.reset(),$c(t,Nl),+Dl},Il=[null,null],jl={type:"LineString",coordinates:Il},Rl=function(t,e){return Il[0]=t,Il[1]=e,Pl(jl)},Yl={Feature:function(t,e){return Ul(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r0&&(i=Rl(t[a],t[a-1]))>0&&n<=i&&r<=i&&(n+r-i)*(1-Math.pow((n-r)/i,2))<1e-12*i)return!0;n=r}return!1}function Hl(t,e){return!!xl(t.map(Vl),Gl(e))}function Vl(t){return(t=t.map(Gl)).pop(),t}function Gl(t){return[t[0]*yc,t[1]*yc]}var ql=function(t,e){return(t&&Yl.hasOwnProperty(t.type)?Yl[t.type]:Ul)(t,e)};function Xl(t,e,n){var r=k(t,e-1e-6,n).concat(e);return function(t){return r.map((function(e){return[t,e]}))}}function Zl(t,e,n){var r=k(t,e-1e-6,n).concat(e);return function(t){return r.map((function(e){return[e,t]}))}}function Jl(){var t,e,n,r,i,a,o,s,c,u,l,h,f=10,d=f,p=90,g=360,y=2.5;function v(){return{type:"MultiLineString",coordinates:m()}}function m(){return k(_c(r/p)*p,n,p).map(l).concat(k(_c(s/g)*g,o,g).map(h)).concat(k(_c(e/f)*f,t,f).filter((function(t){return vc(t%p)>1e-6})).map(c)).concat(k(_c(a/d)*d,i,d).filter((function(t){return vc(t%g)>1e-6})).map(u))}return v.lines=function(){return m().map((function(t){return{type:"LineString",coordinates:t}}))},v.outline=function(){return{type:"Polygon",coordinates:[l(r).concat(h(o).slice(1),l(n).reverse().slice(1),h(s).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],n=+t[1][0],s=+t[0][1],o=+t[1][1],r>n&&(t=r,r=n,n=t),s>o&&(t=s,s=o,o=t),v.precision(y)):[[r,s],[n,o]]},v.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],a=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),a>i&&(n=a,a=i,i=n),v.precision(y)):[[e,a],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(f=+t[0],d=+t[1],v):[f,d]},v.precision=function(f){return arguments.length?(y=+f,c=Xl(a,i,90),u=Zl(e,t,y),l=Xl(s,o,90),h=Zl(r,n,y),v):y},v.extentMajor([[-180,1e-6-90],[180,90-1e-6]]).extentMinor([[-180,-80-1e-6],[180,80+1e-6]])}function Kl(){return Jl()()}var Ql,th,eh,nh,rh=function(t,e){var n=t[0]*yc,r=t[1]*yc,i=e[0]*yc,a=e[1]*yc,o=xc(r),s=Tc(r),c=xc(a),u=Tc(a),l=o*xc(n),h=o*Tc(n),f=c*xc(i),d=c*Tc(i),p=2*Oc(Ac(Dc(a-r)+o*c*Dc(i-n))),g=Tc(p),y=p?function(t){var e=Tc(t*=p)/g,n=Tc(p-t)/g,r=n*l+e*f,i=n*h+e*d,a=n*s+e*u;return[bc(i,r)*gc,bc(a,Ac(r*r+i*i))*gc]}:function(){return[n*gc,r*gc]};return y.distance=p,y},ih=function(t){return t},ah=sc(),oh=sc(),sh={point:Nc,lineStart:Nc,lineEnd:Nc,polygonStart:function(){sh.lineStart=ch,sh.lineEnd=hh},polygonEnd:function(){sh.lineStart=sh.lineEnd=sh.point=Nc,ah.add(vc(oh)),oh.reset()},result:function(){var t=ah/2;return ah.reset(),t}};function ch(){sh.point=uh}function uh(t,e){sh.point=lh,Ql=eh=t,th=nh=e}function lh(t,e){oh.add(nh*t-eh*e),eh=t,nh=e}function hh(){lh(Ql,th)}var fh=sh,dh=1/0,ph=dh,gh=-dh,yh=gh;var vh,mh,bh,xh,_h={point:function(t,e){tgh&&(gh=t);eyh&&(yh=e)},lineStart:Nc,lineEnd:Nc,polygonStart:Nc,polygonEnd:Nc,result:function(){var t=[[dh,ph],[gh,yh]];return gh=yh=-(ph=dh=1/0),t}},kh=0,wh=0,Eh=0,Th=0,Ch=0,Ah=0,Sh=0,Mh=0,Oh=0,Dh={point:Nh,lineStart:Bh,lineEnd:Ph,polygonStart:function(){Dh.lineStart=Ih,Dh.lineEnd=jh},polygonEnd:function(){Dh.point=Nh,Dh.lineStart=Bh,Dh.lineEnd=Ph},result:function(){var t=Oh?[Sh/Oh,Mh/Oh]:Ah?[Th/Ah,Ch/Ah]:Eh?[kh/Eh,wh/Eh]:[NaN,NaN];return kh=wh=Eh=Th=Ch=Ah=Sh=Mh=Oh=0,t}};function Nh(t,e){kh+=t,wh+=e,++Eh}function Bh(){Dh.point=Lh}function Lh(t,e){Dh.point=Fh,Nh(bh=t,xh=e)}function Fh(t,e){var n=t-bh,r=e-xh,i=Ac(n*n+r*r);Th+=i*(bh+t)/2,Ch+=i*(xh+e)/2,Ah+=i,Nh(bh=t,xh=e)}function Ph(){Dh.point=Nh}function Ih(){Dh.point=Rh}function jh(){Yh(vh,mh)}function Rh(t,e){Dh.point=Yh,Nh(vh=bh=t,mh=xh=e)}function Yh(t,e){var n=t-bh,r=e-xh,i=Ac(n*n+r*r);Th+=i*(bh+t)/2,Ch+=i*(xh+e)/2,Ah+=i,Sh+=(i=xh*t-bh*e)*(bh+t),Mh+=i*(xh+e),Oh+=3*i,Nh(bh=t,xh=e)}var zh=Dh;function Uh(t){this._context=t}Uh.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,pc)}},result:Nc};var $h,Wh,Hh,Vh,Gh,qh=sc(),Xh={point:Nc,lineStart:function(){Xh.point=Zh},lineEnd:function(){$h&&Jh(Wh,Hh),Xh.point=Nc},polygonStart:function(){$h=!0},polygonEnd:function(){$h=null},result:function(){var t=+qh;return qh.reset(),t}};function Zh(t,e){Xh.point=Jh,Wh=Vh=t,Hh=Gh=e}function Jh(t,e){Vh-=t,Gh-=e,qh.add(Ac(Vh*Vh+Gh*Gh)),Vh=t,Gh=e}var Kh=Xh;function Qh(){this._string=[]}function tf(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}Qh.prototype={_radius:4.5,_circle:tf(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=tf(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};var ef=function(t,e){var n,r,i=4.5;function a(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),$c(t,n(r))),r.result()}return a.area=function(t){return $c(t,n(fh)),fh.result()},a.measure=function(t){return $c(t,n(Kh)),Kh.result()},a.bounds=function(t){return $c(t,n(_h)),_h.result()},a.centroid=function(t){return $c(t,n(zh)),zh.result()},a.projection=function(e){return arguments.length?(n=null==e?(t=null,ih):(t=e).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(e=null,new Qh):new Uh(e=t),"function"!=typeof i&&r.pointRadius(i),a):e},a.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),a):i},a.projection(t).context(e)},nf=function(t){return{stream:rf(t)}};function rf(t){return function(e){var n=new af;for(var r in t)n[r]=t[r];return n.stream=e,n}}function af(){}function of(t,e,n){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),$c(n,t.stream(_h)),e(_h.result()),null!=r&&t.clipExtent(r),t}function sf(t,e,n){return of(t,(function(n){var r=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(r/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),o=+e[0][0]+(r-a*(n[1][0]+n[0][0]))/2,s=+e[0][1]+(i-a*(n[1][1]+n[0][1]))/2;t.scale(150*a).translate([o,s])}),n)}function cf(t,e,n){return sf(t,[[0,0],e],n)}function uf(t,e,n){return of(t,(function(n){var r=+e,i=r/(n[1][0]-n[0][0]),a=(r-i*(n[1][0]+n[0][0]))/2,o=-i*n[0][1];t.scale(150*i).translate([a,o])}),n)}function lf(t,e,n){return of(t,(function(n){var r=+e,i=r/(n[1][1]-n[0][1]),a=-i*n[0][0],o=(r-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([a,o])}),n)}af.prototype={constructor:af,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var hf=xc(30*yc),ff=function(t,e){return+e?function(t,e){function n(r,i,a,o,s,c,u,l,h,f,d,p,g,y){var v=u-r,m=l-i,b=v*v+m*m;if(b>4*e&&g--){var x=o+f,_=s+d,k=c+p,w=Ac(x*x+_*_+k*k),E=Oc(k/=w),T=vc(vc(k)-1)<1e-6||vc(a-h)<1e-6?(a+h)/2:bc(_,x),C=t(T,E),A=C[0],S=C[1],M=A-r,O=S-i,D=m*M-v*O;(D*D/b>e||vc((v*M+m*O)/b-.5)>.3||o*f+s*d+c*p2?t[2]%360*yc:0,A()):[y*gc,v*gc,m*gc]},T.angle=function(t){return arguments.length?(b=t%360*yc,A()):b*gc},T.precision=function(t){return arguments.length?(o=ff(s,E=t*t),S()):Ac(E)},T.fitExtent=function(t,e){return sf(T,t,e)},T.fitSize=function(t,e){return cf(T,t,e)},T.fitWidth=function(t,e){return uf(T,t,e)},T.fitHeight=function(t,e){return lf(T,t,e)},function(){return e=t.apply(this,arguments),T.invert=e.invert&&C,A()}}function mf(t){var e=0,n=hc/3,r=vf(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*yc,n=t[1]*yc):[e*gc,n*gc]},i}function bf(t,e){var n=Tc(t),r=(n+Tc(e))/2;if(vc(r)<1e-6)return function(t){var e=xc(t);function n(t,n){return[t*e,Tc(n)/e]}return n.invert=function(t,n){return[t/e,Oc(n*e)]},n}(t);var i=1+n*(2*r-n),a=Ac(i)/r;function o(t,e){var n=Ac(i-2*r*Tc(e))/r;return[n*Tc(t*=r),a-n*xc(t)]}return o.invert=function(t,e){var n=a-e;return[bc(t,vc(n))/r*Cc(n),Oc((i-(t*t+n*n)*r*r)/(2*r))]},o}var xf=function(){return mf(bf).scale(155.424).center([0,33.6442])},_f=function(){return xf().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])};var kf=function(){var t,e,n,r,i,a,o=_f(),s=xf().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=xf().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){a=[t,e]}};function l(t){var e=t[0],o=t[1];return a=null,n.point(e,o),a||(r.point(e,o),a)||(i.point(e,o),a)}function h(){return t=e=null,l}return l.invert=function(t){var e=o.scale(),n=o.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?s:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:o).invert(t)},l.stream=function(n){return t&&e===n?t:(r=[o.stream(e=n),s.stream(n),c.stream(n)],i=r.length,t={point:function(t,e){for(var n=-1;++n0?e<1e-6-fc&&(e=1e-6-fc):e>fc-1e-6&&(e=fc-1e-6);var n=i/Ec(Nf(e),r);return[n*Tc(r*t),i-n*xc(r*t)]}return a.invert=function(t,e){var n=i-e,a=Cc(r)*Ac(t*t+n*n);return[bc(t,vc(n))/r*Cc(n),2*mc(Ec(i/a,1/r))-fc]},a}var Lf=function(){return mf(Bf).scale(109.5).parallels([30,30])};function Ff(t,e){return[t,e]}Ff.invert=Ff;var Pf=function(){return yf(Ff).scale(152.63)};function If(t,e){var n=xc(t),r=t===e?Tc(t):(n-xc(e))/(e-t),i=n/r+t;if(vc(r)<1e-6)return Ff;function a(t,e){var n=i-e,a=r*t;return[n*Tc(a),i-n*xc(a)]}return a.invert=function(t,e){var n=i-e;return[bc(t,vc(n))/r*Cc(n),i-Cc(r)*Ac(t*t+n*n)]},a}var jf=function(){return mf(If).scale(131.154).center([0,13.9389])},Rf=1.340264,Yf=-.081106,zf=893e-6,Uf=.003796,$f=Ac(3)/2;function Wf(t,e){var n=Oc($f*Tc(e)),r=n*n,i=r*r*r;return[t*xc(n)/($f*(Rf+3*Yf*r+i*(7*zf+9*Uf*r))),n*(Rf+Yf*r+i*(zf+Uf*r))]}Wf.invert=function(t,e){for(var n,r=e,i=r*r,a=i*i*i,o=0;o<12&&(a=(i=(r-=n=(r*(Rf+Yf*i+a*(zf+Uf*i))-e)/(Rf+3*Yf*i+a*(7*zf+9*Uf*i)))*r)*i*i,!(vc(n)<1e-12));++o);return[$f*t*(Rf+3*Yf*i+a*(7*zf+9*Uf*i))/xc(r),Oc(Tc(r)/$f)]};var Hf=function(){return yf(Wf).scale(177.158)};function Vf(t,e){var n=xc(e),r=xc(t)*n;return[n*Tc(t)/r,Tc(e)/r]}Vf.invert=Ef(mc);var Gf=function(){return yf(Vf).scale(144.049).clipAngle(60)};function qf(t,e,n,r){return 1===t&&1===e&&0===n&&0===r?ih:rf({point:function(i,a){this.stream.point(i*t+n,a*e+r)}})}var Xf=function(){var t,e,n,r,i,a,o=1,s=0,c=0,u=1,l=1,h=ih,f=null,d=ih;function p(){return r=i=null,a}return a={stream:function(t){return r&&i===t?r:r=h(d(i=t))},postclip:function(r){return arguments.length?(d=r,f=t=e=n=null,p()):d},clipExtent:function(r){return arguments.length?(d=null==r?(f=t=e=n=null,ih):Cl(f=+r[0][0],t=+r[0][1],e=+r[1][0],n=+r[1][1]),p()):null==f?null:[[f,t],[e,n]]},scale:function(t){return arguments.length?(h=qf((o=+t)*u,o*l,s,c),p()):o},translate:function(t){return arguments.length?(h=qf(o*u,o*l,s=+t[0],c=+t[1]),p()):[s,c]},reflectX:function(t){return arguments.length?(h=qf(o*(u=t?-1:1),o*l,s,c),p()):u<0},reflectY:function(t){return arguments.length?(h=qf(o*u,o*(l=t?-1:1),s,c),p()):l<0},fitExtent:function(t,e){return sf(a,t,e)},fitSize:function(t,e){return cf(a,t,e)},fitWidth:function(t,e){return uf(a,t,e)},fitHeight:function(t,e){return lf(a,t,e)}}};function Zf(t,e){var n=e*e,r=n*n;return[t*(.8707-.131979*n+r*(r*(.003971*n-.001529*r)-.013791)),e*(1.007226+n*(.015085+r*(.028874*n-.044475-.005916*r)))]}Zf.invert=function(t,e){var n,r=e,i=25;do{var a=r*r,o=a*a;r-=n=(r*(1.007226+a*(.015085+o*(.028874*a-.044475-.005916*o)))-e)/(1.007226+a*(.045255+o*(.259866*a-.311325-.005916*11*o)))}while(vc(n)>1e-6&&--i>0);return[t/(.8707+(a=r*r)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),r]};var Jf=function(){return yf(Zf).scale(175.295)};function Kf(t,e){return[xc(e)*Tc(t),Tc(e)]}Kf.invert=Ef(Oc);var Qf=function(){return yf(Kf).scale(249.5).clipAngle(90+1e-6)};function td(t,e){var n=xc(e),r=1+xc(t)*n;return[n*Tc(t)/r,Tc(e)/r]}td.invert=Ef((function(t){return 2*mc(t)}));var ed=function(){return yf(td).scale(250).clipAngle(142)};function nd(t,e){return[wc(Sc((fc+e)/2)),-t]}nd.invert=function(t,e){return[-e,2*mc(kc(t))-fc]};var rd=function(){var t=Df(nd),e=t.center,n=t.rotate;return t.center=function(t){return arguments.length?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return arguments.length?n([t[0],t[1],t.length>2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)};function id(t,e){return t.parent===e.parent?1:2}function ad(t,e){return t+e.x}function od(t,e){return Math.max(t,e.y)}var sd=function(){var t=id,e=1,n=1,r=!1;function i(i){var a,o=0;i.eachAfter((function(e){var n=e.children;n?(e.x=function(t){return t.reduce(ad,0)/t.length}(n),e.y=function(t){return 1+t.reduce(od,0)}(n)):(e.x=a?o+=t(e,a):0,e.y=0,a=e)}));var s=function(t){for(var e;e=t.children;)t=e[0];return t}(i),c=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),u=s.x-t(s,c)/2,l=c.x+t(c,s)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-u)/(l-u)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i};function cd(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n[r].value;else e=1;t.value=e}function ud(t,e){var n,r,i,a,o,s=new dd(t),c=+t.value&&(s.value=t.value),u=[s];for(null==e&&(e=ld);n=u.pop();)if(c&&(n.value=+n.data.value),(i=e(n.data))&&(o=i.length))for(n.children=new Array(o),a=o-1;a>=0;--a)u.push(r=n.children[a]=new dd(i[a])),r.parent=n,r.depth=n.depth+1;return s.eachBefore(fd)}function ld(t){return t.children}function hd(t){t.data=t.data.data}function fd(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function dd(t){this.data=t,this.depth=this.height=0,this.parent=null}dd.prototype=ud.prototype={constructor:dd,count:function(){return this.eachAfter(cd)},each:function(t){var e,n,r,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),n=a.children)for(r=0,i=n.length;r=0;--n)i.push(e[n]);return this},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;t=n.pop(),e=r.pop();for(;t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return ud(this).eachBefore(hd)}};var pd=Array.prototype.slice;var gd=function(t){for(var e,n,r=0,i=(t=function(t){for(var e,n,r=t.length;r;)n=Math.random()*r--|0,e=t[r],t[r]=t[n],t[n]=e;return t}(pd.call(t))).length,a=[];r0&&n*n>r*r+i*i}function bd(t,e){for(var n=0;n(o*=o)?(r=(u+o-i)/(2*u),a=Math.sqrt(Math.max(0,o/u-r*r)),n.x=t.x-r*s-a*c,n.y=t.y-r*c+a*s):(r=(u+i-o)/(2*u),a=Math.sqrt(Math.max(0,i/u-r*r)),n.x=e.x+r*s-a*c,n.y=e.y+r*c+a*s)):(n.x=e.x+n.r,n.y=e.y)}function Ed(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function Td(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,a=(e.y*n.r+n.y*e.r)/r;return i*i+a*a}function Cd(t){this._=t,this.next=null,this.previous=null}function Ad(t){if(!(i=t.length))return 0;var e,n,r,i,a,o,s,c,u,l,h;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;wd(n,e,r=t[2]),e=new Cd(e),n=new Cd(n),r=new Cd(r),e.next=r.previous=n,n.next=e.previous=r,r.next=n.previous=e;t:for(s=3;s0)throw new Error("cycle");return a}return n.id=function(e){return arguments.length?(t=Od(e),n):t},n.parentId=function(t){return arguments.length?(e=Od(t),n):e},n};function Vd(t,e){return t.parent===e.parent?1:2}function Gd(t){var e=t.children;return e?e[0]:t.t}function qd(t){var e=t.children;return e?e[e.length-1]:t.t}function Xd(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function Zd(t,e,n){return t.a.parent===e.parent?t.a:n}function Jd(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}Jd.prototype=Object.create(dd.prototype);var Kd=function(){var t=Vd,e=1,n=1,r=null;function i(i){var c=function(t){for(var e,n,r,i,a,o=new Jd(t,0),s=[o];e=s.pop();)if(r=e._.children)for(e.children=new Array(a=r.length),i=a-1;i>=0;--i)s.push(n=e.children[i]=new Jd(r[i],i)),n.parent=e;return(o.parent=new Jd(null,0)).children=[o],o}(i);if(c.eachAfter(a),c.parent.m=-c.z,c.eachBefore(o),r)i.eachBefore(s);else{var u=i,l=i,h=i;i.eachBefore((function(t){t.xl.x&&(l=t),t.depth>h.depth&&(h=t)}));var f=u===l?1:t(u,l)/2,d=f-u.x,p=e/(l.x+f+d),g=n/(h.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*g}))}return i}function a(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var a=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,a=e,o=e,s=n,c=a.parent.children[0],u=a.m,l=o.m,h=s.m,f=c.m;s=qd(s),a=Gd(a),s&&a;)c=Gd(c),(o=qd(o)).a=e,(i=s.z+h-a.z-u+t(s._,a._))>0&&(Xd(Zd(s,e,r),e,i),u+=i,l+=i),h+=s.m,u+=a.m,f+=c.m,l+=o.m;s&&!qd(o)&&(o.t=s,o.m+=h-l),a&&!Gd(c)&&(c.t=a,c.m+=u-f,r=e)}return r}(e,i,e.parent.A||r[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i},Qd=function(t,e,n,r,i){for(var a,o=t.children,s=-1,c=o.length,u=t.value&&(i-n)/t.value;++sf&&(f=s),y=l*l*g,(d=Math.max(f/y,y/h))>p){l-=s;break}p=d}v.push(o={value:l,dice:c1?e:1)},n}(tp),rp=function(){var t=np,e=!1,n=1,r=1,i=[0],a=Dd,o=Dd,s=Dd,c=Dd,u=Dd;function l(t){return t.x0=t.y0=0,t.x1=n,t.y1=r,t.eachBefore(h),i=[0],e&&t.eachBefore(jd),t}function h(e){var n=i[e.depth],r=e.x0+n,l=e.y0+n,h=e.x1-n,f=e.y1-n;h=n-1){var l=s[e];return l.x0=i,l.y0=a,l.x1=o,void(l.y1=c)}var h=u[e],f=r/2+h,d=e+1,p=n-1;for(;d>>1;u[g]c-a){var m=(i*v+o*y)/r;t(e,d,y,i,a,m,c),t(d,n,v,m,a,o,c)}else{var b=(a*v+c*y)/r;t(e,d,y,i,a,o,b),t(d,n,v,i,b,o,c)}}(0,c,t.value,e,n,r,i)},ap=function(t,e,n,r,i){(1&t.depth?Qd:Rd)(t,e,n,r,i)},op=function t(e){function n(t,n,r,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,c,u,l,h=-1,f=o.length,d=t.value;++h1?e:1)},n}(tp),sp=function(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}},cp=function(t,e){var n=un(+t,+e);return function(t){var e=n(t);return e-360*Math.floor(e/360)}},up=function(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}},lp=Math.SQRT2;function hp(t){return((t=Math.exp(t))+1/t)/2}var fp=function(t,e){var n,r,i=t[0],a=t[1],o=t[2],s=e[0],c=e[1],u=e[2],l=s-i,h=c-a,f=l*l+h*h;if(f<1e-12)r=Math.log(u/o)/lp,n=function(t){return[i+t*l,a+t*h,o*Math.exp(lp*t*r)]};else{var d=Math.sqrt(f),p=(u*u-o*o+4*f)/(2*o*2*d),g=(u*u-o*o-4*f)/(2*u*2*d),y=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);r=(v-y)/lp,n=function(t){var e,n=t*r,s=hp(y),c=o/(2*d)*(s*(e=lp*n+y,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(y));return[i+c*l,a+c*h,o*s/hp(lp*n+y)]}}return n.duration=1e3*r,n};function dp(t){return function(e,n){var r=t((e=tn(e)).h,(n=tn(n)).h),i=hn(e.s,n.s),a=hn(e.l,n.l),o=hn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.s=i(t),e.l=a(t),e.opacity=o(t),e+""}}}var pp=dp(un),gp=dp(hn);function yp(t,e){var n=hn((t=pa(t)).l,(e=pa(e)).l),r=hn(t.a,e.a),i=hn(t.b,e.b),a=hn(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=r(e),t.b=i(e),t.opacity=a(e),t+""}}function vp(t){return function(e,n){var r=t((e=ka(e)).h,(n=ka(n)).h),i=hn(e.c,n.c),a=hn(e.l,n.l),o=hn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=a(t),e.opacity=o(t),e+""}}}var mp=vp(un),bp=vp(hn);function xp(t){return function e(n){function r(e,r){var i=t((e=Oa(e)).h,(r=Oa(r)).h),a=hn(e.s,r.s),o=hn(e.l,r.l),s=hn(e.opacity,r.opacity);return function(t){return e.h=i(t),e.s=a(t),e.l=o(Math.pow(t,n)),e.opacity=s(t),e+""}}return n=+n,r.gamma=e,r}(1)}var _p=xp(un),kp=xp(hn);function wp(t,e){for(var n=0,r=e.length-1,i=e[0],a=new Array(r<0?0:r);n1&&(e=t[a[o-2]],n=t[a[o-1]],r=t[s],(n[0]-e[0])*(r[1]-e[1])-(n[1]-e[1])*(r[0]-e[0])<=0);)--o;a[o++]=s}return a.slice(0,o)}var Mp=function(t){if((n=t.length)<3)return null;var e,n,r=new Array(n),i=new Array(n);for(e=0;e=0;--e)u.push(t[r[a[e]][2]]);for(e=+s;es!=u>s&&o<(c-n)*(s-r)/(u-r)+n&&(l=!l),c=n,u=r;return l},Dp=function(t){for(var e,n,r=-1,i=t.length,a=t[i-1],o=a[0],s=a[1],c=0;++r1);return t+n*a*Math.sqrt(-2*Math.log(i)/i)}}return n.source=t,n}(Np),Fp=function t(e){function n(){var t=Lp.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(Np),Pp=function t(e){function n(t){return function(){for(var n=0,r=0;rr&&(e=n,n=r,r=e),function(t){return Math.max(n,Math.min(r,t))}}function tg(t,e,n){var r=t[0],i=t[1],a=e[0],o=e[1];return i2?eg:tg,i=a=null,h}function h(e){return isNaN(e=+e)?n:(i||(i=r(o.map(t),s,c)))(t(u(e)))}return h.invert=function(n){return u(e((a||(a=r(s,o.map(t),_n)))(n)))},h.domain=function(t){return arguments.length?(o=Up.call(t,Xp),u===Jp||(u=Qp(o)),l()):o.slice()},h.range=function(t){return arguments.length?(s=$p.call(t),l()):s.slice()},h.rangeRound=function(t){return s=$p.call(t),c=up,l()},h.clamp=function(t){return arguments.length?(u=t?Qp(o):Jp,h):u!==Jp},h.interpolate=function(t){return arguments.length?(c=t,l()):c},h.unknown=function(t){return arguments.length?(n=t,h):n},function(n,r){return t=n,e=r,l()}}function ig(t,e){return rg()(t,e)}var ag=function(t,e,n,r){var i,a=S(t,e,n);switch((r=Hs(null==r?",f":r)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=ac(a,o))||(r.precision=i),Zs(r,o);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=oc(a,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=ic(a))||(r.precision=i-2*("%"===r.type))}return Xs(r)};function og(t){var e=t.domain;return t.ticks=function(t){var n=e();return C(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return ag(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i=e(),a=0,o=i.length-1,s=i[a],c=i[o];return c0?r=A(s=Math.floor(s/r)*r,c=Math.ceil(c/r)*r,n):r<0&&(r=A(s=Math.ceil(s*r)/r,c=Math.floor(c*r)/r,n)),r>0?(i[a]=Math.floor(s/r)*r,i[o]=Math.ceil(c/r)*r,e(i)):r<0&&(i[a]=Math.ceil(s*r)/r,i[o]=Math.floor(c*r)/r,e(i)),t},t}function sg(){var t=ig(Jp,Jp);return t.copy=function(){return ng(t,sg())},Rp.apply(t,arguments),og(t)}function cg(t){var e;function n(t){return isNaN(t=+t)?e:t}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=Up.call(e,Xp),n):t.slice()},n.unknown=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return cg(t).unknown(e)},t=arguments.length?Up.call(t,Xp):[0,1],og(n)}var ug=function(t,e){var n,r=0,i=(t=t.slice()).length-1,a=t[r],o=t[i];return o0){for(;fc)break;g.push(h)}}else for(;f=1;--l)if(!((h=u*l)c)break;g.push(h)}}else g=C(f,d,Math.min(d-f,p)).map(n);return r?g.reverse():g},r.tickFormat=function(t,i){if(null==i&&(i=10===a?".0e":","),"function"!=typeof i&&(i=Xs(i)),t===1/0)return i;null==t&&(t=10);var o=Math.max(1,a*t/r.ticks().length);return function(t){var r=t/n(Math.round(e(t)));return r*a0?i[r-1]:e[0],r=r?[i[r-1],n]:[i[o-1],i[o]]},o.unknown=function(e){return arguments.length?(t=e,o):o},o.thresholds=function(){return i.slice()},o.copy=function(){return Mg().domain([e,n]).range(a).unknown(t)},Rp.apply(og(o),arguments)}function Og(){var t,e=[.5],n=[0,1],r=1;function i(i){return i<=i?n[c(e,i,0,r)]:t}return i.domain=function(t){return arguments.length?(e=$p.call(t),r=Math.min(e.length,n.length-1),i):e.slice()},i.range=function(t){return arguments.length?(n=$p.call(t),r=Math.min(e.length,n.length-1),i):n.slice()},i.invertExtent=function(t){var r=n.indexOf(t);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(t=e,i):t},i.copy=function(){return Og().domain(e).range(n).unknown(t)},Rp.apply(i,arguments)}var Dg=new Date,Ng=new Date;function Bg(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return Dg.setTime(+e),Ng.setTime(+r),t(Dg),t(Ng),Math.floor(n(Dg,Ng))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var Lg=Bg((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Lg.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Bg((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};var Fg=Lg,Pg=Lg.range,Ig=Bg((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),jg=Ig,Rg=Ig.range;function Yg(t){return Bg((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var zg=Yg(0),Ug=Yg(1),$g=Yg(2),Wg=Yg(3),Hg=Yg(4),Vg=Yg(5),Gg=Yg(6),qg=zg.range,Xg=Ug.range,Zg=$g.range,Jg=Wg.range,Kg=Hg.range,Qg=Vg.range,ty=Gg.range,ey=Bg((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),ny=ey,ry=ey.range,iy=Bg((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()})),ay=iy,oy=iy.range,sy=Bg((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()})),cy=sy,uy=sy.range,ly=Bg((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()})),hy=ly,fy=ly.range,dy=Bg((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));dy.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Bg((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):dy:null};var py=dy,gy=dy.range;function yy(t){return Bg((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}var vy=yy(0),my=yy(1),by=yy(2),xy=yy(3),_y=yy(4),ky=yy(5),wy=yy(6),Ey=vy.range,Ty=my.range,Cy=by.range,Ay=xy.range,Sy=_y.range,My=ky.range,Oy=wy.range,Dy=Bg((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1})),Ny=Dy,By=Dy.range,Ly=Bg((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Ly.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Bg((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};var Fy=Ly,Py=Ly.range;function Iy(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function jy(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Ry(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Yy(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,o=t.shortDays,s=t.months,c=t.shortMonths,u=Ky(i),l=Qy(i),h=Ky(a),f=Qy(a),d=Ky(o),p=Qy(o),g=Ky(s),y=Qy(s),v=Ky(c),m=Qy(c),b={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:xv,e:xv,f:Tv,H:_v,I:kv,j:wv,L:Ev,m:Cv,M:Av,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:em,s:nm,S:Sv,u:Mv,U:Ov,V:Dv,w:Nv,W:Bv,x:null,X:null,y:Lv,Y:Fv,Z:Pv,"%":tm},x={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:Iv,e:Iv,f:Uv,H:jv,I:Rv,j:Yv,L:zv,m:$v,M:Wv,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:em,s:nm,S:Hv,u:Vv,U:Gv,V:qv,w:Xv,W:Zv,x:null,X:null,y:Jv,Y:Kv,Z:Qv,"%":tm},_={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(t,e,n){var r=h.exec(e.slice(n));return r?(t.w=f[r[0].toLowerCase()],n+r[0].length):-1},b:function(t,e,n){var r=v.exec(e.slice(n));return r?(t.m=m[r[0].toLowerCase()],n+r[0].length):-1},B:function(t,e,n){var r=g.exec(e.slice(n));return r?(t.m=y[r[0].toLowerCase()],n+r[0].length):-1},c:function(t,n,r){return E(t,e,n,r)},d:lv,e:lv,f:yv,H:fv,I:fv,j:hv,L:gv,m:uv,M:dv,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=l[r[0].toLowerCase()],n+r[0].length):-1},q:cv,Q:mv,s:bv,S:pv,u:ev,U:nv,V:rv,w:tv,W:iv,x:function(t,e,r){return E(t,n,e,r)},X:function(t,e,n){return E(t,r,e,n)},y:ov,Y:av,Z:sv,"%":vv};function k(t,e){return function(n){var r,i,a,o=[],s=-1,c=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++s53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=jy(Ry(a.y,0,1))).getUTCDay(),r=i>4||0===i?my.ceil(r):my(r),r=Ny.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=Iy(Ry(a.y,0,1))).getDay(),r=i>4||0===i?Ug.ceil(r):Ug(r),r=ny.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?jy(Ry(a.y,0,1)).getUTCDay():Iy(Ry(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,jy(a)):Iy(a)}}function E(t,e,n,r){for(var i,a,o=0,s=e.length,c=n.length;o=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=_[i in Vy?e.charAt(o++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return(b.x=k(n,b),b.X=k(r,b),b.c=k(e,b),x.x=k(n,x),x.X=k(r,x),x.c=k(e,x),{format:function(t){var e=k(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=w(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=k(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=w(t+="",!0);return e.toString=function(){return t},e}})}var zy,Uy,$y,Wy,Hy,Vy={"-":"",_:" ",0:"0"},Gy=/^\s*\d+/,qy=/^%/,Xy=/[\\^$*+?|[\]().{}]/g;function Zy(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a68?1900:2e3),n+r[0].length):-1}function sv(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function cv(t,e,n){var r=Gy.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function uv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function lv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function hv(t,e,n){var r=Gy.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function fv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function dv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function pv(t,e,n){var r=Gy.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function gv(t,e,n){var r=Gy.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function yv(t,e,n){var r=Gy.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function vv(t,e,n){var r=qy.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function mv(t,e,n){var r=Gy.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function bv(t,e,n){var r=Gy.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function xv(t,e){return Zy(t.getDate(),e,2)}function _v(t,e){return Zy(t.getHours(),e,2)}function kv(t,e){return Zy(t.getHours()%12||12,e,2)}function wv(t,e){return Zy(1+ny.count(Fg(t),t),e,3)}function Ev(t,e){return Zy(t.getMilliseconds(),e,3)}function Tv(t,e){return Ev(t,e)+"000"}function Cv(t,e){return Zy(t.getMonth()+1,e,2)}function Av(t,e){return Zy(t.getMinutes(),e,2)}function Sv(t,e){return Zy(t.getSeconds(),e,2)}function Mv(t){var e=t.getDay();return 0===e?7:e}function Ov(t,e){return Zy(zg.count(Fg(t)-1,t),e,2)}function Dv(t,e){var n=t.getDay();return t=n>=4||0===n?Hg(t):Hg.ceil(t),Zy(Hg.count(Fg(t),t)+(4===Fg(t).getDay()),e,2)}function Nv(t){return t.getDay()}function Bv(t,e){return Zy(Ug.count(Fg(t)-1,t),e,2)}function Lv(t,e){return Zy(t.getFullYear()%100,e,2)}function Fv(t,e){return Zy(t.getFullYear()%1e4,e,4)}function Pv(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Zy(e/60|0,"0",2)+Zy(e%60,"0",2)}function Iv(t,e){return Zy(t.getUTCDate(),e,2)}function jv(t,e){return Zy(t.getUTCHours(),e,2)}function Rv(t,e){return Zy(t.getUTCHours()%12||12,e,2)}function Yv(t,e){return Zy(1+Ny.count(Fy(t),t),e,3)}function zv(t,e){return Zy(t.getUTCMilliseconds(),e,3)}function Uv(t,e){return zv(t,e)+"000"}function $v(t,e){return Zy(t.getUTCMonth()+1,e,2)}function Wv(t,e){return Zy(t.getUTCMinutes(),e,2)}function Hv(t,e){return Zy(t.getUTCSeconds(),e,2)}function Vv(t){var e=t.getUTCDay();return 0===e?7:e}function Gv(t,e){return Zy(vy.count(Fy(t)-1,t),e,2)}function qv(t,e){var n=t.getUTCDay();return t=n>=4||0===n?_y(t):_y.ceil(t),Zy(_y.count(Fy(t),t)+(4===Fy(t).getUTCDay()),e,2)}function Xv(t){return t.getUTCDay()}function Zv(t,e){return Zy(my.count(Fy(t)-1,t),e,2)}function Jv(t,e){return Zy(t.getUTCFullYear()%100,e,2)}function Kv(t,e){return Zy(t.getUTCFullYear()%1e4,e,4)}function Qv(){return"+0000"}function tm(){return"%"}function em(t){return+t}function nm(t){return Math.floor(+t/1e3)}function rm(t){return zy=Yy(t),Uy=zy.format,$y=zy.parse,Wy=zy.utcFormat,Hy=zy.utcParse,zy}rm({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function im(t){return new Date(t)}function am(t){return t instanceof Date?+t:+new Date(+t)}function om(t,e,n,r,a,o,s,c,u){var l=ig(Jp,Jp),h=l.invert,f=l.domain,d=u(".%L"),p=u(":%S"),g=u("%I:%M"),y=u("%I %p"),v=u("%a %d"),m=u("%b %d"),b=u("%B"),x=u("%Y"),_=[[s,1,1e3],[s,5,5e3],[s,15,15e3],[s,30,3e4],[o,1,6e4],[o,5,3e5],[o,15,9e5],[o,30,18e5],[a,1,36e5],[a,3,108e5],[a,6,216e5],[a,12,432e5],[r,1,864e5],[r,2,1728e5],[n,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,31536e6]];function k(i){return(s(i)1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return qb.h=360*t-100,qb.s=1.5-1.5*e,qb.l=.8-.9*e,qb+""},Zb=Ge(),Jb=Math.PI/3,Kb=2*Math.PI/3,Qb=function(t){var e;return t=(.5-t)*Math.PI,Zb.r=255*(e=Math.sin(t))*e,Zb.g=255*(e=Math.sin(t+Jb))*e,Zb.b=255*(e=Math.sin(t+Kb))*e,Zb+""},tx=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"};function ex(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}var nx=ex(Nm("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),rx=ex(Nm("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),ix=ex(Nm("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),ax=ex(Nm("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),ox=function(t){return ke(ne(t).call(document.documentElement))},sx=0;function cx(){return new ux}function ux(){this._="@"+(++sx).toString(36)}ux.prototype=cx.prototype={constructor:ux,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var lx=function(t){return"string"==typeof t?new be([document.querySelectorAll(t)],[document.documentElement]):new be([null==t?[]:t],me)},hx=function(t,e){null==e&&(e=Mn().touches);for(var n=0,r=e?e.length:0,i=new Array(r);n1?0:t<-1?xx:Math.acos(t)}function Ex(t){return t>=1?_x:t<=-1?-_x:Math.asin(t)}function Tx(t){return t.innerRadius}function Cx(t){return t.outerRadius}function Ax(t){return t.startAngle}function Sx(t){return t.endAngle}function Mx(t){return t&&t.padAngle}function Ox(t,e,n,r,i,a,o,s){var c=n-t,u=r-e,l=o-i,h=s-a,f=h*c-l*u;if(!(f*f<1e-12))return[t+(f=(l*(e-a)-h*(t-i))/f)*c,e+f*u]}function Dx(t,e,n,r,i,a,o){var s=t-n,c=e-r,u=(o?a:-a)/bx(s*s+c*c),l=u*c,h=-u*s,f=t+l,d=e+h,p=n+l,g=r+h,y=(f+p)/2,v=(d+g)/2,m=p-f,b=g-d,x=m*m+b*b,_=i-a,k=f*g-p*d,w=(b<0?-1:1)*bx(yx(0,_*_*x-k*k)),E=(k*b-m*w)/x,T=(-k*m-b*w)/x,C=(k*b+m*w)/x,A=(-k*m+b*w)/x,S=E-y,M=T-v,O=C-y,D=A-v;return S*S+M*M>O*O+D*D&&(E=C,T=A),{cx:E,cy:T,x01:-l,y01:-h,x11:E*(i/_-1),y11:T*(i/_-1)}}var Nx=function(){var t=Tx,e=Cx,n=fx(0),r=null,i=Ax,a=Sx,o=Mx,s=null;function c(){var c,u,l=+t.apply(this,arguments),h=+e.apply(this,arguments),f=i.apply(this,arguments)-_x,d=a.apply(this,arguments)-_x,p=dx(d-f),g=d>f;if(s||(s=c=Ui()),h1e-12)if(p>kx-1e-12)s.moveTo(h*gx(f),h*mx(f)),s.arc(0,0,h,f,d,!g),l>1e-12&&(s.moveTo(l*gx(d),l*mx(d)),s.arc(0,0,l,d,f,g));else{var y,v,m=f,b=d,x=f,_=d,k=p,w=p,E=o.apply(this,arguments)/2,T=E>1e-12&&(r?+r.apply(this,arguments):bx(l*l+h*h)),C=vx(dx(h-l)/2,+n.apply(this,arguments)),A=C,S=C;if(T>1e-12){var M=Ex(T/l*mx(E)),O=Ex(T/h*mx(E));(k-=2*M)>1e-12?(x+=M*=g?1:-1,_-=M):(k=0,x=_=(f+d)/2),(w-=2*O)>1e-12?(m+=O*=g?1:-1,b-=O):(w=0,m=b=(f+d)/2)}var D=h*gx(m),N=h*mx(m),B=l*gx(_),L=l*mx(_);if(C>1e-12){var F,P=h*gx(b),I=h*mx(b),j=l*gx(x),R=l*mx(x);if(p1e-12?S>1e-12?(y=Dx(j,R,D,N,h,S,g),v=Dx(P,I,B,L,h,S,g),s.moveTo(y.cx+y.x01,y.cy+y.y01),S1e-12&&k>1e-12?A>1e-12?(y=Dx(B,L,P,I,l,-A,g),v=Dx(D,N,j,R,l,-A,g),s.lineTo(y.cx+y.x01,y.cy+y.y01),A=l;--h)s.point(y[h],v[h]);s.lineEnd(),s.areaEnd()}g&&(y[u]=+t(f,u,c),v[u]=+n(f,u,c),s.point(e?+e(f,u,c):y[u],r?+r(f,u,c):v[u]))}if(d)return s=null,d+""||null}function u(){return Ix().defined(i).curve(o).context(a)}return c.x=function(n){return arguments.length?(t="function"==typeof n?n:fx(+n),e=null,c):t},c.x0=function(e){return arguments.length?(t="function"==typeof e?e:fx(+e),c):t},c.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:fx(+t),c):e},c.y=function(t){return arguments.length?(n="function"==typeof t?t:fx(+t),r=null,c):n},c.y0=function(t){return arguments.length?(n="function"==typeof t?t:fx(+t),c):n},c.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:fx(+t),c):r},c.lineX0=c.lineY0=function(){return u().x(t).y(n)},c.lineY1=function(){return u().x(t).y(r)},c.lineX1=function(){return u().x(e).y(n)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:fx(!!t),c):i},c.curve=function(t){return arguments.length?(o=t,null!=a&&(s=o(a)),c):o},c.context=function(t){return arguments.length?(null==t?a=s=null:s=o(a=t),c):a},c},Rx=function(t,e){return et?1:e>=t?0:NaN},Yx=function(t){return t},zx=function(){var t=Yx,e=Rx,n=null,r=fx(0),i=fx(kx),a=fx(0);function o(o){var s,c,u,l,h,f=o.length,d=0,p=new Array(f),g=new Array(f),y=+r.apply(this,arguments),v=Math.min(kx,Math.max(-kx,i.apply(this,arguments)-y)),m=Math.min(Math.abs(v)/f,a.apply(this,arguments)),b=m*(v<0?-1:1);for(s=0;s0&&(d+=h);for(null!=e?p.sort((function(t,n){return e(g[t],g[n])})):null!=n&&p.sort((function(t,e){return n(o[t],o[e])})),s=0,u=d?(v-f*b)/d:0;s0?h*u:0)+b,g[c]={data:o[c],index:s,value:h,startAngle:y,endAngle:l,padAngle:m};return g}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:fx(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:fx(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:fx(+t),o):i},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:fx(+t),o):a},o},Ux=Wx(Lx);function $x(t){this._curve=t}function Wx(t){function e(e){return new $x(t(e))}return e._curve=t,e}function Hx(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(Wx(t)):e()._curve},t}$x.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var Vx=function(){return Hx(Ix().curve(Ux))},Gx=function(){var t=jx().curve(Ux),e=t.curve,n=t.lineX0,r=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Hx(n())},delete t.lineX0,t.lineEndAngle=function(){return Hx(r())},delete t.lineX1,t.lineInnerRadius=function(){return Hx(i())},delete t.lineY0,t.lineOuterRadius=function(){return Hx(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(Wx(t)):e()._curve},t},qx=function(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]},Xx=Array.prototype.slice;function Zx(t){return t.source}function Jx(t){return t.target}function Kx(t){var e=Zx,n=Jx,r=Fx,i=Px,a=null;function o(){var o,s=Xx.call(arguments),c=e.apply(this,s),u=n.apply(this,s);if(a||(a=o=Ui()),t(a,+r.apply(this,(s[0]=c,s)),+i.apply(this,s),+r.apply(this,(s[0]=u,s)),+i.apply(this,s)),o)return a=null,o+""||null}return o.source=function(t){return arguments.length?(e=t,o):e},o.target=function(t){return arguments.length?(n=t,o):n},o.x=function(t){return arguments.length?(r="function"==typeof t?t:fx(+t),o):r},o.y=function(t){return arguments.length?(i="function"==typeof t?t:fx(+t),o):i},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o}function Qx(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e=(e+r)/2,n,e,i,r,i)}function t_(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+i)/2,r,n,r,i)}function e_(t,e,n,r,i){var a=qx(e,n),o=qx(e,n=(n+i)/2),s=qx(r,n),c=qx(r,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],c[0],c[1])}function n_(){return Kx(Qx)}function r_(){return Kx(t_)}function i_(){var t=Kx(e_);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}var a_={draw:function(t,e){var n=Math.sqrt(e/xx);t.moveTo(n,0),t.arc(0,0,n,0,kx)}},o_={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}},s_=Math.sqrt(1/3),c_=2*s_,u_={draw:function(t,e){var n=Math.sqrt(e/c_),r=n*s_;t.moveTo(0,-n),t.lineTo(r,0),t.lineTo(0,n),t.lineTo(-r,0),t.closePath()}},l_=Math.sin(xx/10)/Math.sin(7*xx/10),h_=Math.sin(kx/10)*l_,f_=-Math.cos(kx/10)*l_,d_={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),r=h_*n,i=f_*n;t.moveTo(0,-n),t.lineTo(r,i);for(var a=1;a<5;++a){var o=kx*a/5,s=Math.cos(o),c=Math.sin(o);t.lineTo(c*n,-s*n),t.lineTo(s*r-c*i,c*r+s*i)}t.closePath()}},p_={draw:function(t,e){var n=Math.sqrt(e),r=-n/2;t.rect(r,r,n,n)}},g_=Math.sqrt(3),y_={draw:function(t,e){var n=-Math.sqrt(e/(3*g_));t.moveTo(0,2*n),t.lineTo(-g_*n,-n),t.lineTo(g_*n,-n),t.closePath()}},v_=Math.sqrt(3)/2,m_=1/Math.sqrt(12),b_=3*(m_/2+1),x_={draw:function(t,e){var n=Math.sqrt(e/b_),r=n/2,i=n*m_,a=r,o=n*m_+n,s=-a,c=o;t.moveTo(r,i),t.lineTo(a,o),t.lineTo(s,c),t.lineTo(-.5*r-v_*i,v_*r+-.5*i),t.lineTo(-.5*a-v_*o,v_*a+-.5*o),t.lineTo(-.5*s-v_*c,v_*s+-.5*c),t.lineTo(-.5*r+v_*i,-.5*i-v_*r),t.lineTo(-.5*a+v_*o,-.5*o-v_*a),t.lineTo(-.5*s+v_*c,-.5*c-v_*s),t.closePath()}},__=[a_,o_,u_,p_,d_,y_,x_],k_=function(){var t=fx(a_),e=fx(64),n=null;function r(){var r;if(n||(n=r=Ui()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),r)return n=null,r+""||null}return r.type=function(e){return arguments.length?(t="function"==typeof e?e:fx(e),r):t},r.size=function(t){return arguments.length?(e="function"==typeof t?t:fx(+t),r):e},r.context=function(t){return arguments.length?(n=null==t?null:t,r):n},r},w_=function(){};function E_(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function T_(t){this._context=t}T_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:E_(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var C_=function(t){return new T_(t)};function A_(t){this._context=t}A_.prototype={areaStart:w_,areaEnd:w_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var S_=function(t){return new A_(t)};function M_(t){this._context=t}M_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var O_=function(t){return new M_(t)};function D_(t,e){this._basis=new T_(t),this._beta=e}D_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],a=e[0],o=t[n]-i,s=e[n]-a,c=-1;++c<=n;)r=c/n,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*o),this._beta*e[c]+(1-this._beta)*(a+r*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var N_=function t(e){function n(t){return 1===e?new T_(t):new D_(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function B_(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function L_(t,e){this._context=t,this._k=(1-e)/6}L_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:B_(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:B_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var F_=function t(e){function n(t){return new L_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function P_(t,e){this._context=t,this._k=(1-e)/6}P_.prototype={areaStart:w_,areaEnd:w_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:B_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var I_=function t(e){function n(t){return new P_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function j_(t,e){this._context=t,this._k=(1-e)/6}j_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:B_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var R_=function t(e){function n(t){return new j_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Y_(t,e,n){var r=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>1e-12){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>1e-12){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*u+t._x1*t._l23_2a-e*t._l12_2a)/l,o=(o*u+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(r,i,a,o,t._x2,t._y2)}function z_(t,e){this._context=t,this._alpha=e}z_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var U_=function t(e){function n(t){return e?new z_(t,e):new L_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function $_(t,e){this._context=t,this._alpha=e}$_.prototype={areaStart:w_,areaEnd:w_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var W_=function t(e){function n(t){return e?new $_(t,e):new P_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function H_(t,e){this._context=t,this._alpha=e}H_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var V_=function t(e){function n(t){return e?new H_(t,e):new j_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function G_(t){this._context=t}G_.prototype={areaStart:w_,areaEnd:w_,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};var q_=function(t){return new G_(t)};function X_(t){return t<0?-1:1}function Z_(t,e,n){var r=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),o=(n-t._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(X_(a)+X_(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function J_(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function K_(t,e,n){var r=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-r)/3;t._context.bezierCurveTo(r+s,i+s*e,a-s,o-s*n,a,o)}function Q_(t){this._context=t}function tk(t){this._context=new ek(t)}function ek(t){this._context=t}function nk(t){return new Q_(t)}function rk(t){return new tk(t)}function ik(t){this._context=t}function ak(t){var e,n,r=t.length-1,i=new Array(r),a=new Array(r),o=new Array(r);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var ck=function(t){return new sk(t,.5)};function uk(t){return new sk(t,0)}function lk(t){return new sk(t,1)}var hk=function(t,e){if((i=t.length)>1)for(var n,r,i,a=1,o=t[e[0]],s=o.length;a=0;)n[e]=e;return n};function dk(t,e){return t[e]}var pk=function(){var t=fx([]),e=fk,n=hk,r=dk;function i(i){var a,o,s=t.apply(this,arguments),c=i.length,u=s.length,l=new Array(u);for(a=0;a0){for(var n,r,i,a=0,o=t[0].length;a0)for(var n,r,i,a,o,s,c=0,u=t[e[0]].length;c0?(r[0]=a,r[1]=a+=i):i<0?(r[1]=o,r[0]=o+=i):(r[0]=0,r[1]=i)},vk=function(t,e){if((n=t.length)>0){for(var n,r=0,i=t[e[0]],a=i.length;r0&&(r=(n=t[e[0]]).length)>0){for(var n,r,i,a=0,o=1;oa&&(a=e,r=n);return r}var _k=function(t){var e=t.map(kk);return fk(t).sort((function(t,n){return e[t]-e[n]}))};function kk(t){for(var e,n=0,r=-1,i=t.length;++r0)){if(a/=f,f<0){if(a0){if(a>h)return;a>l&&(l=a)}if(a=r-c,f||!(a<0)){if(a/=f,f<0){if(a>h)return;a>l&&(l=a)}else if(f>0){if(a0)){if(a/=d,d<0){if(a0){if(a>h)return;a>l&&(l=a)}if(a=i-u,d||!(a<0)){if(a/=d,d<0){if(a>h)return;a>l&&(l=a)}else if(d>0){if(a0||h<1)||(l>0&&(t[0]=[c+l*f,u+l*d]),h<1&&(t[1]=[c+h*f,u+h*d]),!0)}}}}}function Uk(t,e,n,r,i){var a=t[1];if(a)return!0;var o,s,c=t[0],u=t.left,l=t.right,h=u[0],f=u[1],d=l[0],p=l[1],g=(h+d)/2,y=(f+p)/2;if(p===f){if(g=r)return;if(h>d){if(c){if(c[1]>=i)return}else c=[g,n];a=[g,i]}else{if(c){if(c[1]1)if(h>d){if(c){if(c[1]>=i)return}else c=[(n-s)/o,n];a=[(i-s)/o,i]}else{if(c){if(c[1]=r)return}else c=[e,o*e+s];a=[r,o*r+s]}else{if(c){if(c[0]=-lw)){var d=c*c+u*u,p=l*l+h*h,g=(h*d-u*p)/f,y=(c*p-l*d)/f,v=Gk.pop()||new qk;v.arc=t,v.site=i,v.x=g+o,v.y=(v.cy=y+s)+Math.sqrt(g*g+y*y),t.circle=v;for(var m=null,b=sw._;b;)if(v.yuw)s=s.L;else{if(!((i=a-iw(s,o))>uw)){r>-uw?(e=s.P,n=s):i>-uw?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}!function(t){ow[t.index]={site:t,halfedges:[]}}(t);var c=Qk(t);if(aw.insert(e,c),e||n){if(e===n)return Zk(e),n=Qk(e.site),aw.insert(c,n),c.edge=n.edge=jk(e.site,c.site),Xk(e),void Xk(n);if(n){Zk(e),Zk(n);var u=e.site,l=u[0],h=u[1],f=t[0]-l,d=t[1]-h,p=n.site,g=p[0]-l,y=p[1]-h,v=2*(f*y-d*g),m=f*f+d*d,b=g*g+y*y,x=[(y*m-d*b)/v+l,(f*b-g*m)/v+h];Yk(n.edge,u,p,x),c.edge=jk(u,t,null,x),n.edge=jk(t,p,null,x),Xk(e),Xk(n)}else c.edge=jk(e.site,c.site)}}function rw(t,e){var n=t.site,r=n[0],i=n[1],a=i-e;if(!a)return r;var o=t.P;if(!o)return-1/0;var s=(n=o.site)[0],c=n[1],u=c-e;if(!u)return s;var l=s-r,h=1/a-1/u,f=l/u;return h?(-f+Math.sqrt(f*f-2*h*(l*l/(-2*u)-c+u/2+i-a/2)))/h+r:(r+s)/2}function iw(t,e){var n=t.N;if(n)return rw(n,e);var r=t.site;return r[1]===e?r[0]:1/0}var aw,ow,sw,cw,uw=1e-6,lw=1e-12;function hw(t,e){return e[1]-t[1]||e[0]-t[0]}function fw(t,e){var n,r,i,a=t.sort(hw).pop();for(cw=[],ow=new Array(t.length),aw=new Ik,sw=new Ik;;)if(i=Vk,a&&(!i||a[1]uw||Math.abs(i[0][1]-i[1][1])>uw)||delete cw[a]}(o,s,c,u),function(t,e,n,r){var i,a,o,s,c,u,l,h,f,d,p,g,y=ow.length,v=!0;for(i=0;iuw||Math.abs(g-f)>uw)&&(c.splice(s,0,cw.push(Rk(o,d,Math.abs(p-t)uw?[t,Math.abs(h-t)uw?[Math.abs(f-r)uw?[n,Math.abs(h-n)uw?[Math.abs(f-e)=s)return null;var c=t-i.site[0],u=e-i.site[1],l=c*c+u*u;do{i=a.cells[r=o],o=null,i.halfedges.forEach((function(n){var r=a.edges[n],s=r.left;if(s!==i.site&&s||(s=r.right)){var c=t-s[0],u=e-s[1],h=c*c+u*u;hr?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}var Aw=function(){var t,e,n=_w,r=kw,i=Cw,a=Ew,o=Tw,s=[0,1/0],c=[[-1/0,-1/0],[1/0,1/0]],u=250,l=fp,h=lt("start","zoom","end"),f=0;function d(t){t.property("__zoom",ww).on("wheel.zoom",x).on("mousedown.zoom",_).on("dblclick.zoom",k).filter(o).on("touchstart.zoom",w).on("touchmove.zoom",E).on("touchend.zoom touchcancel.zoom",T).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(t,e){return(e=Math.max(s[0],Math.min(s[1],e)))===t.k?t:new yw(e,t.x,t.y)}function g(t,e,n){var r=e[0]-n[0]*t.k,i=e[1]-n[1]*t.k;return r===t.x&&i===t.y?t:new yw(t.k,r,i)}function y(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function v(t,e,n){t.on("start.zoom",(function(){m(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){m(this,arguments).end()})).tween("zoom",(function(){var t=this,i=arguments,a=m(t,i),o=r.apply(t,i),s=null==n?y(o):"function"==typeof n?n.apply(t,i):n,c=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),u=t.__zoom,h="function"==typeof e?e.apply(t,i):e,f=l(u.invert(s).concat(c/u.k),h.invert(s).concat(c/h.k));return function(t){if(1===t)t=h;else{var e=f(t),n=c/e[2];t=new yw(n,s[0]-e[0]*n,s[1]-e[1]*n)}a.zoom(null,t)}}))}function m(t,e,n){return!n&&t.__zooming||new b(t,e)}function b(t,e){this.that=t,this.args=e,this.active=0,this.extent=r.apply(t,e),this.taps=0}function x(){if(n.apply(this,arguments)){var t=m(this,arguments),e=this.__zoom,r=Math.max(s[0],Math.min(s[1],e.k*Math.pow(2,a.apply(this,arguments)))),o=Nn(this);if(t.wheel)t.mouse[0][0]===o[0]&&t.mouse[0][1]===o[1]||(t.mouse[1]=e.invert(t.mouse[0]=o)),clearTimeout(t.wheel);else{if(e.k===r)return;t.mouse=[o,e.invert(o)],or(this),t.start()}xw(),t.wheel=setTimeout(u,150),t.zoom("mouse",i(g(p(e,r),t.mouse[0],t.mouse[1]),t.extent,c))}function u(){t.wheel=null,t.end()}}function _(){if(!e&&n.apply(this,arguments)){var t=m(this,arguments,!0),r=ke(ce.view).on("mousemove.zoom",u,!0).on("mouseup.zoom",l,!0),a=Nn(this),o=ce.clientX,s=ce.clientY;Te(ce.view),bw(),t.mouse=[a,this.__zoom.invert(a)],or(this),t.start()}function u(){if(xw(),!t.moved){var e=ce.clientX-o,n=ce.clientY-s;t.moved=e*e+n*n>f}t.zoom("mouse",i(g(t.that.__zoom,t.mouse[0]=Nn(t.that),t.mouse[1]),t.extent,c))}function l(){r.on("mousemove.zoom mouseup.zoom",null),Ce(ce.view,t.moved),xw(),t.end()}}function k(){if(n.apply(this,arguments)){var t=this.__zoom,e=Nn(this),a=t.invert(e),o=t.k*(ce.shiftKey?.5:2),s=i(g(p(t,o),e,a),r.apply(this,arguments),c);xw(),u>0?ke(this).transition().duration(u).call(v,s,e):ke(this).call(d.transform,s)}}function w(){if(n.apply(this,arguments)){var e,r,i,a,o=ce.touches,s=o.length,c=m(this,arguments,ce.changedTouches.length===s);for(bw(),r=0;rh&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},M={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),56;case 1:return this.begin("type_directive"),57;case 2:return this.popState(),this.begin("arg_directive"),14;case 3:return this.popState(),this.popState(),59;case 4:return 58;case 5:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return this.begin("ID"),16;case 12:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),48;case 13:return this.popState(),this.popState(),this.begin("LINE"),18;case 14:return this.popState(),this.popState(),5;case 15:return this.begin("LINE"),27;case 16:return this.begin("LINE"),29;case 17:return this.begin("LINE"),30;case 18:return this.begin("LINE"),31;case 19:return this.begin("LINE"),36;case 20:return this.begin("LINE"),33;case 21:return this.begin("LINE"),35;case 22:return this.popState(),19;case 23:return 28;case 24:return 43;case 25:return 44;case 26:return 39;case 27:return 37;case 28:return this.begin("ID"),22;case 29:return this.begin("ID"),23;case 30:return 25;case 31:return 7;case 32:return 21;case 33:return 42;case 34:return 5;case 35:return e.yytext=e.yytext.trim(),48;case 36:return 51;case 37:return 52;case 38:return 49;case 39:return 50;case 40:return 53;case 41:return 54;case 42:return 55;case 43:return 46;case 44:return 47;case 45:return 5;case 46:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:participant\b)/i,/^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\b)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,12],inclusive:!1},ALIAS:{rules:[7,8,13,14],inclusive:!1},LINE:{rules:[7,8,22],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}};function O(){this.yy={}}return S.lexer=M,O.prototype=S,S.Parser=O,new O}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){var r=n(198);t.exports={Graph:r.Graph,json:n(301),alg:n(302),version:r.version}},function(t,e,n){var r;try{r={cloneDeep:n(313),constant:n(86),defaults:n(154),each:n(87),filter:n(128),find:n(314),flatten:n(156),forEach:n(126),forIn:n(319),has:n(93),isUndefined:n(139),last:n(320),map:n(140),mapValues:n(321),max:n(322),merge:n(324),min:n(329),minBy:n(330),now:n(331),pick:n(161),range:n(162),reduce:n(142),sortBy:n(338),uniqueId:n(163),values:n(147),zipObject:n(343)}}catch(t){}r||(r=window._),t.exports=r},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){ +/** + * @license + * Copyright (c) 2012-2013 Chris Pettitt + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +t.exports={graphlib:n(311),dagre:n(153),intersect:n(368),render:n(370),util:n(12),version:n(382)}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";var r=n(4),i=n(17).Graph;function a(t,e,n,i){var a;do{a=r.uniqueId(i)}while(t.hasNode(a));return n.dummy=e,t.setNode(a,n),a}function o(t){return r.max(r.map(t.nodes(),(function(e){var n=t.node(e).rank;if(!r.isUndefined(n))return n})))}t.exports={addDummyNode:a,simplify:function(t){var e=(new i).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){var r=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})})),e},asNonCompoundGraph:function(t){var e=new i({multigraph:t.isMultigraph()}).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){t.children(n).length||e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){e.setEdge(n,t.edge(n))})),e},successorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.outEdges(e),(function(e){n[e.w]=(n[e.w]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},predecessorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.inEdges(e),(function(e){n[e.v]=(n[e.v]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},intersectRect:function(t,e){var n,r,i=t.x,a=t.y,o=e.x-i,s=e.y-a,c=t.width/2,u=t.height/2;if(!o&&!s)throw new Error("Not possible to find intersection inside of the rectangle");Math.abs(s)*c>Math.abs(o)*u?(s<0&&(u=-u),n=u*o/s,r=u):(o<0&&(c=-c),n=c,r=c*s/o);return{x:i+n,y:a+r}},buildLayerMatrix:function(t){var e=r.map(r.range(o(t)+1),(function(){return[]}));return r.forEach(t.nodes(),(function(n){var i=t.node(n),a=i.rank;r.isUndefined(a)||(e[a][i.order]=n)})),e},normalizeRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank})));r.forEach(t.nodes(),(function(n){var i=t.node(n);r.has(i,"rank")&&(i.rank-=e)}))},removeEmptyRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank}))),n=[];r.forEach(t.nodes(),(function(r){var i=t.node(r).rank-e;n[i]||(n[i]=[]),n[i].push(r)}));var i=0,a=t.graph().nodeRankFactor;r.forEach(n,(function(e,n){r.isUndefined(e)&&n%a!=0?--i:i&&r.forEach(e,(function(e){t.node(e).rank+=i}))}))},addBorderNode:function(t,e,n,r){var i={width:0,height:0};arguments.length>=4&&(i.rank=n,i.order=r);return a(t,"border",i,e)},maxRank:o,partition:function(t,e){var n={lhs:[],rhs:[]};return r.forEach(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n},time:function(t,e){var n=r.now();try{return e()}finally{console.log(t+" time: "+(r.now()-n)+"ms")}},notime:function(t,e){return e()}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(173),i=n(174),a=n(175),o={channel:r.default,lang:i.default,unit:a.default};e.default=o},function(t,e,n){var r;try{r={clone:n(199),constant:n(86),each:n(87),filter:n(128),has:n(93),isArray:n(5),isEmpty:n(276),isFunction:n(37),isUndefined:n(139),keys:n(30),map:n(140),reduce:n(142),size:n(279),transform:n(285),union:n(286),values:n(147)}}catch(t){}r||(r=window._),t.exports=r},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e,n){var r=n(43);t.exports={isSubgraph:function(t,e){return!!t.children(e).length},edgeToId:function(t){return a(t.v)+":"+a(t.w)+":"+a(t.name)},applyStyle:function(t,e){e&&t.attr("style",e)},applyClass:function(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))},applyTransition:function(t,e){var n=e.graph();if(r.isPlainObject(n)){var i=n.transition;if(r.isFunction(i))return i(t)}return t}};var i=/:/g;function a(t){return t?String(t).replace(i,"\\:"):""}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,7],n=[1,6],r=[1,14],i=[1,25],a=[1,28],o=[1,26],s=[1,27],c=[1,29],u=[1,30],l=[1,31],h=[1,32],f=[1,34],d=[1,35],p=[1,36],g=[10,19],y=[1,48],v=[1,49],m=[1,50],b=[1,51],x=[1,52],_=[1,53],k=[10,19,25,32,33,41,44,45,46,47,48,49,54,56],w=[10,19,23,25,32,33,37,41,44,45,46,47,48,49,54,56,71,72,73],E=[10,13,17,19],T=[41,71,72,73],C=[41,48,49,71,72,73],A=[41,44,45,46,47,71,72,73],S=[10,19,25],M=[1,85],O={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,graphConfig:6,openDirective:7,typeDirective:8,closeDirective:9,NEWLINE:10,":":11,argDirective:12,open_directive:13,type_directive:14,arg_directive:15,close_directive:16,CLASS_DIAGRAM:17,statements:18,EOF:19,statement:20,className:21,alphaNumToken:22,GENERICTYPE:23,relationStatement:24,LABEL:25,classStatement:26,methodStatement:27,annotationStatement:28,clickStatement:29,cssClassStatement:30,CLASS:31,STYLE_SEPARATOR:32,STRUCT_START:33,members:34,STRUCT_STOP:35,ANNOTATION_START:36,ANNOTATION_END:37,MEMBER:38,SEPARATOR:39,relation:40,STR:41,relationType:42,lineType:43,AGGREGATION:44,EXTENSION:45,COMPOSITION:46,DEPENDENCY:47,LINE:48,DOTTED_LINE:49,CALLBACK:50,LINK:51,LINK_TARGET:52,CLICK:53,CALLBACK_NAME:54,CALLBACK_ARGS:55,HREF:56,CSSCLASS:57,commentToken:58,textToken:59,graphCodeTokens:60,textNoTagsToken:61,TAGSTART:62,TAGEND:63,"==":64,"--":65,PCT:66,DEFAULT:67,SPACE:68,MINUS:69,keywords:70,UNICODE_TEXT:71,NUM:72,ALPHA:73,$accept:0,$end:1},terminals_:{2:"error",10:"NEWLINE",11:":",13:"open_directive",14:"type_directive",15:"arg_directive",16:"close_directive",17:"CLASS_DIAGRAM",19:"EOF",23:"GENERICTYPE",25:"LABEL",31:"CLASS",32:"STYLE_SEPARATOR",33:"STRUCT_START",35:"STRUCT_STOP",36:"ANNOTATION_START",37:"ANNOTATION_END",38:"MEMBER",39:"SEPARATOR",41:"STR",44:"AGGREGATION",45:"EXTENSION",46:"COMPOSITION",47:"DEPENDENCY",48:"LINE",49:"DOTTED_LINE",50:"CALLBACK",51:"LINK",52:"LINK_TARGET",53:"CLICK",54:"CALLBACK_NAME",55:"CALLBACK_ARGS",56:"HREF",57:"CSSCLASS",60:"graphCodeTokens",62:"TAGSTART",63:"TAGEND",64:"==",65:"--",66:"PCT",67:"DEFAULT",68:"SPACE",69:"MINUS",70:"keywords",71:"UNICODE_TEXT",72:"NUM",73:"ALPHA"},productions_:[0,[3,1],[3,2],[4,1],[5,4],[5,6],[7,1],[8,1],[12,1],[9,1],[6,4],[18,1],[18,2],[18,3],[21,1],[21,2],[21,3],[21,2],[20,1],[20,2],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[26,2],[26,4],[26,5],[26,7],[28,4],[34,1],[34,2],[27,1],[27,2],[27,1],[27,1],[24,3],[24,4],[24,4],[24,5],[40,3],[40,2],[40,2],[40,1],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[29,3],[29,4],[29,3],[29,4],[29,4],[29,5],[29,3],[29,4],[29,4],[29,5],[29,3],[29,4],[29,4],[29,5],[30,3],[58,1],[58,1],[59,1],[59,1],[59,1],[59,1],[59,1],[59,1],[59,1],[61,1],[61,1],[61,1],[61,1],[22,1],[22,1],[22,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 6:r.parseDirective("%%{","open_directive");break;case 7:r.parseDirective(a[s],"type_directive");break;case 8:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 9:r.parseDirective("}%%","close_directive","class");break;case 14:this.$=a[s];break;case 15:this.$=a[s-1]+a[s];break;case 16:this.$=a[s-2]+"~"+a[s-1]+a[s];break;case 17:this.$=a[s-1]+"~"+a[s];break;case 18:r.addRelation(a[s]);break;case 19:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 26:r.addClass(a[s]);break;case 27:r.addClass(a[s-2]),r.setCssClass(a[s-2],a[s]);break;case 28:r.addClass(a[s-3]),r.addMembers(a[s-3],a[s-1]);break;case 29:r.addClass(a[s-5]),r.setCssClass(a[s-5],a[s-3]),r.addMembers(a[s-5],a[s-1]);break;case 30:r.addAnnotation(a[s],a[s-2]);break;case 31:this.$=[a[s]];break;case 32:a[s].push(a[s-1]),this.$=a[s];break;case 33:break;case 34:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 35:case 36:break;case 37:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 38:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:"none"};break;case 39:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:"none",relationTitle2:a[s-1]};break;case 40:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 41:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 42:this.$={type1:"none",type2:a[s],lineType:a[s-1]};break;case 43:this.$={type1:a[s-1],type2:"none",lineType:a[s]};break;case 44:this.$={type1:"none",type2:"none",lineType:a[s]};break;case 45:this.$=r.relationType.AGGREGATION;break;case 46:this.$=r.relationType.EXTENSION;break;case 47:this.$=r.relationType.COMPOSITION;break;case 48:this.$=r.relationType.DEPENDENCY;break;case 49:this.$=r.lineType.LINE;break;case 50:this.$=r.lineType.DOTTED_LINE;break;case 51:case 57:this.$=a[s-2],r.setClickEvent(a[s-1],a[s]);break;case 52:case 58:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 53:case 61:this.$=a[s-2],r.setLink(a[s-1],a[s]);break;case 54:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s]);break;case 55:case 63:this.$=a[s-3],r.setLink(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 56:case 64:this.$=a[s-4],r.setLink(a[s-3],a[s-2],a[s]),r.setTooltip(a[s-3],a[s-1]);break;case 59:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 60:this.$=a[s-4],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setTooltip(a[s-3],a[s]);break;case 62:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s]);break;case 65:r.setCssClass(a[s-1],a[s])}},table:[{3:1,4:2,5:3,6:4,7:5,13:e,17:n},{1:[3]},{1:[2,1]},{3:8,4:2,5:3,6:4,7:5,13:e,17:n},{1:[2,3]},{8:9,14:[1,10]},{10:[1,11]},{14:[2,6]},{1:[2,2]},{9:12,11:[1,13],16:r},t([11,16],[2,7]),{5:23,7:5,13:e,18:15,20:16,21:24,22:33,24:17,26:18,27:19,28:20,29:21,30:22,31:i,36:a,38:o,39:s,50:c,51:u,53:l,57:h,71:f,72:d,73:p},{10:[1,37]},{12:38,15:[1,39]},{10:[2,9]},{19:[1,40]},{10:[1,41],19:[2,11]},t(g,[2,18],{25:[1,42]}),t(g,[2,20]),t(g,[2,21]),t(g,[2,22]),t(g,[2,23]),t(g,[2,24]),t(g,[2,25]),t(g,[2,33],{40:43,42:46,43:47,25:[1,45],41:[1,44],44:y,45:v,46:m,47:b,48:x,49:_}),{21:54,22:33,71:f,72:d,73:p},t(g,[2,35]),t(g,[2,36]),{22:55,71:f,72:d,73:p},{21:56,22:33,71:f,72:d,73:p},{21:57,22:33,71:f,72:d,73:p},{21:58,22:33,71:f,72:d,73:p},{41:[1,59]},t(k,[2,14],{22:33,21:60,23:[1,61],71:f,72:d,73:p}),t(w,[2,79]),t(w,[2,80]),t(w,[2,81]),t(E,[2,4]),{9:62,16:r},{16:[2,8]},{1:[2,10]},{5:23,7:5,13:e,18:63,19:[2,12],20:16,21:24,22:33,24:17,26:18,27:19,28:20,29:21,30:22,31:i,36:a,38:o,39:s,50:c,51:u,53:l,57:h,71:f,72:d,73:p},t(g,[2,19]),{21:64,22:33,41:[1,65],71:f,72:d,73:p},{40:66,42:46,43:47,44:y,45:v,46:m,47:b,48:x,49:_},t(g,[2,34]),{43:67,48:x,49:_},t(T,[2,44],{42:68,44:y,45:v,46:m,47:b}),t(C,[2,45]),t(C,[2,46]),t(C,[2,47]),t(C,[2,48]),t(A,[2,49]),t(A,[2,50]),t(g,[2,26],{32:[1,69],33:[1,70]}),{37:[1,71]},{41:[1,72]},{41:[1,73]},{54:[1,74],56:[1,75]},{22:76,71:f,72:d,73:p},t(k,[2,15]),t(k,[2,17],{22:33,21:77,71:f,72:d,73:p}),{10:[1,78]},{19:[2,13]},t(S,[2,37]),{21:79,22:33,71:f,72:d,73:p},{21:80,22:33,41:[1,81],71:f,72:d,73:p},t(T,[2,43],{42:82,44:y,45:v,46:m,47:b}),t(T,[2,42]),{22:83,71:f,72:d,73:p},{34:84,38:M},{21:86,22:33,71:f,72:d,73:p},t(g,[2,51],{41:[1,87]}),t(g,[2,53],{41:[1,89],52:[1,88]}),t(g,[2,57],{41:[1,90],55:[1,91]}),t(g,[2,61],{41:[1,93],52:[1,92]}),t(g,[2,65]),t(k,[2,16]),t(E,[2,5]),t(S,[2,39]),t(S,[2,38]),{21:94,22:33,71:f,72:d,73:p},t(T,[2,41]),t(g,[2,27],{33:[1,95]}),{35:[1,96]},{34:97,35:[2,31],38:M},t(g,[2,30]),t(g,[2,52]),t(g,[2,54]),t(g,[2,55],{52:[1,98]}),t(g,[2,58]),t(g,[2,59],{41:[1,99]}),t(g,[2,62]),t(g,[2,63],{52:[1,100]}),t(S,[2,40]),{34:101,38:M},t(g,[2,28]),{35:[2,32]},t(g,[2,56]),t(g,[2,60]),t(g,[2,64]),{35:[1,102]},t(g,[2,29])],defaultActions:{2:[2,1],4:[2,3],7:[2,6],8:[2,2],14:[2,9],39:[2,8],40:[2,10],63:[2,13],97:[2,32]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},D={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),13;case 1:return this.begin("type_directive"),14;case 2:return this.popState(),this.begin("arg_directive"),11;case 3:return this.popState(),this.popState(),16;case 4:return 15;case 5:case 6:break;case 7:return 10;case 8:break;case 9:case 10:return 17;case 11:return this.begin("struct"),33;case 12:return"EOF_IN_STRUCT";case 13:return"OPEN_IN_STRUCT";case 14:return this.popState(),35;case 15:break;case 16:return"MEMBER";case 17:return 31;case 18:return 57;case 19:return 50;case 20:return 51;case 21:return 53;case 22:return 36;case 23:return 37;case 24:this.begin("generic");break;case 25:this.popState();break;case 26:return"GENERICTYPE";case 27:this.begin("string");break;case 28:this.popState();break;case 29:return"STR";case 30:this.begin("href");break;case 31:this.popState();break;case 32:return 56;case 33:this.begin("callback_name");break;case 34:this.popState();break;case 35:this.popState(),this.begin("callback_args");break;case 36:return 54;case 37:this.popState();break;case 38:return 55;case 39:case 40:case 41:case 42:return 52;case 43:case 44:return 45;case 45:case 46:return 47;case 47:return 46;case 48:return 44;case 49:return 48;case 50:return 49;case 51:return 25;case 52:return 32;case 53:return 69;case 54:return"DOT";case 55:return"PLUS";case 56:return 66;case 57:case 58:return"EQUALS";case 59:return 73;case 60:return"PUNCTUATION";case 61:return 72;case 62:return 71;case 63:return 68;case 64:return 19}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callback_args:{rules:[37,38],inclusive:!1},callback_name:{rules:[34,35,36],inclusive:!1},href:{rules:[31,32],inclusive:!1},struct:{rules:[12,13,14,15,16],inclusive:!1},generic:{rules:[25,26],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,17,18,19,20,21,22,23,24,27,30,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64],inclusive:!0}}};function N(){this.yy={}}return O.lexer=D,N.prototype=O,O.Parser=N,new N}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e){var n,r,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var c,u=[],l=!1,h=-1;function f(){l&&c&&(l=!1,c.length?u=c.concat(u):h=-1,u.length&&d())}function d(){if(!l){var t=s(f);l=!0;for(var e=u.length;e;){for(c=u,u=[];++h1)for(var n=1;n=0;r--){var i=t[r];"."===i?t.splice(r,1):".."===i?(t.splice(r,1),n++):n&&(t.splice(r,1),n--)}if(e)for(;n--;n)t.unshift("..");return t}function r(t,e){if(t.filter)return t.filter(e);for(var n=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:t.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(e=o+"/"+e,i="/"===o.charAt(0))}return(i?"/":"")+(e=n(r(e.split("/"),(function(t){return!!t})),!i).join("/"))||"."},e.normalize=function(t){var a=e.isAbsolute(t),o="/"===i(t,-1);return(t=n(r(t.split("/"),(function(t){return!!t})),!a).join("/"))||a||(t="."),t&&o&&(t+="/"),(a?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(r(t,(function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,n){function r(t){for(var e=0;e=0&&""===t[n];n--);return e>n?[]:t.slice(e,n-e+1)}t=e.resolve(t).substr(1),n=e.resolve(n).substr(1);for(var i=r(t.split("/")),a=r(n.split("/")),o=Math.min(i.length,a.length),s=o,c=0;c=1;--a)if(47===(e=t.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?n?"/":".":n&&1===r?"/":t.slice(0,r)},e.basename=function(t,e){var n=function(t){"string"!=typeof t&&(t+="");var e,n=0,r=-1,i=!0;for(e=t.length-1;e>=0;--e)if(47===t.charCodeAt(e)){if(!i){n=e+1;break}}else-1===r&&(i=!1,r=e+1);return-1===r?"":t.slice(n,r)}(t);return e&&n.substr(-1*e.length)===e&&(n=n.substr(0,n.length-e.length)),n},e.extname=function(t){"string"!=typeof t&&(t+="");for(var e=-1,n=0,r=-1,i=!0,a=0,o=t.length-1;o>=0;--o){var s=t.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===e?e=o:1!==a&&(a=1):-1!==e&&(a=-1);else if(!i){n=o+1;break}}return-1===e||-1===r||0===a||1===a&&e===r-1&&e===n+1?"":t.slice(e,r)};var i="b"==="ab".substr(-1)?function(t,e,n){return t.substr(e,n)}:function(t,e,n){return e<0&&(e=t.length+e),t.substr(e,n)}}).call(this,n(14))},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,3],r=[1,5],i=[1,7],a=[2,5],o=[1,15],s=[1,17],c=[1,19],u=[1,20],l=[1,21],h=[1,22],f=[1,28],d=[1,23],p=[1,24],g=[1,25],y=[1,26],v=[1,29],m=[1,32],b=[1,4,5,14,15,17,19,20,22,23,24,25,26,36,39],x=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,36,39],_=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,36,39],k=[4,5,14,15,17,19,20,22,23,24,25,26,36,39],w={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,idStatement:11,DESCR:12,"--\x3e":13,HIDE_EMPTY:14,scale:15,WIDTH:16,COMPOSIT_STATE:17,STRUCT_START:18,STRUCT_STOP:19,STATE_DESCR:20,AS:21,ID:22,FORK:23,JOIN:24,CONCURRENT:25,note:26,notePosition:27,NOTE_TEXT:28,openDirective:29,typeDirective:30,closeDirective:31,":":32,argDirective:33,eol:34,";":35,EDGE_STATE:36,left_of:37,right_of:38,open_directive:39,type_directive:40,arg_directive:41,close_directive:42,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",12:"DESCR",13:"--\x3e",14:"HIDE_EMPTY",15:"scale",16:"WIDTH",17:"COMPOSIT_STATE",18:"STRUCT_START",19:"STRUCT_STOP",20:"STATE_DESCR",21:"AS",22:"ID",23:"FORK",24:"JOIN",25:"CONCURRENT",26:"note",28:"NOTE_TEXT",32:":",35:";",36:"EDGE_STATE",37:"left_of",38:"right_of",39:"open_directive",40:"type_directive",41:"arg_directive",42:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[6,3],[6,5],[34,1],[34,1],[11,1],[11,1],[27,1],[27,1],[29,1],[30,1],[33,1],[31,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:return r.setRootDoc(a[s]),a[s];case 5:this.$=[];break;case 6:"nl"!=a[s]&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 7:case 8:this.$=a[s];break;case 9:this.$="nl";break;case 10:this.$={stmt:"state",id:a[s],type:"default",description:""};break;case 11:this.$={stmt:"state",id:a[s-1],type:"default",description:r.trimColon(a[s])};break;case 12:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-2],type:"default",description:""},state2:{stmt:"state",id:a[s],type:"default",description:""}};break;case 13:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-3],type:"default",description:""},state2:{stmt:"state",id:a[s-1],type:"default",description:""},description:a[s].substr(1).trim()};break;case 17:this.$={stmt:"state",id:a[s-3],type:"default",description:"",doc:a[s-1]};break;case 18:var c=a[s],u=a[s-2].trim();if(a[s].match(":")){var l=a[s].split(":");c=l[0],u=[u,l[1]]}this.$={stmt:"state",id:c,type:"default",description:u};break;case 19:this.$={stmt:"state",id:a[s-3],type:"default",description:a[s-5],doc:a[s-1]};break;case 20:this.$={stmt:"state",id:a[s],type:"fork"};break;case 21:this.$={stmt:"state",id:a[s],type:"join"};break;case 22:this.$={stmt:"state",id:r.getDividerId(),type:"divider"};break;case 23:this.$={stmt:"state",id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 30:case 31:this.$=a[s];break;case 34:r.parseDirective("%%{","open_directive");break;case 35:r.parseDirective(a[s],"type_directive");break;case 36:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 37:r.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:e,5:n,6:4,7:r,29:6,39:i},{1:[3]},{3:8,4:e,5:n,6:4,7:r,29:6,39:i},{3:9,4:e,5:n,6:4,7:r,29:6,39:i},{3:10,4:e,5:n,6:4,7:r,29:6,39:i},t([1,4,5,14,15,17,20,22,23,24,25,26,36,39],a,{8:11}),{30:12,40:[1,13]},{40:[2,34]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:s,6:27,9:14,10:16,11:18,14:c,15:u,17:l,20:h,22:f,23:d,24:p,25:g,26:y,29:6,36:v,39:i},{31:30,32:[1,31],42:m},t([32,42],[2,35]),t(b,[2,6]),{6:27,10:33,11:18,14:c,15:u,17:l,20:h,22:f,23:d,24:p,25:g,26:y,29:6,36:v,39:i},t(b,[2,8]),t(b,[2,9]),t(b,[2,10],{12:[1,34],13:[1,35]}),t(b,[2,14]),{16:[1,36]},t(b,[2,16],{18:[1,37]}),{21:[1,38]},t(b,[2,20]),t(b,[2,21]),t(b,[2,22]),{27:39,28:[1,40],37:[1,41],38:[1,42]},t(b,[2,25]),t(x,[2,30]),t(x,[2,31]),t(_,[2,26]),{33:43,41:[1,44]},t(_,[2,37]),t(b,[2,7]),t(b,[2,11]),{11:45,22:f,36:v},t(b,[2,15]),t(k,a,{8:46}),{22:[1,47]},{22:[1,48]},{21:[1,49]},{22:[2,32]},{22:[2,33]},{31:50,42:m},{42:[2,36]},t(b,[2,12],{12:[1,51]}),{4:o,5:s,6:27,9:14,10:16,11:18,14:c,15:u,17:l,19:[1,52],20:h,22:f,23:d,24:p,25:g,26:y,29:6,36:v,39:i},t(b,[2,18],{18:[1,53]}),{28:[1,54]},{22:[1,55]},t(_,[2,27]),t(b,[2,13]),t(b,[2,17]),t(k,a,{8:56}),t(b,[2,23]),t(b,[2,24]),{4:o,5:s,6:27,9:14,10:16,11:18,14:c,15:u,17:l,19:[1,57],20:h,22:f,23:d,24:p,25:g,26:y,29:6,36:v,39:i},t(b,[2,19])],defaultActions:{7:[2,34],8:[2,1],9:[2,2],10:[2,3],41:[2,32],42:[2,33],44:[2,36]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},E={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),39;case 1:return this.begin("type_directive"),40;case 2:return this.popState(),this.begin("arg_directive"),32;case 3:return this.popState(),this.popState(),42;case 4:return 41;case 5:break;case 6:console.log("Crap after close");break;case 7:return 5;case 8:case 9:case 10:case 11:break;case 12:return this.pushState("SCALE"),15;case 13:return 16;case 14:this.popState();break;case 15:this.pushState("STATE");break;case 16:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 17:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),24;case 18:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 19:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),24;case 20:this.begin("STATE_STRING");break;case 21:return this.popState(),this.pushState("STATE_ID"),"AS";case 22:return this.popState(),"ID";case 23:this.popState();break;case 24:return"STATE_DESCR";case 25:return 17;case 26:this.popState();break;case 27:return this.popState(),this.pushState("struct"),18;case 28:return this.popState(),19;case 29:break;case 30:return this.begin("NOTE"),26;case 31:return this.popState(),this.pushState("NOTE_ID"),37;case 32:return this.popState(),this.pushState("NOTE_ID"),38;case 33:this.popState(),this.pushState("FLOATING_NOTE");break;case 34:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 35:break;case 36:return"NOTE_TEXT";case 37:return this.popState(),"ID";case 38:return this.popState(),this.pushState("NOTE_TEXT"),22;case 39:return this.popState(),e.yytext=e.yytext.substr(2).trim(),28;case 40:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),28;case 41:case 42:return 7;case 43:return 14;case 44:return 36;case 45:return 22;case 46:return e.yytext=e.yytext.trim(),12;case 47:return 13;case 48:return 25;case 49:return 5;case 50:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},close_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[3,4,9,10],inclusive:!1},type_directive:{rules:[2,3,9,10],inclusive:!1},open_directive:{rules:[1,9,10],inclusive:!1},struct:{rules:[9,10,15,28,29,30,44,45,46,47,48],inclusive:!1},FLOATING_NOTE_ID:{rules:[37],inclusive:!1},FLOATING_NOTE:{rules:[34,35,36],inclusive:!1},NOTE_TEXT:{rules:[39,40],inclusive:!1},NOTE_ID:{rules:[38],inclusive:!1},NOTE:{rules:[31,32,33],inclusive:!1},SCALE:{rules:[13,14],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[22],inclusive:!1},STATE_STRING:{rules:[23,24],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,16,17,18,19,20,21,25,26,27],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,10,11,12,15,27,30,41,42,43,44,45,46,47,49,50],inclusive:!0}}};function T(){this.yy={}}return w.lexer=E,T.prototype=w,w.Parser=T,new T}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t){t.exports=function(){"use strict";var e,r;function i(){return e.apply(null,arguments)}function a(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function c(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function u(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function l(t,e){var n,r=[];for(n=0;n>>0,r=0;ryt(t)?(a=t+1,s-yt(t)):(a=t,s),{year:a,dayOfYear:o}}function Ft(t,e,n){var r,i,a=Bt(t.year(),e,n),o=Math.floor((t.dayOfYear()-a-1)/7)+1;return o<1?r=o+Pt(i=t.year()-1,e,n):o>Pt(t.year(),e,n)?(r=o-Pt(t.year(),e,n),i=t.year()+1):(i=t.year(),r=o),{week:r,year:i}}function Pt(t,e,n){var r=Bt(t,e,n),i=Bt(t+1,e,n);return(yt(t)-r+i)/7}function It(t,e){return t.slice(e,7).concat(t.slice(0,e))}W("w",["ww",2],"wo","week"),W("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),j("week",5),j("isoWeek",5),lt("w",K),lt("ww",K,q),lt("W",K),lt("WW",K,q),gt(["w","ww","W","WW"],(function(t,e,n,r){e[r.substr(0,1)]=w(t)})),W("d",0,"do","day"),W("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),W("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),W("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),W("e",0,0,"weekday"),W("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),j("day",11),j("weekday",11),j("isoWeekday",11),lt("d",K),lt("e",K),lt("E",K),lt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),lt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),lt("dddd",(function(t,e){return e.weekdaysRegex(t)})),gt(["dd","ddd","dddd"],(function(t,e,n,r){var i=n._locale.weekdaysParse(t,r,n._strict);null!=i?e.d=i:p(n).invalidWeekday=t})),gt(["d","e","E"],(function(t,e,n,r){e[r]=w(t)}));var jt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Rt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Yt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),zt=ct,Ut=ct,$t=ct;function Wt(){function t(t,e){return e.length-t.length}var e,n,r,i,a,o=[],s=[],c=[],u=[];for(e=0;e<7;e++)n=d([2e3,1]).day(e),r=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),a=this.weekdays(n,""),o.push(r),s.push(i),c.push(a),u.push(r),u.push(i),u.push(a);for(o.sort(t),s.sort(t),c.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ft(s[e]),c[e]=ft(c[e]),u[e]=ft(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Ht(){return this.hours()%12||12}function Vt(t,e){W(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Gt(t,e){return e._meridiemParse}W("H",["HH",2],0,"hour"),W("h",["hh",2],0,Ht),W("k",["kk",2],0,(function(){return this.hours()||24})),W("hmm",0,0,(function(){return""+Ht.apply(this)+R(this.minutes(),2)})),W("hmmss",0,0,(function(){return""+Ht.apply(this)+R(this.minutes(),2)+R(this.seconds(),2)})),W("Hmm",0,0,(function(){return""+this.hours()+R(this.minutes(),2)})),W("Hmmss",0,0,(function(){return""+this.hours()+R(this.minutes(),2)+R(this.seconds(),2)})),Vt("a",!0),Vt("A",!1),L("hour","h"),j("hour",13),lt("a",Gt),lt("A",Gt),lt("H",K),lt("h",K),lt("k",K),lt("HH",K,q),lt("hh",K,q),lt("kk",K,q),lt("hmm",Q),lt("hmmss",tt),lt("Hmm",Q),lt("Hmmss",tt),pt(["H","HH"],3),pt(["k","kk"],(function(t,e,n){var r=w(t);e[3]=24===r?0:r})),pt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),pt(["h","hh"],(function(t,e,n){e[3]=w(t),p(n).bigHour=!0})),pt("hmm",(function(t,e,n){var r=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r)),p(n).bigHour=!0})),pt("hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r,2)),e[5]=w(t.substr(i)),p(n).bigHour=!0})),pt("Hmm",(function(t,e,n){var r=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r))})),pt("Hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=w(t.substr(0,r)),e[4]=w(t.substr(r,2)),e[5]=w(t.substr(i))}));var qt,Xt=xt("Hours",!0),Zt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Tt,monthsShort:Ct,week:{dow:0,doy:6},weekdays:jt,weekdaysMin:Yt,weekdaysShort:Rt,meridiemParse:/[ap]\.?m?\.?/i},Jt={},Kt={};function Qt(t){return t?t.toLowerCase().replace("_","-"):t}function te(e){var r=null;if(!Jt[e]&&void 0!==t&&t&&t.exports)try{r=qt._abbr,n(171)("./"+e),ee(r)}catch(e){}return Jt[e]}function ee(t,e){var n;return t&&((n=s(e)?re(t):ne(t,e))?qt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),qt._abbr}function ne(t,e){if(null===e)return delete Jt[t],null;var n,r=Zt;if(e.abbr=t,null!=Jt[t])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=Jt[t]._config;else if(null!=e.parentLocale)if(null!=Jt[e.parentLocale])r=Jt[e.parentLocale]._config;else{if(null==(n=te(e.parentLocale)))return Kt[e.parentLocale]||(Kt[e.parentLocale]=[]),Kt[e.parentLocale].push({name:t,config:e}),null;r=n._config}return Jt[t]=new N(D(r,e)),Kt[t]&&Kt[t].forEach((function(t){ne(t.name,t.config)})),ee(t),Jt[t]}function re(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return qt;if(!a(t)){if(e=te(t))return e;t=[t]}return function(t){for(var e,n,r,i,a=0;a=e&&E(i,n,!0)>=e-1)break;e--}a++}return qt}(t)}function ie(t){var e,n=t._a;return n&&-2===p(t).overflow&&(e=n[1]<0||11wt(n[0],n[1])?2:n[3]<0||24Pt(n,a,o)?p(t)._overflowWeeks=!0:null!=c?p(t)._overflowWeekday=!0:(s=Lt(n,r,i,a,o),t._a[0]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=ae(t._a[0],r[0]),(t._dayOfYear>yt(o)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),n=Nt(o,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=r[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Nt:function(t,e,n,r,i,a,o){var s;return t<100&&0<=t?(s=new Date(t+400,e,n,r,i,a,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,r,i,a,o),s}).apply(null,s),a=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==a&&(p(t).weekdayMismatch=!0)}}var se=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ce=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ue=/Z|[+-]\d\d(?::?\d\d)?/,le=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],he=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],fe=/^\/?Date\((\-?\d+)/i;function de(t){var e,n,r,i,a,o,s=t._i,c=se.exec(s)||ce.exec(s);if(c){for(p(t).iso=!0,e=0,n=le.length;en.valueOf():n.valueOf()this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},on.isLocal=function(){return!!this.isValid()&&!this._isUTC},on.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},on.isUtc=Be,on.isUTC=Be,on.zoneAbbr=function(){return this._isUTC?"UTC":""},on.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},on.dates=C("dates accessor is deprecated. Use date instead.",Qe),on.months=C("months accessor is deprecated. Use month instead",St),on.years=C("years accessor is deprecated. Use year instead",bt),on.zone=C("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),on.isDSTShifted=C("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(m(t,this),(t=me(t))._a){var e=t._isUTC?d(t._a):xe(t._a);this._isDSTShifted=this.isValid()&&0h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},qt={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:case 6:break;case 7:this.begin("string");break;case 8:this.popState();break;case 9:return"STR";case 10:return 75;case 11:return 84;case 12:return 76;case 13:return 93;case 14:return 77;case 15:return 78;case 16:this.begin("href");break;case 17:this.popState();break;case 18:return 89;case 19:this.begin("callbackname");break;case 20:this.popState();break;case 21:this.popState(),this.begin("callbackargs");break;case 22:return 87;case 23:this.popState();break;case 24:return 88;case 25:this.begin("click");break;case 26:this.popState();break;case 27:return 79;case 28:case 29:return t.lex.firstGraph()&&this.begin("dir"),24;case 30:return 38;case 31:return 42;case 32:case 33:case 34:case 35:return 90;case 36:return this.popState(),25;case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:return this.popState(),26;case 47:return 94;case 48:return 102;case 49:return 47;case 50:return 99;case 51:return 46;case 52:return 20;case 53:return 95;case 54:return 113;case 55:case 56:case 57:return 70;case 58:case 59:case 60:return 69;case 61:return 51;case 62:return 52;case 63:return 53;case 64:return 54;case 65:return 55;case 66:return 56;case 67:return 57;case 68:return 58;case 69:return 100;case 70:return 103;case 71:return 114;case 72:return 111;case 73:return 104;case 74:case 75:return 112;case 76:return 105;case 77:return 61;case 78:return 81;case 79:return"SEP";case 80:return 80;case 81:return 98;case 82:return 63;case 83:return 62;case 84:return 65;case 85:return 64;case 86:return 109;case 87:return 110;case 88:return 71;case 89:return 49;case 90:return 50;case 91:return 40;case 92:return 41;case 93:return 59;case 94:return 60;case 95:return 120;case 96:return 21;case 97:return 22;case 98:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)[^\n]*)/,/^(?:[^\}]%%[^\n]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\()/,/^(?:\)\])/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[23,24],inclusive:!1},callbackname:{rules:[20,21,22],inclusive:!1},href:{rules:[17,18],inclusive:!1},click:{rules:[26,27],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[36,37,38,39,40,41,42,43,44,45,46],inclusive:!1},string:{rules:[8,9],inclusive:!1},INITIAL:{rules:[0,5,6,7,10,11,12,13,14,15,16,19,25,28,29,30,31,32,33,34,35,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],inclusive:!0}}};function Xt(){this.yy={}}return Gt.lexer=qt,Xt.prototype=Gt,Gt.Parser=Xt,new Xt}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,3],n=[1,5],r=[7,9,11,12,13,14,15,16,17,18,20,27,32],i=[1,15],a=[1,16],o=[1,17],s=[1,18],c=[1,19],u=[1,20],l=[1,21],h=[1,23],f=[1,25],d=[1,28],p=[5,7,9,11,12,13,14,15,16,17,18,20,27,32],g={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,axisFormat:14,excludes:15,todayMarker:16,title:17,section:18,clickStatement:19,taskTxt:20,taskData:21,openDirective:22,typeDirective:23,closeDirective:24,":":25,argDirective:26,click:27,callbackname:28,callbackargs:29,href:30,clickStatementDebug:31,open_directive:32,type_directive:33,arg_directive:34,close_directive:35,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"axisFormat",15:"excludes",16:"todayMarker",17:"title",18:"section",20:"taskTxt",21:"taskData",25:":",27:"click",28:"callbackname",29:"callbackargs",30:"href",32:"open_directive",33:"type_directive",34:"arg_directive",35:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[19,2],[19,3],[19,3],[19,4],[19,3],[19,4],[19,2],[31,2],[31,3],[31,3],[31,4],[31,3],[31,4],[31,2],[22,1],[23,1],[26,1],[24,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 2:return a[s-1];case 3:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 7:case 8:this.$=[];break;case 9:r.setDateFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 10:r.enableInclusiveEndDates(),this.$=a[s].substr(18);break;case 11:r.setAxisFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 12:r.setExcludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 13:r.setTodayMarker(a[s].substr(12)),this.$=a[s].substr(12);break;case 14:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 15:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 17:r.addTask(a[s-1],a[s]),this.$="task";break;case 21:this.$=a[s-1],r.setClickEvent(a[s-1],a[s],null);break;case 22:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 23:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],null),r.setLink(a[s-2],a[s]);break;case 24:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setLink(a[s-3],a[s]);break;case 25:this.$=a[s-2],r.setClickEvent(a[s-2],a[s],null),r.setLink(a[s-2],a[s-1]);break;case 26:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-1],a[s]),r.setLink(a[s-3],a[s-2]);break;case 27:this.$=a[s-1],r.setLink(a[s-1],a[s]);break;case 28:case 34:this.$=a[s-1]+" "+a[s];break;case 29:case 30:case 32:this.$=a[s-2]+" "+a[s-1]+" "+a[s];break;case 31:case 33:this.$=a[s-3]+" "+a[s-2]+" "+a[s-1]+" "+a[s];break;case 35:r.parseDirective("%%{","open_directive");break;case 36:r.parseDirective(a[s],"type_directive");break;case 37:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 38:r.parseDirective("}%%","close_directive","gantt")}},table:[{3:1,4:2,5:e,22:4,32:n},{1:[3]},{3:6,4:2,5:e,22:4,32:n},t(r,[2,3],{6:7}),{23:8,33:[1,9]},{33:[2,35]},{1:[2,1]},{4:24,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:i,13:a,14:o,15:s,16:c,17:u,18:l,19:22,20:h,22:4,27:f,32:n},{24:26,25:[1,27],35:d},t([25,35],[2,36]),t(r,[2,8],{1:[2,2]}),t(r,[2,4]),{4:24,10:29,12:i,13:a,14:o,15:s,16:c,17:u,18:l,19:22,20:h,22:4,27:f,32:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,9]),t(r,[2,10]),t(r,[2,11]),t(r,[2,12]),t(r,[2,13]),t(r,[2,14]),t(r,[2,15]),t(r,[2,16]),{21:[1,30]},t(r,[2,18]),{28:[1,31],30:[1,32]},{11:[1,33]},{26:34,34:[1,35]},{11:[2,38]},t(r,[2,5]),t(r,[2,17]),t(r,[2,21],{29:[1,36],30:[1,37]}),t(r,[2,27],{28:[1,38]}),t(p,[2,19]),{24:39,35:d},{35:[2,37]},t(r,[2,22],{30:[1,40]}),t(r,[2,23]),t(r,[2,25],{29:[1,41]}),{11:[1,42]},t(r,[2,24]),t(r,[2,26]),t(p,[2,20])],defaultActions:{5:[2,35],6:[2,1],28:[2,38],35:[2,37]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},y={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),32;case 1:return this.begin("type_directive"),33;case 2:return this.popState(),this.begin("arg_directive"),25;case 3:return this.popState(),this.popState(),35;case 4:return 34;case 5:case 6:case 7:break;case 8:return 11;case 9:case 10:case 11:break;case 12:this.begin("href");break;case 13:this.popState();break;case 14:return 30;case 15:this.begin("callbackname");break;case 16:this.popState();break;case 17:this.popState(),this.begin("callbackargs");break;case 18:return 28;case 19:this.popState();break;case 20:return 29;case 21:this.begin("click");break;case 22:this.popState();break;case 23:return 27;case 24:return 5;case 25:return 12;case 26:return 13;case 27:return 14;case 28:return 15;case 29:return 16;case 30:return"date";case 31:return 17;case 32:return 18;case 33:return 20;case 34:return 21;case 35:return 25;case 36:return 7;case 37:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[19,20],inclusive:!1},callbackname:{rules:[16,17,18],inclusive:!1},href:{rules:[13,14],inclusive:!1},click:{rules:[22,23],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37],inclusive:!0}}};function v(){this.yy={}}return g.lexer=y,v.prototype=g,g.Parser=v,new v}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,5],r=[6,9,11,17,18,19,21],i=[1,15],a=[1,16],o=[1,17],s=[1,21],c=[4,6,9,11,17,18,19,21],u={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,section:18,taskName:19,taskData:20,open_directive:21,type_directive:22,arg_directive:23,close_directive:24,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"section",19:"taskName",20:"taskData",21:"open_directive",22:"type_directive",23:"arg_directive",24:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 3:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 7:case 8:this.$=[];break;case 11:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 12:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 13:r.addTask(a[s-1],a[s]),this.$="task";break;case 15:r.parseDirective("%%{","open_directive");break;case 16:r.parseDirective(a[s],"type_directive");break;case 17:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 18:r.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:e,7:3,12:4,21:n},{1:[3]},t(r,[2,3],{5:6}),{3:7,4:e,7:3,12:4,21:n},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:i,18:a,19:o,21:n},{1:[2,2]},{14:19,15:[1,20],24:s},t([15,24],[2,16]),t(r,[2,8],{1:[2,1]}),t(r,[2,4]),{7:18,10:22,12:4,17:i,18:a,19:o,21:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,11]),t(r,[2,12]),{20:[1,23]},t(r,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},t(r,[2,5]),t(r,[2,13]),t(c,[2,9]),{14:27,24:s},{24:[2,17]},{11:[1,28]},t(c,[2,10])],defaultActions:{5:[2,15],7:[2,2],21:[2,18],26:[2,17]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},l={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),21;case 1:return this.begin("type_directive"),22;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),24;case 4:return 23;case 5:case 6:break;case 7:return 11;case 8:case 9:break;case 10:return 4;case 11:return 17;case 12:return 18;case 13:return 19;case 14:return 20;case 15:return 15;case 16:return 6;case 17:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,13,14,15,16,17],inclusive:!0}}};function h(){this.yy={}}return u.lexer=l,h.prototype=u,u.Parser=h,new h}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(15);e.default=function(t,e){return r.default.lang.round(i.default.parse(t)[e])}},function(t,e,n){var r=n(112),i=n(82),a=n(24);t.exports=function(t){return a(t)?r(t):i(t)}},function(t,e,n){var r;if(!r)try{r=n(0)}catch(t){}r||(r=window.d3),t.exports=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(15);e.default=function(t,e,n){var a=i.default.parse(t),o=a[e],s=r.default.channel.clamp[e](o+n);return o!==s&&(a[e]=s),i.default.stringify(a)}},function(t,e,n){var r=n(210),i=n(216);t.exports=function(t,e){var n=i(t,e);return r(n)?n:void 0}},function(t,e,n){var r=n(38),i=n(212),a=n(213),o=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":o&&o in Object(t)?i(t):a(t)}},function(t,e){t.exports=function(t){return t}},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,n){var r=n(34),i=n(11);t.exports=function(t){if(!i(t))return!1;var e=r(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},function(t,e,n){var r=n(16).Symbol;t.exports=r},function(t,e,n){(function(t){var r=n(16),i=n(232),a=e&&!e.nodeType&&e,o=a&&"object"==typeof t&&t&&!t.nodeType&&t,s=o&&o.exports===a?r.Buffer:void 0,c=(s?s.isBuffer:void 0)||i;t.exports=c}).call(this,n(7)(t))},function(t,e,n){var r=n(112),i=n(236),a=n(24);t.exports=function(t){return a(t)?r(t,!0):i(t)}},function(t,e,n){var r=n(241),i=n(77),a=n(242),o=n(121),s=n(243),c=n(34),u=n(110),l=u(r),h=u(i),f=u(a),d=u(o),p=u(s),g=c;(r&&"[object DataView]"!=g(new r(new ArrayBuffer(1)))||i&&"[object Map]"!=g(new i)||a&&"[object Promise]"!=g(a.resolve())||o&&"[object Set]"!=g(new o)||s&&"[object WeakMap]"!=g(new s))&&(g=function(t){var e=c(t),n="[object Object]"==e?t.constructor:void 0,r=n?u(n):"";if(r)switch(r){case l:return"[object DataView]";case h:return"[object Map]";case f:return"[object Promise]";case d:return"[object Set]";case p:return"[object WeakMap]"}return e}),t.exports=g},function(t,e,n){var r=n(34),i=n(21);t.exports=function(t){return"symbol"==typeof t||i(t)&&"[object Symbol]"==r(t)}},function(t,e,n){var r;try{r={defaults:n(154),each:n(87),isFunction:n(37),isPlainObject:n(158),pick:n(161),has:n(93),range:n(162),uniqueId:n(163)}}catch(t){}r||(r=window._),t.exports=r},function(t){t.exports=JSON.parse('{"name":"mermaid","version":"8.8.4","description":"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.","main":"dist/mermaid.core.js","keywords":["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph"],"scripts":{"build:development":"webpack --progress --colors","build:production":"yarn build:development -p --config webpack.config.prod.babel.js","build":"yarn build:development && yarn build:production","postbuild":"documentation build src/mermaidAPI.js src/config.js --shallow -f md --markdown-toc false > docs/Setup.md","build:watch":"yarn build --watch","minify":"minify ./dist/mermaid.js > ./dist/mermaid.min.js","release":"yarn build","lint":"eslint src","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"percy exec -- cypress run","e2e":"start-server-and-test dev http://localhost:9000/ cypress","e2e-upd":"yarn lint && jest e2e -u --config e2e/jest.config.js","dev":"webpack-dev-server --config webpack.config.e2e.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn test","prepare":"yarn build"},"repository":{"type":"git","url":"https://github.com/knsv/mermaid"},"author":"Knut Sveidqvist","license":"MIT","standard":{"ignore":["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],"globals":["page"]},"dependencies":{"@braintree/sanitize-url":"^3.1.0","d3":"^5.7.0","dagre":"^0.8.4","dagre-d3":"^0.6.4","entity-decode":"^2.0.2","graphlib":"^2.1.7","he":"^1.2.0","khroma":"^1.1.0","minify":"^4.1.1","moment-mini":"^2.22.1","stylis":"^3.5.2"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.8.4","@babel/register":"^7.0.0","@percy/cypress":"*","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.1.0","babel-jest":"^24.9.0","babel-loader":"^8.0.4","coveralls":"^3.0.2","css-loader":"^2.0.1","css-to-string-loader":"^0.1.3","cypress":"4.0.1","documentation":"^12.0.1","eslint":"^6.3.0","eslint-config-prettier":"^6.3.0","eslint-plugin-prettier":"^3.1.0","husky":"^1.2.1","identity-obj-proxy":"^3.0.0","jest":"^24.9.0","jison":"^0.4.18","moment":"^2.23.0","node-sass":"^4.12.0","prettier":"^1.18.2","puppeteer":"^1.17.0","sass-loader":"^7.1.0","start-server-and-test":"^1.10.6","terser-webpack-plugin":"^2.2.2","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.7.0","webpack-cli":"^3.1.2","webpack-dev-server":"^3.4.1","webpack-node-externals":"^1.7.2","yarn-upgrade-all":"^0.5.0"},"files":["dist"],"yarn-upgrade-all":{"ignore":["babel-core"]},"sideEffects":["**/*.css","**/*.scss"],"husky":{"hooks":{"pre-push":"yarn test"}}}')},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=new(n(176).default)({r:0,g:0,b:0,a:0},"transparent");e.default=r},function(t,e,n){var r=n(58),i=n(59);t.exports=function(t,e,n,a){var o=!n;n||(n={});for(var s=-1,c=e.length;++s-1&&t%1==0&&t-1}(s)?s:(n=s.match(a))?(e=n[0],r.test(e)?"about:blank":s):"about:blank"}}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[2,3],n=[1,7],r=[7,12,15,17,19,20,21],i=[7,11,12,15,17,19,20,21],a=[2,20],o=[1,32],s={trace:function(){},yy:{},symbols_:{error:2,start:3,GG:4,":":5,document:6,EOF:7,DIR:8,options:9,body:10,OPT:11,NL:12,line:13,statement:14,COMMIT:15,commit_arg:16,BRANCH:17,ID:18,CHECKOUT:19,MERGE:20,RESET:21,reset_arg:22,STR:23,HEAD:24,reset_parents:25,CARET:26,$accept:0,$end:1},terminals_:{2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"OPT",12:"NL",15:"COMMIT",17:"BRANCH",18:"ID",19:"CHECKOUT",20:"MERGE",21:"RESET",23:"STR",24:"HEAD",26:"CARET"},productions_:[0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:return r.setDirection(a[s-3]),a[s-1];case 4:r.setOptions(a[s-1]),this.$=a[s];break;case 5:a[s-1]+=a[s],this.$=a[s-1];break;case 7:this.$=[];break;case 8:a[s-1].push(a[s]),this.$=a[s-1];break;case 9:this.$=a[s-1];break;case 11:r.commit(a[s]);break;case 12:r.branch(a[s]);break;case 13:r.checkout(a[s]);break;case 14:r.merge(a[s]);break;case 15:r.reset(a[s]);break;case 16:this.$="";break;case 17:this.$=a[s];break;case 18:this.$=a[s-1]+":"+a[s];break;case 19:this.$=a[s-1]+":"+r.count,r.count=0;break;case 20:r.count=0;break;case 21:r.count+=1}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:e,9:6,12:n},{5:[1,8]},{7:[1,9]},t(r,[2,7],{10:10,11:[1,11]}),t(i,[2,6]),{6:12,7:e,9:6,12:n},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},t(i,[2,5]),{7:[1,21]},t(r,[2,8]),{12:[1,22]},t(r,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},t(r,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:a,25:31,26:o},{12:a,25:33,26:o},{12:[2,18]},{12:a,25:34,26:o},{12:[2,19]},{12:[2,21]}],defaultActions:{9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},c={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 12;case 1:case 2:case 3:break;case 4:return 4;case 5:return 15;case 6:return 17;case 7:return 20;case 8:return 21;case 9:return 19;case 10:case 11:return 8;case 12:return 5;case 13:return 26;case 14:this.begin("options");break;case 15:this.popState();break;case 16:return 11;case 17:this.begin("string");break;case 18:this.popState();break;case 19:return 23;case 20:return 18;case 21:return 7}},rules:[/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:end\r?\n)/i,/^(?:[^\n]+\r?\n)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][-_\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],conditions:{options:{rules:[15,16],inclusive:!1},string:{rules:[18,19],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],inclusive:!0}}};function u(){this.yy={}}return s.lexer=c,u.prototype=s,s.Parser=u,new u}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,r,i,a,o){a.length;switch(i){case 1:return r;case 4:break;case 6:r.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},r={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function i(){this.yy={}}return n.lexer=r,i.prototype=n,n.Parser=i,new i}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,4],n=[1,5],r=[1,6],i=[1,7],a=[1,9],o=[1,10,12,19,20,21,22],s=[1,6,10,12,19,20,21,22],c=[19,20,21],u=[1,22],l=[6,19,20,21,22],h={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,line:8,statement:9,txt:10,value:11,title:12,title_value:13,openDirective:14,typeDirective:15,closeDirective:16,":":17,argDirective:18,NEWLINE:19,";":20,EOF:21,open_directive:22,type_directive:23,arg_directive:24,close_directive:25,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",10:"txt",11:"value",12:"title",13:"title_value",17:":",19:"NEWLINE",20:";",21:"EOF",22:"open_directive",23:"type_directive",24:"arg_directive",25:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[9,0],[9,2],[9,2],[9,1],[5,3],[5,5],[4,1],[4,1],[4,1],[14,1],[15,1],[18,1],[16,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 6:this.$=a[s-1];break;case 8:r.addSection(a[s-1],r.cleanupValue(a[s]));break;case 9:this.$=a[s].trim(),r.setTitle(this.$);break;case 16:r.parseDirective("%%{","open_directive");break;case 17:r.parseDirective(a[s],"type_directive");break;case 18:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 19:r.parseDirective("}%%","close_directive","pie")}},table:[{3:1,4:2,5:3,6:e,14:8,19:n,20:r,21:i,22:a},{1:[3]},{3:10,4:2,5:3,6:e,14:8,19:n,20:r,21:i,22:a},{3:11,4:2,5:3,6:e,14:8,19:n,20:r,21:i,22:a},t(o,[2,4],{7:12}),t(s,[2,13]),t(s,[2,14]),t(s,[2,15]),{15:13,23:[1,14]},{23:[2,16]},{1:[2,1]},{1:[2,2]},t(c,[2,7],{14:8,8:15,9:16,5:19,1:[2,3],10:[1,17],12:[1,18],22:a}),{16:20,17:[1,21],25:u},t([17,25],[2,17]),t(o,[2,5]),{4:23,19:n,20:r,21:i},{11:[1,24]},{13:[1,25]},t(c,[2,10]),t(l,[2,11]),{18:26,24:[1,27]},t(l,[2,19]),t(o,[2,6]),t(c,[2,8]),t(c,[2,9]),{16:28,25:u},{25:[2,18]},t(l,[2,12])],defaultActions:{9:[2,16],10:[2,1],11:[2,2],27:[2,18]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},f={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),22;case 1:return this.begin("type_directive"),23;case 2:return this.popState(),this.begin("arg_directive"),17;case 3:return this.popState(),this.popState(),25;case 4:return 24;case 5:case 6:break;case 7:return 19;case 8:case 9:break;case 10:return this.begin("title"),12;case 11:return this.popState(),"title_value";case 12:this.begin("string");break;case 13:this.popState();break;case 14:return"txt";case 15:return 6;case 16:return"value";case 17:return 21}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[13,14],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,15,16,17],inclusive:!0}}};function d(){this.yy={}}return h.lexer=f,d.prototype=h,h.Parser=d,new d}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,5],r=[6,9,11,23,37],i=[1,17],a=[1,20],o=[1,25],s=[1,26],c=[1,27],u=[1,28],l=[1,37],h=[23,34,35],f=[4,6,9,11,23,37],d=[30,31,32,33],p=[22,27],g={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,ALPHANUM:23,attribute:24,attributeType:25,attributeName:26,ATTRIBUTE_WORD:27,cardinality:28,relType:29,ZERO_OR_ONE:30,ZERO_OR_MORE:31,ONE_OR_MORE:32,ONLY_ONE:33,NON_IDENTIFYING:34,IDENTIFYING:35,WORD:36,open_directive:37,type_directive:38,arg_directive:39,close_directive:40,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"ALPHANUM",27:"ATTRIBUTE_WORD",30:"ZERO_OR_ONE",31:"ZERO_OR_MORE",32:"ONE_OR_MORE",33:"ONLY_ONE",34:"NON_IDENTIFYING",35:"IDENTIFYING",36:"WORD",37:"open_directive",38:"type_directive",39:"arg_directive",40:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[17,1],[21,1],[21,2],[24,2],[25,1],[26,1],[18,3],[28,1],[28,1],[28,1],[28,1],[29,1],[29,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:break;case 3:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 7:case 8:this.$=[];break;case 12:r.addEntity(a[s-4]),r.addEntity(a[s-2]),r.addRelationship(a[s-4],a[s],a[s-2],a[s-3]);break;case 13:r.addEntity(a[s-3]),r.addAttributes(a[s-3],a[s-1]);break;case 14:r.addEntity(a[s-2]);break;case 15:r.addEntity(a[s]);break;case 16:this.$=a[s];break;case 17:this.$=[a[s]];break;case 18:a[s].push(a[s-1]),this.$=a[s];break;case 19:this.$={attributeType:a[s-1],attributeName:a[s]};break;case 20:case 21:this.$=a[s];break;case 22:this.$={cardA:a[s],relType:a[s-1],cardB:a[s-2]};break;case 23:this.$=r.Cardinality.ZERO_OR_ONE;break;case 24:this.$=r.Cardinality.ZERO_OR_MORE;break;case 25:this.$=r.Cardinality.ONE_OR_MORE;break;case 26:this.$=r.Cardinality.ONLY_ONE;break;case 27:this.$=r.Identification.NON_IDENTIFYING;break;case 28:this.$=r.Identification.IDENTIFYING;break;case 29:this.$=a[s].replace(/"/g,"");break;case 30:this.$=a[s];break;case 31:r.parseDirective("%%{","open_directive");break;case 32:r.parseDirective(a[s],"type_directive");break;case 33:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 34:r.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:e,7:3,12:4,37:n},{1:[3]},t(r,[2,3],{5:6}),{3:7,4:e,7:3,12:4,37:n},{13:8,38:[1,9]},{38:[2,31]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:i,37:n},{1:[2,2]},{14:18,15:[1,19],40:a},t([15,40],[2,32]),t(r,[2,8],{1:[2,1]}),t(r,[2,4]),{7:15,10:21,12:4,17:16,23:i,37:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,11]),t(r,[2,15],{18:22,28:24,20:[1,23],30:o,31:s,32:c,33:u}),t([6,9,11,15,20,23,30,31,32,33,37],[2,16]),{11:[1,29]},{16:30,39:[1,31]},{11:[2,34]},t(r,[2,5]),{17:32,23:i},{21:33,22:[1,34],24:35,25:36,27:l},{29:38,34:[1,39],35:[1,40]},t(h,[2,23]),t(h,[2,24]),t(h,[2,25]),t(h,[2,26]),t(f,[2,9]),{14:41,40:a},{40:[2,33]},{15:[1,42]},{22:[1,43]},t(r,[2,14]),{21:44,22:[2,17],24:35,25:36,27:l},{26:45,27:[1,46]},{27:[2,20]},{28:47,30:o,31:s,32:c,33:u},t(d,[2,27]),t(d,[2,28]),{11:[1,48]},{19:49,23:[1,51],36:[1,50]},t(r,[2,13]),{22:[2,18]},t(p,[2,19]),t(p,[2,21]),{23:[2,22]},t(f,[2,10]),t(r,[2,12]),t(r,[2,29]),t(r,[2,30])],defaultActions:{5:[2,31],7:[2,2],20:[2,34],31:[2,33],37:[2,20],44:[2,18],47:[2,22]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var v=p.yylloc;a.push(v);var m=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,k,w,E,T,C,A,S,M={};;){if(k=n[n.length-1],this.defaultActions[k]?w=this.defaultActions[k]:(null==x&&(x=b()),w=o[k]&&o[k][x]),void 0===w||!w.length||!w[0]){var O="";for(T in S=[],o[k])this.terminals_[T]&&T>h&&S.push("'"+this.terminals_[T]+"'");O=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(x==f?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:v,expected:S})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+x);switch(w[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(w[1]),x=null,_?(x=_,_=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,v=p.yylloc,l>0&&l--);break;case 2:if(C=this.productions_[w[1]][1],M.$=i[i.length-C],M._$={first_line:a[a.length-(C||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(C||1)].first_column,last_column:a[a.length-1].last_column},m&&(M._$.range=[a[a.length-(C||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(M,[s,u,c,g.yy,w[1],i,a].concat(d))))return E;C&&(n=n.slice(0,-1*C*2),i=i.slice(0,-1*C),a=a.slice(0,-1*C)),n.push(this.productions_[w[1]][0]),i.push(M.$),a.push(M._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},y={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;ae[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),37;case 1:return this.begin("type_directive"),38;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),40;case 4:return 39;case 5:case 6:break;case 7:return 11;case 8:break;case 9:return 9;case 10:return 36;case 11:return 4;case 12:return this.begin("block"),20;case 13:break;case 14:return 27;case 15:break;case 16:return this.popState(),22;case 17:return e.yytext[0];case 18:return 30;case 19:return 31;case 20:return 32;case 21:return 33;case 22:return 30;case 23:return 31;case 24:return 32;case 25:return 34;case 26:return 35;case 27:case 28:return 34;case 29:return 23;case 30:return e.yytext[0];case 31:return 6}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:\s+)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\|o\b)/i,/^(?:\}o\b)/i,/^(?:\}\|)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},block:{rules:[13,14,15,16,17],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,18,19,20,21,22,23,24,25,26,27,28,29,30,31],inclusive:!0}}};function v(){this.yy={}}return g.lexer=y,v.prototype=g,g.Parser=v,new v}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(19).readFileSync(n(20).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(14),n(7)(t))},function(t,e,n){"use strict";var r;Object.defineProperty(e,"__esModule",{value:!0}),function(t){t[t.ALL=0]="ALL",t[t.RGB=1]="RGB",t[t.HSL=2]="HSL"}(r||(r={})),e.TYPE=r},function(t,e,n){"use strict";var r=n(10);t.exports=i;function i(t){this._isDirected=!r.has(t,"directed")||t.directed,this._isMultigraph=!!r.has(t,"multigraph")&&t.multigraph,this._isCompound=!!r.has(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=r.constant(void 0),this._defaultEdgeLabelFn=r.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children["\0"]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function a(t,e){t[e]?t[e]++:t[e]=1}function o(t,e){--t[e]||delete t[e]}function s(t,e,n,i){var a=""+e,o=""+n;if(!t&&a>o){var s=a;a=o,o=s}return a+""+o+""+(r.isUndefined(i)?"\0":i)}function c(t,e,n,r){var i=""+e,a=""+n;if(!t&&i>a){var o=i;i=a,a=o}var s={v:i,w:a};return r&&(s.name=r),s}function u(t,e){return s(t,e.v,e.w,e.name)}i.prototype._nodeCount=0,i.prototype._edgeCount=0,i.prototype.isDirected=function(){return this._isDirected},i.prototype.isMultigraph=function(){return this._isMultigraph},i.prototype.isCompound=function(){return this._isCompound},i.prototype.setGraph=function(t){return this._label=t,this},i.prototype.graph=function(){return this._label},i.prototype.setDefaultNodeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultNodeLabelFn=t,this},i.prototype.nodeCount=function(){return this._nodeCount},i.prototype.nodes=function(){return r.keys(this._nodes)},i.prototype.sources=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._in[e])}))},i.prototype.sinks=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._out[e])}))},i.prototype.setNodes=function(t,e){var n=arguments,i=this;return r.each(t,(function(t){n.length>1?i.setNode(t,e):i.setNode(t)})),this},i.prototype.setNode=function(t,e){return r.has(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]="\0",this._children[t]={},this._children["\0"][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)},i.prototype.node=function(t){return this._nodes[t]},i.prototype.hasNode=function(t){return r.has(this._nodes,t)},i.prototype.removeNode=function(t){var e=this;if(r.has(this._nodes,t)){var n=function(t){e.removeEdge(e._edgeObjs[t])};delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],r.each(this.children(t),(function(t){e.setParent(t)})),delete this._children[t]),r.each(r.keys(this._in[t]),n),delete this._in[t],delete this._preds[t],r.each(r.keys(this._out[t]),n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this},i.prototype.setParent=function(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(r.isUndefined(e))e="\0";else{for(var n=e+="";!r.isUndefined(n);n=this.parent(n))if(n===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this},i.prototype._removeFromParentsChildList=function(t){delete this._children[this._parent[t]][t]},i.prototype.parent=function(t){if(this._isCompound){var e=this._parent[t];if("\0"!==e)return e}},i.prototype.children=function(t){if(r.isUndefined(t)&&(t="\0"),this._isCompound){var e=this._children[t];if(e)return r.keys(e)}else{if("\0"===t)return this.nodes();if(this.hasNode(t))return[]}},i.prototype.predecessors=function(t){var e=this._preds[t];if(e)return r.keys(e)},i.prototype.successors=function(t){var e=this._sucs[t];if(e)return r.keys(e)},i.prototype.neighbors=function(t){var e=this.predecessors(t);if(e)return r.union(e,this.successors(t))},i.prototype.isLeaf=function(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length},i.prototype.filterNodes=function(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;r.each(this._nodes,(function(n,r){t(r)&&e.setNode(r,n)})),r.each(this._edgeObjs,(function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))}));var i={};return this._isCompound&&r.each(e.nodes(),(function(t){e.setParent(t,function t(r){var a=n.parent(r);return void 0===a||e.hasNode(a)?(i[r]=a,a):a in i?i[a]:t(a)}(t))})),e},i.prototype.setDefaultEdgeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultEdgeLabelFn=t,this},i.prototype.edgeCount=function(){return this._edgeCount},i.prototype.edges=function(){return r.values(this._edgeObjs)},i.prototype.setPath=function(t,e){var n=this,i=arguments;return r.reduce(t,(function(t,r){return i.length>1?n.setEdge(t,r,e):n.setEdge(t,r),r})),this},i.prototype.setEdge=function(){var t,e,n,i,o=!1,u=arguments[0];"object"==typeof u&&null!==u&&"v"in u?(t=u.v,e=u.w,n=u.name,2===arguments.length&&(i=arguments[1],o=!0)):(t=u,e=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],o=!0)),t=""+t,e=""+e,r.isUndefined(n)||(n=""+n);var l=s(this._isDirected,t,e,n);if(r.has(this._edgeLabels,l))return o&&(this._edgeLabels[l]=i),this;if(!r.isUndefined(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[l]=o?i:this._defaultEdgeLabelFn(t,e,n);var h=c(this._isDirected,t,e,n);return t=h.v,e=h.w,Object.freeze(h),this._edgeObjs[l]=h,a(this._preds[e],t),a(this._sucs[t],e),this._in[e][l]=h,this._out[t][l]=h,this._edgeCount++,this},i.prototype.edge=function(t,e,n){var r=1===arguments.length?u(this._isDirected,arguments[0]):s(this._isDirected,t,e,n);return this._edgeLabels[r]},i.prototype.hasEdge=function(t,e,n){var i=1===arguments.length?u(this._isDirected,arguments[0]):s(this._isDirected,t,e,n);return r.has(this._edgeLabels,i)},i.prototype.removeEdge=function(t,e,n){var r=1===arguments.length?u(this._isDirected,arguments[0]):s(this._isDirected,t,e,n),i=this._edgeObjs[r];return i&&(t=i.v,e=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],o(this._preds[e],t),o(this._sucs[t],e),delete this._in[e][r],delete this._out[t][r],this._edgeCount--),this},i.prototype.inEdges=function(t,e){var n=this._in[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.v===e})):i}},i.prototype.outEdges=function(t,e){var n=this._out[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.w===e})):i}},i.prototype.nodeEdges=function(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}},function(t,e,n){var r=n(33)(n(16),"Map");t.exports=r},function(t,e,n){var r=n(217),i=n(224),a=n(226),o=n(227),s=n(228);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=9007199254740991}},function(t,e,n){(function(t){var r=n(109),i=e&&!e.nodeType&&e,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=a&&a.exports===i&&r.process,s=function(){try{var t=a&&a.require&&a.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(t){}}();t.exports=s}).call(this,n(7)(t))},function(t,e,n){var r=n(62),i=n(234),a=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return i(t);var e=[];for(var n in Object(t))a.call(t,n)&&"constructor"!=n&&e.push(n);return e}},function(t,e,n){var r=n(116),i=n(117),a=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,s=o?function(t){return null==t?[]:(t=Object(t),r(o(t),(function(e){return a.call(t,e)})))}:i;t.exports=s},function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,i=t.length;++n0&&a(l)?n>1?t(l,n-1,a,o,s):r(s,l):o||(s[s.length]=l)}return s}},function(t,e,n){var r=n(42);t.exports=function(t,e,n){for(var i=-1,a=t.length;++i4,u=c?1:17,l=c?8:4,h=s?0:-1,f=c?255:15;return i.default.set({r:(r>>l*(h+3)&f)*u,g:(r>>l*(h+2)&f)*u,b:(r>>l*(h+1)&f)*u,a:s?(r&f)*u/255:1},t)}}},stringify:function(t){return t.a<1?"#"+a.DEC2HEX[Math.round(t.r)]+a.DEC2HEX[Math.round(t.g)]+a.DEC2HEX[Math.round(t.b)]+r.default.unit.frac2hex(t.a):"#"+a.DEC2HEX[Math.round(t.r)]+a.DEC2HEX[Math.round(t.g)]+a.DEC2HEX[Math.round(t.b)]}};e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(45),a=n(15);e.default=function(t,e,n,o){void 0===o&&(o=1);var s=i.default.set({h:r.default.channel.clamp.h(t),s:r.default.channel.clamp.s(e),l:r.default.channel.clamp.l(n),a:r.default.channel.clamp.a(o)});return a.default.stringify(s)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"a")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(15);e.default=function(t){var e=i.default.parse(t),n=e.r,a=e.g,o=e.b,s=.2126*r.default.channel.toLinear(n)+.7152*r.default.channel.toLinear(a)+.0722*r.default.channel.toLinear(o);return r.default.lang.round(s)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(102);e.default=function(t){return r.default(t)>=.5}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"a",e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"a",-e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(15),i=n(52);e.default=function(t,e){var n=r.default.parse(t),a={};for(var o in e)e[o]&&(a[o]=n[o]+e[o]);return i.default(t,a)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(15),i=n(51);e.default=function(t,e,n){void 0===n&&(n=50);var a=r.default.parse(t),o=a.r,s=a.g,c=a.b,u=a.a,l=r.default.parse(e),h=l.r,f=l.g,d=l.b,p=l.a,g=n/100,y=2*g-1,v=u-p,m=((y*v==-1?y:(y+v)/(1+y*v))+1)/2,b=1-m,x=o*m+h*b,_=s*m+f*b,k=c*m+d*b,w=u*g+p*(1-g);return i.default(x,_,k,w)}},function(t,e,n){var r=n(53),i=n(79),a=n(58),o=n(229),s=n(235),c=n(114),u=n(115),l=n(238),h=n(239),f=n(119),d=n(240),p=n(41),g=n(244),y=n(245),v=n(124),m=n(5),b=n(39),x=n(249),_=n(11),k=n(251),w=n(30),E={};E["[object Arguments]"]=E["[object Array]"]=E["[object ArrayBuffer]"]=E["[object DataView]"]=E["[object Boolean]"]=E["[object Date]"]=E["[object Float32Array]"]=E["[object Float64Array]"]=E["[object Int8Array]"]=E["[object Int16Array]"]=E["[object Int32Array]"]=E["[object Map]"]=E["[object Number]"]=E["[object Object]"]=E["[object RegExp]"]=E["[object Set]"]=E["[object String]"]=E["[object Symbol]"]=E["[object Uint8Array]"]=E["[object Uint8ClampedArray]"]=E["[object Uint16Array]"]=E["[object Uint32Array]"]=!0,E["[object Error]"]=E["[object Function]"]=E["[object WeakMap]"]=!1,t.exports=function t(e,n,T,C,A,S){var M,O=1&n,D=2&n,N=4&n;if(T&&(M=A?T(e,C,A,S):T(e)),void 0!==M)return M;if(!_(e))return e;var B=m(e);if(B){if(M=g(e),!O)return u(e,M)}else{var L=p(e),F="[object Function]"==L||"[object GeneratorFunction]"==L;if(b(e))return c(e,O);if("[object Object]"==L||"[object Arguments]"==L||F&&!A){if(M=D||F?{}:v(e),!O)return D?h(e,s(M,e)):l(e,o(M,e))}else{if(!E[L])return A?e:{};M=y(e,L,O)}}S||(S=new r);var P=S.get(e);if(P)return P;S.set(e,M),k(e)?e.forEach((function(r){M.add(t(r,n,T,r,e,S))})):x(e)&&e.forEach((function(r,i){M.set(i,t(r,n,T,i,e,S))}));var I=N?D?d:f:D?keysIn:w,j=B?void 0:I(e);return i(j||e,(function(r,i){j&&(r=e[i=r]),a(M,i,t(r,n,T,i,e,S))})),M}},function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n(211))},function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},function(t,e,n){var r=n(33),i=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=i},function(t,e,n){var r=n(230),i=n(47),a=n(5),o=n(39),s=n(60),c=n(48),u=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=a(t),l=!n&&i(t),h=!n&&!l&&o(t),f=!n&&!l&&!h&&c(t),d=n||l||h||f,p=d?r(t.length,String):[],g=p.length;for(var y in t)!e&&!u.call(t,y)||d&&("length"==y||h&&("offset"==y||"parent"==y)||f&&("buffer"==y||"byteLength"==y||"byteOffset"==y)||s(y,g))||p.push(y);return p}},function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},function(t,e,n){(function(t){var r=n(16),i=e&&!e.nodeType&&e,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=a&&a.exports===i?r.Buffer:void 0,s=o?o.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,r=s?s(n):new t.constructor(n);return t.copy(r),r}}).call(this,n(7)(t))},function(t,e){t.exports=function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++nl))return!1;var f=c.get(t);if(f&&c.get(e))return f==e;var d=-1,p=!0,g=2&n?new r:void 0;for(c.set(t,e),c.set(e,t);++d0&&(a=c.removeMin(),(o=s[a]).distance!==Number.POSITIVE_INFINITY);)r(a).forEach(u);return s}(t,String(e),n||a,r||function(e){return t.outEdges(e)})};var a=r.constant(1)},function(t,e,n){var r=n(10);function i(){this._arr=[],this._keyIndices={}}t.exports=i,i.prototype.size=function(){return this._arr.length},i.prototype.keys=function(){return this._arr.map((function(t){return t.key}))},i.prototype.has=function(t){return r.has(this._keyIndices,t)},i.prototype.priority=function(t){var e=this._keyIndices[t];if(void 0!==e)return this._arr[e].priority},i.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},i.prototype.add=function(t,e){var n=this._keyIndices;if(t=String(t),!r.has(n,t)){var i=this._arr,a=i.length;return n[t]=a,i.push({key:t,priority:e}),this._decrease(a),!0}return!1},i.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},i.prototype.decrease=function(t,e){var n=this._keyIndices[t];if(e>this._arr[n].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[n].priority+" New: "+e);this._arr[n].priority=e,this._decrease(n)},i.prototype._heapify=function(t){var e=this._arr,n=2*t,r=n+1,i=t;n>1].priority2?e[2]:void 0;for(u&&a(e[0],e[1],u)&&(r=1);++n1&&o.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,c=Math.sqrt(o*o+s*s);return aMath.abs(o)*u?(s<0&&(u=-u),n=0===s?0:u*o/s,r=u):(o<0&&(c=-c),n=c,r=0===o?0:c*s/o);return{x:i+n,y:a+r}}},function(t,e,n){t.exports=function t(e){"use strict";var n=/^\0+/g,r=/[\0\r\f]/g,i=/: */g,a=/zoo|gra/,o=/([,: ])(transform)/g,s=/,+\s*(?![^(]*[)])/g,c=/ +\s*(?![^(]*[)])/g,u=/ *[\0] */g,l=/,\r+?/g,h=/([\t\r\n ])*\f?&/g,f=/:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g,d=/\W+/g,p=/@(k\w+)\s*(\S*)\s*/,g=/::(place)/g,y=/:(read-only)/g,v=/\s+(?=[{\];=:>])/g,m=/([[}=:>])\s+/g,b=/(\{[^{]+?);(?=\})/g,x=/\s{2,}/g,_=/([^\(])(:+) */g,k=/[svh]\w+-[tblr]{2}/,w=/\(\s*(.*)\s*\)/g,E=/([\s\S]*?);/g,T=/-self|flex-/g,C=/[^]*?(:[rp][el]a[\w-]+)[^]*/,A=/stretch|:\s*\w+\-(?:conte|avail)/,S=/([^-])(image-set\()/,M="-webkit-",O="-moz-",D="-ms-",N=1,B=1,L=0,F=1,P=1,I=1,j=0,R=0,Y=0,z=[],U=[],$=0,W=null,H=0,V=1,G="",q="",X="";function Z(t,e,i,a,o){for(var s,c,l=0,h=0,f=0,d=0,v=0,m=0,b=0,x=0,k=0,E=0,T=0,C=0,A=0,S=0,O=0,D=0,j=0,U=0,W=0,K=i.length,it=K-1,at="",ot="",st="",ct="",ut="",lt="";O0&&(ot=ot.replace(r,"")),ot.trim().length>0)){switch(b){case 32:case 9:case 59:case 13:case 10:break;default:ot+=i.charAt(O)}b=59}if(1===j)switch(b){case 123:case 125:case 59:case 34:case 39:case 40:case 41:case 44:j=0;case 9:case 13:case 10:case 32:break;default:for(j=0,W=O,v=b,O--,b=59;W0&&(++O,b=v);case 123:W=K}}switch(b){case 123:for(v=(ot=ot.trim()).charCodeAt(0),T=1,W=++O;O0&&(ot=ot.replace(r,"")),m=ot.charCodeAt(1)){case 100:case 109:case 115:case 45:s=e;break;default:s=z}if(W=(st=Z(e,s,st,m,o+1)).length,Y>0&&0===W&&(W=ot.length),$>0&&(c=nt(3,st,s=J(z,ot,U),e,B,N,W,m,o,a),ot=s.join(""),void 0!==c&&0===(W=(st=c.trim()).length)&&(m=0,st="")),W>0)switch(m){case 115:ot=ot.replace(w,et);case 100:case 109:case 45:st=ot+"{"+st+"}";break;case 107:st=(ot=ot.replace(p,"$1 $2"+(V>0?G:"")))+"{"+st+"}",st=1===P||2===P&&tt("@"+st,3)?"@"+M+st+"@"+st:"@"+st;break;default:st=ot+st,112===a&&(ct+=st,st="")}else st="";break;default:st=Z(e,J(e,ot,U),st,a,o+1)}ut+=st,C=0,j=0,S=0,D=0,U=0,A=0,ot="",st="",b=i.charCodeAt(++O);break;case 125:case 59:if((W=(ot=(D>0?ot.replace(r,""):ot).trim()).length)>1)switch(0===S&&(45===(v=ot.charCodeAt(0))||v>96&&v<123)&&(W=(ot=ot.replace(" ",":")).length),$>0&&void 0!==(c=nt(1,ot,e,t,B,N,ct.length,a,o,a))&&0===(W=(ot=c.trim()).length)&&(ot="\0\0"),v=ot.charCodeAt(0),m=ot.charCodeAt(1),v){case 0:break;case 64:if(105===m||99===m){lt+=ot+i.charAt(O);break}default:if(58===ot.charCodeAt(W-1))break;ct+=Q(ot,v,m,ot.charCodeAt(2))}C=0,j=0,S=0,D=0,U=0,ot="",b=i.charCodeAt(++O)}}switch(b){case 13:case 10:if(h+d+f+l+R===0)switch(E){case 41:case 39:case 34:case 64:case 126:case 62:case 42:case 43:case 47:case 45:case 58:case 44:case 59:case 123:case 125:break;default:S>0&&(j=1)}47===h?h=0:F+C===0&&107!==a&&ot.length>0&&(D=1,ot+="\0"),$*H>0&&nt(0,ot,e,t,B,N,ct.length,a,o,a),N=1,B++;break;case 59:case 125:if(h+d+f+l===0){N++;break}default:switch(N++,at=i.charAt(O),b){case 9:case 32:if(d+l+h===0)switch(x){case 44:case 58:case 9:case 32:at="";break;default:32!==b&&(at=" ")}break;case 0:at="\\0";break;case 12:at="\\f";break;case 11:at="\\v";break;case 38:d+h+l===0&&F>0&&(U=1,D=1,at="\f"+at);break;case 108:if(d+h+l+L===0&&S>0)switch(O-S){case 2:112===x&&58===i.charCodeAt(O-3)&&(L=x);case 8:111===k&&(L=k)}break;case 58:d+h+l===0&&(S=O);break;case 44:h+f+d+l===0&&(D=1,at+="\r");break;case 34:case 39:0===h&&(d=d===b?0:0===d?b:d);break;case 91:d+h+f===0&&l++;break;case 93:d+h+f===0&&l--;break;case 41:d+h+l===0&&f--;break;case 40:if(d+h+l===0){if(0===C)switch(2*x+3*k){case 533:break;default:T=0,C=1}f++}break;case 64:h+f+d+l+S+A===0&&(A=1);break;case 42:case 47:if(d+l+f>0)break;switch(h){case 0:switch(2*b+3*i.charCodeAt(O+1)){case 235:h=47;break;case 220:W=O,h=42}break;case 42:47===b&&42===x&&W+2!==O&&(33===i.charCodeAt(W+2)&&(ct+=i.substring(W,O+1)),at="",h=0)}}if(0===h){if(F+d+l+A===0&&107!==a&&59!==b)switch(b){case 44:case 126:case 62:case 43:case 41:case 40:if(0===C){switch(x){case 9:case 32:case 10:case 13:at+="\0";break;default:at="\0"+at+(44===b?"":"\0")}D=1}else switch(b){case 40:S+7===O&&108===x&&(S=0),C=++T;break;case 41:0==(C=--T)&&(D=1,at+="\0")}break;case 9:case 32:switch(x){case 0:case 123:case 125:case 59:case 44:case 12:case 9:case 32:case 10:case 13:break;default:0===C&&(D=1,at+="\0")}}ot+=at,32!==b&&9!==b&&(E=b)}}k=x,x=b,O++}if(W=ct.length,Y>0&&0===W&&0===ut.length&&0===e[0].length==0&&(109!==a||1===e.length&&(F>0?q:X)===e[0])&&(W=e.join(",").length+2),W>0){if(s=0===F&&107!==a?function(t){for(var e,n,i=0,a=t.length,o=Array(a);i1)){if(f=c.charCodeAt(c.length-1),d=n.charCodeAt(0),e="",0!==l)switch(f){case 42:case 126:case 62:case 43:case 32:case 40:break;default:e=" "}switch(d){case 38:n=e+q;case 126:case 62:case 43:case 32:case 41:case 40:break;case 91:n=e+n+q;break;case 58:switch(2*n.charCodeAt(1)+3*n.charCodeAt(2)){case 530:if(I>0){n=e+n.substring(8,h-1);break}default:(l<1||s[l-1].length<1)&&(n=e+q+n)}break;case 44:e="";default:n=h>1&&n.indexOf(":")>0?e+n.replace(_,"$1"+q+"$2"):e+n+q}c+=n}o[i]=c.replace(r,"").trim()}return o}(e):e,$>0&&void 0!==(c=nt(2,ct,s,t,B,N,W,a,o,a))&&0===(ct=c).length)return lt+ct+ut;if(ct=s.join(",")+"{"+ct+"}",P*L!=0){switch(2!==P||tt(ct,2)||(L=0),L){case 111:ct=ct.replace(y,":-moz-$1")+ct;break;case 112:ct=ct.replace(g,"::-webkit-input-$1")+ct.replace(g,"::-moz-$1")+ct.replace(g,":-ms-input-$1")+ct}L=0}}return lt+ct+ut}function J(t,e,n){var r=e.trim().split(l),i=r,a=r.length,o=t.length;switch(o){case 0:case 1:for(var s=0,c=0===o?"":t[0]+" ";s0&&F>0)return i.replace(f,"$1").replace(h,"$1"+X);break;default:return t.trim()+i.replace(h,"$1"+t.trim())}default:if(n*F>0&&i.indexOf("\f")>0)return i.replace(h,(58===t.charCodeAt(0)?"":"$1")+t.trim())}return t+i}function Q(t,e,n,r){var u,l=0,h=t+";",f=2*e+3*n+4*r;if(944===f)return function(t){var e=t.length,n=t.indexOf(":",9)+1,r=t.substring(0,n).trim(),i=t.substring(n,e-1).trim();switch(t.charCodeAt(9)*V){case 0:break;case 45:if(110!==t.charCodeAt(10))break;default:var a=i.split((i="",s)),o=0;for(n=0,e=a.length;o64&&h<90||h>96&&h<123||95===h||45===h&&45!==u.charCodeAt(1)))switch(isNaN(parseFloat(u))+(-1!==u.indexOf("("))){case 1:switch(u){case"infinite":case"alternate":case"backwards":case"running":case"normal":case"forwards":case"both":case"none":case"linear":case"ease":case"ease-in":case"ease-out":case"ease-in-out":case"paused":case"reverse":case"alternate-reverse":case"inherit":case"initial":case"unset":case"step-start":case"step-end":break;default:u+=G}}l[n++]=u}i+=(0===o?"":",")+l.join(" ")}}return i=r+i+";",1===P||2===P&&tt(i,1)?M+i+i:i}(h);if(0===P||2===P&&!tt(h,1))return h;switch(f){case 1015:return 97===h.charCodeAt(10)?M+h+h:h;case 951:return 116===h.charCodeAt(3)?M+h+h:h;case 963:return 110===h.charCodeAt(5)?M+h+h:h;case 1009:if(100!==h.charCodeAt(4))break;case 969:case 942:return M+h+h;case 978:return M+h+O+h+h;case 1019:case 983:return M+h+O+h+D+h+h;case 883:return 45===h.charCodeAt(8)?M+h+h:h.indexOf("image-set(",11)>0?h.replace(S,"$1-webkit-$2")+h:h;case 932:if(45===h.charCodeAt(4))switch(h.charCodeAt(5)){case 103:return M+"box-"+h.replace("-grow","")+M+h+D+h.replace("grow","positive")+h;case 115:return M+h+D+h.replace("shrink","negative")+h;case 98:return M+h+D+h.replace("basis","preferred-size")+h}return M+h+D+h+h;case 964:return M+h+D+"flex-"+h+h;case 1023:if(99!==h.charCodeAt(8))break;return u=h.substring(h.indexOf(":",15)).replace("flex-","").replace("space-between","justify"),M+"box-pack"+u+M+h+D+"flex-pack"+u+h;case 1005:return a.test(h)?h.replace(i,":"+M)+h.replace(i,":"+O)+h:h;case 1e3:switch(l=(u=h.substring(13).trim()).indexOf("-")+1,u.charCodeAt(0)+u.charCodeAt(l)){case 226:u=h.replace(k,"tb");break;case 232:u=h.replace(k,"tb-rl");break;case 220:u=h.replace(k,"lr");break;default:return h}return M+h+D+u+h;case 1017:if(-1===h.indexOf("sticky",9))return h;case 975:switch(l=(h=t).length-10,f=(u=(33===h.charCodeAt(l)?h.substring(0,l):h).substring(t.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|u.charCodeAt(7))){case 203:if(u.charCodeAt(8)<111)break;case 115:h=h.replace(u,M+u)+";"+h;break;case 207:case 102:h=h.replace(u,M+(f>102?"inline-":"")+"box")+";"+h.replace(u,M+u)+";"+h.replace(u,D+u+"box")+";"+h}return h+";";case 938:if(45===h.charCodeAt(5))switch(h.charCodeAt(6)){case 105:return u=h.replace("-items",""),M+h+M+"box-"+u+D+"flex-"+u+h;case 115:return M+h+D+"flex-item-"+h.replace(T,"")+h;default:return M+h+D+"flex-line-pack"+h.replace("align-content","").replace(T,"")+h}break;case 973:case 989:if(45!==h.charCodeAt(3)||122===h.charCodeAt(4))break;case 931:case 953:if(!0===A.test(t))return 115===(u=t.substring(t.indexOf(":")+1)).charCodeAt(0)?Q(t.replace("stretch","fill-available"),e,n,r).replace(":fill-available",":stretch"):h.replace(u,M+u)+h.replace(u,O+u.replace("fill-",""))+h;break;case 962:if(h=M+h+(102===h.charCodeAt(5)?D+h:"")+h,n+r===211&&105===h.charCodeAt(13)&&h.indexOf("transform",10)>0)return h.substring(0,h.indexOf(";",27)+1).replace(o,"$1-webkit-$2")+h}return h}function tt(t,e){var n=t.indexOf(1===e?":":"{"),r=t.substring(0,3!==e?n:10),i=t.substring(n+1,t.length-1);return W(2!==e?r:r.replace(C,"$1"),i,e)}function et(t,e){var n=Q(e,e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2));return n!==e+";"?n.replace(E," or ($1)").substring(4):"("+e+")"}function nt(t,e,n,r,i,a,o,s,c,u){for(var l,h=0,f=e;h<$;++h)switch(l=U[h].call(at,t,f,n,r,i,a,o,s,c,u)){case void 0:case!1:case!0:case null:break;default:f=l}if(f!==e)return f}function rt(t,e,n,r){for(var i=e+1;i0&&(G=i.replace(d,91===a?"":"-")),a=1,1===F?X=i:q=i;var o,s=[X];$>0&&void 0!==(o=nt(-1,n,s,s,B,N,0,0,0,0))&&"string"==typeof o&&(n=o);var c=Z(z,s,n,0,0);return $>0&&void 0!==(o=nt(-2,c,s,s,B,N,c.length,0,0,0))&&"string"!=typeof(c=o)&&(a=0),G="",X="",q="",L=0,B=1,N=1,j*a==0?c:function(t){return t.replace(r,"").replace(v,"").replace(m,"$1").replace(b,"$1").replace(x," ")}(c)}return at.use=function t(e){switch(e){case void 0:case null:$=U.length=0;break;default:if("function"==typeof e)U[$++]=e;else if("object"==typeof e)for(var n=0,r=e.length;n=255?255:t<0?0:t},g:function(t){return t>=255?255:t<0?0:t},b:function(t){return t>=255?255:t<0?0:t},h:function(t){return t%360},s:function(t){return t>=100?100:t<0?0:t},l:function(t){return t>=100?100:t<0?0:t},a:function(t){return t>=1?1:t<0?0:t}},toLinear:function(t){var e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:function(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t},hsl2rgb:function(t,e){var n=t.h,i=t.s,a=t.l;if(100===i)return 2.55*a;n/=360,i/=100;var o=(a/=100)<.5?a*(1+i):a+i-a*i,s=2*a-o;switch(e){case"r":return 255*r.hue2rgb(s,o,n+1/3);case"g":return 255*r.hue2rgb(s,o,n);case"b":return 255*r.hue2rgb(s,o,n-1/3)}},rgb2hsl:function(t,e){var n=t.r,r=t.g,i=t.b;n/=255,r/=255,i/=255;var a=Math.max(n,r,i),o=Math.min(n,r,i),s=(a+o)/2;if("l"===e)return 100*s;if(a===o)return 0;var c=a-o;if("s"===e)return 100*(s>.5?c/(2-a-o):c/(a+o));switch(a){case n:return 60*((r-i)/c+(r1?e:"0"+e},dec2hex:function(t){var e=Math.round(t).toString(16);return e.length>1?e:"0"+e}};e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(75),a=n(177),o=function(){function t(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new a.default}return t.prototype.set=function(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=i.TYPE.ALL,this},t.prototype._ensureHSL=function(){void 0===this.data.h&&(this.data.h=r.default.channel.rgb2hsl(this.data,"h")),void 0===this.data.s&&(this.data.s=r.default.channel.rgb2hsl(this.data,"s")),void 0===this.data.l&&(this.data.l=r.default.channel.rgb2hsl(this.data,"l"))},t.prototype._ensureRGB=function(){void 0===this.data.r&&(this.data.r=r.default.channel.hsl2rgb(this.data,"r")),void 0===this.data.g&&(this.data.g=r.default.channel.hsl2rgb(this.data,"g")),void 0===this.data.b&&(this.data.b=r.default.channel.hsl2rgb(this.data,"b"))},Object.defineProperty(t.prototype,"r",{get:function(){return this.type.is(i.TYPE.HSL)||void 0===this.data.r?(this._ensureHSL(),r.default.channel.hsl2rgb(this.data,"r")):this.data.r},set:function(t){this.type.set(i.TYPE.RGB),this.changed=!0,this.data.r=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"g",{get:function(){return this.type.is(i.TYPE.HSL)||void 0===this.data.g?(this._ensureHSL(),r.default.channel.hsl2rgb(this.data,"g")):this.data.g},set:function(t){this.type.set(i.TYPE.RGB),this.changed=!0,this.data.g=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"b",{get:function(){return this.type.is(i.TYPE.HSL)||void 0===this.data.b?(this._ensureHSL(),r.default.channel.hsl2rgb(this.data,"b")):this.data.b},set:function(t){this.type.set(i.TYPE.RGB),this.changed=!0,this.data.b=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"h",{get:function(){return this.type.is(i.TYPE.RGB)||void 0===this.data.h?(this._ensureRGB(),r.default.channel.rgb2hsl(this.data,"h")):this.data.h},set:function(t){this.type.set(i.TYPE.HSL),this.changed=!0,this.data.h=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"s",{get:function(){return this.type.is(i.TYPE.RGB)||void 0===this.data.s?(this._ensureRGB(),r.default.channel.rgb2hsl(this.data,"s")):this.data.s},set:function(t){this.type.set(i.TYPE.HSL),this.changed=!0,this.data.s=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"l",{get:function(){return this.type.is(i.TYPE.RGB)||void 0===this.data.l?(this._ensureRGB(),r.default.channel.rgb2hsl(this.data,"l")):this.data.l},set:function(t){this.type.set(i.TYPE.HSL),this.changed=!0,this.data.l=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"a",{get:function(){return this.data.a},set:function(t){this.changed=!0,this.data.a=t},enumerable:!0,configurable:!0}),t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(75),i=function(){function t(){this.type=r.TYPE.ALL}return t.prototype.get=function(){return this.type},t.prototype.set=function(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t},t.prototype.reset=function(){this.type=r.TYPE.ALL},t.prototype.is=function(t){return this.type===t},t}();e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i={};e.DEC2HEX=i;for(var a=0;a<=255;a++)i[a]=r.default.unit.dec2hex(a)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(99),i={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:function(t){t=t.toLowerCase();var e=i.colors[t];if(e)return r.default.parse(e)},stringify:function(t){var e=r.default.stringify(t);for(var n in i.colors)if(i.colors[n]===e)return n}};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(45),a={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:function(t){var e=t.charCodeAt(0);if(114===e||82===e){var n=t.match(a.re);if(n){var o=n[1],s=n[2],c=n[3],u=n[4],l=n[5],h=n[6],f=n[7],d=n[8];return i.default.set({r:r.default.channel.clamp.r(s?2.55*parseFloat(o):parseFloat(o)),g:r.default.channel.clamp.g(u?2.55*parseFloat(c):parseFloat(c)),b:r.default.channel.clamp.b(h?2.55*parseFloat(l):parseFloat(l)),a:f?r.default.channel.clamp.a(d?parseFloat(f)/100:parseFloat(f)):1},t)}}},stringify:function(t){return t.a<1?"rgba("+r.default.lang.round(t.r)+", "+r.default.lang.round(t.g)+", "+r.default.lang.round(t.b)+", "+r.default.lang.round(t.a)+")":"rgb("+r.default.lang.round(t.r)+", "+r.default.lang.round(t.g)+", "+r.default.lang.round(t.b)+")"}};e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(45),a={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:function(t){var e=t.match(a.hueRe);if(e){var n=e[1];switch(e[2]){case"grad":return r.default.channel.clamp.h(.9*parseFloat(n));case"rad":return r.default.channel.clamp.h(180*parseFloat(n)/Math.PI);case"turn":return r.default.channel.clamp.h(360*parseFloat(n))}}return r.default.channel.clamp.h(parseFloat(t))},parse:function(t){var e=t.charCodeAt(0);if(104===e||72===e){var n=t.match(a.re);if(n){var o=n[1],s=n[2],c=n[3],u=n[4],l=n[5];return i.default.set({h:a._hue2deg(o),s:r.default.channel.clamp.s(parseFloat(s)),l:r.default.channel.clamp.l(parseFloat(c)),a:u?r.default.channel.clamp.a(l?parseFloat(u)/100:parseFloat(u)):1},t)}}},stringify:function(t){return t.a<1?"hsla("+r.default.lang.round(t.h)+", "+r.default.lang.round(t.s)+"%, "+r.default.lang.round(t.l)+"%, "+t.a+")":"hsl("+r.default.lang.round(t.h)+", "+r.default.lang.round(t.s)+"%, "+r.default.lang.round(t.l)+"%)"}};e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"r")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"g")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"b")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"h")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"s")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(29);e.default=function(t){return r.default(t,"l")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(103);e.default=function(t){return!r.default(t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(15);e.default=function(t){try{return r.default.parse(t),!0}catch(t){return!1}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"s",e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"s",-e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"l",e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t,e){return r.default(t,"l",-e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(32);e.default=function(t){return r.default(t,"h",180)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(52);e.default=function(t){return r.default(t,{s:0})}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(15),i=n(107);e.default=function(t,e){void 0===e&&(e=100);var n=r.default.parse(t);return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,i.default(n,t,e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(15),a=n(106);e.default=function(t,e){var n,o,s,c=i.default.parse(t),u={};for(var l in e)u[l]=(n=c[l],o=e[l],s=r.default.channel.max[l],o>0?(s-n)*o/100:n*o/100);return a.default(t,u)}},function(t,e,n){t.exports={Graph:n(76),version:n(300)}},function(t,e,n){var r=n(108);t.exports=function(t){return r(t,4)}},function(t,e){t.exports=function(){this.__data__=[],this.size=0}},function(t,e,n){var r=n(55),i=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=r(e,t);return!(n<0)&&(n==e.length-1?e.pop():i.call(e,n,1),--this.size,!0)}},function(t,e,n){var r=n(55);t.exports=function(t){var e=this.__data__,n=r(e,t);return n<0?void 0:e[n][1]}},function(t,e,n){var r=n(55);t.exports=function(t){return r(this.__data__,t)>-1}},function(t,e,n){var r=n(55);t.exports=function(t,e){var n=this.__data__,i=r(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this}},function(t,e,n){var r=n(54);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(54),i=n(77),a=n(78);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!i||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new a(o)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(37),i=n(214),a=n(11),o=n(110),s=/^\[object .+?Constructor\]$/,c=Function.prototype,u=Object.prototype,l=c.toString,h=u.hasOwnProperty,f=RegExp("^"+l.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!a(t)||i(t))&&(r(t)?f:s).test(o(t))}},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var r=n(38),i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=a.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(t){}var i=o.call(t);return r&&(e?t[s]=n:delete t[s]),i}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r,i=n(215),a=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!a&&a in t}},function(t,e,n){var r=n(16)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(218),i=n(54),a=n(77);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||i),string:new r}}},function(t,e,n){var r=n(219),i=n(220),a=n(221),o=n(222),s=n(223);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(131),i=n(292),a=n(296),o=n(132),s=n(297),c=n(90);t.exports=function(t,e,n){var u=-1,l=i,h=t.length,f=!0,d=[],p=d;if(n)f=!1,l=a;else if(h>=200){var g=e?null:s(t);if(g)return c(g);f=!1,l=o,p=new r}else p=e?[]:d;t:for(;++u-1}},function(t,e,n){var r=n(145),i=n(294),a=n(295);t.exports=function(t,e,n){return e==e?a(t,e,n):r(t,i,n)}},function(t,e){t.exports=function(t){return t!=t}},function(t,e){t.exports=function(t,e,n){for(var r=n-1,i=t.length;++r1||1===e.length&&t.hasEdge(e[0],e[0])}))}},function(t,e,n){var r=n(10);t.exports=function(t,e,n){return function(t,e,n){var r={},i=t.nodes();return i.forEach((function(t){r[t]={},r[t][t]={distance:0},i.forEach((function(e){t!==e&&(r[t][e]={distance:Number.POSITIVE_INFINITY})})),n(t).forEach((function(n){var i=n.v===t?n.w:n.v,a=e(n);r[t][i]={distance:a,predecessor:t}}))})),i.forEach((function(t){var e=r[t];i.forEach((function(n){var a=r[n];i.forEach((function(n){var r=a[t],i=e[n],o=a[n],s=r.distance+i.distance;s0;){if(n=c.removeMin(),r.has(s,n))o.setEdge(n,s[n]);else{if(l)throw new Error("Input graph is not connected: "+t);l=!0}t.nodeEdges(n).forEach(u)}return o}},function(t,e,n){var r;try{r=n(3)}catch(t){}r||(r=window.graphlib),t.exports=r},function(t,e,n){"use strict";var r=n(4),i=n(345),a=n(348),o=n(349),s=n(8).normalizeRanks,c=n(351),u=n(8).removeEmptyRanks,l=n(352),h=n(353),f=n(354),d=n(355),p=n(364),g=n(8),y=n(17).Graph;t.exports=function(t,e){var n=e&&e.debugTiming?g.time:g.notime;n("layout",(function(){var e=n(" buildLayoutGraph",(function(){return function(t){var e=new y({multigraph:!0,compound:!0}),n=C(t.graph());return e.setGraph(r.merge({},m,T(n,v),r.pick(n,b))),r.forEach(t.nodes(),(function(n){var i=C(t.node(n));e.setNode(n,r.defaults(T(i,x),_)),e.setParent(n,t.parent(n))})),r.forEach(t.edges(),(function(n){var i=C(t.edge(n));e.setEdge(n,r.merge({},w,T(i,k),r.pick(i,E)))})),e}(t)}));n(" runLayout",(function(){!function(t,e){e(" makeSpaceForEdgeLabels",(function(){!function(t){var e=t.graph();e.ranksep/=2,r.forEach(t.edges(),(function(n){var r=t.edge(n);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(t)})),e(" removeSelfEdges",(function(){!function(t){r.forEach(t.edges(),(function(e){if(e.v===e.w){var n=t.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:e,label:t.edge(e)}),t.removeEdge(e)}}))}(t)})),e(" acyclic",(function(){i.run(t)})),e(" nestingGraph.run",(function(){l.run(t)})),e(" rank",(function(){o(g.asNonCompoundGraph(t))})),e(" injectEdgeLabelProxies",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.width&&n.height){var r=t.node(e.v),i={rank:(t.node(e.w).rank-r.rank)/2+r.rank,e:e};g.addDummyNode(t,"edge-proxy",i,"_ep")}}))}(t)})),e(" removeEmptyRanks",(function(){u(t)})),e(" nestingGraph.cleanup",(function(){l.cleanup(t)})),e(" normalizeRanks",(function(){s(t)})),e(" assignRankMinMax",(function(){!function(t){var e=0;r.forEach(t.nodes(),(function(n){var i=t.node(n);i.borderTop&&(i.minRank=t.node(i.borderTop).rank,i.maxRank=t.node(i.borderBottom).rank,e=r.max(e,i.maxRank))})),t.graph().maxRank=e}(t)})),e(" removeEdgeLabelProxies",(function(){!function(t){r.forEach(t.nodes(),(function(e){var n=t.node(e);"edge-proxy"===n.dummy&&(t.edge(n.e).labelRank=n.rank,t.removeNode(e))}))}(t)})),e(" normalize.run",(function(){a.run(t)})),e(" parentDummyChains",(function(){c(t)})),e(" addBorderSegments",(function(){h(t)})),e(" order",(function(){d(t)})),e(" insertSelfEdges",(function(){!function(t){var e=g.buildLayerMatrix(t);r.forEach(e,(function(e){var n=0;r.forEach(e,(function(e,i){var a=t.node(e);a.order=i+n,r.forEach(a.selfEdges,(function(e){g.addDummyNode(t,"selfedge",{width:e.label.width,height:e.label.height,rank:a.rank,order:i+ ++n,e:e.e,label:e.label},"_se")})),delete a.selfEdges}))}))}(t)})),e(" adjustCoordinateSystem",(function(){f.adjust(t)})),e(" position",(function(){p(t)})),e(" positionSelfEdges",(function(){!function(t){r.forEach(t.nodes(),(function(e){var n=t.node(e);if("selfedge"===n.dummy){var r=t.node(n.e.v),i=r.x+r.width/2,a=r.y,o=n.x-i,s=r.height/2;t.setEdge(n.e,n.label),t.removeNode(e),n.label.points=[{x:i+2*o/3,y:a-s},{x:i+5*o/6,y:a-s},{x:i+o,y:a},{x:i+5*o/6,y:a+s},{x:i+2*o/3,y:a+s}],n.label.x=n.x,n.label.y=n.y}}))}(t)})),e(" removeBorderNodes",(function(){!function(t){r.forEach(t.nodes(),(function(e){if(t.children(e).length){var n=t.node(e),i=t.node(n.borderTop),a=t.node(n.borderBottom),o=t.node(r.last(n.borderLeft)),s=t.node(r.last(n.borderRight));n.width=Math.abs(s.x-o.x),n.height=Math.abs(a.y-i.y),n.x=o.x+n.width/2,n.y=i.y+n.height/2}})),r.forEach(t.nodes(),(function(e){"border"===t.node(e).dummy&&t.removeNode(e)}))}(t)})),e(" normalize.undo",(function(){a.undo(t)})),e(" fixupEdgeLabelCoords",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(r.has(n,"x"))switch("l"!==n.labelpos&&"r"!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset}}))}(t)})),e(" undoCoordinateSystem",(function(){f.undo(t)})),e(" translateGraph",(function(){!function(t){var e=Number.POSITIVE_INFINITY,n=0,i=Number.POSITIVE_INFINITY,a=0,o=t.graph(),s=o.marginx||0,c=o.marginy||0;function u(t){var r=t.x,o=t.y,s=t.width,c=t.height;e=Math.min(e,r-s/2),n=Math.max(n,r+s/2),i=Math.min(i,o-c/2),a=Math.max(a,o+c/2)}r.forEach(t.nodes(),(function(e){u(t.node(e))})),r.forEach(t.edges(),(function(e){var n=t.edge(e);r.has(n,"x")&&u(n)})),e-=s,i-=c,r.forEach(t.nodes(),(function(n){var r=t.node(n);r.x-=e,r.y-=i})),r.forEach(t.edges(),(function(n){var a=t.edge(n);r.forEach(a.points,(function(t){t.x-=e,t.y-=i})),r.has(a,"x")&&(a.x-=e),r.has(a,"y")&&(a.y-=i)})),o.width=n-e+s,o.height=a-i+c}(t)})),e(" assignNodeIntersects",(function(){!function(t){r.forEach(t.edges(),(function(e){var n,r,i=t.edge(e),a=t.node(e.v),o=t.node(e.w);i.points?(n=i.points[0],r=i.points[i.points.length-1]):(i.points=[],n=o,r=a),i.points.unshift(g.intersectRect(a,n)),i.points.push(g.intersectRect(o,r))}))}(t)})),e(" reversePoints",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);n.reversed&&n.points.reverse()}))}(t)})),e(" acyclic.undo",(function(){i.undo(t)}))}(e,n)})),n(" updateInputGraph",(function(){!function(t,e){r.forEach(t.nodes(),(function(n){var r=t.node(n),i=e.node(n);r&&(r.x=i.x,r.y=i.y,e.children(n).length&&(r.width=i.width,r.height=i.height))})),r.forEach(t.edges(),(function(n){var i=t.edge(n),a=e.edge(n);i.points=a.points,r.has(a,"x")&&(i.x=a.x,i.y=a.y)})),t.graph().width=e.graph().width,t.graph().height=e.graph().height}(t,e)}))}))};var v=["nodesep","edgesep","ranksep","marginx","marginy"],m={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},b=["acyclicer","ranker","rankdir","align"],x=["width","height"],_={width:0,height:0},k=["minlen","weight","width","height","labeloffset"],w={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},E=["labelpos"];function T(t,e){return r.mapValues(r.pick(t,e),Number)}function C(t){var e={};return r.forEach(t,(function(t,n){e[n.toLowerCase()]=t})),e}},function(t,e,n){var r=n(108);t.exports=function(t){return r(t,5)}},function(t,e,n){var r=n(315)(n(316));t.exports=r},function(t,e,n){var r=n(25),i=n(24),a=n(30);t.exports=function(t){return function(e,n,o){var s=Object(e);if(!i(e)){var c=r(n,3);e=a(e),n=function(t){return c(s[t],t,s)}}var u=t(e,n,o);return u>-1?s[c?e[u]:u]:void 0}}},function(t,e,n){var r=n(145),i=n(25),a=n(317),o=Math.max;t.exports=function(t,e,n){var s=null==t?0:t.length;if(!s)return-1;var c=null==n?0:a(n);return c<0&&(c=o(s+c,0)),r(t,i(e,3),c)}},function(t,e,n){var r=n(155);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},function(t,e,n){var r=n(11),i=n(42),a=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(i(t))return NaN;if(r(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=r(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(a,"");var n=s.test(t);return n||c.test(t)?u(t.slice(2),n?2:8):o.test(t)?NaN:+t}},function(t,e,n){var r=n(89),i=n(127),a=n(40);t.exports=function(t,e){return null==t?t:r(t,i(e),a)}},function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},function(t,e,n){var r=n(59),i=n(88),a=n(25);t.exports=function(t,e){var n={};return e=a(e,3),i(t,(function(t,i,a){r(n,i,e(t,i,a))})),n}},function(t,e,n){var r=n(95),i=n(323),a=n(35);t.exports=function(t){return t&&t.length?r(t,a,i):void 0}},function(t,e){t.exports=function(t,e){return t>e}},function(t,e,n){var r=n(325),i=n(328)((function(t,e,n){r(t,e,n)}));t.exports=i},function(t,e,n){var r=n(53),i=n(157),a=n(89),o=n(326),s=n(11),c=n(40),u=n(159);t.exports=function t(e,n,l,h,f){e!==n&&a(n,(function(a,c){if(f||(f=new r),s(a))o(e,n,c,l,t,h,f);else{var d=h?h(u(e,c),a,c+"",e,n,f):void 0;void 0===d&&(d=a),i(e,c,d)}}),c)}},function(t,e,n){var r=n(157),i=n(114),a=n(123),o=n(115),s=n(124),c=n(47),u=n(5),l=n(146),h=n(39),f=n(37),d=n(11),p=n(158),g=n(48),y=n(159),v=n(327);t.exports=function(t,e,n,m,b,x,_){var k=y(t,n),w=y(e,n),E=_.get(w);if(E)r(t,n,E);else{var T=x?x(k,w,n+"",t,e,_):void 0,C=void 0===T;if(C){var A=u(w),S=!A&&h(w),M=!A&&!S&&g(w);T=w,A||S||M?u(k)?T=k:l(k)?T=o(k):S?(C=!1,T=i(w,!0)):M?(C=!1,T=a(w,!0)):T=[]:p(w)||c(w)?(T=k,c(k)?T=v(k):d(k)&&!f(k)||(T=s(w))):C=!1}C&&(_.set(w,T),b(T,w,m,x,_),_.delete(w)),r(t,n,T)}}},function(t,e,n){var r=n(46),i=n(40);t.exports=function(t){return r(t,i(t))}},function(t,e,n){var r=n(67),i=n(68);t.exports=function(t){return r((function(e,n){var r=-1,a=n.length,o=a>1?n[a-1]:void 0,s=a>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(a--,o):void 0,s&&i(n[0],n[1],s)&&(o=a<3?void 0:o,a=1),e=Object(e);++r1&&o(t,e[0],e[1])?e=[]:n>2&&o(e[0],e[1],e[2])&&(e=[e[0]]),i(t,r(e,1),[])}));t.exports=s},function(t,e,n){var r=n(66),i=n(25),a=n(141),o=n(340),s=n(61),c=n(341),u=n(35);t.exports=function(t,e,n){var l=-1;e=r(e.length?e:[u],s(i));var h=a(t,(function(t,n,i){return{criteria:r(e,(function(e){return e(t)})),index:++l,value:t}}));return o(h,(function(t,e){return c(t,e,n)}))}},function(t,e){t.exports=function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}},function(t,e,n){var r=n(342);t.exports=function(t,e,n){for(var i=-1,a=t.criteria,o=e.criteria,s=a.length,c=n.length;++i=c?u:u*("desc"==n[i]?-1:1)}return t.index-e.index}},function(t,e,n){var r=n(42);t.exports=function(t,e){if(t!==e){var n=void 0!==t,i=null===t,a=t==t,o=r(t),s=void 0!==e,c=null===e,u=e==e,l=r(e);if(!c&&!l&&!o&&t>e||o&&s&&u&&!c&&!l||i&&s&&u||!n&&u||!a)return 1;if(!i&&!o&&!l&&t0;--c)if(r=e[c].dequeue()){i=i.concat(s(t,e,n,r,!0));break}}return i}(n.graph,n.buckets,n.zeroIdx);return r.flatten(r.map(u,(function(e){return t.outEdges(e.v,e.w)})),!0)};var o=r.constant(1);function s(t,e,n,i,a){var o=a?[]:void 0;return r.forEach(t.inEdges(i.v),(function(r){var i=t.edge(r),s=t.node(r.v);a&&o.push({v:r.v,w:r.w}),s.out-=i,c(e,n,s)})),r.forEach(t.outEdges(i.v),(function(r){var i=t.edge(r),a=r.w,o=t.node(a);o.in-=i,c(e,n,o)})),t.removeNode(i.v),o}function c(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}},function(t,e){function n(){var t={};t._next=t._prev=t,this._sentinel=t}function r(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function i(t,e){if("_next"!==t&&"_prev"!==t)return e}t.exports=n,n.prototype.dequeue=function(){var t=this._sentinel,e=t._prev;if(e!==t)return r(e),e},n.prototype.enqueue=function(t){var e=this._sentinel;t._prev&&t._next&&r(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e},n.prototype.toString=function(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,i)),n=n._prev;return"["+t.join(", ")+"]"}},function(t,e,n){"use strict";var r=n(4),i=n(8);t.exports={run:function(t){t.graph().dummyChains=[],r.forEach(t.edges(),(function(e){!function(t,e){var n,r,a,o=e.v,s=t.node(o).rank,c=e.w,u=t.node(c).rank,l=e.name,h=t.edge(e),f=h.labelRank;if(u===s+1)return;for(t.removeEdge(e),a=0,++s;sc.lim&&(u=c,l=!0);var h=r.filter(e.edges(),(function(e){return l===m(t,t.node(e.v),u)&&l!==m(t,t.node(e.w),u)}));return r.minBy(h,(function(t){return a(e,t)}))}function v(t,e,n,i){var a=n.v,o=n.w;t.removeEdge(a,o),t.setEdge(i.v,i.w,{}),d(t),h(t,e),function(t,e){var n=r.find(t.nodes(),(function(t){return!e.node(t).parent})),i=s(t,n);i=i.slice(1),r.forEach(i,(function(n){var r=t.node(n).parent,i=e.edge(n,r),a=!1;i||(i=e.edge(r,n),a=!0),e.node(n).rank=e.node(r).rank+(a?i.minlen:-i.minlen)}))}(t,e)}function m(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}t.exports=l,l.initLowLimValues=d,l.initCutValues=h,l.calcCutValue=f,l.leaveEdge=g,l.enterEdge=y,l.exchangeEdges=v},function(t,e,n){var r=n(4);t.exports=function(t){var e=function(t){var e={},n=0;function i(a){var o=n;r.forEach(t.children(a),i),e[a]={low:o,lim:n++}}return r.forEach(t.children(),i),e}(t);r.forEach(t.graph().dummyChains,(function(n){for(var r=t.node(n),i=r.edgeObj,a=function(t,e,n,r){var i,a,o=[],s=[],c=Math.min(e[n].low,e[r].low),u=Math.max(e[n].lim,e[r].lim);i=n;do{i=t.parent(i),o.push(i)}while(i&&(e[i].low>c||u>e[i].lim));a=i,i=r;for(;(i=t.parent(i))!==a;)s.push(i);return{path:o.concat(s.reverse()),lca:a}}(t,e,i.v,i.w),o=a.path,s=a.lca,c=0,u=o[c],l=!0;n!==i.w;){if(r=t.node(n),l){for(;(u=o[c])!==s&&t.node(u).maxRank=2),s=l.buildLayerMatrix(t);var y=a(t,s);y0;)e%2&&(n+=c[e+1]),c[e=e-1>>1]+=t.weight;u+=t.weight*n}))),u}t.exports=function(t,e){for(var n=0,r=1;r=t.barycenter)&&function(t,e){var n=0,r=0;t.weight&&(n+=t.barycenter*t.weight,r+=t.weight);e.weight&&(n+=e.barycenter*e.weight,r+=e.weight);t.vs=e.vs.concat(t.vs),t.barycenter=n/r,t.weight=r,t.i=Math.min(e.i,t.i),e.merged=!0}(t,e)}}function i(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),r.forEach(a.in.reverse(),n(a)),r.forEach(a.out,i(a))}return r.map(r.filter(e,(function(t){return!t.merged})),(function(t){return r.pick(t,["vs","i","barycenter","weight"])}))}(r.filter(n,(function(t){return!t.indegree})))}},function(t,e,n){var r=n(4),i=n(8);function a(t,e,n){for(var i;e.length&&(i=r.last(e)).i<=n;)e.pop(),t.push(i.vs),n++;return n}t.exports=function(t,e){var n=i.partition(t,(function(t){return r.has(t,"barycenter")})),o=n.lhs,s=r.sortBy(n.rhs,(function(t){return-t.i})),c=[],u=0,l=0,h=0;o.sort((f=!!e,function(t,e){return t.barycentere.barycenter?1:f?e.i-t.i:t.i-e.i})),h=a(c,s,h),r.forEach(o,(function(t){h+=t.vs.length,c.push(t.vs),u+=t.barycenter*t.weight,l+=t.weight,h=a(c,s,h)}));var f;var d={vs:r.flatten(c,!0)};l&&(d.barycenter=u/l,d.weight=l);return d}},function(t,e,n){var r=n(4),i=n(17).Graph;t.exports=function(t,e,n){var a=function(t){var e;for(;t.hasNode(e=r.uniqueId("_root")););return e}(t),o=new i({compound:!0}).setGraph({root:a}).setDefaultNodeLabel((function(e){return t.node(e)}));return r.forEach(t.nodes(),(function(i){var s=t.node(i),c=t.parent(i);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(o.setNode(i),o.setParent(i,c||a),r.forEach(t[n](i),(function(e){var n=e.v===i?e.w:e.v,a=o.edge(n,i),s=r.isUndefined(a)?0:a.weight;o.setEdge(n,i,{weight:t.edge(e).weight+s})})),r.has(s,"minRank")&&o.setNode(i,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))})),o}},function(t,e,n){var r=n(4);t.exports=function(t,e,n){var i,a={};r.forEach(n,(function(n){for(var r,o,s=t.parent(n);s;){if((r=t.parent(s))?(o=a[r],a[r]=s):(o=i,i=s),o&&o!==s)return void e.setEdge(o,s);s=r}}))}},function(t,e,n){"use strict";var r=n(4),i=n(8),a=n(365).positionX;t.exports=function(t){(function(t){var e=i.buildLayerMatrix(t),n=t.graph().ranksep,a=0;r.forEach(e,(function(e){var i=r.max(r.map(e,(function(e){return t.node(e).height})));r.forEach(e,(function(e){t.node(e).y=a+i/2})),a+=i+n}))})(t=i.asNonCompoundGraph(t)),r.forEach(a(t),(function(e,n){t.node(n).x=e}))}},function(t,e,n){"use strict";var r=n(4),i=n(17).Graph,a=n(8);function o(t,e){var n={};return r.reduce(e,(function(e,i){var a=0,o=0,s=e.length,u=r.last(i);return r.forEach(i,(function(e,l){var h=function(t,e){if(t.node(e).dummy)return r.find(t.predecessors(e),(function(e){return t.node(e).dummy}))}(t,e),f=h?t.node(h).order:s;(h||e===u)&&(r.forEach(i.slice(o,l+1),(function(e){r.forEach(t.predecessors(e),(function(r){var i=t.node(r),o=i.order;!(os)&&c(n,e,u)}))}))}return r.reduce(e,(function(e,n){var a,o=-1,s=0;return r.forEach(n,(function(r,c){if("border"===t.node(r).dummy){var u=t.predecessors(r);u.length&&(a=t.node(u[0]).order,i(n,s,c,o,a),s=c,o=a)}i(n,s,n.length,a,e.length)})),n})),n}function c(t,e,n){if(e>n){var r=e;e=n,n=r}var i=t[e];i||(t[e]=i={}),i[n]=!0}function u(t,e,n){if(e>n){var i=e;e=n,n=i}return r.has(t[e],n)}function l(t,e,n,i){var a={},o={},s={};return r.forEach(e,(function(t){r.forEach(t,(function(t,e){a[t]=t,o[t]=t,s[t]=e}))})),r.forEach(e,(function(t){var e=-1;r.forEach(t,(function(t){var c=i(t);if(c.length)for(var l=((c=r.sortBy(c,(function(t){return s[t]}))).length-1)/2,h=Math.floor(l),f=Math.ceil(l);h<=f;++h){var d=c[h];o[t]===t&&e0}t.exports=function(t,e,r,i){var a,o,s,c,u,l,h,f,d,p,g,y,v;if(a=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,d=a*r.x+s*r.y+u,p=a*i.x+s*i.y+u,0!==d&&0!==p&&n(d,p))return;if(o=i.y-r.y,c=r.x-i.x,l=i.x*r.y-r.x*i.y,h=o*t.x+c*t.y+l,f=o*e.x+c*e.y+l,0!==h&&0!==f&&n(h,f))return;if(0===(g=a*c-o*s))return;return y=Math.abs(g/2),{x:(v=s*l-c*u)<0?(v-y)/g:(v+y)/g,y:(v=o*u-a*l)<0?(v-y)/g:(v+y)/g}}},function(t,e,n){var r=n(43),i=n(31),a=n(153).layout;t.exports=function(){var t=n(371),e=n(374),i=n(375),u=n(376),l=n(377),h=n(378),f=n(379),d=n(380),p=n(381),g=function(n,g){!function(t){t.nodes().forEach((function(e){var n=t.node(e);r.has(n,"label")||t.children(e).length||(n.label=e),r.has(n,"paddingX")&&r.defaults(n,{paddingLeft:n.paddingX,paddingRight:n.paddingX}),r.has(n,"paddingY")&&r.defaults(n,{paddingTop:n.paddingY,paddingBottom:n.paddingY}),r.has(n,"padding")&&r.defaults(n,{paddingLeft:n.padding,paddingRight:n.padding,paddingTop:n.padding,paddingBottom:n.padding}),r.defaults(n,o),r.each(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(t){n[t]=Number(n[t])})),r.has(n,"width")&&(n._prevWidth=n.width),r.has(n,"height")&&(n._prevHeight=n.height)})),t.edges().forEach((function(e){var n=t.edge(e);r.has(n,"label")||(n.label=""),r.defaults(n,s)}))}(g);var y=c(n,"output"),v=c(y,"clusters"),m=c(y,"edgePaths"),b=i(c(y,"edgeLabels"),g),x=t(c(y,"nodes"),g,d);a(g),l(x,g),h(b,g),u(m,g,p);var _=e(v,g);f(_,g),function(t){r.each(t.nodes(),(function(e){var n=t.node(e);r.has(n,"_prevWidth")?n.width=n._prevWidth:delete n.width,r.has(n,"_prevHeight")?n.height=n._prevHeight:delete n.height,delete n._prevWidth,delete n._prevHeight}))}(g)};return g.createNodes=function(e){return arguments.length?(t=e,g):t},g.createClusters=function(t){return arguments.length?(e=t,g):e},g.createEdgeLabels=function(t){return arguments.length?(i=t,g):i},g.createEdgePaths=function(t){return arguments.length?(u=t,g):u},g.shapes=function(t){return arguments.length?(d=t,g):d},g.arrows=function(t){return arguments.length?(p=t,g):p},g};var o={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},s={arrowhead:"normal",curve:i.curveLinear};function c(t,e){var n=t.select("g."+e);return n.empty()&&(n=t.append("g").attr("class",e)),n}},function(t,e,n){"use strict";var r=n(43),i=n(97),a=n(12),o=n(31);t.exports=function(t,e,n){var s,c=e.nodes().filter((function(t){return!a.isSubgraph(e,t)})),u=t.selectAll("g.node").data(c,(function(t){return t})).classed("update",!0);u.exit().remove(),u.enter().append("g").attr("class","node").style("opacity",0),(u=t.selectAll("g.node")).each((function(t){var s=e.node(t),c=o.select(this);a.applyClass(c,s.class,(c.classed("update")?"update ":"")+"node"),c.select("g.label").remove();var u=c.append("g").attr("class","label"),l=i(u,s),h=n[s.shape],f=r.pick(l.node().getBBox(),"width","height");s.elem=this,s.id&&c.attr("id",s.id),s.labelId&&u.attr("id",s.labelId),r.has(s,"width")&&(f.width=s.width),r.has(s,"height")&&(f.height=s.height),f.width+=s.paddingLeft+s.paddingRight,f.height+=s.paddingTop+s.paddingBottom,u.attr("transform","translate("+(s.paddingLeft-s.paddingRight)/2+","+(s.paddingTop-s.paddingBottom)/2+")");var d=o.select(this);d.select(".label-container").remove();var p=h(d,f,s).classed("label-container",!0);a.applyStyle(p,s.style);var g=p.node().getBBox();s.width=g.width,s.height=g.height})),s=u.exit?u.exit():u.selectAll(null);return a.applyTransition(s,e).style("opacity",0).remove(),u}},function(t,e,n){var r=n(12);t.exports=function(t,e){for(var n=t.append("text"),i=function(t){for(var e,n="",r=!1,i=0;i0&&void 0!==arguments[0]?arguments[0]:"fatal";isNaN(t)&&(t=t.toLowerCase(),void 0!==s[t]&&(t=s[t])),c.trace=function(){},c.debug=function(){},c.info=function(){},c.warn=function(){},c.error=function(){},c.fatal=function(){},t<=s.fatal&&(c.fatal=console.error?console.error.bind(console,l("FATAL"),"color: orange"):console.log.bind(console,"",l("FATAL"))),t<=s.error&&(c.error=console.error?console.error.bind(console,l("ERROR"),"color: orange"):console.log.bind(console,"",l("ERROR"))),t<=s.warn&&(c.warn=console.warn?console.warn.bind(console,l("WARN"),"color: orange"):console.log.bind(console,"",l("WARN"))),t<=s.info&&(c.info=console.info?console.info.bind(console,l("INFO"),"color: lightblue"):console.log.bind(console,"",l("INFO"))),t<=s.debug&&(c.debug=console.debug?console.debug.bind(console,l("DEBUG"),"color: lightgreen"):console.log.bind(console,"",l("DEBUG")))},l=function(t){var e=o()().format("ss.SSS");return"%c".concat(e," : ").concat(t," : ")},h=n(169),f=n.n(h),d=n(0),p=n(44),g=n(70),y=function(t){for(var e="",n=0;n>=0;){if(!((n=t.indexOf("=0)){e+=t,n=-1;break}e+=t.substr(0,n),(n=(t=t.substr(n+1)).indexOf("<\/script>"))>=0&&(n+=9,t=t.substr(n))}return e},v=//gi,m=function(t){return t.replace(v,"#br#")},b=function(t){return t.replace(/#br#/g,"
    ")},x={getRows:function(t){if(!t)return 1;var e=m(t);return(e=e.replace(/\\n/g,"#br#")).split("#br#")},sanitizeText:function(t,e){var n=t,r=!0;if(!e.flowchart||!1!==e.flowchart.htmlLabels&&"false"!==e.flowchart.htmlLabels||(r=!1),r){var i=e.securityLevel;"antiscript"===i?n=y(n):"loose"!==i&&(n=(n=(n=m(n)).replace(//g,">")).replace(/=/g,"="),n=b(n))}return n},hasBreaks:function(t){return//gi.test(t)},splitBreaks:function(t){return t.split(//gi)},lineBreakRegex:v,removeScript:y};function _(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:null;try{var n=new RegExp("[%]{2}(?![{]".concat(C.source,")(?=[}][%]{2}).*\n"),"ig");t=t.trim().replace(n,"").replace(/'/gm,'"'),c.debug("Detecting diagram directive".concat(null!==e?" type:"+e:""," based on the text:").concat(t));for(var r,i=[];null!==(r=T.exec(t));)if(r.index===T.lastIndex&&T.lastIndex++,r&&!e||e&&r[1]&&r[1].match(e)||e&&r[2]&&r[2].match(e)){var a=r[1]?r[1]:r[2],o=r[3]?r[3].trim():r[4]?JSON.parse(r[4].trim()):null;i.push({type:a,args:o})}return 0===i.length&&i.push({type:t,args:null}),1===i.length?i[0]:i}catch(n){return c.error("ERROR: ".concat(n.message," - Unable to parse directive").concat(null!==e?" type:"+e:""," based on the text:").concat(t)),{type:null,args:null}}},M=function(t){return t=t.replace(T,"").replace(A,"\n"),c.debug("Detecting diagram type based on the text "+t),t.match(/^\s*sequenceDiagram/)?"sequence":t.match(/^\s*gantt/)?"gantt":t.match(/^\s*classDiagram-v2/)?"classDiagram":t.match(/^\s*classDiagram/)?"class":t.match(/^\s*stateDiagram-v2/)?"stateDiagram":t.match(/^\s*stateDiagram/)?"state":t.match(/^\s*gitGraph/)?"git":t.match(/^\s*flowchart/)?"flowchart-v2":t.match(/^\s*info/)?"info":t.match(/^\s*pie/)?"pie":t.match(/^\s*erDiagram/)?"er":t.match(/^\s*journey/)?"journey":"flowchart"},O=function(t,e){var n={};return function(){for(var r=arguments.length,i=new Array(r),a=0;a"},n),x.lineBreakRegex.test(t))return t;var r=t.split(" "),i=[],a="";return r.forEach((function(t,o){var s=z("".concat(t," "),n),c=z(a,n);if(s>e){var u=Y(t,e,"-",n),l=u.hyphenatedStrings,h=u.remainingWord;i.push.apply(i,[a].concat(w(l))),a=h}else c+s>=e?(i.push(a),a=t):a=[a,t].filter(Boolean).join(" ");o+1===r.length&&i.push(a)})),i.filter((function(t){return""!==t})).join(n.joinWith)}),(function(t,e,n){return"".concat(t,"-").concat(e,"-").concat(n.fontSize,"-").concat(n.fontWeight,"-").concat(n.fontFamily,"-").concat(n.joinWith)})),Y=O((function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"-",r=arguments.length>3?arguments[3]:void 0;r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},r);var i=t.split(""),a=[],o="";return i.forEach((function(t,s){var c="".concat(o).concat(t);if(z(c,r)>=e){var u=s+1,l=i.length===u,h="".concat(c).concat(n);a.push(l?c:h),o=""}else o=c})),{hyphenatedStrings:a,remainingWord:o}}),(function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"-",r=arguments.length>3?arguments[3]:void 0;return"".concat(t,"-").concat(e,"-").concat(n,"-").concat(r.fontSize,"-").concat(r.fontWeight,"-").concat(r.fontFamily)})),z=function(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),U(t,e).width},U=O((function(t,e){var n=e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),r=n.fontSize,i=n.fontFamily,a=n.fontWeight;if(!t)return{width:0,height:0};var o=["sans-serif",i],s=t.split(x.lineBreakRegex),c=[],u=Object(d.select)("body");if(!u.remove)return{width:0,height:0,lineHeight:0};for(var l=u.append("svg"),h=0,f=o;hc[1].height&&c[0].width>c[1].width&&c[0].lineHeight>c[1].lineHeight?0:1]}),(function(t,e){return"".concat(t,"-").concat(e.fontSize,"-").concat(e.fontWeight,"-").concat(e.fontFamily)})),$=function(t,e,n){var r=new Map;return r.set("height",t),n?(r.set("width","100%"),r.set("style","max-width: ".concat(e,"px;"))):r.set("width",e),r},W=function(t,e,n,r){!function(t,e){var n=!0,r=!1,i=void 0;try{for(var a,o=e[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var s=a.value;t.attr(s[0],s[1])}}catch(t){r=!0,i=t}finally{try{n||null==o.return||o.return()}finally{if(r)throw i}}}(t,$(e,n,r))},H={assignWithDepth:I,wrapLabel:R,calculateTextHeight:function(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:15},e),U(t,e).height},calculateTextWidth:z,calculateTextDimensions:U,calculateSvgSizeAttrs:$,configureSvgSize:W,detectInit:function(t){var e=S(t,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(e)){var r=e.map((function(t){return t.args}));n=I(n,w(r))}else n=e.args;if(n){var i=M(t);["config"].forEach((function(t){void 0!==n[t]&&("flowchart-v2"===i&&(i="flowchart"),n[i]=n[t],delete n[t])}))}return n},detectDirective:S,detectType:M,isSubstringInArray:function(t,e){for(var n=0;n=1&&(i={x:t.x,y:t.y}),a>0&&a<1&&(i={x:(1-a)*e.x+a*t.x,y:(1-a)*e.y+a*t.y})}}e=t})),i}(t)},calcCardinalityPosition:function(t,e,n){var r;c.info("our points",e),e[0]!==n&&(e=e.reverse()),e.forEach((function(t){N(t,r),r=t}));var i,a=25;r=void 0,e.forEach((function(t){if(r&&!i){var e=N(t,r);if(e=1&&(i={x:t.x,y:t.y}),n>0&&n<1&&(i={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));var o=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),u={x:0,y:0};return u.x=Math.sin(s)*o+(e[0].x+i.x)/2,u.y=-Math.cos(s)*o+(e[0].y+i.y)/2,u},calcTerminalLabelPosition:function(t,e,n){var r,i=JSON.parse(JSON.stringify(n));c.info("our points",i),"start_left"!==e&&"start_right"!==e&&(i=i.reverse()),i.forEach((function(t){N(t,r),r=t}));var a,o=25;r=void 0,i.forEach((function(t){if(r&&!a){var e=N(t,r);if(e=1&&(a={x:t.x,y:t.y}),n>0&&n<1&&(a={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));var s=10,u=Math.atan2(i[0].y-a.y,i[0].x-a.x),l={x:0,y:0};return l.x=Math.sin(u)*s+(i[0].x+a.x)/2,l.y=-Math.cos(u)*s+(i[0].y+a.y)/2,"start_left"===e&&(l.x=Math.sin(u+Math.PI)*s+(i[0].x+a.x)/2,l.y=-Math.cos(u+Math.PI)*s+(i[0].y+a.y)/2),"end_right"===e&&(l.x=Math.sin(u-Math.PI)*s+(i[0].x+a.x)/2-5,l.y=-Math.cos(u-Math.PI)*s+(i[0].y+a.y)/2-5),"end_left"===e&&(l.x=Math.sin(u)*s+(i[0].x+a.x)/2-5,l.y=-Math.cos(u)*s+(i[0].y+a.y)/2-5),l},formatUrl:function(t,e){var n=t.trim();if(n)return"loose"!==e.securityLevel?Object(g.sanitizeUrl)(n):n},getStylesFromArray:B,generateId:F,random:P,memoize:O,runFunc:function(t){for(var e,n=t.split("."),r=n.length-1,i=n[r],a=window,o=0;o1?s-1:0),u=1;u=0&&(n=!0)})),n},qt=function(t,e){var n=[];return t.nodes.forEach((function(r,i){Gt(e,r)||n.push(t.nodes[i])})),{nodes:n}},Xt={parseDirective:function(t,e,n){Go.parseDirective(this,t,e,n)},defaultConfig:function(){return gt.flowchart},addVertex:function(t,e,n,r,i){var a,o=t;void 0!==o&&0!==o.trim().length&&(void 0===Dt[o]&&(Dt[o]={id:o,domId:"flowchart-"+o+"-"+Mt,styles:[],classes:[]}),Mt++,void 0!==e?(Ot=_t(),'"'===(a=x.sanitizeText(e.trim(),Ot))[0]&&'"'===a[a.length-1]&&(a=a.substring(1,a.length-1)),Dt[o].text=a):void 0===Dt[o].text&&(Dt[o].text=t),void 0!==n&&(Dt[o].type=n),null!=r&&r.forEach((function(t){Dt[o].styles.push(t)})),null!=i&&i.forEach((function(t){Dt[o].classes.push(t)})))},lookUpDomId:Yt,addLink:function(t,e,n,r){var i,a;for(i=0;i/)&&(At="LR"),At.match(/.*v/)&&(At="TB")},setClass:Ut,setTooltip:function(t,e){t.split(",").forEach((function(t){void 0!==e&&(Pt["gen-1"===St?Yt(t):t]=x.sanitizeText(e,Ot))}))},getTooltip:function(t){return Pt[t]},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){!function(t,e,n){var r=Yt(t);if("loose"===_t().securityLevel&&void 0!==e){var i=[];if("string"==typeof n){i=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(var a=0;a=0)&&s.push(t))})),"gen-1"===St){c.warn("LOOKING UP");for(var l=0;l0&&function t(e,n){var r=Lt[n].nodes;if(!((Ht+=1)>2e3)){if(Vt[Ht]=n,Lt[n].id===e)return{result:!0,count:0};for(var i=0,a=1;i=0){var s=t(e,o);if(s.result)return{result:!0,count:a+s.count};a+=s.count}i+=1}return{result:!1,count:a}}}("none",Lt.length-1)},getSubGraphs:function(){return Lt},destructLink:function(t,e){var n,r=function(t){var e=t.trim(),n=e.slice(0,-1),r="arrow_open";switch(e.slice(-1)){case"x":r="arrow_cross","x"===e[0]&&(r="double_"+r,n=n.slice(1));break;case">":r="arrow_point","<"===e[0]&&(r="double_"+r,n=n.slice(1));break;case"o":r="arrow_circle","o"===e[0]&&(r="double_"+r,n=n.slice(1))}var i="normal",a=n.length-1;"="===n[0]&&(i="thick");var o=function(t,e){for(var n=e.length,r=0,i=0;in.height/2-a)){var o=a*a*(1-r*r/(i*i));0!=o&&(o=Math.sqrt(o)),o=a-o,t.y-n.y>0&&(o=-o),e.y+=o}return e},c}function de(t,e,n,r){return t.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("transform","translate("+-e/2+","+n/2+")")}var pe={addToRender:function(t){t.shapes().question=ne,t.shapes().hexagon=re,t.shapes().stadium=le,t.shapes().subroutine=he,t.shapes().cylinder=fe,t.shapes().rect_left_inv_arrow=ie,t.shapes().lean_right=ae,t.shapes().lean_left=oe,t.shapes().trapezoid=se,t.shapes().inv_trapezoid=ce,t.shapes().rect_right_inv_arrow=ue},addToRenderV2:function(t){t({question:ne}),t({hexagon:re}),t({stadium:le}),t({subroutine:he}),t({cylinder:fe}),t({rect_left_inv_arrow:ie}),t({lean_right:ae}),t({lean_left:oe}),t({trapezoid:se}),t({inv_trapezoid:ce}),t({rect_right_inv_arrow:ue})}},ge={},ye=function(t,e,n){var r=Object(d.select)('[id="'.concat(n,'"]'));Object.keys(t).forEach((function(n){var i=t[n],a="default";i.classes.length>0&&(a=i.classes.join(" "));var o,s=B(i.styles),u=void 0!==i.text?i.text:i.id;if(_t().flowchart.htmlLabels){var l={label:u.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")}))};(o=ee()(r,l).node()).parentNode.removeChild(o)}else{var h=document.createElementNS("http://www.w3.org/2000/svg","text");h.setAttribute("style",s.labelStyle.replace("color:","fill:"));for(var f=u.split(x.lineBreakRegex),d=0;d').concat(a.text.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")})),"")):(u.labelType="text",u.label=a.text.replace(x.lineBreakRegex,"\n"),void 0===a.style&&(u.style=u.style||"stroke: #333; stroke-width: 1.5px;fill:none"),u.labelStyle=u.labelStyle.replace("color:","fill:"))),u.id=o,u.class=s+" "+c,u.minlen=a.length||1,e.setEdge(Xt.lookUpDomId(a.start),Xt.lookUpDomId(a.end),u,i)}))},me=function(t){for(var e=Object.keys(t),n=0;n=0;h--)i=l[h],Xt.addVertex(i.id,i.title,"group",void 0,i.classes);var f=Xt.getVertices();c.warn("Get vertices",f);var p=Xt.getEdges(),g=0;for(g=l.length-1;g>=0;g--){i=l[g],Object(d.selectAll)("cluster").append("text");for(var y=0;y"),c.info("vertexText"+i),function(t){var e,n,r=Object(d.select)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),i=r.append("xhtml:div"),a=t.label,o=t.isNode?"nodeLabel":"edgeLabel";return i.html(''+a+""),e=i,(n=t.labelStyle)&&e.attr("style",n),i.style("display","inline-block"),i.style("white-space","nowrap"),i.attr("xmlns","http://www.w3.org/1999/xhtml"),r.node()}({isNode:r,label:i.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")})),labelStyle:e.replace("fill:","color:")});var a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));var o=[];o="string"==typeof i?i.split(/\\n|\n|/gi):Array.isArray(i)?i:[];for(var s=0;s0)t(a,n,r,i);else{var o=n.node(a);c.info("cp ",a," to ",i," with parent ",e),r.setNode(a,o),i!==n.parent(a)&&(c.warn("Setting parent",a,n.parent(a)),r.setParent(a,n.parent(a))),e!==i&&a!==e?(c.debug("Setting parent",a,e),r.setParent(a,e)):(c.info("In copy ",e,"root",i,"data",n.node(e),i),c.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==i,"node!==clusterId",a!==e));var s=n.edges(a);c.debug("Copying Edges",s),s.forEach((function(t){c.info("Edge",t);var a=n.edge(t.v,t.w,t.name);c.info("Edge data",a,i);try{!function(t,e){return c.info("Decendants of ",e," is ",Oe[e]),c.info("Edge is ",t),t.v!==e&&(t.w!==e&&(Oe[e]?(c.info("Here "),Oe[e].indexOf(t.v)>=0||(!!Ne(t.v,e)||(!!Ne(t.w,e)||Oe[e].indexOf(t.w)>=0))):(c.debug("Tilt, ",e,",not in decendants"),!1)))}(t,i)?c.info("Skipping copy of edge ",t.v,"--\x3e",t.w," rootId: ",i," clusterId:",e):(c.info("Copying as ",t.v,t.w,a,t.name),r.setEdge(t.v,t.w,a,t.name),c.info("newGraph edges ",r.edges(),r.edge(r.edges()[0])))}catch(t){c.error(t)}}))}c.debug("Removing node",a),n.removeNode(a)}))},Le=function t(e,n){c.trace("Searching",e);var r=n.children(e);if(c.trace("Searching children of id ",e,r),r.length<1)return c.trace("This is a valid node",e),e;for(var i=0;i ",a),a}},Fe=function(t){return Me[t]&&Me[t].externalConnections&&Me[t]?Me[t].id:t},Pe=function(t,e){!t||e>10?c.debug("Opting out, no graph "):(c.debug("Opting in, graph "),t.nodes().forEach((function(e){t.children(e).length>0&&(c.warn("Cluster identified",e," Replacement id in edges: ",Le(e,t)),Oe[e]=function t(e,n){for(var r=n.children(e),i=[].concat(r),a=0;a0?(c.debug("Cluster identified",e,Oe),r.forEach((function(t){t.v!==e&&t.w!==e&&(Ne(t.v,e)^Ne(t.w,e)&&(c.warn("Edge: ",t," leaves cluster ",e),c.warn("Decendants of XXX ",e,": ",Oe[e]),Me[e].externalConnections=!0))}))):c.debug("Not a cluster ",e,Oe)})),t.edges().forEach((function(e){var n=t.edge(e);c.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),c.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(t.edge(e)));var r=e.v,i=e.w;c.warn("Fix XXX",Me,"ids:",e.v,e.w,"Translateing: ",Me[e.v]," --- ",Me[e.w]),(Me[e.v]||Me[e.w])&&(c.warn("Fixing and trixing - removing XXX",e.v,e.w,e.name),r=Fe(e.v),i=Fe(e.w),t.removeEdge(e.v,e.w,e.name),r!==e.v&&(n.fromCluster=e.v),i!==e.w&&(n.toCluster=e.w),c.warn("Fix Replacing with XXX",r,i,e.name),t.setEdge(r,i,n,e.name))})),c.warn("Adjusted Graph",G.a.json.write(t)),Ie(t,0),c.trace(Me))},Ie=function t(e,n){if(c.warn("extractor - ",n,G.a.json.write(e),e.children("D")),n>10)c.error("Bailing out");else{for(var r=e.nodes(),i=!1,a=0;a0}if(i){c.debug("Nodes = ",r,n);for(var u=0;u0){c.warn("Cluster without external connections, without a parent and with children",l,n);var h=e.graph(),f=new G.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:"TB"===h.rankdir?"LR":"TB",nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));c.warn("Old graph before copy",G.a.json.write(e)),Be(l,e,f,l),e.setNode(l,{clusterNode:!0,id:l,clusterData:Me[l].clusterData,labelText:Me[l].labelText,graph:f}),c.warn("New graph after copy node: (",l,")",G.a.json.write(f)),c.debug("Old graph after copy",G.a.json.write(e))}else c.warn("Cluster ** ",l," **not meeting the criteria !externalConnections:",!Me[l].externalConnections," no parent: ",!e.parent(l)," children ",e.children(l)&&e.children(l).length>0,e.children("D"),n),c.debug(Me);else c.debug("Not a cluster",l,n)}r=e.nodes(),c.warn("New list of nodes",r);for(var d=0;d0}var $e=function(t,e,n,r){var i,a,o,s,c,u,l,h,f,d,p,g,y;if(i=e.y-t.y,o=t.x-e.x,c=e.x*t.y-t.x*e.y,f=i*n.x+o*n.y+c,d=i*r.x+o*r.y+c,!(0!==f&&0!==d&&Ue(f,d)||(a=r.y-n.y,s=n.x-r.x,u=r.x*n.y-n.x*r.y,l=a*t.x+s*t.y+u,h=a*e.x+s*e.y+u,0!==l&&0!==h&&Ue(l,h)||0==(p=i*s-a*o))))return g=Math.abs(p/2),{x:(y=o*u-s*c)<0?(y-g)/p:(y+g)/p,y:(y=a*c-i*u)<0?(y-g)/p:(y+g)/p}},We=function(t,e,n){var r=t.x,i=t.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach((function(t){o=Math.min(o,t.x),s=Math.min(s,t.y)})):(o=Math.min(o,e.x),s=Math.min(s,e.y));for(var c=r-t.width/2-o,u=i-t.height/2-s,l=0;l1&&a.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,c=Math.sqrt(o*o+s*s);return aMath.abs(o)*u?(s<0&&(u=-u),n=0===s?0:u*o/s,r=u):(o<0&&(c=-c),n=c,r=0===o?0:c*s/o),{x:i+n,y:a+r}},Ve={node:n.n(Re).a,circle:ze,ellipse:Ye,polygon:We,rect:He},Ge=function(t,e){var n=Ce(t,e,"node "+e.classes,!0),r=n.shapeSvg,i=n.bbox,a=n.halfPadding;c.info("Classes = ",e.classes);var o=r.insert("rect",":first-child");return o.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Ae(e,o),e.intersect=function(t){return Ve.rect(e,t)},r};function qe(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e0){var r=t.split("~");n=r[0],e=r[1]}return{className:n,type:e}},tn=function(t){var e=Qe(t);void 0===Ze[e.className]&&(Ze[e.className]={id:e.className,type:e.type,cssClasses:[],methods:[],members:[],annotations:[],domId:"classid-"+e.className+"-"+Je},Je++)},en=function(t){for(var e=Object.keys(Ze),n=0;n>")?r.annotations.push(i.substring(2,i.length-2)):i.indexOf(")")>0?r.methods.push(i):i&&r.members.push(i)}},rn=function(t,e){t.split(",").forEach((function(t){var n=t;t[0].match(/\d/)&&(n="classid-"+n),void 0!==Ze[n]&&Ze[n].cssClasses.push(e)}))},an=function(t,e,n){var r=_t(),i=t,a=en(i);if("loose"===r.securityLevel&&void 0!==e&&void 0!==Ze[i]){var o=[];if("string"==typeof n){o=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(var s=0;s1&&a>i&&a<=t.length){var o="",s="",c=t.substring(0,1);c.match(/\w/)?s=t.substring(0,i).trim():(c.match(/\+|-|~|#/)&&(o=c),s=t.substring(1,i).trim());var u=t.substring(i+1,a),l=t.substring(a+1,1);n=yn(l),e=o+s+"("+gn(u.trim())+")",a<"".length&&""!==(r=t.substring(a+2).trim())&&(r=" : "+gn(r))}else e=gn(t);return{displayText:e,cssStyle:n}},pn=function(t,e,n,r){var i=ln(e),a=t.append("tspan").attr("x",r.padding).text(i.displayText);""!==i.cssStyle&&a.attr("style",i.cssStyle),n||a.attr("dy",r.textHeight)},gn=function t(e){var n=e;return-1!=e.indexOf("~")?t(n=(n=n.replace("~","<")).replace("~",">")):n},yn=function(t){switch(t){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}},vn=function(t,e,n){c.info("Rendering class "+e);var r,i=e.id,a={id:i,label:e.id,width:0,height:0},o=t.append("g").attr("id",en(i)).attr("class","classGroup");r=e.link?o.append("svg:a").attr("xlink:href",e.link).attr("target",e.linkTarget).append("text").attr("y",n.textHeight+n.padding).attr("x",0):o.append("text").attr("y",n.textHeight+n.padding).attr("x",0);var s=!0;e.annotations.forEach((function(t){var e=r.append("tspan").text("«"+t+"»");s||e.attr("dy",n.textHeight),s=!1}));var u=e.id;void 0!==e.type&&""!==e.type&&(u+="<"+e.type+">");var l=r.append("tspan").text(u).attr("class","title");s||l.attr("dy",n.textHeight);var h=r.node().getBBox().height,f=o.append("line").attr("x1",0).attr("y1",n.padding+h+n.dividerMargin/2).attr("y2",n.padding+h+n.dividerMargin/2),d=o.append("text").attr("x",n.padding).attr("y",h+n.dividerMargin+n.textHeight).attr("fill","white").attr("class","classText");s=!0,e.members.forEach((function(t){pn(d,t,s,n),s=!1}));var p=d.node().getBBox(),g=o.append("line").attr("x1",0).attr("y1",n.padding+h+n.dividerMargin+p.height).attr("y2",n.padding+h+n.dividerMargin+p.height),y=o.append("text").attr("x",n.padding).attr("y",h+2*n.dividerMargin+p.height+n.textHeight).attr("fill","white").attr("class","classText");s=!0,e.methods.forEach((function(t){pn(y,t,s,n),s=!1}));var v=o.node().getBBox(),m=" ";e.cssClasses.length>0&&(m+=e.cssClasses.join(" "));var b=o.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",v.width+2*n.padding).attr("height",v.height+n.padding+.5*n.dividerMargin).attr("class",m).node().getBBox().width;return r.node().childNodes.forEach((function(t){t.setAttribute("x",(b-t.getBBox().width)/2)})),e.tooltip&&r.insert("title").text(e.tooltip),f.attr("x2",b),g.attr("x2",b),a.width=b,a.height=v.height+n.padding+.5*n.dividerMargin,a},mn=function(t,e,n,r){var i=function(t){switch(t){case on.AGGREGATION:return"aggregation";case on.EXTENSION:return"extension";case on.COMPOSITION:return"composition";case on.DEPENDENCY:return"dependency"}};e.points=e.points.filter((function(t){return!Number.isNaN(t.y)}));var a,o,s=e.points,u=Object(d.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(d.curveBasis),l=t.append("path").attr("d",u(s)).attr("id","edge"+un).attr("class","relation"),h="";r.arrowMarkerAbsolute&&(h=(h=(h=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),1==n.relation.lineType&&l.attr("class","relation dashed-line"),"none"!==n.relation.type1&&l.attr("marker-start","url("+h+"#"+i(n.relation.type1)+"Start)"),"none"!==n.relation.type2&&l.attr("marker-end","url("+h+"#"+i(n.relation.type2)+"End)");var f,p,g,y,v=e.points.length,m=H.calcLabelPosition(e.points);if(a=m.x,o=m.y,v%2!=0&&v>1){var b=H.calcCardinalityPosition("none"!==n.relation.type1,e.points,e.points[0]),x=H.calcCardinalityPosition("none"!==n.relation.type2,e.points,e.points[v-1]);c.debug("cardinality_1_point "+JSON.stringify(b)),c.debug("cardinality_2_point "+JSON.stringify(x)),f=b.x,p=b.y,g=x.x,y=x.y}if(void 0!==n.title){var _=t.append("g").attr("class","classLabel"),k=_.append("text").attr("class","label").attr("x",a).attr("y",o).attr("fill","red").attr("text-anchor","middle").text(n.title);window.label=k;var w=k.node().getBBox();_.insert("rect",":first-child").attr("class","box").attr("x",w.x-r.padding/2).attr("y",w.y-r.padding/2).attr("width",w.width+r.padding).attr("height",w.height+r.padding)}(c.info("Rendering relation "+JSON.stringify(n)),void 0!==n.relationTitle1&&"none"!==n.relationTitle1)&&t.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",f).attr("y",p).attr("fill","black").attr("font-size","6").text(n.relationTitle1);void 0!==n.relationTitle2&&"none"!==n.relationTitle2&&t.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",g).attr("y",y).attr("fill","black").attr("font-size","6").text(n.relationTitle2);un++},bn=function(t,e,n){var r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=70,a=10;"LR"===n&&(i=10,a=70);var o=r.append("rect").style("stroke","black").style("fill","black").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return Ae(e,o),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return Ve.rect(e,t)},r},xn={question:function(t,e){var n=Ce(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding+(i.height+e.padding),o=[{x:a/2,y:0},{x:a,y:-a/2},{x:a/2,y:-a},{x:0,y:-a/2}];c.info("Question main (Circle)");var s=Se(r,a,a,o);return Ae(e,s),e.intersect=function(t){return c.warn("Intersect called"),Ve.polygon(e,o,t)},r},rect:function(t,e){var n=Ce(t,e,"node "+e.classes,!0),r=n.shapeSvg,i=n.bbox,a=n.halfPadding;c.trace("Classes = ",e.classes);var o=r.insert("rect",":first-child");return o.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Ae(e,o),e.intersect=function(t){return Ve.rect(e,t)},r},rectWithTitle:function(t,e){var n;n=e.classes?"node "+e.classes:"node default";var r=t.insert("g").attr("class",n).attr("id",e.domId||e.id),i=r.insert("rect",":first-child"),a=r.insert("line"),o=r.insert("g").attr("class","label"),s=e.labelText.flat();c.info("Label text",s[0]);var u,l=o.node().appendChild(Te(s[0],e.labelStyle,!0,!0));if(_t().flowchart.htmlLabels){var h=l.children[0],f=Object(d.select)(l);u=h.getBoundingClientRect(),f.attr("width",u.width),f.attr("height",u.height)}c.info("Text 2",s);var p=s.slice(1,s.length),g=l.getBBox(),y=o.node().appendChild(Te(p.join("
    "),e.labelStyle,!0,!0));if(_t().flowchart.htmlLabels){var v=y.children[0],m=Object(d.select)(y);u=v.getBoundingClientRect(),m.attr("width",u.width),m.attr("height",u.height)}var b=e.padding/2;return Object(d.select)(y).attr("transform","translate( "+(u.width>g.width?0:(g.width-u.width)/2)+", "+(g.height+b+5)+")"),Object(d.select)(l).attr("transform","translate( "+(u.widthe.height/2-s)){var i=s*s*(1-r*r/(o*o));0!=i&&(i=Math.sqrt(i)),i=s-i,t.y-e.y>0&&(i=-i),n.y+=i}return n},r},start:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=n.insert("circle",":first-child");return r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),Ae(e,r),e.intersect=function(t){return Ve.circle(e,7,t)},n},end:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=n.insert("circle",":first-child"),i=n.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),r.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),Ae(e,i),e.intersect=function(t){return Ve.circle(e,7,t)},n},note:Ge,subroutine:function(t,e){var n=Ce(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=Se(r,a,o,[{x:0,y:0},{x:a,y:0},{x:a,y:-o},{x:0,y:-o},{x:0,y:0},{x:-8,y:0},{x:a+8,y:0},{x:a+8,y:-o},{x:-8,y:-o},{x:-8,y:0}]);return Ae(e,s),e.intersect=function(t){return Ve.polygon(e,t)},r},fork:bn,join:bn,class_box:function(t,e){var n,r=e.padding/2;n=e.classes?"node "+e.classes:"node default";var i=t.insert("g").attr("class",n).attr("id",e.domId||e.id),a=i.insert("rect",":first-child"),o=i.insert("line"),s=i.insert("line"),c=0,u=4,l=i.insert("g").attr("class","label"),h=0,f=e.classData.annotations&&e.classData.annotations[0],p=e.classData.annotations[0]?"«"+e.classData.annotations[0]+"»":"",g=l.node().appendChild(Te(p,e.labelStyle,!0,!0)),y=g.getBBox();if(_t().flowchart.htmlLabels){var v=g.children[0],m=Object(d.select)(g);y=v.getBoundingClientRect(),m.attr("width",y.width),m.attr("height",y.height)}e.classData.annotations[0]&&(u+=y.height+4,c+=y.width);var b=e.classData.id;void 0!==e.classData.type&&""!==e.classData.type&&(b+="<"+e.classData.type+">");var x=l.node().appendChild(Te(b,e.labelStyle,!0,!0));Object(d.select)(x).attr("class","classTitle");var _=x.getBBox();if(_t().flowchart.htmlLabels){var k=x.children[0],w=Object(d.select)(x);_=k.getBoundingClientRect(),w.attr("width",_.width),w.attr("height",_.height)}u+=_.height+4,_.width>c&&(c=_.width);var E=[];e.classData.members.forEach((function(t){var n=ln(t).displayText,r=l.node().appendChild(Te(n,e.labelStyle,!0,!0)),i=r.getBBox();if(_t().flowchart.htmlLabels){var a=r.children[0],o=Object(d.select)(r);i=a.getBoundingClientRect(),o.attr("width",i.width),o.attr("height",i.height)}i.width>c&&(c=i.width),u+=i.height+4,E.push(r)})),u+=8;var T=[];if(e.classData.methods.forEach((function(t){var n=ln(t).displayText,r=l.node().appendChild(Te(n,e.labelStyle,!0,!0)),i=r.getBBox();if(_t().flowchart.htmlLabels){var a=r.children[0],o=Object(d.select)(r);i=a.getBoundingClientRect(),o.attr("width",i.width),o.attr("height",i.height)}i.width>c&&(c=i.width),u+=i.height+4,T.push(r)})),u+=8,f){var C=(c-y.width)/2;Object(d.select)(g).attr("transform","translate( "+(-1*c/2+C)+", "+-1*u/2+")"),h=y.height+4}var A=(c-_.width)/2;return Object(d.select)(x).attr("transform","translate( "+(-1*c/2+A)+", "+(-1*u/2+h)+")"),h+=_.height+4,o.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-u/2-r+8+h).attr("y2",-u/2-r+8+h),h+=8,E.forEach((function(t){Object(d.select)(t).attr("transform","translate( "+-c/2+", "+(-1*u/2+h+4)+")"),h+=_.height+4})),h+=8,s.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-u/2-r+8+h).attr("y2",-u/2-r+8+h),h+=8,T.forEach((function(t){Object(d.select)(t).attr("transform","translate( "+-c/2+", "+(-1*u/2+h)+")"),h+=_.height+4})),a.attr("class","outer title-state").attr("x",-c/2-r).attr("y",-u/2-r).attr("width",c+e.padding).attr("height",u+e.padding),Ae(e,a),e.intersect=function(t){return Ve.rect(e,t)},i}},_n={},kn=function(t){var e=_n[t.id];c.trace("Transforming node",t,"translate("+(t.x-t.width/2-5)+", "+(t.y-t.height/2-5)+")");t.clusterNode?e.attr("transform","translate("+(t.x-t.width/2-8)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")")},wn={rect:function(t,e){c.trace("Creating subgraph rect for ",e.id,e);var n=t.insert("g").attr("class","cluster"+(e.class?" "+e.class:"")).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=i.node().appendChild(Te(e.labelText,e.labelStyle,void 0,!0)),o=a.getBBox();if(_t().flowchart.htmlLabels){var s=a.children[0],u=Object(d.select)(a);o=s.getBoundingClientRect(),u.attr("width",o.width),u.attr("height",o.height)}var l=0*e.padding,h=l/2;c.trace("Data ",e,JSON.stringify(e)),r.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-h).attr("y",e.y-e.height/2-h).attr("width",e.width+l).attr("height",e.height+l),i.attr("transform","translate("+(e.x-o.width/2)+", "+(e.y-e.height/2+e.padding/3)+")");var f=r.node().getBBox();return e.width=f.width,e.height=f.height,e.intersect=function(t){return He(e,t)},n},roundedWithTitle:function(t,e){var n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=n.append("rect"),o=i.node().appendChild(Te(e.labelText,e.labelStyle,void 0,!0)),s=o.getBBox();if(_t().flowchart.htmlLabels){var c=o.children[0],u=Object(d.select)(o);s=c.getBoundingClientRect(),u.attr("width",s.width),u.attr("height",s.height)}s=o.getBBox();var l=0*e.padding,h=l/2;r.attr("class","outer").attr("x",e.x-e.width/2-h).attr("y",e.y-e.height/2-h).attr("width",e.width+l).attr("height",e.height+l),a.attr("class","inner").attr("x",e.x-e.width/2-h).attr("y",e.y-e.height/2-h+s.height-1).attr("width",e.width+l).attr("height",e.height+l-s.height-3),i.attr("transform","translate("+(e.x-s.width/2)+", "+(e.y-e.height/2-e.padding/3+(_t().flowchart.htmlLabels?5:3))+")");var f=r.node().getBBox();return e.width=f.width,e.height=f.height,e.intersect=function(t){return He(e,t)},n},noteGroup:function(t,e){var n=t.insert("g").attr("class","note-cluster").attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");var o=r.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return He(e,t)},n},divider:function(t,e){var n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("class","divider").attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2).attr("width",e.width+i).attr("height",e.height+i);var o=r.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return He(e,t)},n}},En={},Tn={},Cn={},An=function(t,e){var n=t.x,r=t.y,i=Math.abs(e.x-n),a=Math.abs(e.y-r),o=t.width/2,s=t.height/2;return i>=o||a>=s},Sn=function(t,e,n){c.warn("intersection calc o:",e," i:",n,t);var r=t.x,i=t.y,a=Math.abs(r-n.x),o=t.width/2,s=n.xMath.abs(r-e.x)*u){var y=n.y0&&c.info("Recursive edges",n.edge(n.edges()[0]));var s=o.insert("g").attr("class","clusters"),u=o.insert("g").attr("class","edgePaths"),l=o.insert("g").attr("class","edgeLabels"),h=o.insert("g").attr("class","nodes");return n.nodes().forEach((function(e){var o=n.node(e);if(void 0!==i){var s=JSON.parse(JSON.stringify(i.clusterData));c.info("Setting data for cluster XXX (",e,") ",s,i),n.setNode(i.id,s),n.parent(e)||(c.warn("Setting parent",e,i.id),n.setParent(e,i.id,s))}if(c.info("(Insert) Node XXX"+e+": "+JSON.stringify(n.node(e))),o&&o.clusterNode){c.info("Cluster identified",e,o,n.node(e));var u=t(h,o.graph,r,n.node(e));Ae(o,u),function(t,e){_n[e.id]=t}(u,o),c.warn("Recursive render complete",u,o)}else n.children(e).length>0?(c.info("Cluster - the non recursive path XXX",e,o.id,o,n),c.info(Le(o.id,n)),Me[o.id]={id:Le(o.id,n),node:o}):(c.info("Node - the non recursive path",e,o.id,o),function(t,e,n){var r,i;e.link?(r=t.insert("svg:a").attr("xlink:href",e.link).attr("target",e.linkTarget||"_blank"),i=xn[e.shape](r,e,n)):r=i=xn[e.shape](t,e,n),e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),_n[e.id]=r,e.haveCallback&&_n[e.id].attr("class",_n[e.id].attr("class")+" clickable")}(h,n.node(e),a))})),n.edges().forEach((function(t){var e=n.edge(t.v,t.w,t.name);c.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),c.info("Edge "+t.v+" -> "+t.w+": ",t," ",JSON.stringify(n.edge(t))),c.info("Fix",Me,"ids:",t.v,t.w,"Translateing: ",Me[t.v],Me[t.w]),function(t,e){var n=Te(e.label,e.labelStyle),r=t.insert("g").attr("class","edgeLabel"),i=r.insert("g").attr("class","label");i.node().appendChild(n);var a=n.getBBox();if(_t().flowchart.htmlLabels){var o=n.children[0],s=Object(d.select)(n);a=o.getBoundingClientRect(),s.attr("width",a.width),s.attr("height",a.height)}if(i.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),Tn[e.id]=r,e.width=a.width,e.height=a.height,e.startLabelLeft){var c=Te(e.startLabelLeft,e.labelStyle),u=t.insert("g").attr("class","edgeTerminals"),l=u.insert("g").attr("class","inner");l.node().appendChild(c);var h=c.getBBox();l.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),Cn[e.id]||(Cn[e.id]={}),Cn[e.id].startLeft=u}if(e.startLabelRight){var f=Te(e.startLabelRight,e.labelStyle),p=t.insert("g").attr("class","edgeTerminals"),g=p.insert("g").attr("class","inner");p.node().appendChild(f),g.node().appendChild(f);var y=f.getBBox();g.attr("transform","translate("+-y.width/2+", "+-y.height/2+")"),Cn[e.id]||(Cn[e.id]={}),Cn[e.id].startRight=p}if(e.endLabelLeft){var v=Te(e.endLabelLeft,e.labelStyle),m=t.insert("g").attr("class","edgeTerminals"),b=m.insert("g").attr("class","inner");b.node().appendChild(v);var x=v.getBBox();b.attr("transform","translate("+-x.width/2+", "+-x.height/2+")"),m.node().appendChild(v),Cn[e.id]||(Cn[e.id]={}),Cn[e.id].endLeft=m}if(e.endLabelRight){var _=Te(e.endLabelRight,e.labelStyle),k=t.insert("g").attr("class","edgeTerminals"),w=k.insert("g").attr("class","inner");w.node().appendChild(_);var E=_.getBBox();w.attr("transform","translate("+-E.width/2+", "+-E.height/2+")"),k.node().appendChild(_),Cn[e.id]||(Cn[e.id]={}),Cn[e.id].endRight=k}}(l,e)})),n.edges().forEach((function(t){c.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t))})),c.info("#############################################"),c.info("### Layout ###"),c.info("#############################################"),c.info(n),ke.a.layout(n),c.info("Graph after layout:",G.a.json.write(n)),je(n).forEach((function(t){var e=n.node(t);c.info("Position "+t+": "+JSON.stringify(n.node(t))),c.info("Position "+t+": ("+e.x,","+e.y,") width: ",e.width," height: ",e.height),e&&e.clusterNode?kn(e):n.children(t).length>0?(!function(t,e){c.trace("Inserting cluster");var n=e.shape||"rect";En[e.id]=wn[n](t,e)}(s,e),Me[e.id].node=e):kn(e)})),n.edges().forEach((function(t){var e=n.edge(t);c.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(e),e);var i=function(t,e,n,r,i,a){var o=n.points,s=!1,u=a.node(e.v),l=a.node(e.w);if(l.intersect&&u.intersect&&((o=o.slice(1,n.points.length-1)).unshift(u.intersect(o[0])),c.info("Last point",o[o.length-1],l,l.intersect(o[o.length-1])),o.push(l.intersect(o[o.length-1]))),n.toCluster){var h;c.trace("edge",n),c.trace("to cluster",r[n.toCluster]),o=[];var f=!1;n.points.forEach((function(t){var e=r[n.toCluster].node;if(An(e,t)||f)f||o.push(t);else{c.trace("inside",n.toCluster,t,h);var i=Sn(e,h,t),a=!1;o.forEach((function(t){a=a||t.x===i.x&&t.y===i.y})),o.find((function(t){return t.x===i.x&&t.y===i.y}))?c.warn("no intersect",i,o):o.push(i),f=!0}h=t})),s=!0}if(n.fromCluster){c.trace("edge",n),c.warn("from cluster",r[n.fromCluster]);for(var p,g=[],y=!1,v=o.length-1;v>=0;v--){var m=o[v],b=r[n.fromCluster].node;if(An(b,m)||y)c.trace("Outside point",m),y||g.unshift(m);else{c.warn("inside",n.fromCluster,m,b);var x=Sn(b,p,m);g.unshift(x),y=!0}p=m}o=g,s=!0}var _,k=o.filter((function(t){return!Number.isNaN(t.y)})),w=Object(d.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(d.curveBasis);switch(n.thickness){case"normal":_="edge-thickness-normal";break;case"thick":_="edge-thickness-thick";break;default:_=""}switch(n.pattern){case"solid":_+=" edge-pattern-solid";break;case"dotted":_+=" edge-pattern-dotted";break;case"dashed":_+=" edge-pattern-dashed"}var E=t.append("path").attr("d",w(k)).attr("id",n.id).attr("class"," "+_+(n.classes?" "+n.classes:"")).attr("style",n.style),T="";switch(_t().state.arrowMarkerAbsolute&&(T=(T=(T=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),c.info("arrowTypeStart",n.arrowTypeStart),c.info("arrowTypeEnd",n.arrowTypeEnd),n.arrowTypeStart){case"arrow_cross":E.attr("marker-start","url("+T+"#"+i+"-crossStart)");break;case"arrow_point":E.attr("marker-start","url("+T+"#"+i+"-pointStart)");break;case"arrow_barb":E.attr("marker-start","url("+T+"#"+i+"-barbStart)");break;case"arrow_circle":E.attr("marker-start","url("+T+"#"+i+"-circleStart)");break;case"aggregation":E.attr("marker-start","url("+T+"#"+i+"-aggregationStart)");break;case"extension":E.attr("marker-start","url("+T+"#"+i+"-extensionStart)");break;case"composition":E.attr("marker-start","url("+T+"#"+i+"-compositionStart)");break;case"dependency":E.attr("marker-start","url("+T+"#"+i+"-dependencyStart)")}switch(n.arrowTypeEnd){case"arrow_cross":E.attr("marker-end","url("+T+"#"+i+"-crossEnd)");break;case"arrow_point":E.attr("marker-end","url("+T+"#"+i+"-pointEnd)");break;case"arrow_barb":E.attr("marker-end","url("+T+"#"+i+"-barbEnd)");break;case"arrow_circle":E.attr("marker-end","url("+T+"#"+i+"-circleEnd)");break;case"aggregation":E.attr("marker-end","url("+T+"#"+i+"-aggregationEnd)");break;case"extension":E.attr("marker-end","url("+T+"#"+i+"-extensionEnd)");break;case"composition":E.attr("marker-end","url("+T+"#"+i+"-compositionEnd)");break;case"dependency":E.attr("marker-end","url("+T+"#"+i+"-dependencyEnd)")}var C={};return s&&(C.updatedPath=o),C.originalPath=n.points,C}(u,t,e,Me,r,n);!function(t,e){c.info("Moving label",t.id,t.label,Tn[t.id]);var n=e.updatedPath?e.updatedPath:e.originalPath;if(t.label){var r=Tn[t.id],i=t.x,a=t.y;if(n){var o=H.calcLabelPosition(n);c.info("Moving label from (",i,",",a,") to (",o.x,",",o.y,")")}r.attr("transform","translate("+i+", "+a+")")}if(t.startLabelLeft){var s=Cn[t.id].startLeft,u=t.x,l=t.y;if(n){var h=H.calcTerminalLabelPosition(0,"start_left",n);u=h.x,l=h.y}s.attr("transform","translate("+u+", "+l+")")}if(t.startLabelRight){var f=Cn[t.id].startRight,d=t.x,p=t.y;if(n){var g=H.calcTerminalLabelPosition(0,"start_right",n);d=g.x,p=g.y}f.attr("transform","translate("+d+", "+p+")")}if(t.endLabelLeft){var y=Cn[t.id].endLeft,v=t.x,m=t.y;if(n){var b=H.calcTerminalLabelPosition(0,"end_left",n);v=b.x,m=b.y}y.attr("transform","translate("+v+", "+m+")")}if(t.endLabelRight){var x=Cn[t.id].endRight,_=t.x,k=t.y;if(n){var w=H.calcTerminalLabelPosition(0,"end_right",n);_=w.x,k=w.y}x.attr("transform","translate("+_+", "+k+")")}}(e,i)})),o},On=function(t,e,n,r,i){Ee(t,n,r,i),_n={},Tn={},Cn={},En={},Oe={},De={},Me={},c.warn("Graph at first:",G.a.json.write(e)),Pe(e),c.warn("Graph after:",G.a.json.write(e)),Mn(t,e,r)},Dn={},Nn=function(t,e,n){var r=Object(d.select)('[id="'.concat(n,'"]'));Object.keys(t).forEach((function(n){var i=t[n],a="default";i.classes.length>0&&(a=i.classes.join(" "));var o,s=B(i.styles),u=void 0!==i.text?i.text:i.id;if(_t().flowchart.htmlLabels){var l={label:u.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"")}))};(o=ee()(r,l).node()).parentNode.removeChild(o)}else{var h=document.createElementNS("http://www.w3.org/2000/svg","text");h.setAttribute("style",s.labelStyle.replace("color:","fill:"));for(var f=u.split(x.lineBreakRegex),d=0;d=0;h--)i=l[h],c.info("Subgraph - ",i),Xt.addVertex(i.id,i.title,"group",void 0,i.classes);var f=Xt.getVertices(),p=Xt.getEdges();c.info(p);var g=0;for(g=l.length-1;g>=0;g--){i=l[g],Object(d.selectAll)("cluster").append("text");for(var y=0;y0)switch(e.valign){case"top":case"start":s=function(){return Math.round(e.y+e.textMargin)};break;case"middle":case"center":s=function(){return Math.round(e.y+(n+r+e.textMargin)/2)};break;case"bottom":case"end":s=function(){return Math.round(e.y+(n+r+2*e.textMargin)-e.textMargin)}}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="text-after-edge",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="text-before-edge",e.alignmentBaseline="middle"}for(var c=0;c0&&(r+=(l._groups||l)[0][0].getBBox().height,n=r),a.push(l)}return a},jn=function(t,e){var n,r,i,a,o,s=t.append("polygon");return s.attr("points",(n=e.x,r=e.y,i=e.width,a=e.height,n+","+r+" "+(n+i)+","+r+" "+(n+i)+","+(r+a-(o=7))+" "+(n+i-1.2*o)+","+(r+a)+" "+n+","+(r+a))),s.attr("class","labelBox"),e.y=e.y+e.height/2,In(t,e),s},Rn=-1,Yn=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},zn=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},Un=function(){function t(t,e,n,i,a,o,s){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("text-anchor","middle").text(t),s)}function e(t,e,n,i,a,o,s,c){for(var u=c.actorFontSize,l=c.actorFontFamily,h=c.actorFontWeight,f=t.split(x.lineBreakRegex),d=0;d2&&void 0!==arguments[2]?arguments[2]:{text:void 0,wrap:void 0},r=arguments.length>3?arguments[3]:void 0;if(r===ir.ACTIVE_END){var i=er(t.actor);if(i<1){var a=new Error("Trying to inactivate an inactive participant ("+t.actor+")");throw a.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},a}}return qn.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&rr()||!!n.wrap,type:r}),!0},rr=function(){return Qn},ir={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23},ar=function(t,e,n){var r={actor:t,placement:e,message:n.text,wrap:void 0===n.wrap&&rr()||!!n.wrap},i=[].concat(t,t);Xn.push(r),qn.push({from:i[0],to:i[1],message:n.text,wrap:void 0===n.wrap&&rr()||!!n.wrap,type:ir.NOTE,placement:e})},or=function(t){Zn=t.text,Jn=void 0===t.wrap&&rr()||!!t.wrap},sr={addActor:tr,addMessage:function(t,e,n,r){qn.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&rr()||!!n.wrap,answer:r})},addSignal:nr,autoWrap:rr,setWrap:function(t){Qn=t},enableSequenceNumbers:function(){Kn=!0},showSequenceNumbers:function(){return Kn},getMessages:function(){return qn},getActors:function(){return Gn},getActor:function(t){return Gn[t]},getActorKeys:function(){return Object.keys(Gn)},getTitle:function(){return Zn},parseDirective:function(t,e,n){Go.parseDirective(this,t,e,n)},getConfig:function(){return _t().sequence},getTitleWrapped:function(){return Jn},clear:function(){Gn={},qn=[]},parseMessage:function(t){var e=t.trim(),n={text:e.replace(/^[:]?(?:no)?wrap:/,"").trim(),wrap:null!==e.match(/^[:]?wrap:/)||null===e.match(/^[:]?nowrap:/)&&void 0};return c.debug("parseMessage:",n),n},LINETYPE:ir,ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},addNote:ar,setTitle:or,apply:function t(e){if(e instanceof Array)e.forEach((function(e){t(e)}));else switch(e.type){case"addActor":tr(e.actor,e.actor,e.description);break;case"activeStart":case"activeEnd":nr(e.actor,void 0,void 0,e.signalType);break;case"addNote":ar(e.actor,e.placement,e.text);break;case"addMessage":nr(e.from,e.to,e.msg,e.signalType);break;case"loopStart":nr(void 0,void 0,e.loopText,e.signalType);break;case"loopEnd":nr(void 0,void 0,void 0,e.signalType);break;case"rectStart":nr(void 0,void 0,e.color,e.signalType);break;case"rectEnd":nr(void 0,void 0,void 0,e.signalType);break;case"optStart":nr(void 0,void 0,e.optText,e.signalType);break;case"optEnd":nr(void 0,void 0,void 0,e.signalType);break;case"altStart":case"else":nr(void 0,void 0,e.altText,e.signalType);break;case"altEnd":nr(void 0,void 0,void 0,e.signalType);break;case"setTitle":or(e.text);break;case"parStart":case"and":nr(void 0,void 0,e.parText,e.signalType);break;case"parEnd":nr(void 0,void 0,void 0,e.signalType)}}};Wn.parser.yy=sr;var cr={},ur={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map((function(t){return t.height||0})))+(0===this.loops.length?0:this.loops.map((function(t){return t.height||0})).reduce((function(t,e){return t+e})))+(0===this.messages.length?0:this.messages.map((function(t){return t.height||0})).reduce((function(t,e){return t+e})))+(0===this.notes.length?0:this.notes.map((function(t){return t.height||0})).reduce((function(t,e){return t+e})))},clear:function(){this.actors=[],this.loops=[],this.messages=[],this.notes=[]},addActor:function(t){this.actors.push(t)},addLoop:function(t){this.loops.push(t)},addMessage:function(t){this.messages.push(t)},addNote:function(t){this.notes.push(t)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,pr(Wn.parser.yy.getConfig())},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){var i=this,a=0;function o(o){return function(s){a++;var c=i.sequenceItems.length-a+1;i.updateVal(s,"starty",e-c*cr.boxMargin,Math.min),i.updateVal(s,"stopy",r+c*cr.boxMargin,Math.max),i.updateVal(ur.data,"startx",t-c*cr.boxMargin,Math.min),i.updateVal(ur.data,"stopx",n+c*cr.boxMargin,Math.max),"activation"!==o&&(i.updateVal(s,"startx",t-c*cr.boxMargin,Math.min),i.updateVal(s,"stopx",n+c*cr.boxMargin,Math.max),i.updateVal(ur.data,"starty",e-c*cr.boxMargin,Math.min),i.updateVal(ur.data,"stopy",r+c*cr.boxMargin,Math.max))}}this.sequenceItems.forEach(o()),this.activations.forEach(o("activation"))},insert:function(t,e,n,r){var i=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,r),s=Math.max(e,r);this.updateVal(ur.data,"startx",i,Math.min),this.updateVal(ur.data,"starty",o,Math.min),this.updateVal(ur.data,"stopx",a,Math.max),this.updateVal(ur.data,"stopy",s,Math.max),this.updateBounds(i,o,a,s)},newActivation:function(t,e,n){var r=n[t.from.actor],i=gr(t.from.actor).length||0,a=r.x+r.width/2+(i-1)*cr.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+cr.activationWidth,stopy:void 0,actor:t.from.actor,anchored:$n.anchorElement(e)})},endActivation:function(t){var e=this.activations.map((function(t){return t.actor})).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},createLoop:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{message:void 0,wrap:!1,width:void 0},e=arguments.length>1?arguments[1]:void 0;return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},newLoop:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{message:void 0,wrap:!1,width:void 0},e=arguments.length>1?arguments[1]:void 0;this.sequenceItems.push(this.createLoop(t,e))},endLoop:function(){return this.sequenceItems.pop()},addSectionToLoop:function(t){var e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:ur.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},lr=function(t){return{fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}},hr=function(t){return{fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}},fr=function(t){return{fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}},dr=function(t,e,n,r){for(var i=0,a=0,o=0;o0&&o.forEach((function(r){if(n=r,i.startx===i.stopx){var a=e[t.from],o=e[t.to];n.from=Math.min(a.x-i.width/2,a.x-a.width/2,n.from),n.to=Math.max(o.x+i.width/2,o.x+a.width/2,n.to),n.width=Math.max(n.width,Math.abs(n.to-n.from))-cr.labelBoxWidth}else n.from=Math.min(i.startx,n.from),n.to=Math.max(i.stopx,n.to),n.width=Math.max(n.width,i.width)-cr.labelBoxWidth})))})),ur.activations=[],c.debug("Loop type widths:",a),a},_r={bounds:ur,drawActors:dr,setConf:pr,draw:function(t,e){cr=_t().sequence,Wn.parser.yy.clear(),Wn.parser.yy.setWrap(cr.wrap),Wn.parser.parse(t+"\n"),ur.init(),c.debug("C:".concat(JSON.stringify(cr,null,2)));var n=Object(d.select)('[id="'.concat(e,'"]')),r=Wn.parser.yy.getActors(),i=Wn.parser.yy.getActorKeys(),a=Wn.parser.yy.getMessages(),o=Wn.parser.yy.getTitle(),s=mr(r,a);cr.height=br(r,s),dr(n,r,i,0);var u=xr(a,r,s);$n.insertArrowHead(n),$n.insertArrowCrossHead(n),$n.insertSequenceNumber(n);var l=1;a.forEach((function(t){var e,i,a;switch(t.type){case Wn.parser.yy.LINETYPE.NOTE:i=t.noteModel,function(t,e){ur.bumpVerticalPos(cr.boxMargin),e.height=cr.boxMargin,e.starty=ur.getVerticalPos();var n=$n.getNoteRect();n.x=e.startx,n.y=e.starty,n.width=e.width||cr.width,n.class="note";var r=t.append("g"),i=$n.drawRect(r,n),a=$n.getTextObj();a.x=e.startx,a.y=e.starty,a.width=n.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=cr.noteFontFamily,a.fontSize=cr.noteFontSize,a.fontWeight=cr.noteFontWeight,a.anchor=cr.noteAlign,a.textMargin=cr.noteMargin,a.valign=cr.noteAlign;var o=In(r,a),s=Math.round(o.map((function(t){return(t._groups||t)[0][0].getBBox().height})).reduce((function(t,e){return t+e})));i.attr("height",s+2*cr.noteMargin),e.height+=s+2*cr.noteMargin,ur.bumpVerticalPos(s+2*cr.noteMargin),e.stopy=e.starty+s+2*cr.noteMargin,e.stopx=e.startx+n.width,ur.insert(e.startx,e.starty,e.stopx,e.stopy),ur.models.addNote(e)}(n,i);break;case Wn.parser.yy.LINETYPE.ACTIVE_START:ur.newActivation(t,n,r);break;case Wn.parser.yy.LINETYPE.ACTIVE_END:!function(t,e){var r=ur.endActivation(t);r.starty+18>e&&(r.starty=e-6,e+=12),$n.drawActivation(n,r,e,cr,gr(t.from.actor).length),ur.insert(r.startx,e-10,r.stopx,e)}(t,ur.getVerticalPos());break;case Wn.parser.yy.LINETYPE.LOOP_START:vr(u,t,cr.boxMargin,cr.boxMargin+cr.boxTextMargin,(function(t){return ur.newLoop(t)}));break;case Wn.parser.yy.LINETYPE.LOOP_END:e=ur.endLoop(),$n.drawLoop(n,e,"loop",cr),ur.bumpVerticalPos(e.stopy-ur.getVerticalPos()),ur.models.addLoop(e);break;case Wn.parser.yy.LINETYPE.RECT_START:vr(u,t,cr.boxMargin,cr.boxMargin,(function(t){return ur.newLoop(void 0,t.message)}));break;case Wn.parser.yy.LINETYPE.RECT_END:e=ur.endLoop(),$n.drawBackgroundRect(n,e),ur.models.addLoop(e),ur.bumpVerticalPos(e.stopy-ur.getVerticalPos());break;case Wn.parser.yy.LINETYPE.OPT_START:vr(u,t,cr.boxMargin,cr.boxMargin+cr.boxTextMargin,(function(t){return ur.newLoop(t)}));break;case Wn.parser.yy.LINETYPE.OPT_END:e=ur.endLoop(),$n.drawLoop(n,e,"opt",cr),ur.bumpVerticalPos(e.stopy-ur.getVerticalPos()),ur.models.addLoop(e);break;case Wn.parser.yy.LINETYPE.ALT_START:vr(u,t,cr.boxMargin,cr.boxMargin+cr.boxTextMargin,(function(t){return ur.newLoop(t)}));break;case Wn.parser.yy.LINETYPE.ALT_ELSE:vr(u,t,cr.boxMargin+cr.boxTextMargin,cr.boxMargin,(function(t){return ur.addSectionToLoop(t)}));break;case Wn.parser.yy.LINETYPE.ALT_END:e=ur.endLoop(),$n.drawLoop(n,e,"alt",cr),ur.bumpVerticalPos(e.stopy-ur.getVerticalPos()),ur.models.addLoop(e);break;case Wn.parser.yy.LINETYPE.PAR_START:vr(u,t,cr.boxMargin,cr.boxMargin+cr.boxTextMargin,(function(t){return ur.newLoop(t)}));break;case Wn.parser.yy.LINETYPE.PAR_AND:vr(u,t,cr.boxMargin+cr.boxTextMargin,cr.boxMargin,(function(t){return ur.addSectionToLoop(t)}));break;case Wn.parser.yy.LINETYPE.PAR_END:e=ur.endLoop(),$n.drawLoop(n,e,"par",cr),ur.bumpVerticalPos(e.stopy-ur.getVerticalPos()),ur.models.addLoop(e);break;default:try{(a=t.msgModel).starty=ur.getVerticalPos(),a.sequenceIndex=l,function(t,e){ur.bumpVerticalPos(10);var n=e.startx,r=e.stopx,i=e.starty,a=e.message,o=e.type,s=e.sequenceIndex,c=x.splitBreaks(a).length,u=H.calculateTextDimensions(a,lr(cr)),l=u.height/c;e.height+=l,ur.bumpVerticalPos(l);var h=$n.getTextObj();h.x=n,h.y=i+10,h.width=r-n,h.class="messageText",h.dy="1em",h.text=a,h.fontFamily=cr.messageFontFamily,h.fontSize=cr.messageFontSize,h.fontWeight=cr.messageFontWeight,h.anchor=cr.messageAlign,h.valign=cr.messageAlign,h.textMargin=cr.wrapPadding,h.tspan=!1,In(t,h);var f,d,p=u.height-10,g=u.width;if(n===r){d=ur.getVerticalPos()+p,cr.rightAngles?f=t.append("path").attr("d","M ".concat(n,",").concat(d," H ").concat(n+Math.max(cr.width/2,g/2)," V ").concat(d+25," H ").concat(n)):(p+=cr.boxMargin,d=ur.getVerticalPos()+p,f=t.append("path").attr("d","M "+n+","+d+" C "+(n+60)+","+(d-10)+" "+(n+60)+","+(d+30)+" "+n+","+(d+20))),p+=30;var y=Math.max(g/2,cr.width/2);ur.insert(n-y,ur.getVerticalPos()-10+p,r+y,ur.getVerticalPos()+30+p)}else p+=cr.boxMargin,d=ur.getVerticalPos()+p,(f=t.append("line")).attr("x1",n),f.attr("y1",d),f.attr("x2",r),f.attr("y2",d),ur.insert(n,d-10,r,d);o===Wn.parser.yy.LINETYPE.DOTTED||o===Wn.parser.yy.LINETYPE.DOTTED_CROSS||o===Wn.parser.yy.LINETYPE.DOTTED_OPEN?(f.style("stroke-dasharray","3, 3"),f.attr("class","messageLine1")):f.attr("class","messageLine0");var v="";cr.arrowMarkerAbsolute&&(v=(v=(v=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),f.attr("stroke-width",2),f.attr("stroke","none"),f.style("fill","none"),o!==Wn.parser.yy.LINETYPE.SOLID&&o!==Wn.parser.yy.LINETYPE.DOTTED||f.attr("marker-end","url("+v+"#arrowhead)"),o!==Wn.parser.yy.LINETYPE.SOLID_CROSS&&o!==Wn.parser.yy.LINETYPE.DOTTED_CROSS||f.attr("marker-end","url("+v+"#crosshead)"),(sr.showSequenceNumbers()||cr.showSequenceNumbers)&&(f.attr("marker-start","url("+v+"#sequencenumber)"),t.append("text").attr("x",n).attr("y",d+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("textLength","16px").attr("class","sequenceNumber").text(s)),ur.bumpVerticalPos(p),e.height+=p,e.stopy=e.starty+e.height,ur.insert(e.fromBounds,e.starty,e.toBounds,e.stopy)}(n,a),ur.models.addMessage(a)}catch(t){c.error("error while drawing message",t)}}[Wn.parser.yy.LINETYPE.SOLID_OPEN,Wn.parser.yy.LINETYPE.DOTTED_OPEN,Wn.parser.yy.LINETYPE.SOLID,Wn.parser.yy.LINETYPE.DOTTED,Wn.parser.yy.LINETYPE.SOLID_CROSS,Wn.parser.yy.LINETYPE.DOTTED_CROSS].includes(t.type)&&l++})),cr.mirrorActors&&(ur.bumpVerticalPos(2*cr.boxMargin),dr(n,r,i,ur.getVerticalPos()));var h=ur.getBounds().bounds;c.debug("For line height fix Querying: #"+e+" .actor-line"),Object(d.selectAll)("#"+e+" .actor-line").attr("y2",h.stopy);var f=h.stopy-h.starty+2*cr.diagramMarginY;cr.mirrorActors&&(f=f-cr.boxMargin+cr.bottomMarginAdj);var p=h.stopx-h.startx+2*cr.diagramMarginX;o&&n.append("text").text(o).attr("x",(h.stopx-h.startx)/2-2*cr.diagramMarginX).attr("y",-25),W(n,f,p,cr.useMaxWidth);var g=o?40:0;n.attr("viewBox",h.startx-cr.diagramMarginX+" -"+(cr.diagramMarginY+g)+" "+p+" "+(f+g)),c.debug("models:",ur.models)}},kr=n(27),wr=n.n(kr);function Er(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e=6&&n.indexOf("weekends")>=0||(n.indexOf(t.format("dddd").toLowerCase())>=0||n.indexOf(t.format(e.trim()))>=0)},Yr=function(t,e,n){if(n.length&&!t.manualEndTime){var r=o()(t.startTime,e,!0);r.add(1,"d");var i=o()(t.endTime,e,!0),a=zr(r,i,e,n);t.endTime=i.toDate(),t.renderEndTime=a}},zr=function(t,e,n,r){for(var i=!1,a=null;t<=e;)i||(a=e.toDate()),(i=Rr(t,n,r))&&e.add(1,"d"),t.add(1,"d");return a},Ur=function(t,e,n){n=n.trim();var r=/^after\s+([\d\w- ]+)/.exec(n.trim());if(null!==r){var i=null;if(r[1].split(" ").forEach((function(t){var e=Xr(t);void 0!==e&&(i?e.endTime>i.endTime&&(i=e):i=e)})),i)return i.endTime;var a=new Date;return a.setHours(0,0,0,0),a}var s=o()(n,e.trim(),!0);return s.isValid()?s.toDate():(c.debug("Invalid date:"+n),c.debug("With date format:"+e.trim()),new Date)},$r=function(t,e){if(null!==t)switch(t[2]){case"s":e.add(t[1],"seconds");break;case"m":e.add(t[1],"minutes");break;case"h":e.add(t[1],"hours");break;case"d":e.add(t[1],"days");break;case"w":e.add(t[1],"weeks")}return e.toDate()},Wr=function(t,e,n,r){r=r||!1,n=n.trim();var i=o()(n,e.trim(),!0);return i.isValid()?(r&&i.add(1,"d"),i.toDate()):$r(/^([\d]+)([wdhms])/.exec(n.trim()),o()(t))},Hr=0,Vr=function(t){return void 0===t?"task"+(Hr+=1):t},Gr=[],qr={},Xr=function(t){var e=qr[t];return Gr[e]},Zr=function(){for(var t=function(t){var e=Gr[t],n="";switch(Gr[t].raw.startTime.type){case"prevTaskEnd":var r=Xr(e.prevTaskId);e.startTime=r.endTime;break;case"getStartDate":(n=Ur(0,Ar,Gr[t].raw.startTime.startData))&&(Gr[t].startTime=n)}return Gr[t].startTime&&(Gr[t].endTime=Wr(Gr[t].startTime,Ar,Gr[t].raw.endTime.data,Ir),Gr[t].endTime&&(Gr[t].processed=!0,Gr[t].manualEndTime=o()(Gr[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),Yr(Gr[t],Ar,Or))),Gr[t].processed},e=!0,n=0;nr?i=1:n0&&(e=t.classes.join(" "));for(var n=0,r=0;rn-e?n+a+1.5*ni.leftPadding>u?e+r-5:n+r+5:(n-e)/2+e+r})).attr("y",(function(t,r){return t.order*e+ni.barHeight/2+(ni.fontSize/2-2)+n})).attr("text-height",i).attr("class",(function(t){var e=o(t.startTime),n=o(t.endTime);t.milestone&&(n=e+i);var r=this.getBBox().width,a="";t.classes.length>0&&(a=t.classes.join(" "));for(var c=0,l=0;ln-e?n+r+1.5*ni.leftPadding>u?a+" taskTextOutsideLeft taskTextOutside"+c+" "+h:a+" taskTextOutsideRight taskTextOutside"+c+" "+h+" width-"+r:a+" taskText taskText"+c+" "+h+" width-"+r}))}(t,i,c,h,r,0,e),function(t,e){for(var n=[],r=0,i=0;i0&&a.setAttribute("dy","1em"),a.textContent=e[i],r.appendChild(a)}return r})).attr("x",10).attr("y",(function(i,a){if(!(a>0))return i[1]*t/2+e;for(var o=0;o "+t.w+": "+JSON.stringify(i.edge(t))),mn(r,i.edge(t),i.edge(t).relation,ci))}));var h=r.node().getBBox(),f=h.width+40,p=h.height+40;W(r,p,f,ci.useMaxWidth);var g="".concat(h.x-20," ").concat(h.y-20," ").concat(f," ").concat(p);c.debug("viewBox ".concat(g)),r.attr("viewBox",g)};ai.parser.yy=cn;var fi={dividerMargin:10,padding:5,textHeight:10},di=function(t){Object.keys(t).forEach((function(e){fi[e]=t[e]}))},pi=function(t,e){c.info("Drawing class"),cn.clear(),ai.parser.parse(t);var n=_t().flowchart;c.info("config:",n);var r=n.nodeSpacing||50,i=n.rankSpacing||50,a=new G.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:"TD",nodesep:r,ranksep:i,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),o=cn.getClasses(),s=cn.getRelations();c.info(s),function(t,e){var n=Object.keys(t);c.info("keys:",n),c.info(t),n.forEach((function(n){var r=t[n],i="";r.cssClasses.length>0&&(i=i+" "+r.cssClasses.join(" "));var a={labelStyle:""},o=void 0!==r.text?r.text:r.id,s="";switch(r.type){case"class":s="class_box";break;default:s="class_box"}e.setNode(r.id,{labelStyle:a.labelStyle,shape:s,labelText:o,classData:r,rx:0,ry:0,class:i,style:a.style,id:r.id,domId:r.domId,haveCallback:r.haveCallback,link:r.link,width:"group"===r.type?500:void 0,type:r.type,padding:_t().flowchart.padding}),c.info("setNode",{labelStyle:a.labelStyle,shape:s,labelText:o,rx:0,ry:0,class:i,style:a.style,id:r.id,width:"group"===r.type?500:void 0,type:r.type,padding:_t().flowchart.padding})}))}(o,a),function(t,e){var n=0;t.forEach((function(r){n++;var i={classes:"relation"};i.pattern=1==r.relation.lineType?"dashed":"solid",i.id="id"+n,"arrow_open"===r.type?i.arrowhead="none":i.arrowhead="normal",c.info(i,r),i.startLabelRight="none"===r.relationTitle1?"":r.relationTitle1,i.endLabelLeft="none"===r.relationTitle2?"":r.relationTitle2,i.arrowTypeStart=gi(r.relation.type1),i.arrowTypeEnd=gi(r.relation.type2);var a="",o="";if(void 0!==r.style){var s=B(r.style);a=s.style,o=s.labelStyle}else a="fill:none";i.style=a,i.labelStyle=o,void 0!==r.interpolate?i.curve=D(r.interpolate,d.curveLinear):void 0!==t.defaultInterpolate?i.curve=D(t.defaultInterpolate,d.curveLinear):i.curve=D(fi.curve,d.curveLinear),r.text=r.title,void 0===r.text?void 0!==r.style&&(i.arrowheadStyle="fill: #333"):(i.arrowheadStyle="fill: #333",i.labelpos="c",_t().flowchart.htmlLabels,i.labelType="text",i.label=r.text.replace(x.lineBreakRegex,"\n"),void 0===r.style&&(i.style=i.style||"stroke: #333; stroke-width: 1.5px;fill:none"),i.labelStyle=i.labelStyle.replace("color:","fill:")),e.setEdge(r.id1,r.id2,i,n)}))}(s,a);var u=Object(d.select)('[id="'.concat(e,'"]'));u.attr("xmlns:xlink","http://www.w3.org/1999/xlink");var l=Object(d.select)("#"+e+" g");On(l,a,["aggregation","extension","composition","dependency"],"classDiagram",e);var h=u.node().getBBox(),f=h.width+16,p=h.height+16;if(c.debug("new ViewBox 0 0 ".concat(f," ").concat(p),"translate(".concat(8-a._label.marginx,", ").concat(8-a._label.marginy,")")),W(u,p,f,n.useMaxWidth),u.attr("viewBox","0 0 ".concat(f," ").concat(p)),u.select("g").attr("transform","translate(".concat(8-a._label.marginx,", ").concat(8-h.y,")")),!n.htmlLabels)for(var g=document.querySelectorAll('[id="'+e+'"] .edgeLabel .label'),y=0;y0&&o.length>0){var c={stmt:"state",id:F(),type:"divider",doc:mi(o)};i.push(mi(c)),n.doc=i}n.doc.forEach((function(e){return t(n,e,!0)}))}}({id:"root"},{id:"root",doc:bi},!0),{id:"root",doc:bi}},extract:function(t){var e;e=t.doc?t.doc:t,c.info(e),Ei(),c.info("Extract",e),e.forEach((function(t){"state"===t.stmt&&wi(t.id,t.type,t.doc,t.description,t.note),"relation"===t.stmt&&Ti(t.state1.id,t.state2.id,t.description)}))},trimColon:function(t){return t&&":"===t[0]?t.substr(1).trim():t.trim()}},Oi=n(22),Di=n.n(Oi),Ni={},Bi=function(t,e){Ni[t]=e},Li=function(t,e){var n=t.append("text").attr("x",2*_t().state.padding).attr("y",_t().state.textHeight+1.3*_t().state.padding).attr("font-size",_t().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),r=n.height,i=t.append("text").attr("x",_t().state.padding).attr("y",r+.4*_t().state.padding+_t().state.dividerMargin+_t().state.textHeight).attr("class","state-description"),a=!0,o=!0;e.descriptions.forEach((function(t){a||(!function(t,e,n){var r=t.append("tspan").attr("x",2*_t().state.padding).text(e);n||r.attr("dy",_t().state.textHeight)}(i,t,o),o=!1),a=!1}));var s=t.append("line").attr("x1",_t().state.padding).attr("y1",_t().state.padding+r+_t().state.dividerMargin/2).attr("y2",_t().state.padding+r+_t().state.dividerMargin/2).attr("class","descr-divider"),c=i.node().getBBox(),u=Math.max(c.width,n.width);return s.attr("x2",u+3*_t().state.padding),t.insert("rect",":first-child").attr("x",_t().state.padding).attr("y",_t().state.padding).attr("width",u+2*_t().state.padding).attr("height",c.height+r+2*_t().state.padding).attr("rx",_t().state.radius),t},Fi=function(t,e,n){var r,i=_t().state.padding,a=2*_t().state.padding,o=t.node().getBBox(),s=o.width,c=o.x,u=t.append("text").attr("x",0).attr("y",_t().state.titleShift).attr("font-size",_t().state.fontSize).attr("class","state-title").text(e.id),l=u.node().getBBox().width+a,h=Math.max(l,s);h===s&&(h+=a);var f=t.node().getBBox();e.doc,r=c-i,l>s&&(r=(s-h)/2+i),Math.abs(c-f.x)s&&(r=c-(l-s)/2);var d=1-_t().state.textHeight;return t.insert("rect",":first-child").attr("x",r).attr("y",d).attr("class",n?"alt-composit":"composit").attr("width",h).attr("height",f.height+_t().state.textHeight+_t().state.titleShift+1).attr("rx","0"),u.attr("x",r+i),l<=s&&u.attr("x",c+(h-a)/2-l/2+i),t.insert("rect",":first-child").attr("x",r).attr("y",_t().state.titleShift-_t().state.textHeight-_t().state.padding).attr("width",h).attr("height",3*_t().state.textHeight).attr("rx",_t().state.radius),t.insert("rect",":first-child").attr("x",r).attr("y",_t().state.titleShift-_t().state.textHeight-_t().state.padding).attr("width",h).attr("height",f.height+3+2*_t().state.textHeight).attr("rx",_t().state.radius),t},Pi=function(t,e){e.attr("class","state-note");var n=e.append("rect").attr("x",0).attr("y",_t().state.padding),r=function(t,e,n,r){var i=0,a=r.append("text");a.style("text-anchor","start"),a.attr("class","noteText");var o=t.replace(/\r\n/g,"
    "),s=(o=o.replace(/\n/g,"
    ")).split(x.lineBreakRegex),c=1.25*_t().state.noteMargin,u=!0,l=!1,h=void 0;try{for(var f,d=s[Symbol.iterator]();!(u=(f=d.next()).done);u=!0){var p=f.value.trim();if(p.length>0){var g=a.append("tspan");if(g.text(p),0===c)c+=g.node().getBBox().height;i+=c,g.attr("x",e+_t().state.noteMargin),g.attr("y",n+i+1.25*_t().state.noteMargin)}}}catch(t){l=!0,h=t}finally{try{u||null==d.return||d.return()}finally{if(l)throw h}}return{textWidth:a.node().getBBox().width,textHeight:i}}(t,0,0,e.append("g")),i=r.textWidth,a=r.textHeight;return n.attr("height",a+2*_t().state.noteMargin),n.attr("width",i+2*_t().state.noteMargin),n},Ii=function(t,e){var n=e.id,r={id:n,label:e.id,width:0,height:0},i=t.append("g").attr("id",n).attr("class","stateGroup");"start"===e.type&&function(t){t.append("circle").attr("class","start-state").attr("r",_t().state.sizeUnit).attr("cx",_t().state.padding+_t().state.sizeUnit).attr("cy",_t().state.padding+_t().state.sizeUnit)}(i),"end"===e.type&&function(t){t.append("circle").attr("class","end-state-outer").attr("r",_t().state.sizeUnit+_t().state.miniPadding).attr("cx",_t().state.padding+_t().state.sizeUnit+_t().state.miniPadding).attr("cy",_t().state.padding+_t().state.sizeUnit+_t().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",_t().state.sizeUnit).attr("cx",_t().state.padding+_t().state.sizeUnit+2).attr("cy",_t().state.padding+_t().state.sizeUnit+2)}(i),"fork"!==e.type&&"join"!==e.type||function(t,e){var n=_t().state.forkWidth,r=_t().state.forkHeight;if(e.parentId){var i=n;n=r,r=i}t.append("rect").style("stroke","black").style("fill","black").attr("width",n).attr("height",r).attr("x",_t().state.padding).attr("y",_t().state.padding)}(i,e),"note"===e.type&&Pi(e.note.text,i),"divider"===e.type&&function(t){t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",_t().state.textHeight).attr("class","divider").attr("x2",2*_t().state.textHeight).attr("y1",0).attr("y2",0)}(i),"default"===e.type&&0===e.descriptions.length&&function(t,e){var n=t.append("text").attr("x",2*_t().state.padding).attr("y",_t().state.textHeight+2*_t().state.padding).attr("font-size",_t().state.fontSize).attr("class","state-title").text(e.id),r=n.node().getBBox();t.insert("rect",":first-child").attr("x",_t().state.padding).attr("y",_t().state.padding).attr("width",r.width+2*_t().state.padding).attr("height",r.height+2*_t().state.padding).attr("rx",_t().state.radius)}(i,e),"default"===e.type&&e.descriptions.length>0&&Li(i,e);var a=i.node().getBBox();return r.width=a.width+2*_t().state.padding,r.height=a.height+2*_t().state.padding,Bi(n,r),r},ji=0;Oi.parser.yy=Mi;var Ri={},Yi=function t(e,n,r,i){var a,o=new G.a.Graph({compound:!0,multigraph:!0}),s=!0;for(a=0;a "+t.w+": "+JSON.stringify(o.edge(t))),function(t,e,n){e.points=e.points.filter((function(t){return!Number.isNaN(t.y)}));var r=e.points,i=Object(d.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(d.curveBasis),a=t.append("path").attr("d",i(r)).attr("id","edge"+ji).attr("class","transition"),o="";if(_t().state.arrowMarkerAbsolute&&(o=(o=(o=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),a.attr("marker-end","url("+o+"#"+function(t){switch(t){case Mi.relationType.AGGREGATION:return"aggregation";case Mi.relationType.EXTENSION:return"extension";case Mi.relationType.COMPOSITION:return"composition";case Mi.relationType.DEPENDENCY:return"dependency"}}(Mi.relationType.DEPENDENCY)+"End)"),void 0!==n.title){for(var s=t.append("g").attr("class","stateLabel"),u=H.calcLabelPosition(e.points),l=u.x,h=u.y,f=x.getRows(n.title),p=0,g=[],y=0,v=0,m=0;m<=f.length;m++){var b=s.append("text").attr("text-anchor","middle").text(f[m]).attr("x",l).attr("y",h+p),_=b.node().getBBox();if(y=Math.max(y,_.width),v=Math.min(v,_.x),c.info(_.x,l,h+p),0===p){var k=b.node().getBBox();p=k.height,c.info("Title height",p,h)}g.push(b)}var w=p*f.length;if(f.length>1){var E=(f.length-1)*p*.5;g.forEach((function(t,e){return t.attr("y",h+e*p-E)})),w=p*f.length}var T=s.node().getBBox();s.insert("rect",":first-child").attr("class","box").attr("x",l-y/2-_t().state.padding/2).attr("y",h-w/2-_t().state.padding/2-3.5).attr("width",y+_t().state.padding).attr("height",w+_t().state.padding),c.info(T)}ji++}(n,o.edge(t),o.edge(t).relation))})),w=k.getBBox();var E={id:r||"root",label:r||"root",width:0,height:0};return E.width=w.width+2*vi.padding,E.height=w.height+2*vi.padding,c.debug("Doc rendered",E,o),E},zi=function(){},Ui=function(t,e){vi=_t().state,Oi.parser.yy.clear(),Oi.parser.parse(t),c.debug("Rendering diagram "+t);var n=Object(d.select)("[id='".concat(e,"']"));n.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z"),new G.a.Graph({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel((function(){return{}}));var r=Mi.getRootDoc();Yi(r,n,void 0,!1);var i=vi.padding,a=n.node().getBBox(),o=a.width+2*i,s=a.height+2*i;W(n,s,1.75*o,vi.useMaxWidth),n.attr("viewBox","".concat(a.x-vi.padding," ").concat(a.y-vi.padding," ")+o+" "+s)},$i={},Wi={},Hi=function(t,e,n,r){if("root"!==n.id){var i="rect";!0===n.start&&(i="start"),!1===n.start&&(i="end"),"default"!==n.type&&(i=n.type),Wi[n.id]||(Wi[n.id]={id:n.id,shape:i,description:n.id,classes:"statediagram-state"}),n.description&&(Array.isArray(Wi[n.id].description)?(Wi[n.id].shape="rectWithTitle",Wi[n.id].description.push(n.description)):Wi[n.id].description.length>0?(Wi[n.id].shape="rectWithTitle",Wi[n.id].description===n.id?Wi[n.id].description=[n.description]:Wi[n.id].description=[Wi[n.id].description,n.description]):(Wi[n.id].shape="rect",Wi[n.id].description=n.description)),!Wi[n.id].type&&n.doc&&(c.info("Setting cluser for ",n.id),Wi[n.id].type="group",Wi[n.id].shape="divider"===n.type?"divider":"roundedWithTitle",Wi[n.id].classes=Wi[n.id].classes+" "+(r?"statediagram-cluster statediagram-cluster-alt":"statediagram-cluster"));var a={labelStyle:"",shape:Wi[n.id].shape,labelText:Wi[n.id].description,classes:Wi[n.id].classes,style:"",id:n.id,domId:"state-"+n.id+"-"+Vi,type:Wi[n.id].type,padding:15};if(n.note){var o={labelStyle:"",shape:"note",labelText:n.note.text,classes:"statediagram-note",style:"",id:n.id+"----note",domId:"state-"+n.id+"----note-"+Vi,type:Wi[n.id].type,padding:15},s={labelStyle:"",shape:"noteGroup",labelText:n.note.text,classes:Wi[n.id].classes,style:"",id:n.id+"----parent",domId:"state-"+n.id+"----parent-"+Vi,type:"group",padding:0};Vi++,t.setNode(n.id+"----parent",s),t.setNode(o.id,o),t.setNode(n.id,a),t.setParent(n.id,n.id+"----parent"),t.setParent(o.id,n.id+"----parent");var u=n.id,l=o.id;"left of"===n.note.position&&(u=o.id,l=n.id),t.setEdge(u,l,{arrowhead:"none",arrowType:"",style:"fill:none",labelStyle:"",classes:"transition note-edge",arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text",thickness:"normal"})}else t.setNode(n.id,a)}e&&"root"!==e.id&&(c.info("Setting node ",n.id," to be child of its parent ",e.id),t.setParent(n.id,e.id)),n.doc&&(c.info("Adding nodes children "),Gi(t,n,n.doc,!r))},Vi=0,Gi=function(t,e,n,r){Vi=0,c.trace("items",n),n.forEach((function(n){if("state"===n.stmt||"default"===n.stmt)Hi(t,e,n,r);else if("relation"===n.stmt){Hi(t,e,n.state1,r),Hi(t,e,n.state2,r);var i={id:"edge"+Vi,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:"fill:none",labelStyle:"",label:n.description,arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text",thickness:"normal",classes:"transition"},a=n.state1.id,o=n.state2.id;t.setEdge(a,o,i,Vi),Vi++}}))},qi=function(t){for(var e=Object.keys(t),n=0;ne.seq?t:e}),t[0]),n="";t.forEach((function(t){n+=t===e?"\t*":"\t|"}));var r,i,a,o=[n,e.id,e.seq];for(var s in Ki)Ki[s]===e.id&&o.push(s);if(c.debug(o.join(" ")),Array.isArray(e.parent)){var u=Zi[e.parent[0]];aa(t,e,u),t.push(Zi[e.parent[1]])}else{if(null==e.parent)return;var l=Zi[e.parent];aa(t,e,l)}r=t,i=function(t){return t.id},a=Object.create(null),oa(t=r.reduce((function(t,e){var n=i(e);return a[n]||(a[n]=!0,t.push(e)),t}),[]))}var sa,ca=function(){var t=Object.keys(Zi).map((function(t){return Zi[t]}));return t.forEach((function(t){c.debug(t.id)})),t.sort((function(t,e){return e.seq-t.seq})),t},ua={setDirection:function(t){ta=t},setOptions:function(t){c.debug("options str",t),t=(t=t&&t.trim())||"{}";try{ia=JSON.parse(t)}catch(t){c.error("error while parsing gitGraph options",t.message)}},getOptions:function(){return ia},commit:function(t){var e={id:na(),message:t,seq:ea++,parent:null==Ji?null:Ji.id};Ji=e,Zi[e.id]=e,Ki[Qi]=e.id,c.debug("in pushCommit "+e.id)},branch:function(t){Ki[t]=null!=Ji?Ji.id:null,c.debug("in createBranch")},merge:function(t){var e=Zi[Ki[Qi]],n=Zi[Ki[t]];if(function(t,e){return t.seq>e.seq&&ra(e,t)}(e,n))c.debug("Already merged");else{if(ra(e,n))Ki[Qi]=Ki[t],Ji=Zi[Ki[Qi]];else{var r={id:na(),message:"merged branch "+t+" into "+Qi,seq:ea++,parent:[null==Ji?null:Ji.id,Ki[t]]};Ji=r,Zi[r.id]=r,Ki[Qi]=r.id}c.debug(Ki),c.debug("in mergeBranch")}},checkout:function(t){c.debug("in checkout");var e=Ki[Qi=t];Ji=Zi[e]},reset:function(t){c.debug("in reset",t);var e=t.split(":")[0],n=parseInt(t.split(":")[1]),r="HEAD"===e?Ji:Zi[Ki[e]];for(c.debug(r,n);n>0;)if(n--,!(r=Zi[r.parent])){var i="Critical error - unique parent commit not found during reset";throw c.error(i),i}Ji=r,Ki[Qi]=r.id},prettyPrint:function(){c.debug(Zi),oa([ca()[0]])},clear:function(){Zi={},Ki={master:Ji=null},Qi="master",ea=0},getBranchesAsObjArray:function(){var t=[];for(var e in Ki)t.push({name:e,commit:Zi[Ki[e]]});return t},getBranches:function(){return Ki},getCommits:function(){return Zi},getCommitsArray:ca,getCurrentBranch:function(){return Qi},getDirection:function(){return ta},getHead:function(){return Ji}},la=n(71),ha=n.n(la),fa={},da={nodeSpacing:150,nodeFillColor:"yellow",nodeStrokeWidth:2,nodeStrokeColor:"grey",lineStrokeWidth:4,branchOffset:50,lineColor:"grey",leftMargin:50,branchColors:["#442f74","#983351","#609732","#AA9A39"],nodeRadius:10,nodeLabel:{width:75,height:100,x:-25,y:0}},pa={};function ga(t,e,n,r){var i=D(r,d.curveBasis),a=da.branchColors[n%da.branchColors.length],o=Object(d.line)().x((function(t){return Math.round(t.x)})).y((function(t){return Math.round(t.y)})).curve(i);t.append("svg:path").attr("d",o(e)).style("stroke",a).style("stroke-width",da.lineStrokeWidth).style("fill","none")}function ya(t,e){e=e||t.node().getBBox();var n=t.node().getCTM();return{left:n.e+e.x*n.a,top:n.f+e.y*n.d,width:e.width,height:e.height}}function va(t,e,n,r,i){c.debug("svgDrawLineForCommits: ",e,n);var a=ya(t.select("#node-"+e+" circle")),o=ya(t.select("#node-"+n+" circle"));switch(r){case"LR":if(a.left-o.left>da.nodeSpacing){var s={x:a.left-da.nodeSpacing,y:o.top+o.height/2};ga(t,[s,{x:o.left+o.width,y:o.top+o.height/2}],i,"linear"),ga(t,[{x:a.left,y:a.top+a.height/2},{x:a.left-da.nodeSpacing/2,y:a.top+a.height/2},{x:a.left-da.nodeSpacing/2,y:s.y},s],i)}else ga(t,[{x:a.left,y:a.top+a.height/2},{x:a.left-da.nodeSpacing/2,y:a.top+a.height/2},{x:a.left-da.nodeSpacing/2,y:o.top+o.height/2},{x:o.left+o.width,y:o.top+o.height/2}],i);break;case"BT":if(o.top-a.top>da.nodeSpacing){var u={x:o.left+o.width/2,y:a.top+a.height+da.nodeSpacing};ga(t,[u,{x:o.left+o.width/2,y:o.top}],i,"linear"),ga(t,[{x:a.left+a.width/2,y:a.top+a.height},{x:a.left+a.width/2,y:a.top+a.height+da.nodeSpacing/2},{x:o.left+o.width/2,y:u.y-da.nodeSpacing/2},u],i)}else ga(t,[{x:a.left+a.width/2,y:a.top+a.height},{x:a.left+a.width/2,y:a.top+da.nodeSpacing/2},{x:o.left+o.width/2,y:o.top-da.nodeSpacing/2},{x:o.left+o.width/2,y:o.top}],i)}}function ma(t,e){return t.select(e).node().cloneNode(!0)}function ba(t,e,n,r){var i,a=Object.keys(fa).length;if("string"==typeof e)do{if(i=fa[e],c.debug("in renderCommitHistory",i.id,i.seq),t.select("#node-"+e).size()>0)return;t.append((function(){return ma(t,"#def-commit")})).attr("class","commit").attr("id",(function(){return"node-"+i.id})).attr("transform",(function(){switch(r){case"LR":return"translate("+(i.seq*da.nodeSpacing+da.leftMargin)+", "+sa*da.branchOffset+")";case"BT":return"translate("+(sa*da.branchOffset+da.leftMargin)+", "+(a-i.seq)*da.nodeSpacing+")"}})).attr("fill",da.nodeFillColor).attr("stroke",da.nodeStrokeColor).attr("stroke-width",da.nodeStrokeWidth);var o=void 0;for(var s in n)if(n[s].commit===i){o=n[s];break}o&&(c.debug("found branch ",o.name),t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","branch-label").text(o.name+", ")),t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","commit-id").text(i.id),""!==i.message&&"BT"===r&&t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","commit-msg").text(", "+i.message),e=i.parent}while(e&&fa[e]);Array.isArray(e)&&(c.debug("found merge commmit",e),ba(t,e[0],n,r),sa++,ba(t,e[1],n,r),sa--)}function xa(t,e,n,r){for(r=r||0;e.seq>0&&!e.lineDrawn;)"string"==typeof e.parent?(va(t,e.id,e.parent,n,r),e.lineDrawn=!0,e=fa[e.parent]):Array.isArray(e.parent)&&(va(t,e.id,e.parent[0],n,r),va(t,e.id,e.parent[1],n,r+1),xa(t,fa[e.parent[1]],n,r+1),e.lineDrawn=!0,e=fa[e.parent[0]])}var _a,ka=function(t){pa=t},wa=function(t,e,n){try{var r=ha.a.parser;r.yy=ua,r.yy.clear(),c.debug("in gitgraph renderer",t+"\n","id:",e,n),r.parse(t+"\n"),da=Object.assign(da,pa,ua.getOptions()),c.debug("effective options",da);var i=ua.getDirection();fa=ua.getCommits();var a=ua.getBranchesAsObjArray();"BT"===i&&(da.nodeLabel.x=a.length*da.branchOffset,da.nodeLabel.width="100%",da.nodeLabel.y=-2*da.nodeRadius);var o=Object(d.select)('[id="'.concat(e,'"]'));for(var s in function(t){t.append("defs").append("g").attr("id","def-commit").append("circle").attr("r",da.nodeRadius).attr("cx",0).attr("cy",0),t.select("#def-commit").append("foreignObject").attr("width",da.nodeLabel.width).attr("height",da.nodeLabel.height).attr("x",da.nodeLabel.x).attr("y",da.nodeLabel.y).attr("class","node-label").attr("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility").append("p").html("")}(o),sa=1,a){var u=a[s];ba(o,u.commit.id,a,i),xa(o,u.commit,i),sa++}o.attr("height",(function(){return"BT"===i?Object.keys(fa).length*da.nodeSpacing:(a.length+1)*da.branchOffset}))}catch(t){c.error("Error while rendering gitgraph"),c.error(t.message)}},Ea="",Ta=!1,Ca={setMessage:function(t){c.debug("Setting message to: "+t),Ea=t},getMessage:function(){return Ea},setInfo:function(t){Ta=t},getInfo:function(){return Ta}},Aa=n(72),Sa=n.n(Aa),Ma={},Oa=function(t){Object.keys(t).forEach((function(e){Ma[e]=t[e]}))},Da=function(t,e,n){try{var r=Sa.a.parser;r.yy=Ca,c.debug("Renering info diagram\n"+t),r.parse(t),c.debug("Parsed info diagram");var i=Object(d.select)("#"+e);i.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+n),i.attr("height",100),i.attr("width",400)}catch(t){c.error("Error while rendering info diagram"),c.error(t.message)}},Na={},Ba=function(t){Object.keys(t).forEach((function(e){Na[e]=t[e]}))},La=function(t,e){try{c.debug("Renering svg for syntax error\n");var n=Object(d.select)("#"+t),r=n.append("g");r.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),r.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),r.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),r.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),r.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),r.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),r.append("text").attr("class","error-text").attr("x",1240).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in graph"),r.append("text").attr("class","error-text").attr("x",1050).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text("mermaid version "+e),n.attr("height",100),n.attr("width",400),n.attr("viewBox","768 0 512 512")}catch(t){c.error("Error while rendering info diagram"),c.error(t.message)}},Fa={},Pa="",Ia={parseDirective:function(t,e,n){Go.parseDirective(this,t,e,n)},getConfig:function(){return _t().pie},addSection:function(t,e){void 0===Fa[t]&&(Fa[t]=e,c.debug("Added new section :",t))},getSections:function(){return Fa},cleanupValue:function(t){return":"===t.substring(0,1)?(t=t.substring(1).trim(),Number(t.trim())):Number(t.trim())},clear:function(){Fa={},Pa=""},setTitle:function(t){Pa=t},getTitle:function(){return Pa}},ja=n(73),Ra=n.n(ja),Ya={},za=function(t){Object.keys(t).forEach((function(e){Ya[e]=t[e]}))},Ua=function(t,e){try{var n=Ra.a.parser;n.yy=Ia,c.debug("Rendering info diagram\n"+t),n.yy.clear(),n.parse(t),c.debug("Parsed info diagram");var r=document.getElementById(e);void 0===(_a=r.parentElement.offsetWidth)&&(_a=1200),void 0!==Ya.useWidth&&(_a=Ya.useWidth);var i=Object(d.select)("#"+e);W(i,450,_a,Ya.useMaxWidth),r.setAttribute("viewBox","0 0 "+_a+" 450");var a=Math.min(_a,450)/2-40,o=i.append("g").attr("transform","translate("+_a/2+",225)"),s=Ia.getSections(),u=0;Object.keys(s).forEach((function(t){u+=s[t]}));var l=Object(d.scaleOrdinal)().domain(s).range(d.schemeSet2),h=Object(d.pie)().value((function(t){return t.value}))(Object(d.entries)(s)),f=Object(d.arc)().innerRadius(0).outerRadius(a);o.selectAll("mySlices").data(h).enter().append("path").attr("d",f).attr("fill",(function(t){return l(t.data.key)})).attr("stroke","black").style("stroke-width","2px").style("opacity",.7),o.selectAll("mySlices").data(h).enter().append("text").text((function(t){return(t.data.value/u*100).toFixed(0)+"%"})).attr("transform",(function(t){return"translate("+f.centroid(t)+")"})).style("text-anchor","middle").attr("class","slice").style("font-size",17),o.append("text").text(n.yy.getTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");var p=o.selectAll(".legend").data(l.domain()).enter().append("g").attr("class","legend").attr("transform",(function(t,e){return"translate(216,"+(22*e-22*l.domain().length/2)+")"}));p.append("rect").attr("width",18).attr("height",18).style("fill",l).style("stroke",l),p.append("text").attr("x",22).attr("y",14).text((function(t){return t}))}catch(t){c.error("Error while rendering info diagram"),c.error(t)}},$a={},Wa=[],Ha="",Va=function(t){return void 0===$a[t]&&($a[t]={attributes:[]},c.info("Added new entity :",t)),$a[t]},Ga={Cardinality:{ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE"},Identification:{NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},parseDirective:function(t,e,n){Go.parseDirective(this,t,e,n)},getConfig:function(){return _t().er},addEntity:Va,addAttributes:function(t,e){var n,r=Va(t);for(n=e.length-1;n>=0;n--)r.attributes.push(e[n]),c.debug("Added attribute ",e[n].attributeName)},getEntities:function(){return $a},addRelationship:function(t,e,n,r){var i={entityA:t,roleA:e,entityB:n,relSpec:r};Wa.push(i),c.debug("Added new relationship :",i)},getRelationships:function(){return Wa},clear:function(){$a={},Wa=[],Ha=""},setTitle:function(t){Ha=t},getTitle:function(){return Ha}},qa=n(74),Xa=n.n(qa),Za={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END"},Ja=Za,Ka=function(t,e){var n;t.append("defs").append("marker").attr("id",Za.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",Za.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",Za.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",Za.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",Za.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",Za.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),(n=t.append("defs").append("marker").attr("id",Za.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),(n=t.append("defs").append("marker").attr("id",Za.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},Qa={},to=function(t,e,n){var r;return Object.keys(e).forEach((function(i){var a=t.append("g").attr("id",i);r=void 0===r?i:r;var o="entity-"+i,s=a.append("text").attr("class","er entityLabel").attr("id",o).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("style","font-family: "+_t().fontFamily+"; font-size: "+Qa.fontSize+"px").text(i),c=function(t,e,n){var r=Qa.entityPadding/3,i=Qa.entityPadding/3,a=.85*Qa.fontSize,o=e.node().getBBox(),s=[],c=0,u=0,l=o.height+2*r,h=1;n.forEach((function(n){var i="".concat(e.node().id,"-attr-").concat(h),o=t.append("text").attr("class","er entityLabel").attr("id","".concat(i,"-type")).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","left").attr("style","font-family: "+_t().fontFamily+"; font-size: "+a+"px").text(n.attributeType),f=t.append("text").attr("class","er entityLabel").attr("id","".concat(i,"-name")).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","left").attr("style","font-family: "+_t().fontFamily+"; font-size: "+a+"px").text(n.attributeName);s.push({tn:o,nn:f});var d=o.node().getBBox(),p=f.node().getBBox();c=Math.max(c,d.width),u=Math.max(u,p.width),l+=Math.max(d.height,p.height)+2*r,h+=1}));var f={width:Math.max(Qa.minEntityWidth,Math.max(o.width+2*Qa.entityPadding,c+u+4*i)),height:n.length>0?l:Math.max(Qa.minEntityHeight,o.height+2*Qa.entityPadding)},d=Math.max(0,f.width-(c+u)-4*i);if(n.length>0){e.attr("transform","translate("+f.width/2+","+(r+o.height/2)+")");var p=o.height+2*r,g="attributeBoxOdd";s.forEach((function(e){var n=p+r+Math.max(e.tn.node().getBBox().height,e.nn.node().getBBox().height)/2;e.tn.attr("transform","translate("+i+","+n+")");var a=t.insert("rect","#"+e.tn.node().id).attr("class","er ".concat(g)).attr("fill",Qa.fill).attr("fill-opacity","100%").attr("stroke",Qa.stroke).attr("x",0).attr("y",p).attr("width",c+2*i+d/2).attr("height",e.tn.node().getBBox().height+2*r);e.nn.attr("transform","translate("+(parseFloat(a.attr("width"))+i)+","+n+")"),t.insert("rect","#"+e.nn.node().id).attr("class","er ".concat(g)).attr("fill",Qa.fill).attr("fill-opacity","100%").attr("stroke",Qa.stroke).attr("x","".concat(a.attr("x")+a.attr("width"))).attr("y",p).attr("width",u+2*i+d/2).attr("height",e.nn.node().getBBox().height+2*r),p+=Math.max(e.tn.node().getBBox().height,e.nn.node().getBBox().height)+2*r,g="attributeBoxOdd"==g?"attributeBoxEven":"attributeBoxOdd"}))}else f.height=Math.max(Qa.minEntityHeight,l),e.attr("transform","translate("+f.width/2+","+f.height/2+")");return f}(a,s,e[i].attributes),u=c.width,l=c.height,h=a.insert("rect","#"+o).attr("class","er entityBox").attr("fill",Qa.fill).attr("fill-opacity","100%").attr("stroke",Qa.stroke).attr("x",0).attr("y",0).attr("width",u).attr("height",l).node().getBBox();n.setNode(i,{width:h.width,height:h.height,shape:"rect",id:i})})),r},eo=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")},no=0,ro=function(t){for(var e=Object.keys(t),n=0;n/gi," "),r=t.append("text");r.attr("x",e.x),r.attr("y",e.y),r.attr("class","legend"),r.style("text-anchor",e.anchor),void 0!==e.class&&r.attr("class",e.class);var i=r.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.text(n),r},bo=-1,xo=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},_o=function(){function t(t,e,n,i,a,o,s,c){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("font-color",c).style("text-anchor","middle").text(t),s)}function e(t,e,n,i,a,o,s,c,u){for(var l=c.taskFontSize,h=c.taskFontFamily,f=t.split(//gi),d=0;d3?function(t){var e=Object(d.arc)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("class","mouth").attr("d",e).attr("transform","translate("+o.cx+","+(o.cy+2)+")")}(s):o.score<3?function(t){var e=Object(d.arc)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("class","mouth").attr("d",e).attr("transform","translate("+o.cx+","+(o.cy+7)+")")}(s):function(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",o.cx-5).attr("y1",o.cy+7).attr("x2",o.cx+5).attr("y2",o.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}(s);var c=xo();c.x=e.x,c.y=e.y,c.fill=e.fill,c.width=n.width,c.height=n.height,c.class="task task-type-"+e.num,c.rx=3,c.ry=3,yo(i,c);var u=e.x+14;e.people.forEach((function(t){var n=e.actors[t],r={cx:u,cy:e.y,r:7,fill:n,stroke:"#000",title:t};vo(i,r),u+=10})),_o(n)(e.task,i,c.x,c.y,c.width,c.height,{class:"task"},n,e.colour)},Co=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")};ao.parser.yy=go;var Ao={leftMargin:150,diagramMarginX:50,diagramMarginY:20,taskMargin:50,width:150,height:50,taskFontSize:14,taskFontFamily:'"Open-Sans", "sans-serif"',boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},So={};var Mo=Ao.leftMargin,Oo={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){var i,a=this,o=0;this.sequenceItems.forEach((function(s){o++;var c=a.sequenceItems.length-o+1;a.updateVal(s,"starty",e-c*Ao.boxMargin,Math.min),a.updateVal(s,"stopy",r+c*Ao.boxMargin,Math.max),a.updateVal(Oo.data,"startx",t-c*Ao.boxMargin,Math.min),a.updateVal(Oo.data,"stopx",n+c*Ao.boxMargin,Math.max),"activation"!==i&&(a.updateVal(s,"startx",t-c*Ao.boxMargin,Math.min),a.updateVal(s,"stopx",n+c*Ao.boxMargin,Math.max),a.updateVal(Oo.data,"starty",e-c*Ao.boxMargin,Math.min),a.updateVal(Oo.data,"stopy",r+c*Ao.boxMargin,Math.max))}))},insert:function(t,e,n,r){var i=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,r),s=Math.max(e,r);this.updateVal(Oo.data,"startx",i,Math.min),this.updateVal(Oo.data,"starty",o,Math.min),this.updateVal(Oo.data,"stopx",a,Math.max),this.updateVal(Oo.data,"stopy",s,Math.max),this.updateBounds(i,o,a,s)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},Do=Ao.sectionFills,No=Ao.sectionColours,Bo=function(t,e,n){for(var r="",i=n+(2*Ao.height+Ao.diagramMarginY),a=0,o="#CCC",s="black",c=0,u=0;u tspan {\n fill: ").concat(t.actorTextColor,";\n stroke: none;\n }\n\n .actor-line {\n stroke: ").concat(t.actorLineColor,";\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ").concat(t.signalColor,";\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ").concat(t.signalColor,";\n }\n\n #arrowhead path {\n fill: ").concat(t.signalColor,";\n stroke: ").concat(t.signalColor,";\n }\n\n .sequenceNumber {\n fill: ").concat(t.sequenceNumberColor,";\n }\n\n #sequencenumber {\n fill: ").concat(t.signalColor,";\n }\n\n #crosshead path {\n fill: ").concat(t.signalColor,";\n stroke: ").concat(t.signalColor,";\n }\n\n .messageText {\n fill: ").concat(t.signalTextColor,";\n stroke: ").concat(t.signalTextColor,";\n }\n\n .labelBox {\n stroke: ").concat(t.labelBoxBorderColor,";\n fill: ").concat(t.labelBoxBkgColor,";\n }\n\n .labelText, .labelText > tspan {\n fill: ").concat(t.labelTextColor,";\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ").concat(t.loopTextColor,";\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ").concat(t.labelBoxBorderColor,";\n fill: ").concat(t.labelBoxBorderColor,";\n }\n\n .note {\n //stroke: #decc93;\n stroke: ").concat(t.noteBorderColor,";\n fill: ").concat(t.noteBkgColor,";\n }\n\n .noteText, .noteText > tspan {\n fill: ").concat(t.noteTextColor,";\n stroke: none;\n }\n\n .activation0 {\n fill: ").concat(t.activationBkgColor,";\n stroke: ").concat(t.activationBorderColor,";\n }\n\n .activation1 {\n fill: ").concat(t.activationBkgColor,";\n stroke: ").concat(t.activationBorderColor,";\n }\n\n .activation2 {\n fill: ").concat(t.activationBkgColor,";\n stroke: ").concat(t.activationBorderColor,";\n }\n")},gantt:function(t){return'\n .mermaid-main-font {\n font-family: "trebuchet ms", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: '.concat(t.sectionBkgColor,";\n }\n\n .section2 {\n fill: ").concat(t.sectionBkgColor2,";\n }\n\n .section1,\n .section3 {\n fill: ").concat(t.altSectionBkgColor,";\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle1 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle2 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle3 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle {\n text-anchor: start;\n font-size: 11px;\n text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ").concat(t.gridColor,";\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ").concat(t.fontFamily,";\n fill: ").concat(t.textColor,";\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ").concat(t.todayLineColor,";\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n .taskText:not([font-size]) {\n font-size: 11px;\n }\n\n .taskTextOutsideRight {\n fill: ").concat(t.taskTextDarkColor,";\n text-anchor: start;\n font-size: 11px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ").concat(t.taskTextDarkColor,";\n text-anchor: end;\n font-size: 11px;\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ").concat(t.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ").concat(t.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ").concat(t.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ").concat(t.taskTextColor,";\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ").concat(t.taskBkgColor,";\n stroke: ").concat(t.taskBorderColor,";\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ").concat(t.taskTextOutsideColor,";\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ").concat(t.taskTextOutsideColor,";\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ").concat(t.activeTaskBkgColor,";\n stroke: ").concat(t.activeTaskBorderColor,";\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ").concat(t.doneTaskBorderColor,";\n fill: ").concat(t.doneTaskBkgColor,";\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ").concat(t.critBorderColor,";\n fill: ").concat(t.critBkgColor,";\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ").concat(t.critBorderColor,";\n fill: ").concat(t.activeTaskBkgColor,";\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ").concat(t.critBorderColor,";\n fill: ").concat(t.doneTaskBkgColor,";\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ").concat(t.textColor," ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n")},classDiagram:Po,"classDiagram-v2":Po,class:Po,stateDiagram:jo,state:jo,git:function(){return"\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n"},info:function(){return""},pie:function(t){return".pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: ".concat(t.taskTextDarkColor,";\n font-family: ").concat(t.fontFamily,";\n }\n .slice {\n font-family: ").concat(t.fontFamily,";\n fill: ").concat(t.textColor,";\n // fill: white;\n }\n .legend text {\n fill: ").concat(t.taskTextDarkColor,";\n font-family: ").concat(t.fontFamily,";\n font-size: 17px;\n }\n")},er:function(t){return"\n .entityBox {\n fill: ".concat(t.mainBkg,";\n stroke: ").concat(t.nodeBorder,";\n }\n\n .attributeBoxOdd {\n fill: #ffffff;\n stroke: ").concat(t.nodeBorder,";\n }\n\n .attributeBoxEven {\n fill: #f2f2f2;\n stroke: ").concat(t.nodeBorder,";\n }\n\n .relationshipLabelBox {\n fill: ").concat(t.tertiaryColor,";\n opacity: 0.7;\n background-color: ").concat(t.tertiaryColor,";\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ").concat(t.lineColor,";\n }\n")},journey:function(t){return".label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ".concat(t.textColor,";\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ").concat(t.textColor,"\n }\n\n .legend {\n fill: ").concat(t.textColor,";\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ").concat(t.textColor,"\n }\n\n .face {\n fill: #FFF8DC;\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ").concat(t.mainBkg,";\n stroke: ").concat(t.nodeBorder,";\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ").concat(t.arrowheadColor,";\n }\n\n .edgePath .path {\n stroke: ").concat(t.lineColor,";\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ").concat(t.lineColor,";\n fill: none;\n }\n\n .edgeLabel {\n background-color: ").concat(t.edgeLabelBackground,";\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ").concat(t.titleColor,";\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ").concat(t.tertiaryColor,";\n border: 1px solid ").concat(t.border2,";\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType0):"",";\n }\n .task-type-1, .section-type-1 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType1):"",";\n }\n .task-type-2, .section-type-2 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType2):"",";\n }\n .task-type-3, .section-type-3 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType3):"",";\n }\n .task-type-4, .section-type-4 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType4):"",";\n }\n .task-type-5, .section-type-5 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType5):"",";\n }\n .task-type-6, .section-type-6 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType6):"",";\n }\n .task-type-7, .section-type-7 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType7):"",";\n }\n")}},Yo=function(t,e,n){return" {\n font-family: ".concat(n.fontFamily,";\n font-size: ").concat(n.fontSize,";\n fill: ").concat(n.textColor,"\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ").concat(n.errorBkgColor,";\n }\n .error-text {\n fill: ").concat(n.errorTextColor,";\n stroke: ").concat(n.errorTextColor,";\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ").concat(n.lineColor,";\n }\n .marker.cross {\n stroke: ").concat(n.lineColor,";\n }\n\n svg {\n font-family: ").concat(n.fontFamily,";\n font-size: ").concat(n.fontSize,";\n }\n\n ").concat(Ro[t](n),"\n\n ").concat(e,"\n\n ").concat(t," { fill: apa;}\n")};function zo(t){return(zo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Uo={},$o=function(t,e,n){switch(c.debug("Directive type=".concat(e.type," with args:"),e.args),e.type){case"init":case"initialize":["config"].forEach((function(t){void 0!==e.args[t]&&("flowchart-v2"===n&&(n="flowchart"),e.args[n]=e.args[t],delete e.args[t])})),e.args,wt(e.args);break;case"wrap":case"nowrap":t&&t.setWrap&&t.setWrap("wrap"===e.type);break;default:c.warn("Unhandled directive: source: '%%{".concat(e.type,": ").concat(JSON.stringify(e.args?e.args:{}),"}%%"),e)}};function Wo(t){ka(t.git),me(t.flowchart),Ln(t.flowchart),void 0!==t.sequenceDiagram&&_r.setConf(I(t.sequence,t.sequenceDiagram)),_r.setConf(t.sequence),ri(t.gantt),li(t.class),zi(t.state),qi(t.state),Oa(t.class),za(t.class),ro(t.er),Lo(t.journey),Ba(t.class)}function Ho(){}var Vo=Object.freeze({render:function(t,e,n,r){Et();var i=e,a=H.detectInit(i);a&&wt(a);var o=_t();if(e.length>o.maxTextSize&&(i="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa"),void 0!==r)r.innerHTML="",Object(d.select)(r).append("div").attr("id","d"+t).attr("style","font-family: "+o.fontFamily).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g");else{var s=document.getElementById(t);s&&s.remove();var u=document.querySelector("#d"+t);u&&u.remove(),Object(d.select)("body").append("div").attr("id","d"+t).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g")}window.txt=i,i=function(t){var e=t;return e=(e=(e=e.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)}))).replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)}))).replace(/#\w+;/g,(function(t){var e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"fl°°"+e+"¶ß":"fl°"+e+"¶ß"}))}(i);var l=Object(d.select)("#d"+t).node(),h=H.detectType(i),g=l.firstChild,y=g.firstChild,v="";if(void 0!==o.themeCSS&&(v+="\n".concat(o.themeCSS)),void 0!==o.fontFamily&&(v+="\n:root { --mermaid-font-family: ".concat(o.fontFamily,"}")),void 0!==o.altFontFamily&&(v+="\n:root { --mermaid-alt-font-family: ".concat(o.altFontFamily,"}")),"flowchart"===h||"flowchart-v2"===h||"graph"===h){var m=be(i);for(var b in m)v+="\n.".concat(b," > * { ").concat(m[b].styles.join(" !important; ")," !important; }"),m[b].textStyles&&(v+="\n.".concat(b," tspan { ").concat(m[b].textStyles.join(" !important; ")," !important; }"))}var x=(new f.a)("#".concat(t),Yo(h,v,o.themeVariables)),_=document.createElement("style");_.innerHTML=x,g.insertBefore(_,y);try{switch(h){case"git":o.flowchart.arrowMarkerAbsolute=o.arrowMarkerAbsolute,ka(o.git),wa(i,t,!1);break;case"flowchart":o.flowchart.arrowMarkerAbsolute=o.arrowMarkerAbsolute,me(o.flowchart),xe(i,t,!1);break;case"flowchart-v2":o.flowchart.arrowMarkerAbsolute=o.arrowMarkerAbsolute,Ln(o.flowchart),Fn(i,t,!1);break;case"sequence":o.sequence.arrowMarkerAbsolute=o.arrowMarkerAbsolute,o.sequenceDiagram?(_r.setConf(Object.assign(o.sequence,o.sequenceDiagram)),console.error("`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.")):_r.setConf(o.sequence),_r.draw(i,t);break;case"gantt":o.gantt.arrowMarkerAbsolute=o.arrowMarkerAbsolute,ri(o.gantt),ii(i,t);break;case"class":o.class.arrowMarkerAbsolute=o.arrowMarkerAbsolute,li(o.class),hi(i,t);break;case"classDiagram":o.class.arrowMarkerAbsolute=o.arrowMarkerAbsolute,di(o.class),pi(i,t);break;case"state":o.class.arrowMarkerAbsolute=o.arrowMarkerAbsolute,zi(o.state),Ui(i,t);break;case"stateDiagram":o.class.arrowMarkerAbsolute=o.arrowMarkerAbsolute,qi(o.state),Xi(i,t);break;case"info":o.class.arrowMarkerAbsolute=o.arrowMarkerAbsolute,Oa(o.class),Da(i,t,p.version);break;case"pie":o.class.arrowMarkerAbsolute=o.arrowMarkerAbsolute,za(o.pie),Ua(i,t,p.version);break;case"er":ro(o.er),io(i,t,p.version);break;case"journey":Lo(o.journey),Fo(i,t,p.version)}}catch(e){throw La(t,p.version),e}Object(d.select)('[id="'.concat(t,'"]')).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");var k=Object(d.select)("#d"+t).node().innerHTML;if(c.debug("cnf.arrowMarkerAbsolute",o.arrowMarkerAbsolute),o.arrowMarkerAbsolute&&"false"!==o.arrowMarkerAbsolute||(k=k.replace(/marker-end="url\(.*?#/g,'marker-end="url(#',"g")),k=function(t){var e=t;return e=(e=(e=e.replace(/fl°°/g,(function(){return"&#"}))).replace(/fl°/g,(function(){return"&"}))).replace(/¶ß/g,(function(){return";"}))}(k),void 0!==n)switch(h){case"flowchart":case"flowchart-v2":n(k,Xt.bindFunctions);break;case"gantt":n(k,Qr.bindFunctions);break;case"class":case"classDiagram":n(k,cn.bindFunctions);break;default:n(k)}else c.debug("CB = undefined!");var w=Object(d.select)("#d"+t).node();return null!==w&&"function"==typeof w.remove&&Object(d.select)("#d"+t).node().remove(),k},parse:function(t){var e=H.detectInit(t);e&&c.debug("reinit ",e);var n,r=H.detectType(t);switch(c.debug("Type "+r),r){case"git":(n=ha.a).parser.yy=ua;break;case"flowchart":case"flowchart-v2":Xt.clear(),(n=Jt.a).parser.yy=Xt;break;case"sequence":(n=Hn.a).parser.yy=sr;break;case"gantt":(n=wr.a).parser.yy=Qr;break;case"class":case"classDiagram":(n=oi.a).parser.yy=cn;break;case"state":case"stateDiagram":(n=Di.a).parser.yy=Mi;break;case"info":c.debug("info info info"),(n=Sa.a).parser.yy=Ca;break;case"pie":c.debug("pie"),(n=Ra.a).parser.yy=Ia;break;case"er":c.debug("er"),(n=Xa.a).parser.yy=Ga;break;case"journey":c.debug("Journey"),(n=oo.a).parser.yy=go}return n.parser.yy.graphType=r,n.parser.yy.parseError=function(t,e){throw{str:t,hash:e}},n.parse(t),n},parseDirective:function(t,e,n,r){try{if(void 0!==e)switch(e=e.trim(),n){case"open_directive":Uo={};break;case"type_directive":Uo.type=e.toLowerCase();break;case"arg_directive":Uo.args=JSON.parse(e);break;case"close_directive":$o(t,Uo,r),Uo=null}}catch(t){c.error("Error while rendering sequenceDiagram directive: ".concat(e," jison context: ").concat(n)),c.error(t.message)}},initialize:function(t){t&&t.fontFamily&&(t.themeVariables&&t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily})),dt=I({},t),t&&t.theme&&ht[t.theme]?t.themeVariables=ht[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=ht.default.getThemeVariables(t.themeVariables));var e="object"===zo(t)?function(t){return yt=I({},gt),yt=I(yt,t),t.theme&&(yt.themeVariables=ht[t.theme].getThemeVariables(t.themeVariables)),mt=bt(yt,vt),yt}(t):xt();Wo(e),u(e.logLevel)},reinitialize:Ho,getConfig:_t,setConfig:function(t){return I(mt,t),_t()},getSiteConfig:xt,updateSiteConfig:function(t){return yt=I(yt,t),bt(yt,vt),yt},reset:function(){Et()},globalReset:function(){Et(),Wo(_t())},defaultConfig:gt});u(_t().logLevel),Et(_t());var Go=Vo,qo=function(){Xo.startOnLoad?Go.getConfig().startOnLoad&&Xo.init():void 0===Xo.startOnLoad&&(c.debug("In start, no config"),Go.getConfig().startOnLoad&&Xo.init())};"undefined"!=typeof document&& +/*! + * Wait for document loaded before starting the execution + */ +window.addEventListener("load",(function(){qo()}),!1);var Xo={startOnLoad:!0,htmlLabels:!0,mermaidAPI:Go,parse:Go.parse,render:Go.render,init:function(){var t,e,n=this,r=Go.getConfig();arguments.length>=2?( +/*! sequence config was passed as #1 */ +void 0!==arguments[0]&&(Xo.sequenceConfig=arguments[0]),t=arguments[1]):t=arguments[0],"function"==typeof arguments[arguments.length-1]?(e=arguments[arguments.length-1],c.debug("Callback function found")):void 0!==r.mermaid&&("function"==typeof r.mermaid.callback?(e=r.mermaid.callback,c.debug("Callback function found")):c.debug("No Callback function found")),t=void 0===t?document.querySelectorAll(".mermaid"):"string"==typeof t?document.querySelectorAll(t):t instanceof window.Node?[t]:t,c.debug("Start On Load before: "+Xo.startOnLoad),void 0!==Xo.startOnLoad&&(c.debug("Start On Load inner: "+Xo.startOnLoad),Go.updateSiteConfig({startOnLoad:Xo.startOnLoad})),void 0!==Xo.ganttConfig&&Go.updateSiteConfig({gantt:Xo.ganttConfig});for(var a,o=H.initIdGeneratior(r.deterministicIds,r.deterministicIDSeed).next,s=function(r){var s=t[r]; +/*! Check if previously processed */if(s.getAttribute("data-processed"))return"continue";s.setAttribute("data-processed",!0);var u="mermaid-".concat(o());a=i(a=s.innerHTML).trim().replace(//gi,"
    ");var l=H.detectInit(a);l&&c.debug("Detected early reinit: ",l);try{Go.render(u,a,(function(t,n){s.innerHTML=t,void 0!==e&&e(u),n&&n(s)}),s)}catch(t){c.warn("Syntax Error rendering"),c.warn(t),n.parseError&&n.parseError(t)}},u=0;u + + + + + wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    👋🏽 Welcome

    +

    Welcome to the wg-async-foundations website!

    +

    Leads

    +

    The leads of this working group are @tmandry and @nikomatsakis. Both of them can be found on Zulip.

    +

    Getting involved

    +

    There is a weekly triage meeting that takes place in our Zulip stream. Feel free to stop by then (or any time!) to introduce yourself.

    +

    If you're interested in fixing bugs, though, there is no need to wait for the meeting! Take a look at the instructions here.

    +

    What is the goal of this working group?

    +

    This working group is focused around implementation/design of the “foundations” for Async I/O. This means that we are focused on designing and implementing extensions to the language, standard library, and other "core" bits of support offered by the Rust organization. We do not directly work on external projects like tokio, async-std, smol, embassy and so forth, although we definitely discuss ideas and coordinate with them where appropriate.

    +

    Zulip

    +

    We hold discussions on the #wg-async-foundations stream in Zulip

    +

    License

    +

    Licensed under either of

    +
      +
    • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
    • +
    • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
    • +
    +

    at your option.

    +

    Contribution

    +

    Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in this crate by you, as defined in the Apache-2.0 license, shall +be dual licensed as above, without any additional terms or conditions.

    +

    🔮 The vision

    +

    What is this

    +

    We believe Rust can become one of the most popular choices for building distributed systems, ranging from embedded devices to foundational cloud services. Whatever they're using it for, we want all developers to love using Async Rust. For that to happen, we need to move Async Rust beyond the "MVP" state it's in today and make it accessible to everyone.

    +

    This document is a collaborative effort to build a shared vision for Async Rust. Our goal is to engage the entire community in a collective act of the imagination: how can we make the end-to-end experience of using Async I/O not only a pragmatic choice, but a joyful one?

    +

    Where we are and where we are going

    +

    The "vision document" starts with a cast of characters. Each character is tied to a particular Rust value (e.g., performance, productivity, etc) determined by their background; this background also informs the expectations they bring when using Rust. Grace, for example, wants to keep the same level of performance she currently get with C, but with the productivity benefits of memory safety. Alan, meanwhile, is hoping Rust will give him higher performance without losing the safety and ergonomics that he enjoys with garbage collected languages.

    +

    For each character, we write "status quo" stories that describe the challenges they face as they try to achieve their goals (and typically fail in dramatic fashion!), These stories are not fiction. They are an amalgamation of the real experiences of people using Async Rust, as reported to us by interviews, blog posts, and tweets. Writing these stories helps us gauge the cumulative impact of the various papercuts and challenges that one encounters when using Async Rust.

    +

    The ultimate goal of the vision doc, of course, is not just to tell us where we are now, but where we are going and how we will get there. For this, we include "shiny future" stories that tell us how those same characters will fare in a few years time, when we've had a chance to improve the Async Rust experience.

    +

    The vision drives the work

    +

    The vision is not just idle speculation. It is the central document that we use to organize ourselves. When we think about our roadmap for any given year, it is always with the aim of moving us closer to the vision we lay out here.

    +

    Involving the whole community

    +

    The async vision document provides a forum where the Async Rust community can plan a great overall experience for Async Rust users. Async Rust was intentionally designed not to have a "one size fits all" mindset, and we don't want to change that. Our goal is to build a shared vision for the end-to-end experience while retaining the loosely coupled, exploration-oriented ecosystem we have built.

    +

    🚧 Under construction! Help needed! 🚧

    +

    This document is not yet complete! We are actively working on it as part of the working group, and we would like your help! Check out the How to vision doc page for more details.

    +
    graph TD;
    +A-->B;
    +A-->C;
    +B-->D;
    +C-->D;
    +
    +

    ❓ How to vision

    +

    How you can help

    + + + + + +
    WhenWhat
    Now till 2021-04-30Improve the sample projects
    Now till 2021-04-30Propose new "status quo" stories or comment on existing PRs
    Now till 2021-04-30Propose new "shiny future" stories or comment on existing PRs
    🛑 Starting 2021-04-30Vote for the awards on the status quo and shiny future stories!
    +

    The big picture

    +

    The process we are using to write the vision doc encourages active collaboration and "positive sum" thinking. It starts with a brainstorming period, during which we aim to collect as many "status quo" and "shiny future" stories as we can.

    +

    This brainstorming period runs for six weeks, until the end of April. For the first two weeks (until 2021-04-02), we are collecting "status quo" stories only. After that, we will accept both "status quo" and "shiny future" stories until the end of the brainstorming period. Finally, to cap off the brainstorming period, we will select winners for awards like "Most Humorous Story" or "Most Supportive Contributor".

    +

    Once the brainstorming period is complete, the working group leads will begin work on assembling the various stories and shiny futures into a coherent draft. This draft will be reviewed by the community and the Rust teams and adjusted based on feedback.

    +

    Brainstorming

    +

    The brainstorming period runs until 2021-04-30:

    + +

    The more the merrier!

    +

    During this brainstorming period, we want to focus on getting as many ideas as we can. Having multiple "shiny futures" that address the same problem is a feature, not a bug, as it will let us mix-and-match later to try and find the best overall plan. Comments and questions will be used as a tool for improving understanding or sharpening proposals. Presenting alternative ideas is done by writing an alternative story.

    +

    Reviewing contributions

    +

    To merge a story or project PR, any member of the working group can open a topic on Zulip and propose it be merged. Ideally there will be no outstanding concerns. If a second member of the working group approves, the PR can then be merged.

    +

    Reviewers should ensure that new stories and projects are added to the SUMMARY.md file either before merging or directly afterwards.

    +

    Harmonizing

    +

    At this point, the wg leads will write the draft vision document, drawing on the status quo and shiny future stories that were submitted. +Like an RFC, this draft vision doc will be opened for comment and improved based on the resulting feedback. +When the wg leads feel it is ready, it will be taken to the lang and libs teams for approval (and other Rust teams as appropriate).

    +

    Living document

    +

    This meant to be a living document. We plan to revisit it regularly to track our progress and update it based on what we've learned in the meantime. Note that the shiny future stories in particular are going to involve a fair bit of uncertainty, so we expect them to change as we go.

    +

    Wait, did somebody say awards?

    +

    Yes! We are planning to give awards in various categories for folks who write status quo and shiny future PRs. The precise categories are TBD. Check out the awards page for more details.

    +

    ❓ How to vision: Projects

    +

    How to open a PR

    +

    If you'd like to add a new project, please open a PR using this template and adding a new file into the projects directory. Do not add your file to SUMMARY.md, that will create conflicts. We'll add it after merging.

    +

    We are pretty happy to add new projects, although we would prefer only to add a new project if it has some characteristic that is distinct from the other projects we've got so far and which is important to a 'status quo' or 'shiny future' story.

    +

    FAQs to answer in your PR

    +

    In your PR, make sure to include the following FAQs:

    +
      +
    • What makes this project different from most others?
    • +
    • Are there existing crates that are similar to this project?
    • +
    +

    ❓ How to vision: "Status quo" stories

    +

    We want to make sure all Async Rust users and their experiences are reflected in the async vision doc, so please help us by writing 'status quo' stories about your experiences or the experiences of others! Remember, status quo stories are not "real", but neither are they fiction. They are constructed from the real experiences of people using Async Rust (often multiple people).

    +

    TL;DR

    +

    Just want to get started? Here are quick instructions to get you going:

    + +

    Optional: open an issue to discuss your story or find others with similar experiences

    +

    If you have a story idea but you don't have the time to write about it, or if you would like to know whether other folks have encountered the same sorts of problems, you can open up a "status quo" story issue on the wg-async-foundations repository. Alternatively, if you're looking for a story to write, you can browse the open issues tagged as status-quo-story-idea and see if anything catches your eye. If you see people describing problems you have hit, or have questions about the experiences people are sharing, then please leave a comment -- but remember to comment supportively. (You can also come to Zulip to discuss.)

    +

    How to open a PR

    +

    If you have an idea you'd like to write about, please open a PR using this template and adding a new file into the status_quo directory. Do not add your file to SUMMARY.md -- that will create conflicts, we'll do it manually after merging.

    +

    Goals of a status quo PR

    +

    When writing a status quo story, your goal is to present what you see as a major challenge for Async Rust. You want to draw upon people's experiences (sometimes multiple people) to show all the aspects of the problem in an engaging and entertaining way.

    +

    Each story is always presented from the POV of a particular character. Stories should be detailed, not abstract -- it's better to give specifics than generalities. Don't say "Grace visited a website to find the answer to her question", tell us whether she went to stackoverflow, asked on reddit, or found the answer on some random blog post. Ideally you should get this detail from whatever your "source" of the story is -- but if you are using multiple sources and they disagree, you can pick one and use the FAQ to convey some of the other alternatives.

    +

    The role of the FAQ

    +

    Every status quo PR includes a FAQ. This FAQ should always include answers to some standard questions:

    +
      +
    • What are the morals of the story? +
        +
      • Talk about the major takeaways-- what do you see as the biggest problems.
      • +
      +
    • +
    • What are the sources for this story? +
        +
      • Talk about what the story is based on, ideally with links to blog posts, tweets, or other evidence.
      • +
      +
    • +
    • Why did you choose NAME to tell this story? +
        +
      • Talk about the character you used for the story and why.
      • +
      +
    • +
    • How would this story have played out differently for the other characters? +
        +
      • In some cases, there are problems that only occur for people from specific backgrounds, or which play out differently. This question can be used to highlight that.
      • +
      +
    • +
    +

    You can feel free to add whatever other FAQs seem appropriate. You should also expect to grow the FAQ in response to questions that come up on the PR.

    +

    The review process

    +

    When you open a status quo PR, people will start to comment on it. These comments should always be constructive, with the goal not of negating the story but of making it more precise or more persuasive. Ideally, you should respond to every comment in one of two ways:

    +
      +
    • Adjust the story with more details or to correct factual errors.
    • +
    • Add something to the story's FAQ to explain the confusion. +
        +
      • If the question is already covered by a FAQ, you can just refer the commenter to that.
      • +
      +
    • +
    +

    The goal is that, at the end of the review process, the status quo story has a lot more details that address the major questions people had.

    +

    🤔 Frequently Asked Questions

    +

    What is the process to propose a status quo story?

    + +

    What if my story applies to multiple characters?

    +
      +
    • Look at the "morals" of your story and decide which character will let you get those across the best.
    • +
    • Use the FAQ to talk about how other characters might have been impacted.
    • +
    • If the story would play out really differently for other characters, maybe write it more than once!
    • +
    +

    How much detail should I give? How specific should I be?

    +
      +
    • Detailed is generally better, but only if those details are helpful for understanding the morals of your story.
    • +
    • Specific is generally better, since an abstract story doesn't feel as real.
    • +
    +

    What should I do when I'm trying to be specific but I have to make an arbitrary choice?

    +

    Add a FAQ with some of the other alterantives, or just acknowledging that you made an arbitrary choice there.

    +

    None of the characters are a fit for my story.

    +

    It doesn't have to be perfect. Pick the one that seems like the closest fit. If you really feel stuck, though, come talk to us on Zulip about it!

    +

    How should I describe the "evidence" for my status quo story?

    +

    The more specific you can get, the better. If you can link to tweets or blog posts, that's ideal. You can also add notes into the conversations folder and link to those. Of course, you should be sure people are ok with that.

    +

    ❓ How to vision: "Shiny future" stories

    +

    We want all Async Rust users and their hopes and dreams for what Async Rust should be in the future to be reflected in the async vision doc, so please help us by writing 'shiny future' stories about what you would like async Rust to look like! Remember: we are in a brainstorming period. Please feel free to leave comments in an effort to help someone improve their PRs, but if you would prefer a different approach, you are better off writing your own story. (In fact, you should write your own story even if you like their approach but just have a few alternatives that are worth thinking over.)

    +

    TL;DR

    +

    Just want to get started? Here are quick instructions to get you going:

    +
      +
    • To write your own story: + +
    • +
    +

    How to open a PR

    +

    If you have an idea you'd like to write about, please open a PR using this template and adding a new file into the shiny_future directory. Do not add your file to SUMMARY.md, that will create conflicts. We'll do it after merging.

    +

    Goals of a shiny future PR

    +

    Shiny future PRs "retell" the story from one or more status quo PRs. The story is now taking place 2-3 years in the future, when Async Rust has had the chance to make all sorts of improvements. Shiny future stories are aspirational: we don't have to know exactly how they will be achieved yet! (Of course, it never hurts to have a plan too.)

    +

    Like status quo stories, each shiny future story is always presented from the POV of a particular character. They should be detailed. Sometimes this will mean you have to make stuff up, like method names or other details -- you can use the FAQ to spell out areas of particular uncertainty.

    +

    The role of the FAQ

    +

    Every shiny future PR includes a FAQ. This FAQ should always include answers to some standard questions:

    +
      +
    • What status quo story or stories are you retelling? +
        +
      • Link to the status quo stories here. If there isn't a story that you're retelling, write it!
      • +
      +
    • +
    • What is Alan most excited about in this future? Is he disappointed by anything? +
        +
      • Think about Alan's top priority (performance) and the expectations he brings (ease of use, tooling, etc). How do they fare in this future?
      • +
      +
    • +
    • What is Grace most excited about in this future? Is she disappointed by anything? +
        +
      • Think about Grace's top priority (memory safety) and the expectations she brings (still able to use all the tricks she knows and loves). How do they fare in this future?
      • +
      +
    • +
    • What is Niklaus most excited about in this future? Is he disappointed by anything? +
        +
      • Think about Niklaus's top priority (accessibility) and the expectations he brings (strong community that will support him). How do they fare in this future?
      • +
      +
    • +
    • What is Barbara most excited about in this future? Is she disappointed by anything? +
        +
      • Think about Barbara's top priority (productivity, maintenance over time) and the expectations she brings (fits well with Rust). How do they fare in this future?
      • +
      +
    • +
    • If this is an alternative to another shiny future, which one, and what motivated you to write an alternative? +
        +
      • Cite the story. Be specific, but focus on what you like about your version, not what you dislike about the other.
      • +
      • If this is not an alternative, you can skip this one. =)
      • +
      +
    • +
    • What projects benefit the most from this future?
    • +
    • Are there any projects that are hindered by this future?
    • +
    +

    There are also some optional questions:

    +
      +
    • What are the incremental steps towards realizing this shiny future? +
        +
      • Talk about the actual work we will do. You can link to design docs or even add new ones, as appropriate.
      • +
      • You don't have to have the whole path figured out yet!
      • +
      +
    • +
    • Does realizing this future require cooperation between many projects? +
        +
      • For example, if you are describing an interface in libstd that runtimes will have to implement, talk about that.
      • +
      +
    • +
    +

    You can feel free to add whatever other FAQs seem appropriate. You should also expect to grow the FAQ in response to questions that come up on the PR.

    +

    The review process

    +

    When you opan a status quo PR, people will start to comment on it. These comments should always be constructive. They usually have the form of asking "in this future, what does NAME do when X happens?" or asking you to elaborate on other potential problems that might arise. Ideally, you should respond to every comment in one of two ways:

    +
      +
    • Adjust the story with more details or to correct factual errors.
    • +
    • Add something to the story's FAQ to explain the confusion. +
        +
      • If the question is already covered by a FAQ, you can just refer the commenter to that.
      • +
      +
    • +
    +

    The goal is that, at the end of the review process, the status quo story has a lot more details that address the major questions people had.

    +

    🤔 Frequently Asked Questions

    +

    What is the process to propose a shiny future story?

    + +

    What character should I use for my shiny future story?

    +
      +
    • Usually you would use the same character from the status quo story you are retelling.
    • +
    • If for some reason you chose a different character, add a FAQ to explain why.
    • +
    +

    What do I do if there is no status quo story for my shiny future?

    +

    Write the status quo story first!

    +

    What happens when there are multiple "shiny future" stories about the same thing?

    +

    During this brainstorming period, we want to focus on getting as many ideas as we can. Having multiple "shiny futures" that address the same problem is a feature, not a bug, as it will let us mix-and-match later to try and find the best overall plan.

    +

    How much detail should I give? How specific should I be?

    +
      +
    • Detailed is generally better, but only if those details are helpful for understanding the morals of your story.
    • +
    • Specific is generally better, since an abstract story doesn't feel as real.
    • +
    +

    What is the "scope" of a shiny future story? Can I tell shiny future stories that involve ecosystem projects?

    +

    All the stories in the vision doc are meant to cover the full "end to end" experience of using async Rust. That means that sometimes they will take about things that are really part of projects that are outside of the Rust org. For example, we might write a shiny future that involves how the standard library has published standard traits for core concepts and those concepts have been adopted by libraries throughout the ecosystem. There is a FAQ that asks you to talk about what kinds of coordinate between projects will be required to realize this vision.

    +

    What do I do when I get to details that I don't know yet?

    +

    Take your best guess and add a FAQ explaining which details are still up in the air.

    +

    Do we have to know exactly how we will achieve the "shiny future"?

    +

    You don't have to know how your idea will work yet. We will eventually have to figure out the precise designs, but at this point we're more interested in talking about the experience we aim to create. That said, if you do have plans for how to achieve your shiny future, you can also include [design docs] in the PR, or add FAQ that specify what you have in mind (and perhaps what you have to figure out still).

    +

    What do I do if somebody leaves a comment about how my idea will work and I don't know the answer?

    +

    Add it to the FAQ!

    +

    What if we write a "shiny future" story but it turns out to be impossible to implement?

    +

    Glad you asked! The vision document is a living document, and we intend to revisit it regularly. This is important because it turns out that predicting the future is hard. We fully expect that some aspects of the "shiny future" stories we write are going to be wrong, sometimes very wrong. We will be regularly returning to the vision document to check how things are going and adjust our trajectory appropriately.

    +

    ❓ How to vision: Constructive comments

    +

    Figuring out the future is tricky business. We all know the internet is not always a friendly place. We want this discussion to be different.

    +

    Be respectful and supportive

    +

    Writing a "status quo" or "shiny future" story is an act of bravery and vulnerability. In the status quo, we are asking people to talk about the things that they or others found hard, to admit that they had trouble figuring something out. In the case of the shiny future, we're asking people to put out half-baked ideas so that we can find the seeds that will grow into something amazing. It doesn't take much to make that go wrong.

    +

    Comment to understand or improve, not to negate or dissuade

    +
    +

    “Most people do not listen with the intent to understand; they listen with the intent to reply.”

    +

    -- Stephen Covey

    +
    +

    The golden rule is that when you leave a comment, you are looking to understand or improve the story.

    +

    For status quo stories, remember that these are true stories about people's experiences -- they can't be wrong (though they could be inaccurate). It may be that somebody tries for days to solve a problem that would've been easy if they had just known to call a particular method. That story is not wrong, it's an opportunity to write a shiny future story in which you explain how they would've learned about that method, or perhaps about how that method would become unnecessary.

    +

    For shiny future stories, even if you don't like the idea, you should ask comments with the goal of better understanding what the author likes about it. Understanding that may give you an idea for how to get those same benefits in a way that you are happier with. It's also valid to encourage the author to elaborate on the impact their story will have on different characters.

    +

    You might just want to write your own story

    +

    Remember, opening your own PR is free (In fact, we're giving an award for being "most prolific"). If you find that you had a really different experience than a status quo story, or you have a different idea for a shiny future, consider just writing your own PR instead of commenting negatively on someone else's. The goal of the brainstorming phase is to put a lot of alternatives, so that we can look for opportunities to combine them and make something with the best of both.

    +

    Good questions for status quo stories

    +

    Here are some examples of good questions for "status quo" stories:

    +
      +
    • Tell me more about this step. What led NAME to do X?
    • +
    • What do you think OTHER_NAME would have done here?
    • +
    • Can you be more specific about this point? What library did they use?
    • +
    +

    Good questions for shiny future stories

    +

    Here are some examples of good questions for "shiny future" stories:

    +
      +
    • How does NAME do X in this future?
    • +
    • It seems like this would interfere with X, which is important for application A. How would NAME handle that case in this future?
    • +
    +

    You should not be afraid to raise technical concerns -- we need to have a robust technical discussion! But do so in a way that leaves room to find an answer that satisfies both of you.

    +

    ❓ How to vision: Awards

    +

    At the end of the brainstorming period, we'll also vote on various awards to give to the status quo and shiny future PRs that were submitted.

    +

    Award categories

    +

    These are the award categories:

    +
      +
    • Most humorous story
    • +
    • Most creative story
    • +
    • Most supportive -- who left the most helpful comments?
    • +
    • Most prolific -- who wrote the most stories?
    • +
    • Most unexpected -- which status quo story (or shiny future) took you by surprise?
    • +
    • Most painful "status quo" story
    • +
    • Most ambitious "shiny future" story
    • +
    • Most extensive FAQ
    • +
    +

    However, if you have an idea for another award category, we are happy to take suggestions. One rule: the awards can't be negative (e.g., no "most unrealistic"), and they can't be about which thing is "best". That would work against the brainstorming spirit.

    +

    Voting

    +

    At the end of the brainstorming period, we're going to have a voting session to select which PRs and people win the awards. The winners will be featured in a blog post. 🏆

    +

    ✏️ Design tenets for async

    + + +
    StatusOwner
    ⚠️ Draft ⚠️nikomatsakis
    +

    Draft status. These tenets are a first draft. nikomatsakis plans to incorporate feedback and revise them before they are finalized.

    +

    The design tenets describe the key principles that drive our work on async. Hopefully, we are able to achieve and honor all of them all of the time. Sometimes, though, they come into conflict, and we have to pick -- in that case, we prefer the tenet earlier in the list.

    +
      +
    1. Minimal overhead. Rust Async I/O performance should compare favourably with any other language. In the extreme case, it should be possible to use async/await without any required allocation, although this is unlikely to be a common case in production systems.
    2. +
    3. Easy to get started, but able to do anything you want. We should make it simple to write Async I/O code and get things that work reasonably well, but it should be possible for people to obtain fine-grained control as needed.
    4. +
    5. Async is like sync, but with blocking points clearly identified. At the highest level, writing a simple program using asynchronous I/O in Rust should be analogous to writing one that uses synchronous I/O, except that one adds async in front of function declarations and adds .await after each call. We should aim for analogous design between synchronous and asynchronous equivalents. Similarly, streams should be like asynchronous iterators. One should be able to use the same sort of combinators with streams and to iterate over them in analogous ways.
    6. +
    7. No one true runtime. We need to be able to hook into existing runtimes in different environments, from embedded environments to runtimes like node.js. Specialized systems need specialized runtimes.
    8. +
    9. Library ecosystem is key. We want to have a strong ecosystem of async crates, utilities, and frameworks. This will require mechanisms to write libraries/utilities/frameworks that are generic and interoperable across runtimes.
    10. +
    +

    Stress tests

    +

    "Stress tests" are important use cases that tend to "stretch" the design. When we are contemplating changes, it's important to look over the stress tests and make sure that they all still work:

    +
      +
    • Single-threaded executors: Some systems tie each task to a single thread; such tasks should be able to access data that is not Send or Sync, and the executor for those tasks should be able to be fully optimized to avoid atomic accesses, etc.
    • +
    • Multi-threaded executors: Many systems migrate tasks between threads transparently, and that should be supported as well, though tasks will be required to be Send.
    • +
    • "Bring your own runtime": The Rust language itself should not require that you start threads, use epoll, or do any other particular thing.
    • +
    • Zero allocation, single task: Embedded systems might want to be able to have a single task that is polled to completion and which does no allocation whatsoever.
    • +
    • Multiple runtimes in one process: Sometimes people have to combine systems, each of which come with their own event loop. We should avoid assuming there is one global event loop in the system.
    • +
    • Non-Rust based runtimes: Sometimes people want to integrate into event loops from other, non-Rust-based systems.
    • +
    • WebAssembly in the browser: We want to integrate with WebAssembly.
    • +
    +

    🙋‍♀️ Cast of characters

    +

    What is this?

    +

    We've created four characters that we use to guide our thinking. These characters are the protagonists of our status quo and shiny future stories, and they help us to think about the different kinds of priorities and expectations that people bring to Async Rust. Having names and personalities also makes the stories more fun and approachable.

    +

    The characters

    +
      +
    • Alan: the experienced "GC'd language" developer, new to Rust +
        +
      • Top priority: performance -- that's what he is not getting from current GC'd language
      • +
      • Expectations: absence of memory safety bugs (he gets that now from his GC), strong ecosystem, great tooling
      • +
      +
    • +
    • Grace: the systems programming expert, new to Rust +
        +
      • Top priority: memory safety -- that's what she is not getting from C/C++
      • +
      • Expectations: able to do all the things she's used to from C/C++
      • +
      +
    • +
    • Niklaus: new programmer from an unconventional background +
        +
      • Top priority: accessibility -- he's learning a lot of new things at once
      • +
      • Expectations: community -- the community enabled him to have early success, and he is excited to have it support him and him grow more
      • +
      +
    • +
    • Barbara: the experienced Rust developer +
        +
      • Top priority: overall productivity and long-term maintenance -- she loves Rust, and wants to see it extended to new areas; she has an existing code base to maintain
      • +
      • Expectations: elegance and craftsmanship, fits well with Rust
      • +
      +
    • +
    +

    🤔 Frequently Asked Questions

    +

    Where do the names come from?

    +

    Famous programming language designers and theorists. Alan Turing, Grace Hopper, Niklaus Wirth, and Barbara Liskov.

    +

    I don't see myself in these characters. What should I do?

    +

    Come to Zulip and talk to us about it! Maybe they need to be adjusted!

    +

    I see myself in more than one of these characters!

    +

    Yeah, me too.

    +

    🙋‍♀️ Cast of characters

    +

    Alan: the experienced "GC'd language" developer, new to Rust

    +

    Variant A: Dynamic languages

    +

    Alan has been programming for years. He has built systems in Ruby on Rails, node.js, and used Django too. Lately he's been learning Rust and he is tinkering with integrating Rust into some of his projects to get better performance and reliability. He's also building some projects entirely in Rust.

    +

    Variant B: Java

    +

    Alan works at a Java shop. They run a number of network services built in Java, along with some that use Kotlin or Scala. He's very familiar with the Java ecosystem and the tooling that the JVM offers. He's also sometimes had to tweak his code to work around garbage collector latencies or to reduce overall memory usage. He's curious to try porting some systems to Rust to see how it works.

    +

    Variant C: Kotlin

    +

    Alan is developing networking programs in Kotlin. He loves Kotlin for its expressive syntax and clean integration with Java. Still, he sometimes encounters problems running his services due to garbage collection latencies or overall memory usage. He's heard that Rust can be fun to use too, and is curious to try it out.

    +

    🤔 Frequently Asked Questions

    +

    What does Alan want most from Async Rust?

    +
      +
    • The promise of better performance and memory usage than the languages he's been using. Rust's safety guarantees are important too; he's considered using C++ in the past but always judged the maintenance burden would be too high.
    • +
    +

    What expectations does Alan bring from his current environment?

    +
      +
    • A focus on ease of use, a strong ecosystem, and great tooling.
    • +
    +

    🙋‍♀️ Cast of characters

    +

    Grace: the systems programming expert, new to Rust

    +

    Grace has been writing C and C++ for a number of years. She's accustomed to hacking lots of low-level details to coax the most performance she can from her code. She's also experienced her share of epic debugging sessions resulting from memory errors in C. She's intrigued by Rust: she likes the idea of getting the same control and performance she gets from C but with the productivity benefits she gets from memory safety. She's currently experimenting with introducing Rust into some of the systems she works on, and she's considering Rust for a few greenfield projects as well.

    +

    🤔 Frequently Asked Questions

    +

    What does Grace want most from Async Rust?

    +

    Grace is most interested in memory safety. She is comfortable with C and C++ but she's also aware of the maintenance burden that arises from the lack of memory safety.

    +

    What expectations does Grace bring from her current environment?

    +
      +
    • Grace expects to be able to get the same performance she used to get from C or C++.
    • +
    • Grace is accustomed to various bits of low-level tooling, such as gdb or perf. It's nice if Rust works reasonably well with those tools, but she'd be happy to have access to better alternatives if they were available. She's happy using cargo instead of make, for example.
    • +
    +

    🙋‍♀️ Cast of characters

    +

    Niklaus: new programmer from an unconventional background

    +

    He's always been interested in programming but doesn't have experience with it. He's been working as a tech writer and decided to dip his toe in by opening PRs to improve the documentation for one of the libraries he was playing with. The feedback was positive so he fixed a small bug. He's now considering getting involved in a deeper way.

    +

    🤔 Frequently Asked Questions

    +

    What does Niklaus want most from Async Rust?

    +
      +
    • Niklaus values accessibility. He's learning a lot of new things at once and it can be overwhelming.
    • +
    +

    What expectations does Niklaus bring from his current environment?

    +
      +
    • Niklaus expects a strong and supportive community. The Rust community enabled him to have early success, and he is excited to have it support him and for it to help him grow more.
    • +
    +

    🙋‍♀️ Cast of characters

    +

    Barbara: the experienced Rust developer

    +

    Barbara has been using Rust since the 0.1 release. She remembers some of the crazy syntax in Ye Olde Rust of Yore and secretly still misses the alt keyword (don't tell anyone). Lately she's maintaining various projects in the async space.

    +

    🤔 Frequently Asked Questions

    +

    What does Barbara want most from Async Rust?

    +
      +
    • She is using Rust for its feeling of productivity, and she expects Async Rust to continue in that tradition.
    • +
    • She maintains several existing projects, so stability is important to her.
    • +
    +

    What expectations does Barbara bring from her current environment?

    +
      +
    • She wants a design that feels like the rest of Rust.
    • +
    • She loves Rust and she expects Async Rust to share its overall values.
    • +
    +

    ⚡ Projects

    +

    What is this?

    +

    This section describes various sample projects that are referenced in our stories. Each project is meant to represent some domain that we are targeting.

    +

    List of projects

    +

    See the sidebar for the full list.

    +

    Don't find a project like yours here?

    +

    Don't despair! This is just a list of fun projects that we've needed for stories. If you'd like to add a project for your story, feel free to do so! Note though that you may find that some existing project has the same basic characteristics as your project, in which case it's probably better to reuse the existing project.

    +

    ⚡ Projects: NAME (DOMAIN)

    +

    This is a template for adding new projects. See the instructions for more details on how to add new project!

    +

    What is this?

    +

    This is a sample project for use within the various "status quo" or "shiny future" stories.

    +

    Description

    +

    Give a fun description of the project here! Include whatever details are needed.

    +

    🤔 Frequently Asked Questions

    +

    What makes this project different from others?

    +

    Does this project require a custom tailored runtime?

    +

    How much of this project is likely to be built with open source components from crates.io?

    +

    What is of most concern to this project?

    +

    What is of least concern to this project?

    +

    ⚡ Projects: MonsterMesh (embedded sensors)

    +

    What is this?

    +

    This is a sample project for use within the various "status quo" or "shiny future" stories.

    +

    Description

    +

    "MonsterMesh" is a sensor mesh on microcontrollers using Rust. The nodes communicate wirelessly to relay their results. These sensors are built using very constrained and low power hardware without operating system, so the code is written in a #[no_std] environment and is very careful about available resources.

    +

    🤔 Frequently Asked Questions

    +

    What makes embedded projects like MonsterMesh different from others?

    +
      +
    • Embedded developers need to write error-free applications outside of the comfort zone of an operating system. Rust helps to prevent many classes of programming errors at compile time which inspires confidence in the software quality and and cuts time intensive build-flash-test iterations.
    • +
    • Embedded developers needs good hardware abstraction. Frameworks in other languages do not provide the sophisticated memory mapped IO to safe type abstraction tooling which have been created by the Rust teams.
    • +
    • Embedded developers care about hard real time capabilities; the concept of "you only pay for what you use" is very important in embedded applications. The combination of the inherently asynchronous interrupt handling of microcontrollers with the Rust async building blocks are a perfect match to effortlessly create applications with hard realtime capabilities.
    • +
    • Embedded developers are particularly appreciative of strong tooling support. The availability of the full environment via rustup and the integration of the full toolchain with cargo and build.rs make her very happy because she can focus on what she does best instead of having regular fights with the environment.
    • +
    +

    Does MonsterMesh require a custom tailored runtime?

    +

    Yes! The tradeoffs for an embedded application like MonsterMesh and a typical server are very different. Further, most server-grade frameworks are not #[no_std] compatible and far exceeded the available footprint on the sensor nodes.

    +

    How much of this project is likely to be built with open source components from crates.io?

    +

    Having no operating system to provide abstractions to it, MonsterMesh will contain all the logic it needs to run. Much of this, especially around the hardware-software-interface is unlikely to be unique to MonsterMesh and will be sourced from crates.io. However, the further up the stack one goes, the more specialized the requirements will become.

    +

    How did you pick the name?

    +

    So glad you asked! Please watch this entertaining video.

    +

    ⚡ Projects: DistriData (Generic Infrastructure)

    +

    What is this?

    +

    This is a sample project for use within the various "status quo" or "shiny future" stories.

    +

    Description

    +

    DistriData is the latest in containerized, micro-service distributed database technology. Developed completely in the open as part of Cloud Native Computing Foundation, this utility is now deployed in a large portion of networked server applications across the entire industry. Since it's so widely used, DistriData has to balance flexibility with having sensible defaults.

    +

    🤔 Frequently Asked Questions

    +

    What makes DistriData different from others?

    +
      +
    • This project is meant to be used in many different ways in many different projects, and is not unique to any one application.
    • +
    • Many of those using this project will not even need or want to know that it's written in Rust.
    • +
    +

    Does DistriData require a custom tailored runtime?

    +

    DistriData's concerns are at a higher level than the runtime. A fast, reliable, and resource conscious general purpose runtime will serve DistriData's needs.

    +

    How much of this project is likely to be built with open source components from crates.io?

    +

    Yes, while DistriData receives many contributions, it's important to the team that when possible they utilize existing technologies that developers are already familiar with to ensure that contributing to the project is easy.

    +

    What is of most concern to this project?

    +

    It needs to be resource conscious, fast, reliable, but above all else it needs to be easy to run, monitor, and maintain.

    +

    What is of least concern to this project?

    +

    While DistriData is resource conscious, it's not resource starved. There's no need to make life difficult to save on a memory allocation here or there.

    +

    ⚡ Projects: TrafficMonitor (Custom Infrastructure)

    +

    What is this?

    +

    This is a sample project for use within the various "status quo" or "shiny future" stories.

    +

    Description

    +

    TrafficMonitor is a utility written by AmoogleSoft, a public cloud provider, for monitoring network traffic as it comes into its data centers to prevent things like distributed denial-of-service attacks. It monitors all network traffic, looking for patterns, and deciding when to take action against certain threat vectors. TrafficMonitor runs across almost all server racks in a data center, and while it does run on top of an operating system, it is resource conscious. It's also extremely important that TrafficMonitor stay running and handle network traffic with as few "hiccups" as possible. TrafficMonitor is highly tuned to the needs of AmoogleSoft's cloud offering and won't run anywhere else.

    +

    🤔 Frequently Asked Questions

    +

    What makes networking infrastructure projects like TrafficMonitor different from others?

    +
      +
    • Networking infrastructure powers entire datacenters or even public internet infrastructure, and as such it is imperative that it run without failure.
    • +
    • It is also extremely important that such projects take few resources as possible. Being on an operating system and large server racks may mean that using the standard library is possible, but memory and CPU usage should be kept to a minimum.
    • +
    • This project is worked on by software developers with different backgrounds. Some are networking infrastructure experts (usually using C) while others have experience in networked applications (usually using GCed languages like Java, Go, or Node).
    • +
    +

    Does TrafficMonitor require a custom tailored runtime?

    +

    Maybe? TrafficMonitor runs on top of a full operating system and takes full advantage of that operating systems networking stack. It's possible that a runtime meant for server workloads will work with TrafficMonitor.

    +

    How much of this project is likely to be built with open source components from crates.io?

    +
      +
    • TrafficMonitor is highly specialized to the internal workings of AmoogleSoft's public cloud offering. Thus, "off-the-shelf" solutions will only work if they're highly flexible and highly tuneable.
    • +
    • TrafficMonitor is central to AmoogleSoft's success meaning that getting things "just right" is much more important than having something from crates.io that mostly works but requires little custom tuning.
    • +
    +

    What is of most concern to this project?

    +
      +
    • Reliability is the number one concern. This infrastructure is at the core of the business - it needs to work extremely reliable. A close second is being easily monitorible. If something goes wrong, AmoogleSoft needs to know very quickly what the issue is.
    • +
    • AmoggleSoft is a large company with many existing custom tooling for building, monitoring, and deploying its software. TrafficMonitor has to play nicely in a world that existed long before it came around.
    • +
    +

    What is of least concern to this project?

    +

    AmoogleSoft is a large company with time and resources. High-level frameworks that remove control in favor of peak developer productivity is not what they're after. Sure, the easier things are to get working, the better, but that should not be at the sacrifice of control.

    +

    ⚡ Projects: YouBuy (Traditional Server Application)

    +

    What is this?

    +

    This is a sample project for use within the various "status quo" or "shiny future" stories.

    +

    Description

    +

    YouBuy is a growing e-commerce website that now has millions of users. The team behind YouBuy is struggling to keep up with traffic and keep server costs low. Having originally written YouBuy in a mix of Ruby on Rails and Node, the YouBuy team decides to rewrite many parts of their service in Rust which they've investigated and found to be performant while still allowing for high levels of abstraction they're used to.

    +

    🤔 Frequently Asked Questions

    +

    What makes YouBuy and other server applications different from others?

    +
      +
    • Many server applications are written in languages with garbage collectors. Many of the things that Rust forces users to care about are not first order concerns for those working on server applications (e.g., memory management, stack vs heap allocations, etc.).
    • +
    • Many server applications are written in languages without static type checking. The developers of YouBuy don't have much experience with statically typed languages and some of the developers early in their Rust learning journeys expressed frustration that they found it hard to get their programs to compile especially when using async constructs.
    • +
    +

    Does YouBuy require a custom tailored runtime?

    +

    YouBuy should be perfectly fine with a runtime from crates.io. In fact, their concern isn't at the runtime level but at the high-level server framework level.

    +

    How much of this project is likely to be built with open source components from crates.io?

    +

    YouBuy is in fierce competition with many other e-commerce sites. Therefore, the less that YouBuy engineers have to write themselves, the better. Ideally, YouBuy can focus 100% of its energy on features that differentiate it from its competition and none of its time on tweaking its networking stack.

    +

    What is of most concern to this project?

    +

    It seems like YouBuy is always on the verge of either becoming the next billion-dollar company with hundreds of millions of users or completely going out of business. YouBuy needs to be able to move fast and focus on the application business logic.

    +

    What is of least concern to this project?

    +

    Since moving fast is of primary concern, the ins and outs of the underlying networking stack are only of concern when something goes wrong. The hope is that that rarely if ever happens and when it does, it's easy to find the source of the issue.

    +

    ⚡ Projects: SLOW (Protocol implementation)

    +

    What is this?

    +

    This is a sample project for use within the various "status quo" or "shiny future" stories.

    +

    Description

    +

    SLOW is an open source implementation of a fancy new protocol. This protocol uses a mix of TCP and UDP packets and is designed to operate particularly well over high latency, low throughput links.

    +

    🤔 Frequently Asked Questions

    +

    What makes this project different from others?

    +

    SLOW is a library, not an application.

    +

    Does this project require a custom tailored runtime?

    +

    Ideally, SLOW would be developed in an independent way that permits it to be used across many runtimes in a variety of different environments.

    +

    How much of this project is likely to be built with open source components from crates.io?

    +

    SLOW builds on other generic libraries available from crates.io. For example, it would like to make use of compression algorithms that others have written, or to use future adapters.

    +

    What is of most concern to this project?

    +

    Uh, I don't really know! If you develop software like this, maybe open a PR and tell me! --nikomatsakis

    +

    What is of least concern to this project?

    +

    Uh, I don't really know! If you develop software like this, maybe open a PR and tell me! --nikomatsakis

    +

    Why is this called SLOW?

    +

    It's like QUIC, but slow! Get it? Get it? :D

    +

    😱 Status quo stories

    +

    🚧 Under construction! Help needed! 🚧

    +

    We are still in the process of drafting the vision document. The stories you see on this page are examples meant to give a feeling for how a status quo story looks; you can expect them to change. We encourage you to propose your own by opening a PR -- see the "How to vision" page for instructions and details.

    +

    What is this

    +

    The "status quo" stories document the experience of using Async Rust today. Each story narrates the challenges encountered by one of our characters as they try (and typically fail in dramatic fashion) to achieve their goals.

    +

    Writing the "status quo" stories helps us to compensate for the curse of knowledge: the folks working on Async Rust tend to be experts in Async Rust. We've gotten used to the workarounds required to be productive, and we know the little tips and tricks that can get you out of a jam. The stories help us gauge the cumulative impact all the paper cuts can have on someone still learning their way around. This gives us the data we need to prioritize.

    +

    Based on a true story

    +

    These stories may not be true, but they are not fiction. They are based on real-life experiences of actual people. Each story contains a "Frequently Asked Questions" section referencing sources used to create the story. In some cases, it may link to notes or summaries in the conversations section, though that is not required. The "Frequently Asked Questions" section also contains a summary of what the "morals" of the story are (i.e., what are the key takeaways), along with answers to questions that people have raised along the way.

    +

    The stories provide data we use to prioritize, not a prioritization itself

    +

    Just because a user story is represented here doesn't mean we're going to be able to fix it right now. Some of these user stories will indicate more severe problems than others. As we consider the stories, we'll select some subset to try and address; that choice is reflected in the roadmap.

    +

    Metanarrative

    +

    What follows is a kind of "metanarrative" of using async Rust that summarizes the challenges that are present today. At each point, we link to the various stories; you can read the full set in the table of contents on the left. We would like to extend this to also cover some of its glories, since reading the current stories is a litany of difficulties, but obviouly we see great promise in async Rust. Note that many stories here appear more than once.

    +

    Rust strives to be a language that brings together performance, productivity, and correctness. Rust programs are designed to surface bugs early and to make common patterns both ergonomic and efficient, leading to a sense that "if it compiles, it generally works, and works efficiently". Async Rust aims to extend that same feeling to an async setting, in which a single process interweaves numerous tasks that execute concurrently. Sometimes this works beautifully. However, other times, the reality falls short of that goal.

    +
    Making hard choices from a complex ecosystem from the start +

    The problems begin from the very first moment a user starts to try out async Rust. The async Rust support in Rust itself is very basic, consisting only of the core Future mechanism. Everything else -- including the basic async runtimes themselves -- lives in user space. This means that users must make a number of choices rom the very beginning:

    +
      +
    • what runtime to use + +
    • +
    • what http libraries to use + +
    • +
    • basic helpers and utility crates are hard to find, and there are many choices, often with subtle differences between them + +
    • +
    • Furthermore, the async ecosystem is fractured. Choosing one library may entail choosing a specific runtime. Sometimes you may wind up with multiple runtimes running at once. + +
    • +
    • There is a lack of common, standardized abstractions, which means that often there are multiple attempts to establish common traits and different libraries will employ a distinct subset. +
        +
      • Sink is not implemented by async-std websockets
      • +
      • 🚧 No standardized lower-level traits for read, write, iterators in an async setting
      • +
      • 🚧 Lack of widely used higher-level abstractions (like those tower aims to provide)
      • +
      • 🚧 Tokio doesn't support the futures Stream trait because of stability concerns
      • +
      +
    • +
    • Some of the problems are due to the design of Rust itself. The coherence rules in particular. +
        +
      • 🚧 Write about how coherence makes it impossible to establish
      • +
      +
    • +
    +
    +
    Once your basic setup is done, the best design patterns are subtle and not always known. +

    Writing async programs turns out to have all kinds of subtle tradeoffs. Rust aims to be a language that gives its users control, but that also means that users wind up having to make a lot of choices, and we don't give them much guidance.

    + +
    +
    Even once you've chosen a pattern, gettings things to compile can be a challenge. + +
    +
    Once you get it to compile, things don't "just work" at runtime, or they may be unexpectedly slow. + +
    +
    When you have those problems, you can't readily debug them or get visibility into what is going on. + +
    +
    Rust has always aimed to interoperate well with other languages and to fit itself into every niche, but that's harder with async. +
      +
    • Runtimes like tokio and async-std are not designed to "share ownership" of the event loop with foreign runtimes + +
    • +
    • Embedded environments can have pretty stringent requirements; Future was designed to be minimal, but perhaps not minimal enough + +
    • +
    • Evolving specs for C and C++ require careful thought to integrate with async Rust's polling model +
        +
      • 🚧 Convert these notes on C++ into a status quo story
      • +
      • 🚧 Write about the challenges of io-uring integration
      • +
      +
    • +
    • Advanced new techniques like Ghostcell may not fit into the traits as designed
    • +
    +
    +

    😱 Status quo stories: Template

    +

    This is a template for adding new "status quo" stories. To propose a new status quo PR, do the following:

    +
      +
    • Create a new file in the status_quo directory named something like Alan_tries_to_foo.md or Grace_does_bar.md, and start from the raw source from this template. You can replace all the italicized stuff. :)
    • +
    • Do not add a link to your story to the SUMMARY.md file; we'll do it after merging, otherwise there will be too many conflicts.
    • +
    +

    For more detailed instructions, see the How To Vision: Status Quo page!

    +

    If you're looking for ideas of what to write about, take a look at the open issues. You can also open an issue of your own to throw out an idea for others.

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Write your story here! Feel free to add subsections, citations, links, code examples, whatever you think is best.

    +

    🤔 Frequently Asked Questions

    +

    Here are some standard FAQ to get you started. Feel free to add more!

    +

    What are the morals of the story?

    +

    Talk about the major takeaways-- what do you see as the biggest problems.

    +

    What are the sources for this story?

    +

    Talk about what the story is based on, ideally with links to blog posts, tweets, or other evidence.

    +

    Why did you choose NAME to tell this story?

    +

    Talk about the character you used for the story and why.

    +

    How would this story have played out differently for the other characters?

    +

    In some cases, there are problems that only occur for people from specific backgrounds, or which play out differently. This question can be used to highlight that.

    +

    😱 Status quo stories: Alan tries to cache requests, which doesn't always happen.

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]!

    +

    The story

    +

    Alan is working on an HTTP server. The server makes calls to some other service. The performance of the downstream service is somewhat poor, so Alan would like to implement some basic caching.

    +

    Alan writes up some code which does the caching:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn get_response(&mut self, key: String) {
    +    // Try to get the response from cache
    +    if let Some(cached_response) = self.cache.get(key) {
    +        self.channel.send(cached_response).await;
    +        return;
    +    }
    +
    +    // Get the response from the downstream service
    +    let response = self.http_client.make_request(key).await;
    +    self.channel.send(response).await;
    +    
    +    // Store the response in the cache
    +    self.cache.set(key, response);
    +}
    +}
    +
    +

    Alan is happy with how things are working, but notices every once in a while the downstream service hangs. To prevent that, Alan implements a timeout.

    +

    He remembers from the documentation for his favorite runtime that there is the race function which can kick off two futures and polls both until one completes (similar to tokio's select and async-std's race for example).

    +
    
    +#![allow(unused)]
    +fn main() {
    +runtime::race(timeout(), get_response(key)).await
    +}
    +
    +

    The bug

    +

    Alan ships to production but after several weeks he notices some users complaining that they receive old data.

    +

    Alan looks for help. The compiler unfortunately doesn't provide any hints. He turns to his second best friend clippy, who cannot help either. +Alan tries debugging. He uses his old friend println!. After hours of working through, he notices that sometimes the line that sets the response in the cache never gets called.

    +

    The solution

    +

    Alan goes to [Barbara][] and asks why in the world that might be ⁉️

    +

    💡 Barbara looks through the code and notices that there is an await point between sending the response over the channel and setting the cache.

    +

    Since the get_response future can be dropped at each available await point, it may be dropped after the http request has been made, but before the response has successfully been sent over the channel, thus not executing the remaining instructions in the function.

    +

    This means the cache might not be set.

    +

    Alan fixes it by setting the cache before sending the result over the channel. 🎉

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn get_response(&mut self, key: String) {
    +    // ... cache miss happened here
    +
    +    // We perform the HTTP request and our code might continue
    +    // after this .await once the HTTP request is complete
    +    let response = self.http_client.make_request(key).await;
    +
    +    // Immediately store the response in the cache
    +    self.cache.set(key, response);
    +
    +    self.channel.send(response).await;
    +}
    +}
    +
    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Futures can be "canceled" at any await point. Authors of futures must be aware that after an await, the code might not run. +
        +
      • This is similar to panic safety but way more likely to happen
      • +
      +
    • +
    • Futures might be polled to completion causing the code to work. But then many years later, the code is changed and the future might conditionally not be polled to completion which breaks things.
    • +
    • The burden falls on the user of the future to poll to completion, and there is no way for the lib author to enforce this - they can only document this invariant.
    • +
    • Diagnosing and ultimately fixing this issue requires a fairly deep understanding of the semantics of futures.
    • +
    • Without a Barbara, it might be hard to even know where to start: No lints are available, Alan is left with a normal debugger and println!.
    • +
    +

    What are the sources for this story?

    +

    The relevant sources of discussion for this story have been gathered in this github issue.

    +

    Why did you choose Alan to tell this story?

    +

    Alan has enough experience and understanding of push based async languages to make the assumptions that will trigger the bug.

    +

    How would this story have played out differently for the other characters?

    +

    This story would likely have played out the same for almost everyone but Barbara, who has probably been bitten by that already. +The debugging and fixing time would however probably have varied depending on experience and luck.

    +

    😱 Status quo stories: Alan finds dropping database handles is hard.

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The problem

    +

    Alan has been adding an extension to YouBuy that launches a singleton actor which interacts with a Sqlite database using the sqlx crate. The Sqlite database only permits a single active connection at a time, but this is not a problem, because the actor is a singleton, and so there only should be one at a time. He consults the documentation for sqlx and comes up with the following code to create a connection and do the query he needs:

    +
    use sqlx::Connection;
    +
    +#[async_std::main]
    +async fn main() -> Result<(), sqlx::Error> {
    +    // Create a connection
    +
    +    let conn = SqliteConnection::connect("sqlite::memory:").await?;
    +
    +    // Make a simple query to return the given parameter
    +    let row: (i64,) = sqlx::query_as("SELECT $1")
    +        .bind(150_i64)
    +        .fetch_one(&conn).await?;
    +
    +    assert_eq!(row.0, 150);
    +
    +    Ok(())
    +}
    +
    +

    Things seem to be working fairly well but sometimes when he refreshes the page he encounters a panic with the message "Cannot open a new connection: connection is already open". He is flummoxed.

    +

    Searching for the Solution

    +

    Alan tries to figure out what happened from the logs, but the only information he sees is that a new connection has been received. Alan turns to the documentation for the sqlx crate to see if there are flags that might enable extra instrumentation but he can't find any.

    +

    He's a bit confused, because he's accustomed to having things generally be cleaned up automatically when they get dropped (for example, dropping a File will close it). Searching the docs, he sees the close method, but the comments confirm that he shouldn't have to call it explicitly: "This method is not required for safe and consistent operation. However, it is recommended to call it instead of letting a connection drop as the database backend will be faster at cleaning up resources." Still, just in case, he decides to add a call to close into his code. It does seem to help some, but he is still able to reproduce the problem if he refreshes often enough. Feeling confused, he adds a log statement right before calling close to see if it is working:

    +
    
    +#![allow(unused)]
    +fn main() {
    +use sqlx::Connection;
    +
    +#[async_std::main]
    +async fn do_the_thing() -> Result<(), sqlx::Error> {
    +    // Create a connection
    +    let conn = SqliteConnection::connect("sqlite::memory:").await?;
    +
    +    // Make a simple query to return the given parameter
    +    let row: (i64,) = sqlx::query_as("SELECT $1")
    +        .bind(150_i64)
    +        .fetch_one(&conn).await?; // <----- if this await is cancelled, doesn't help
    +
    +    assert_eq!(row.0, 150);
    +    
    +    // he adds this:
    +    log!("closing the connection");
    +    conn.close();
    +
    +    Ok(())
    +}
    +}
    +
    +

    He observes that in the cases where he has the problem the log statement never executes. He asks Barbara for help and she points him to this gist that explains how await can be canceled, and cancellation will invoke the destructors for things that are in scope. He reads the source for the SqliteConnection destructor and finds that destructor spawns a task to actually close the connection.

    +

    He realizes there is a race condition and the task may not have actually closed the connection before do_the_thing is called a second time. At this point, he is feeling pretty frustrated!

    +

    Next, Alan seeks verification and validation of his understanding of the source code from the sqlx forum. Someone on the forum explains why the destructor launches a fresh task: Rust doesn't have a way to execute async operations in a destructor.

    +

    Finding the Solution

    +

    Alan briefly considers rearchitecting his application in more extreme ways to retain use of async, but he gives up and seeks a more straight forward solution. He discovers rusqlite, a synchronous database library and adopts it. This requires some rearchitecting but solves the problem.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Rust's async story is lacking a way of executing async operations in destructors. Spawning is a workaround, but it can have unexpected side-effects.
    • +
    • The story demonstrates solid research steps that Alan uses to understand and resolve his problem.
    • +
    • Completion of the Cancellation and timeouts docs may have been helpful. It's difficult to know how something absent might have improved the solution search process.
    • +
    +

    What are the sources for this story?

    +

    This specific story describes an actual bug encountered by Sergey Galich at 1Password.

    +

    Why did you choose Alan to tell this story?

    +

    His experience and understanding of other languages coupled with his desire to apply Rust would likely lead him to try solutions before deeply researching them.

    +

    How would this story have played out differently for the other characters?

    +

    This story would likely have played out the same for everyone.

    +

    😱 Status quo stories: Alan has an external event loop and wants to use futures/streams

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    As a first Rust Project, Alan decides to program his own IRC Client.

    +

    Since it is Alan's first Project in Rust, it is going to be a private one. He is going to use it on is Mac, so he decides to go with the cocoa crate to not have to learn any Framework specific quirks. This way Alan can get a feel of Rust itself.

    +

    Alans hopes and dreams

    +

    Despite a learning curve, he managed to creating a first window and have some buttons and menus works. After the initialisation is done, the App hand over control to CFRunLoop::Run.

    +

    Once Alan is happy with his Mock UI, he wants to make it actually do something. Reading about async Rust, he sees that several of the concepts there map pretty well to some core Cocoa concepts:

    +
      +
    • Promises => Futures
    • +
    • Observables => Streams.
    • +
    +

    Alan smiles, thinking he knows what and more importantly how to do this.

    +

    First time dealing with runtimes

    +

    Unfortunately, coming from frameworks like Angular or Node.js, Alan is not used to being responsible for driving the processing of Futures/Streams.

    +

    After reading up about Runtimes, his mental image of a runtime is something like:

    +
    
    +#![allow(unused)]
    +fn main() {
    +impl Runtime {
    +    fn run() {
    +        while !self.tasks.is_empty() {
    +            while let Some(task) = self.awoken_tasks.pop() {
    +                task.poll();
    +                //... remove finished task from 'tasks'
    +            }
    +        }
    +    }
    +}
    +}
    +
    +

    Coming from Single-Threaded Angular development, Alan decides to limit his new App to Single-Threaded. He does not feel like learning about Send/Sync/Mutex as well as struggling with the borrow checker.

    +

    On top of that, his App is not doing any heavy calculation so he feels async should be enough to not block the main thread too bad and have a hanging UI.

    +

    Fun time is over

    +

    Soon Alan realises that he cannot use any of those runtimes because they all take control of the thread and block. The same as the OS Event loop.

    +

    Alan spends quite some time to look through several runtime implementations. Ignoring most internal things, all he wants is a runtime that looks a bit like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +impl Runtime {
    +    fn make_progress() {
    +        while let Some(task) = self.awoken_tasks.pop() {
    +            task.poll();
    +            //... remove finished task from 'tasks'
    +        }
    +    }
    +    fn run() {
    +        while !self.tasks.is_empty() {
    +            self.make_progress();
    +        }
    +    }
    +}
    +}
    +
    +

    It could be so easy. Unfortunately he does not find any such solution. Having already looked through quite a bit of low level documentation and runtime code, Alan thinks about implementing his own runtime...

    +

    ...but only for a very short time. Soon after looking into it, he finds out that he has to deal with RawWakerVTable, RawWaker, Pointers. Worst of all, he has to do that without the safety net of the rust compiler, because this stuff is unsafe.

    +

    Reimplementing the OS Event Loop is also not an option he wants to take. See here +>Override run() if you want the app to manage the main event loop differently than it does by default. (This a critical and complex task, however, that you should only attempt with good reason).

    +

    The cheap way out

    +

    Alan gives up and uses a runtime in a seperate thread from the UI. This means he has to deal with the additional burden of syncing and he has to give up the frictionless use of some of the patterns he is accustomed to by treating UI events as Stream<Item = UIEvent>.

    +

    🤔 Frequently Asked Questions

    +
      +
    • What are the morals of the story? +
        +
      • Even though you come from a language that has async support, does not mean you are used to selecting und driving a runtime.
      • +
      • It should be possible to integrate runtimes into existing Event loops.
      • +
      +
    • +
    • What are the sources for this story? + +
    • +
    • Why did you choose Alan to tell this story? +
        +
      • The story deals about UI event loops, but the other characters could run into similar issues when trying to combine event loops from different systems/frameworks.
      • +
      +
    • +
    • Is this Apple specific? +
        +
      • No! You have the same issue with other OSs/Frameworks that don't already support Rust Async.
      • +
      +
    • +
    • How would this story have played out differently for the other characters? +
        +
      • Since this is a technical and not a skill or experience issue, this would play out similar for other Characters. Although someone with deep knowledge of those Event loops, like Grace, might be more willing to re-implement them.
      • +
      +
    • +
    +

    😱 Status quo stories: Alan hates writing a Stream

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Alan is used to writing web server applications using async sockets, but wants to try Rust to get that signature vroom vroom.

    +

    After a couple weeks learning Rust basics, Alan quickly understands async and await, and therefore has several routes built for his application that await a few things and then construct an HTTP response and send a buffered body. To build the buffered response bodies, Alan was reading a file, and then appending a signature, and putting that all into a single buffer of bytes.

    +

    Eventually, Alan realizes that some responses have enormous bodies, and would like to stream them instead of buffering them fully in memory. He's used the Stream trait before. Using it was very natural, and followed a similar pattern to regular async/await:

    +
    
    +#![allow(unused)]
    +fn main() {
    +while let Some(chunk) = body.next().await? {
    +    file.write_all(&chunk).await?;
    +}
    +}
    +
    +

    However, implementing Stream turns out to be rather different. With a quick search, he learned the simple way to turn a File into a Stream with ReaderStream, but the signing part was much harder.

    +

    Imperatively Wrong

    +

    Alan first hoped he could simply write signing stream imperatively, reusing his new knowledge of async and await, and assuming it'd be similar to JavaScript:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async* fn sign(file: ReaderStream) -> Result<Vec<u8>, Error> {
    +    let mut sig = Signature::new();
    +
    +    while let Some(chunk) = file.next().await? {
    +        sig.push(&chunk);
    +        yield Ok(chunk)
    +    }
    +
    +    yield Ok(sig.digest().await)
    +}
    +}
    +
    +

    Unfortunately, that doesn't work. The compiler first complains about the async* fn syntax:

    +
    error: expected item, found keyword `async`
    +  --> src/lib.rs:21:1
    +   |
    +21 | async* fn sign(file: ReaderStream) -> Result<Vec<u8>, Error> {
    +   | ^^^^^ expected item
    +
    +

    Less hopeful, Alan tries just deleting the asterisk:

    +
    error[E0658]: yield syntax is experimental
    +  --> src/lib.rs:27:9
    +   |
    +27 |         yield Ok(chunk)
    +   |         ^^^^^^^^^^^^^^^
    +   |
    +   = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
    +
    +

    After reading about how yield is experimental, and giving up reading the 100+ comments in the linked issue, Alan figures he's just got to implement Stream manually.

    +

    Implementing Stream

    +

    Implementing a Stream means writing async code in a way that doesn't feel like the async fn that Alan has written so far. He needs to write a poll function and it has a lot of unfamiliar concepts:

    +
      +
    • Pin
    • +
    • State machines
    • +
    • Wakers
    • +
    +

    Unsure of what the final code will look like, he starts with:

    +
    
    +#![allow(unused)]
    +fn main() {
    +struct SigningFile;
    +
    +impl Stream for SigningFile {
    +    type Item = Result<Vec<u8>, Error>;
    +    
    +    fn poll_next(self: Pin<&mut Self>, cx: &mut Context)
    +        -> Poll<Self::Item>
    +    {
    + 
    +    }
    +}
    +}
    +
    +

    Pin :scream:

    +

    First, he notices Pin. Alan wonders, "Why does self have bounds? I've only ever seen self, &self, and &mut self before". Curious, he reads the std::pin page, and a bunch of jargon about pinning data in memory. He also reads that this is useful to guarantee that an object cannot move, and he wonders why he cares about that. The only example on the page explains how to write a "self-referential struct", but notices it needs unsafe code, and that triggers an internal alarm in Alan: "I thought Rust was safe..."

    +

    After asking Barbara, Alan realizes that the types he's depending on are Unpin, and so he doesn't need to worry about the unsafe stuff. It's just a more-annoying pointer type.

    +

    State Machine

    +

    With Pin hopefully ignored, Alan next notices that in the imperative style he wanted originally, he didn't need to explicitly keep track of state. The state was simply the imperative order of the function. But in a poll function, the state isn't saved by the compiler. Alan finds blog posts about the dark ages of Futures 0.1, when it was more common for manual Futures to be written with a "state machine".

    +

    He thinks about his stream's states, and settles on the following structure:

    +
    
    +#![allow(unused)]
    +fn main() {
    +struct SigningFile {
    +    state: State,
    +    file: ReaderStream,
    +    sig: Signature,
    +}
    +
    +enum State {
    +    File,
    +    Sign,
    +}
    +}
    +
    +

    It turns out it was more complicated than Alan thought (the author made this same mistake). The digest method of Signature is async, and it consumes the signature, so the state machine needs to be adjusted. The signature needs to be able to be moved out, and it needs to be able to store a future from an async fn. Trying to figure out how to represent that in the type system was difficult. He considered adding a generic T: Future to the State enum, but then wasn't sure what to set that generic to. Then, he tries just writing Signing(impl Future) as a state variant, but that triggers a compiler error that impl Trait isn't allowed outside of function return types. Patient Barbara helped again, so that Alan learns to just store a Pin<Box<dyn Future>>, wondering if the Pin there is important.

    +
    
    +#![allow(unused)]
    +fn main() {
    +struct SigningFile {
    +    state: State,
    +}
    +
    +enum State {
    +    File(ReaderStream, Signature),
    +    Signing(Pin<Box<dyn Future<Output = Vec<u8>>>>),
    +    Done,
    +}
    +}
    +
    +

    Now he tries to write the poll_next method, checking readiness of individual steps (thankfully, Alan remembers ready! from the futures 0.1 blog posts he read) and proceeding to the next state, while grumbling away the weird Pin noise:

    +
    
    +#![allow(unused)]
    +fn main() {
    +match self.state {
    +    State::File(ref mut file, ref mut sig) => {
    +        match ready!(Pin::new(file).poll_next(cx)) {
    +            Some(result) => {
    +                let chunk = result?;
    +                sig.push(&chunk);
    +                Poll::Ready(Some(Ok(chunk)))
    +            },
    +            None => {
    +                let sig = match std::mem::replace(&mut self.state, State::Done) {
    +                    State::File(_, sig) => sig,
    +                    _ => unreachable!(),
    +                };
    +                self.state = State::Signing(Box::pin(sig.digest()));
    +                Poll::Pending
    +            }
    +        }
    +    },
    +    State::Signing(ref mut sig) => {
    +        let last_chunk = ready!(sig.as_mut().poll(cx));
    +        self.state = State::Done;
    +        Poll::Ready(Some(Ok(last_chunk)))
    +    }
    +    State::Done => Poll::Ready(None),
    +}
    +}
    +
    +

    Oh well, at least it works, right?

    +

    Wakers

    +

    So far, Alan hasn't paid too much attention to Context and Poll. It's been fine to simply pass them along untouched. There's a confusing bug in his state machine. Let's look more closely:

    +
    
    +#![allow(unused)]
    +fn main() {
    +// zooming in!
    +match ready!(Pin::new(file).poll_next(cx)) {
    +    Some(result) => {
    +        let chunk = result?;
    +        sig.push(&chunk);
    +        return Poll::Ready(Some(Ok(val));
    +    },
    +    None => {
    +        self.set_state_to_signing();
    +        // oops!
    +        return Poll::Pending;
    +    }
    +}
    +}
    +
    +

    In one of the branches, the state is changed, and Poll::Pending is returned. Alan assumes that the task will be polled again with the new state. But, since the file was done (and has returned Poll::Ready), there was actually no waker registered to wake the task again. So his stream just hangs forever.

    +

    The compiler doesn't help at all, and he re-reads his code multiple times, but because of this easy-to-misunderstand logic error, Alan eventually has to ask for help in a chat room. After a half hour of explaining all sorts of details, a kind person points out he either needs to register a waker, or perhaps use a loop.

    +

    All too often, since we don't want to duplicate code in multiple branches, the solution for Alan is to add an odd loop around the whole thing, so that the next match branch uses the Context:

    +
    
    +#![allow(unused)]
    +fn main() {
    +loop {
    +    match self.state {
    +        State::File(ref mut file, ref mut sig) => {
    +            match ready!(Pin::new(file).poll_next(cx)) {
    +                Some(result) => {
    +                    let chunk = result?;
    +                    sig.push(&chunk);
    +                    return Poll::Ready(Some(Ok(chunk)))
    +                },
    +                None => {
    +                    let sig = match std::mem::replace(&mut self.state, State::Done) {
    +                        State::File(_, sig) => sig,
    +                        _ => unreachable!(),
    +                    };
    +                    self.state = State::Signing(Box::pin(sig.digest()));
    +                    // loop again, to catch the `State::Signing` branch
    +                }
    +            }
    +        },
    +        State::Signing(ref mut sig) => {
    +            let last_chunk = ready!(sig.as_mut().poll(cx));
    +            self.state = State::Done;
    +            return Poll::Ready(Some(Ok(last_chunk)))
    +        }
    +        State::Done => return Poll::Ready(None),
    +    }
    +}
    +}
    +
    +

    Gives Up

    +

    A little later, Alan needs to add some response body transforming to some routes, to add some app-specific framing. Upon realizing he needs to implement another Stream in a generic fashion, he instead closes the editor and complains on Twitter.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Writing an async Stream is drastically different than writing an async fn.
    • +
    • The documentation for Pin doesn't provide much practical guidance in how to use it, instead focusing on more abstract considerations.
    • +
    • Missing a waker registration is a runtime error, and very hard to debug. If it's even possible, a compiler warning or hint would go a long way.
    • +
    +

    What are the sources for this story?

    +

    Part of this story is based on the original motivation for async/await in Rust, since similar problems exist writing impl Future.

    +

    Why did you choose Alan to tell this story?

    +

    Choosing Alan was somewhat arbitrary, but this does get to reuse the experience that Alan may already have around await coming from JavaScript.

    +

    How would this story have played out differently for the other characters?

    +
      +
    • This likely would have been a similar story for any character.
    • +
    • It's possible Grace would be more used to writing state machines, coming from C.
    • +
    +

    😱 Status quo stories: Alan iteratively regresses performance

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    A core part of DistriData, called DDSplit, is in charge of splitting input data records into fragments that are stored on distinct servers, and then reassembling those fragments back into records in response to user queries.

    +

    DDSplit was originally implemented using Java code (plus some C, interfaced via JNI). Alan thinks that Rust could provide the same quality of service while requiring less memory. He decides to try reimplementing DDSplit in Rust, atop tokio.

    +

    Alan wants to copy some of the abstractions he sees in the Java code that are defined via Java interfaces. Alan sees Rust traits as the closest thing to Java interfaces. However, when he experimentally defines a trait with an async fn, he gets the following message from the compiler:

    +
    error[E0706]: functions in traits cannot be declared `async`
    + --> src/main.rs:2:5
    +  |
    +2 |     async fn method() { }
    +  |     -----^^^^^^^^^^^^^^^^
    +  |     |
    +  |     `async` because of this
    +  |
    +  = note: `async` trait functions are not currently supported
    +  = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait
    +
    +

    This diagnostic leads Alan to add the async-trait crate as a dependency to his project. Alan then uses the #[async_trait] attribute provided by that crate to be able to define async fn methods within traits.

    +

    When Alan finishes the prototype code, he finds the prototype performance has 20% slower throughput compared to the Java version.

    +

    Alan is disappointed; his experience has been that Rust code performs great, (at least once you managed to get the code to be accepted by the compiler). Alan was not expecting to suffer a 20% performance hit over the Java code.

    +

    The DDSplit service is being developed on a Linux machine, so Alan is able use the perf tool to gather sampling-based profiling data the async/await port of DDSplit.

    +

    Looking at a flamegraph for the call stacks, Alan identified two sources of execution time overhead that he did not expect: calls into the memory allocator (malloc) with about 1% of the execution time, and calls to move values in memory (memcpy), with about 8% of execution time.

    +

    Alan reaches out to Barbara, as the local Rust expert, for help on how identify where the performance pitfalls are coming from.

    +

    Alan asks Barbara whether the problem could be caused by the tokio executor. Barbara says it is hard to know that without more instrumentation. She explains it could be that the program is overloading tokio's task scheduler (for example), but it also could be that the application code itself has expensive operations, such as lots of small I/O operations rather than using a buffer.

    +

    Alan and Barbara look at the perf data. They find the output of perf report difficult to navigate and interpret. The data has stack trace fragments available, which gives them a few hints to follow up on. But when they try to make perf report annotate the original source, perf only shows disassembled machine code, not the original Rust source code. Alan and Barbara both agree that trying to dissect the problem from the machine code is not an attractive strategy.

    +

    Alan asks Barbara what she thinks about the malloc calls in the profile. Barbara recommends that Alan try to eliminate the allocation calls, and if they cannot be eliminated, then that Alan try tuning the parameters for the global memory allocator, or even switching which global memory allocator he is using. Alan looks at Barbara in despair: his time tweaking GC settings on the Java Virtual Machine taught him that allocator tuning is often a black art.

    +

    Barbara suggests that they investigate where the calls to memcpy are arising, since they look like a larger source of overhead based on the profile data. From the call stacks in perf report, Alan and Barbara decide to skim over the source code files for the corresponding functions.

    +

    Upon seeing #[async_trait] in Alan's source code, Barbara recommends that if performance is a concern, then Alan should avoid #[async_trait]. She explains that #[async_trait] transforms a trait's async methods into methods that return Pin<Box<dyn Future>>, and the overhead that injects that will be hard to diagnose and impossible to remove. When Alan asks what other options he could adopt, Barbara thinks for a moment, and says he could make an enum that carries all the different implementations of the code. Alan says he'll consider it, but in the meantime he wants to see how far they can improve the code while keeping #[async_trait].

    +

    They continue looking at the code itself, essentially guessing at potential sources of where problematic memcpy's may be arising. They identify two potential sources of moves of large datatypes in the code: pushes and pops on vectors of type Vec<DistriQuery>, and functions with return types of the form Result<SuccessCode, DistriErr>.

    +

    Barbara asks how large the DistriQuery, SuccessCode, and DistriErr types are. Alan immediately notes that DistriQuery may be large, and they discuss options for avoiding the memory traffic incurred by pushing and popping DistriQuery.

    +

    For the other two types, Alan responds that the SuccessCode is small, and that the error variants are never constructed in his benchmark code. Barbara explains that the size of Result<T, E> has to be large enough to hold either variant, and that memcpy'ing a result is going to move all of those bytes. Alan investigates and sees that DistriErr has variants that embed byte arrays that go up to 50kb in size. Barbara recommends that Alan look into boxing the variants, or the whole DistriErr type itself, in order to reduce the cost of moving it around.

    +

    Alan uses Barbara's feedback to box some of the data, and this cuts the memcpy traffic in the perf report to one quarter of what it had been reporting previously.

    +

    However, there remains a significant performance delta between the Java version and the Rust version. Alan is not sure his Rust-rewrite attempt is going to get anywhere beyond the prototype stage.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    1. +

      Rust promises great performance, but when performance is not meeting one's targets, it is hard to know what to do next. Rust mostly leans on leveraging existing tools for native code development, but those tools are (a.) foreign to many of our developers, (b.) do not always measure up to what our developers have access to elsewhere, (c.) do not integrate as well with Rust as they might with C or C++.

      +
    2. +
    3. +

      Lack of certain language features leads developers to use constructs like #[async_trait] which add performance overhead that is (a.) hard to understand and (b.) may be significant.

      +
    4. +
    5. +

      Rust makes some things very explicit, e.g. the distinction between Box<T> versus T is quite prominent. But Rust's expressive type system also makes it easy to compose types without realizing how large they have gotten.

      +
    6. +
    7. +

      Programmers do not always have a good mental model for where expensive moves are coming from.

      +
    8. +
    9. +

      An important specific instance of (1c.) for the async vision: Native code tools do not have any insight into Rust's async model, as that is even more distant from the execution model of C and C++.

      +
    10. +
    11. +

      We can actually generalize (5.) further: When async performance does not match expectations, developers do not have much insight into whether the performance pitfalls arise from issues deep in the async executor that they have selected, or if the problems come directly from overheads built into the code they themselves have written.

      +
    12. +
    +

    What are the sources for this story?

    +

    Discussions with engineers at Amazon Web Services.

    +

    Why did you choose Alan to tell this story?

    +

    I chose Alan because he is used to Java, where these issues play out differently.

    +

    Java has very mature tooling, including for performance investigations. Alan has used JProfiler at his work, and VisualVM for personal hobby projects. Alan is frustrated by his attempts to use (or even identify) equivalent tools for Rust.

    +

    With respect to memory traffic: In Java, every object is handled via a reference, and those references are cheap to copy. (One pays for that convenience in other ways, of course.)

    +

    How would this story have played out differently for the other characters?

    +

    From her C and C++ background, Grace probably would avoid letting her types get so large. But then again, C and C++ do not have enums with a payload, so Grace would likely have fallen in the same trap that Alan did (of assuming that the cost of moving an enum value is proportional to its current variant, rather than to its type's overall size). Also, Grace might report that her experience with gcc-based projects yielded programs that worked better with perf, due in part to gcc producing higher quality DWARF debuginfo.

    +

    Barbara probably would have added direct instrumentation via the tracing crate, potentially even to tokio itself, rather than spend much time wrestling with perf.

    +

    Niklaus is unlikely to be as concerned about the 20% throughput hit; he probably would have been happy to get code that seems functionally equivalent to the original Java version.

    +

    😱 Status quo stories: Alan lost the world!

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Alan heard about a project to reimplement a deprecated browser plugin using Rust and WASM. This old technology had the ability to load resources over HTTP; so it makes sense to try and implement that functionality using the Fetch API. Alan looks up the documentation of web_sys and realizes they need to...

    +
      +
    1. Call one of the fetch methods, which returns a Promise
    2. +
    3. Convert the Promise into a Rust thing called a Future
    4. +
    5. await the Future in an async function
    6. +
    7. Do whatever they want with the resulting data
    8. +
    +
    
    +#![allow(unused)]
    +fn main() {
    +use web_sys::{Request, window};
    +
    +fn make_request(src: &url) -> Request {
    +    // Pretend this contains all of the complicated code necessary to
    +    // initialize a Fetch API request from Rust
    +}
    +
    +async fn load_image(src: String) {
    +    let request = make_request(&url);
    +    window().unwrap().fetch_with_request(&request).await;
    +    log::error!("It worked");
    +}
    +}
    +
    +

    Alan adds calls to load_image where appropriate. They realize that nothing is happening, so they look through more documentation and find a thing called spawn_local. Once they pass the result of load_image into that function, they see their log message pop up in the console, and figure it's time to actually do something to that loaded image data.

    +

    At this point, Alan wants to put the downloaded image onto the screen, which in this project means putting it into a Node of the current World. A World is a bundle of global state that's passed around as things are loaded, rendered, and scripts are executed. It looks like this:

    +
    
    +#![allow(unused)]
    +
    +fn main() {
    +/// All of the player's global state.
    +pub struct World<'a> {
    +    /// A list of all display Nodes.
    +    nodes: &'a mut Vec<Node>,
    +
    +    /// The last known mouse position.
    +    mouse_pos &'a mut (u16, u16),
    +
    +    // ...
    +}
    +}
    +
    +

    In synchronous code, this was perfectly fine. Alan figures it'll be fine in async code, too. So Alan adds the world as a function parameter and everything else needed to parse an image and add it to our list of nodes:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn load_image(src: String, inside_of: usize, world: &mut World<'_>) {
    +    let request = make_request(&url);
    +    let data = window().unwrap().fetch_with_request(&request).await.unwrap().etc.etc.etc;
    +    let image = parse_png(data, context);
    +
    +    let new_node_index = world.nodes.len();
    +    if let Some(parent) = world.nodes.get(inside_of) {
    +        parent.set_child(new_node_index);
    +    }
    +    world.nodes.push(image.into());
    +}
    +}
    +
    +

    Bang! Suddenly, the project stops compiling, giving errors like...

    +
    error[E0597]: `world` does not live long enough
    +  --> src/motionscript/globals/loader.rs:21:43
    +
    +

    Hmm, okay, that's kind of odd. We can pass a World to a regular function just fine - why do we have a problem here? Alan glances over at loader.rs...

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn attach_image_from_net(world: &mut World<'_>, args: &[Value]) -> Result<Value, Error> {
    +    let this = args.get(0).coerce_to_object()?;
    +    let url = args.get(1).coerce_to_string()?;
    +
    +    spawn_local(load_image(url, this.as_node().ok_or("Not a node!")?, world))
    +}
    +}
    +
    +

    Hmm, the error is in that last line. spawn_local is a thing Alan had to put into everything that called load_image, otherwise his async code never actually did anything. But why is this a problem? Alan can borrow a World, or anything else for that matter, inside of async code; and it should get it's own lifetime like everything else, right?

    +

    Alan has a hunch that this spawn_local thing might be causing a problem, so Alan reads the documentation. The function signature seems particularly suspicious:

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub fn spawn_local<F>(future: F) 
    +where
    +    F: Future<Output = ()> + 'static
    +}
    +
    +

    So, spawn_local only works with futures that return nothing - so far, so good - and are 'static. Uh-oh. What does that last bit mean? Alan asks Barbara, who responds that it's the lifetime of the whole program. Yeah, but... the async function is part of the program, no? Why wouldn't it have the 'static lifetime? Does that mean all functions that borrow values aren't 'static, or just the async ones?

    +

    Barbara explains that when you borrow a value in a closure, the closure doesn't gain the lifetime of that borrow. Instead, the borrow comes with it's own lifetime, separate from the closure's. The only time a closure can have a non-'static lifetime is if one or more of its borrows is not provided by it's caller, like so:

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn benchmark_sort() -> usize {
    +    let mut num_times_called = 0;
    +    let test_values = vec![1,3,5,31,2,-13,10,16];
    +
    +    test_values.sort_by(|a, b| {
    +        a.cmp(b)
    +        num_times_called += 1;
    +    });
    +
    +    num_times_called
    +}
    +}
    +
    +

    The closure passed to sort_by has to copy or borrow anything not passed into it. In this case, that would be the num_times_called variable. Since we want to modify the variable, it has to be borrowed. Hence, the closure has the lifetime of that borrow, not the whole program, because it can't be called anytime - only when num_times_called is a valid thing to read or write.

    +

    Async functions, it turns out, act like closures that don't take parameters! They have to, because all Futures have to implement the same trait method poll:

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub trait Future {
    +    type Output;
    +
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>;
    +}
    +}
    +
    +

    When you call an async function, all of it's parameters are copied or borrowed into the Future that it returns. Since we need to borrow the World, the Future has the lifetime of &'a mut World, not of 'static.

    +

    Barbara suggests changing all of the async function's parameters to be owned types. Alan asks Grace, who architected this project. Grace recommends holding a reference to the Plugin that owns the World, and then borrowing it whenever you need the World. That ultimately looks like the following:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn load_image(src: String, inside_of: usize, player: Arc<Mutex<Player>>) {
    +    let request = make_request(&url);
    +    let data = window().unwrap().fetch_with_request(&request).await.unwrap().etc.etc.etc;
    +    let image = parse_png(data, context);
    +
    +    player.lock().unwrap().update(|world| {
    +        let new_node_index = world.nodes.len();
    +        if let Some(parent) = world.nodes.get(inside_of) {
    +            parent.set_child(new_node_index);
    +        }
    +        world.nodes.push(image.into());
    +    });
    +}
    +}
    +
    +

    It works, well enough that Alan is able to finish his changes and PR them into the project. However, Alan wonders if this could be syntactically cleaner, somehow. Right now, async and update code have to be separated - if we need to do something with a World, then await something else, that requires jumping in and out of this update thing. It's a good thing that we only really have to be async in these loaders, but it's also a shame that we practically can't mix async code and Worlds.

    +

    🤔 Frequently Asked Questions

    +
      +
    • What are the morals of the story? +
        +
      • Async functions capture all of their parameters for the entire duration of the function. This allows them to hold borrows of those parameters across await points. +
          +
        • When the parameter represents any kind of "global environment", such as the World in this story, it may be useful for that parameter not to be captured by the future but rather supplied anew after each await point.
        • +
        +
      • +
      • Non-'static Futures are of limited use to developers, as lifetimes are tied to the sync stack. The execution time of most asynchronous operations does not come with an associated lifetime that an executor could use. +
          +
        • It is possible to use borrowed futures with block_on style executors, as they necessarily extend all lifetimes to the end of the Future. This is because they turn asynchronous operations back into synchronous ones.
        • +
        • Most practical executors want to release the current stack, and thus all of it's associated lifetimes. They need 'static futures.
        • +
        +
      • +
      • Async programming introduces more complexity to Rust than it does, say, JavaScript. The complexity of async is sometimes explained in terms of 'color', where functions of one 'color' can only call those of another under certain conditions, and developers have to keep track of what is sync and what is async. Due to Rust's borrowing rules, we actually have three 'colors', not the two of other languages with async I/O: +
          +
        • Sync, or 'blue' in the original metaphor. This color of function can both own and borrow it's parameters. If made into the form of a closure, it may have a lifetime if it borrows something from the current stack.
        • +
        • Owned Async, or 'red' in the original metaphor. This color of function can only own parameters, by copying them into itself at call time.
        • +
        • Borrowed Async. If an async function borrows at least one parameter, it gains a lifetime, and must fully resolve itself before the lifetime of it's parameters expires.
        • +
        +
      • +
      +
    • +
    • What are the sources for this story? +
        +
      • This is personal experience. Specifically, I had to do almost exactly this dance in order to get fetch to work in Ruffle.
      • +
      • I have omitted a detail from this story: in Ruffle, we use a GC library (gc_arena) that imposes a special lifetime on all GC references. This is how the GC library upholds it's memory safety invariants, but it's also what forces us to pass around contexts, and once you have that, it's natural to start putting even non-GC data into it. It also means we can't hold anything from the GC in the Future as we cannot derive it's Collect trait on an anonymous type.
      • +
      +
    • +
    • Why did you choose Alan to tell this story? +
        +
      • Lifetimes on closures is already non-obvious to new Rust programmers and using them in the context of Futures is particularly unintuitive.
      • +
      +
    • +
    • How would this story have played out differently for the other characters? +
        +
      • Niklaus probably had a similar struggle as Alan.
      • +
      • Grace would have felt constrained by the async syntax preventing some kind of workaround for this problem.
      • +
      • Barbara already knew about Futures and 'static and carefully organizes their programs accordingly.
      • +
      +
    • +
    +

    😱 Status quo stories: Alan needs async in traits

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]!

    +

    The story

    +

    Alan is working on a project with Barbara which has already gotten off to a somewhat rocky start. He is working on abstracting away the HTTP implementation the library uses so that users can provide their own. He wants the user to implement an async trait called HttpClient which has one method perform(request: Request) -> Response. Alan tries to create the async trait:

    +
    
    +#![allow(unused)]
    +fn main() {
    +trait HttpClient {
    +    async fn perform(request: Request) -> Response;
    +}
    +}
    +
    +

    When Alan tries to compile this, he gets an error:

    +
     --> src/lib.rs:2:5
    +  |
    +2 |     async fn perform(request: Request) -> Response;
    +  |     -----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +  |     |
    +  |     `async` because of this
    +  |
    +  = note: `async` trait functions are not currently supported
    +  = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait
    +
    +

    Alan, who has been using Rust for a little while now, has learned to follow compiler error messages and adds async-trait to his Cargo.toml. Alan follows the README of async-trait and comes up with the following code:

    +
    
    +#![allow(unused)]
    +fn main() {
    +#[async_trait]
    +trait HttpClient {
    +    async fn perform(request: Request) -> Response;
    +}
    +}
    +
    +

    Alan's code now compiles, but he also finds that his compile times have gone from under a second to around 6s, at least for a clean build.

    +

    After Alan finishes adding the new trait, he shows his work off to Barbara and mentions he's happy with the work but is a little sad that compile times have worsened. Barbara, an experienced Rust developer, knows that using async-trait comes with some additional issues. In this particular case she is especially worried about tying their public API to a third-party dependency. Even though it is technically possible to implement traits annotated with async_trait without using async_trait, doing so in practice is very painful. For example async_trait:

    +
      +
    • handles lifetimes for you if the returned future is tied to the lifetime of some inputs.
    • +
    • boxes and pins the futures for you.
    • +
    +

    which the implementer will have to manually handle if they don't use async_trait. She decides to not worry Alan with this right now. Alan and Barbara are pretty happy with the results and go on to publish their crate which gets lots of users.

    +

    Later on, a potential user of the library wants to use their library in a no_std context where they will be providing a custom HTTP stack. Alan and Barbara have done a pretty good job of limiting the use of standard library features and think it might be possible to support this use case. However, they quickly run into a show stopper: async-trait boxes all of the futures returned from a async trait function. They report this to Alan through an issue.

    +

    Alan, feeling (over-) confident in his Rust skills, decides to try to see if he can implement async traits without using async-trait.

    +
    
    +#![allow(unused)]
    +fn main() {
    +trait HttpClient {
    +   type Response: Future<Output = Response>;
    +
    +   fn perform(request: Request) -> Self::Response; 
    +}
    +}
    +
    +

    Alan seems to have something working, but when he goes to update the examples of how to implement this trait in his crate's documentation, he realizes that he either needs to:

    +
      +
    • +

      use trait object:

      +
      
      +#![allow(unused)]
      +fn main() {
      +struct ClientImpl;
      +
      +impl HttpClient for ClientImpl {
      +    type Response = Pin<Box<dyn Future<Output = Response>>>;
      +
      +    fn perform(request: Request) -> Self::Response {
      +        Box::pin(async move {
      +            // Some async work here creating Reponse
      +        })
      +    }
      +}
      +}
      +
      +

      which wouldn't work for no_std.

      +
    • +
    • +

      implement Future trait manually, which isn't particulary easy/straight-forward for non-trivial cases, especially if it involves making other async calls (likely).

      +
    • +
    +

    After a lot of thinking and discussion, Alan and Barbara accept that they won't be able to support no_std users of their library and add mention of this in crate documentation.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • async-trait is awesome, but has some drawbacks +
        +
      • compile time increases
      • +
      • performance cost of boxing and dynamic dispatch
      • +
      • not a standard solution so when this comes to language, it might break things
      • +
      +
    • +
    • Trying to have a more efficient implementation than async-trait is likely not possible.
    • +
    +

    What are the sources for this story?

    + +

    Why did you choose Alan to tell this story?

    +

    We could have used Barbara here but she'd probably know some of the work-arounds (likely even the details on why they're needed) and wouldn't need help so it wouldn't make for a good story. Having said that, Barbara is involved in the story still so it's not a pure Alan story.

    +

    How would this story have played out differently for the other characters?

    +
      +
    • Barbara: See above.
    • +
    • Grace: Probably won't know the solution to these issues much like Alan, but might have an easier time understanding the why of the whole situation.
    • +
    • Niklaus: would be lost - traits are somewhat new themselves. This is just more complexity, and Niklaus might not even know where to go for help (outside of compiler errors).
    • +
    +

    😱 Status quo stories: Alan wants to migrate a web server to Rust

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    Is Rust ready for the web?

    +

    Alan has been following the arewewebyet site for quite some time. He is a Typescript full-stack developer and follows the project in order to know when it would be sensible to migrate the backend of a web application he's responsible for. Alan loves Rust and has used it for some tasks that didn't quite need async routines. Since arewewebyet is an official Rust language project, he trusts their reviews of several web frameworks, tools, libraries, etc.

    +

    Alan was thrilled during the 2020 Xmas holiday. It turns out that at that time Rust was declared to be web ready! Alan takes this is a sign that not only is Rust great for web servers, but also a confirmation that async features have matured and stabilised. For, how can a language be web ready and not fully support asynchronous tasks?

    +

    Alan's point of reference are the Golang and Javascript languages. They were both created for web servers and clients. They also support async/await natively. At the same time, Alan is not aware of the complexities that these languages are "hiding" from him.

    +

    Picking a web server is ok

    +

    Golang native http server is nice but, as a Typescript developer, Alan is also used to dealing with "Javascript fatigue". Javascript developers often use this term to refer to a fast-pace framework ecosystem, where every so often there is the "new" thing everybody else is migrating to. Similarly, Javascript engineers are used to having to pick from a myriad of options within the vast npm ecosystem. And so, the lack of a web sever in Rust's standard library didn't surprise him. The amount of options didn't overwhelm him either.

    +

    The arewewebyet site mentions four good web servers. Alan picks Tide because the interfaces and the emphasis on middleware reminds him of Nodejs' Express framework.

    +

    The first endpoint

    +

    Alan sets up all the boilerplate and is ready to write the first endpoint. He picks PUT /support-ticket because it barely has any logic in it. When a request arrives, the handler only makes a request to Zendesk to create a support ticket. The handler is stateless and has no middleware.

    +

    The arewewebyet site doesn't recommend a specific http client, so Alan searches for one in crates.io. He picks reqwest simply because it's the most popular.

    +

    Alan combines the knowledge he has from programming in synchronous Rust and asynchronous Javascript to come up with a few lines that should work. If the compiler is happy, then so is he!

    +

    First problem: incompatible runtimes

    +

    The first problem he runs into is very similar to the one described in the compiler trust story: thread 'main' panicked at 'there is no reactor running, must be called from the context of a Tokio 1.x runtime.

    +

    In short, Alan has problems because Tide is based on std-async and reqwest on the latest version of tokio. This is a real pain for Alan as he has now to change either the http client or the server so that they use the same runtime.

    +

    He decides to switch to Actix web.

    +

    Second problem: incompatible versions of the same runtime

    +

    Alan migrates to Actix web and again the compiler seems to be happy. To his surprise, the same problem happens again. The program panics with the message as before: there is no reactor running, must be called from the context of a Tokio 1.x runtime. He is utterly puzzled as Actix web is based on Tokio just like reqwest. Didn't he just fix problem number 1?

    +

    It turns out that the issue is that Alan's using v0.11.2 of reqwest, which uses tokio v1, and v3.3.2 of actix-web, which uses tokio v0.3.

    +

    The solution to this problem is then to dig into all the versions of reqwest until he finds one which uses the same version of tokio.

    +

    Can Alan sell the Rust migration to his boss?

    +

    This experience has made Alan think twice about whether Rust is indeed web ready. On the one hand, there are very good libraries for web servers, ORMs, parsers, session management, etc. On the other, Alan is fearful that in 2/3/6 months time he has to develop new features with libraries that already exist but turn out to be incompatible with the runtime chosen at the beginning of the project.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Rust's ecosystem has a lot of great components that may individually be ready for the web, but combining them is still a fraught proposition. In a typical web server project, dependencies that use async features form an intricate web which is hard to decipher for both new and seasoned Rust developers. Alan picked Tide and reqwest, only to realise later that they are not compatible. How many more situations like this will he face? Can Alan be confident that it won't happen again? New users especially are not accustomed to having to think about what "runtime" they are using, since there is usually not a choice in the matter.
    • +
    • The situation is so complex that it's not enough knowing that all dependencies use the same runtime. They all have to actually be compatible with the same runtime and version. Newer versions of reqwest are incompatible with the latest stable version of actix web (verified at the time of writing)
    • +
    • Developers that need a stable environment may be fearful of the complexity that comes with managing async dependencies in Rust. For example, if reqwest had a security or bug fix in one of the latest versions that's not backported to older ones, Alan would not be able to upgrade because actix web is holding him back. He has in fact to wait until ALL dependencies are using the same runtime to apply fixes and upgrades.
    • +
    +

    What are the sources for this story?

    +

    Personal experience of the author.

    +

    Why did you choose Alan to tell this story?

    +

    As a web developer in GC languages, Alan writes async code every day. A language without stable async features is not an option.

    +

    How would this story have played out differently for the other characters?

    +

    Learning what async means and what it entails in a codebase is usually hard enough. Niklaus would struggle to learn all that while at the same time dealing with the many gotchas that can happen when building a project with a lot of dependencies.

    +

    Barbara may be more tolerant with the setup since she probably knows the rationale behind keeping Rust's standard library lean and the need for external async runtimes.

    +

    How would this story have played out differently if Alan came from another GC'd language?

    +

    Like the trust story, it would be very close, since all other languages (that I know of) provide async runtimes out of the box and it's not something the programmer needs to concern themselves with.

    +

    😱 Status quo stories: Alan runs into stack allocation trouble

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The problem

    +

    One day, as Alan is working on his async Rust project, he runs his application and hits an error:

    +
    $ .\target\debug\application.exe
    +thread 'main' has overflowed its stack
    +
    +

    Perplexed, Alan sees if anything with his application works by seeing if he can get output when the --help flag is passed, but he has no luck:

    +
    $ .\target\debug\application.exe --help
    +thread 'main' has overflowed its stack
    +
    +

    Searching for the solution

    +

    Having really only ever seen stack overflow issues caused by recursive functions, Alan desperately tries to find the source of the bug but searching through the codebase for recursive functions only to find none. Having learned that Rust favors stack allocation over heap allocation (a concept Alan didn't really need to worry about before), he started manually looking through his code, searching for structs that looked "too large"; he wasn't able to find any candidates.

    +

    Confused, Alan reached out to Grace for her advice. She suggested making the stack size larger. Although she wasn't a Windows expert, she remembers hearing that stack sizes on Windows might be smaller than on Linux. After much searching, Alan discovers an option do just that: RUSTFLAGS = "-C link-args=-Wl,-zstack-size=<size in bytes>".

    +

    While eventually Alan gets the program to run, the stack size must be set to 4GB before it does! This seems untenable, and Alan goes back to the drawing board.

    +

    Alan reaches out to Barbara for her expertise in Rust to see if she has something to suggest. Barbara recommends using RUSTFLAGS = "-Zprint-type-sizes to print some type sizes and see if anything jumps out. Barbara noted that if Alan does find a type that stands out, it's usually as easy as putting some boxes in that type to provide some indirection and not have everything be stack allocated. Alan never needs the nightly toolchain, but this option requires it so he installs it using rustup. After searching through types, one did stand out as being quite large. Ultimately, this was a red herring, and putting parts of it in Boxes did not help.

    +

    Finding the solution

    +

    After getting no where, Alan went home for the weekend defeated. On Monday, he decided to take another look. One piece of code, stuck out to him: the use of the select! macro from the futures crate. This macro allowed multiple futures to race against each other, returning the value of the first one to finish. This macro required the futures to be pinned which the docs had shown could be done by using pin_mut!. Alan didn't fully grasp what pin_mut! was actually doing when he wrote that code. The compiler had complained to him that the futures he was passing to select! needed to be pinned, and pin_mut! was what he found to make the compiler happy.

    +

    Looking back at the documents made it clear to Alan that this could potentially be the issue: pin_mut! pins futures to the stack. It was relatively clear that a possible solution would be to pin to the heap instead of the stack. Some more digging in the docs lead Alan to Box::pin which did just that. An extra heap allocation was of no consequence to him, so he gave it a try. Lo and behold, this fixed the issue!

    +

    While Alan knew enough about pinning to know how to satisfy the compiler, he didn't originally take the time to fully understand what the consequences were of using pin_mut! to pin his futures. Now he knows!

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • When coming from a background of GCed languages, taking the time to understand the allocation profile of a particular piece of code is not something Alan was used to doing.
    • +
    • It was hard to tell where in his code the stack was being exhausted. Alan had to rely on manually combing his code to find the culprit.
    • +
    • Pinning is relatively confusing, and although the code compiled, Alan didn't fully understand what he wrote and what consequences his decision to use pin_mut! would have.
    • +
    +

    What are the sources for this story?

    +

    This story is adapted from the experiences of the team working on the Krustlet project. You can read about this story in their own words here.

    +

    Why did you choose Alan to tell this story?

    +
      +
    • The programmers this story was based on have an experience mostly in Go, a GCed language.
    • +
    • The story is rooted in the explicit choice of using stack vs heap allocation, a choice that in GCed languages is not in the hands of the programmer.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • Grace would have likely had a similar hard time with this bug. While she's used to the tradeoffs of stack vs heap allocations, the analogy to the Pin API is not present in languages she's used to.
    • +
    • Barbara, as an expert in Rust, may have had the tools to understand that pin_mut is used for pinning to the stack while Box::pin is for pinning heap allocations.
    • +
    • This problem is somewhat subtle, so someone like Niklaus would probably have had a much harder time figuring this out (or even getting the code to compile in the first place).
    • +
    +

    Could Alan have used another API to achieve the same objectives?

    +

    Perhaps! Tokio's select! macro doesn't require explicit pinning of the futures it's provided, but it's unclear to this author whether it would have been smart enough to avoid pinning large futures to the stack. However, pinning is a part of the way one uses futures in Rust, so it's possible that such an issue would have arisen elsewhere.

    +

    😱 Status quo stories: Alan started trusting the Rust compiler, but then... async

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    Trust the compiler

    +

    Alan has a lot of experience in C#, but in the meantime has created some successful projects in Rust. +He has dealt with his fair share of race conditions/thread safety issues during runtime in C#, but is now starting to trust that if his Rust code compiles, +he won't have those annoying runtime problems to deal with.

    +

    This allows him to try to squeeze his programs for as much performance as he wants, because the compiler will stop him when he tries things that could result in runtime problems. +After seeing the performance and the lack of runtime problems, he starts to trust the compiler more and more with each project finished.

    +

    He knows what he can do with external libraries, he does not need to fear concurrency issues if the library cannot be used from multiple threads, because the compiler would tell him.

    +

    His trust in the compiler solidifies further the more he codes in Rust.

    +

    The first async project

    +

    Alan now starts with his first async project. He sees that there is no async in the standard library, but after googling for "rust async file open", he finds 'async_std', a crate that provides some async versions of the standard library functions. +He has some code written that asynchronously interacts with some files:

    +
    use async_std::fs::File;
    +use async_std::prelude::*;
    +
    +fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt").await?;
    +    file.write_all(b"Hello, world!").await?;
    +    Ok(())
    +}
    +
    +

    But now the compiler complains that await is only allowed in async functions. He now notices that all the examples use #[async_std::main] +as an attribute on the main function in order to be able to turn it into an async main, so he does the same to get his code compiling:

    +
    use async_std::fs::File;
    +use async_std::prelude::*;
    +
    +#[async_std::main]
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt").await?;
    +    file.write_all(b"Hello, world!").await?;
    +
    +    Ok(())
    +}
    +
    +

    This aligns with what he knows from C#, where you also change the entry point of the program to be async, in order to use await. +Everything is great now, the compiler is happy, so no runtime problems, so Alan is happy.

    +

    The project is working like a charm.

    +

    Fractured futures, fractured trust

    +

    The project Alan is building is starting to grow, and he decides to add a new feature that needs to make some API calls. He starts using reqwest in order to help him achieve this task. +After a lot of refactoring to make the compiler accept the program again, Alan is satisfied that his refactoring is done. +His program now boils down to:

    +
    use async_std::fs::File;
    +use async_std::prelude::*;
    +
    +#[async_std::main]
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt").await?;
    +    file.write_all(b"Hello, world!").await?;
    +
    +    let body = reqwest::get("https://www.rust-lang.org")
    +        .await?
    +        .text()
    +        .await?;
    +    println!("{}", body);
    +
    +    Ok(())
    +}
    +
    +

    He runs his project but is suddenly greeted with a runtime error. He is quite surprised. "How is this even possible?", he thinks. "I don't have any out-of-bounds accesses, and I never use .unwrap or .expect." +At the top of the error message he sees: thread 'main' panicked at 'there is no reactor running, must be called from the context of a Tokio 1.x runtime'

    +

    He searches what "Tokio" is in Rust, and he finds that it also provides an attribute to put on main, namely [tokio::main], but what is the difference with [async_std::main]? His curiosity leads him to watch videos/read blogs/scour reddit,... on why there are multiple runtimes in Rust. This leads him into a rabbit hole and now he learns about Executors, Wakers, Pin,... He has a basic grasp of what they are, but does not have a good understanding of them or how they all fit together exactly. These are all things he had not need to know nor heed in C#. (Note: there is another story about troubles/confusion that might arise when learning all these things about async: Alan hates writing a Stream)

    +

    He does understand the current problems and why there is no one-size-fits-all executor (yet). Trying to get his async Rust code to work, he broadened his knowledge about what async code actually is, he gains another way to reason about asynchronous code, not only in Rust, but also more generally.

    +

    But now he realizes that there is a whole new area of runtime problems that he did not have to deal with in C#, but he does in Rust. +Can he even trust the Rust compiler anymore? What other kinds of runtime problems can occur in Rust that can't in C#? +If his projects keep increasing in complexity, will other new kinds of runtime problems keep popping up? Maybe it's better to stick with C#, since Alan +already knows all the runtime problems you can have over there.

    +

    The Spider-Man effect

    +

    Do you recall in Spider-Man, that after getting bitten by the radioactive spider, Peter first gets ill before he gains his powers? Well, imagine instead of being bitten by a radioactive spider, he was bitten by an async-rust spider...

    +

    In his work, Alan sees an async call to a C# wrapper around SQLite, his equivalent of a spider-sense (async-sense?) starts tingling. Now knowing from Rust the complexities that arise when trying to create asynchronicity, what kind of complex mechanisms are at play here to enable these async calls from C# that end up in the C/C++ of SQLite?

    +

    He quickly discovers that there are no complex mechanism at all! It's actually just a synchronous call all the way down, with just some extra overhead from wrapping it into an asynchronous function. There are no points where the async function will yield. He transforms all these asynchronous calls to their synchronous counterparts, and sees a slight improvement in performance. Alan is happy, product management is happy, customers are happy!

    +

    Over the next few months, he often takes a few seconds to reflect about why certain parts of the code are async, if they should be, or how other parts of the code might benefit from being async and if it's possible to make them async. He also uses what he learned from async Rust in his C# code reviews to find similar problems or general issues (With great power...). He even spots some lifetime bugs w.r.t. asynchronous code in C#, imagine that.

    +

    His team recognizes that Alan has a pretty good grasp about what async is really about, and he is unofficially crowned the "async guru" of the team.

    +

    Even though this spider-man might have gotten "ill" (his negative experience with async Rust), he has now become the superhero he was meant to be!

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Async I/O includes a new set of runtime errors and misbehaviors that the compiler can't help you find. These include cases like executing blocking operations +in an async context but also mixing runtime libraries (something users may not even realize is a factor).
    • +
    • Rust users get used to the compiler giving them error messages for runtime problems but also helping them to fix them. Pushing error messages to runtimes +feels surprising and erodes some of their confidence in Rust.
    • +
    • The "cliff" in learning about async is very steep -- at first everything seems simple and similar to other languages, then suddenly you are thrown into a lot of information. It's hard to know what's important and what is not. But, at the same time, dipping your toes into async Rust can broaden the understanding a programmer has of asynchronous coding, which can help them even in other languages than Rust.
    • +
    +

    What are the sources for this story?

    +

    Personal experience of the author.

    +

    Why did you choose Alan to tell this story?

    +

    With his experience in C#, Alan probably has experience with async code. Even though C# protects him from certain classes of errors, +he can still encounter other classes of errors, which the Rust compiler prevents.

    +

    How would this story have played out differently for the other characters?

    +

    For everyone except Barbara, I think these would play out pretty similarly, as this is a kind of problem unique to Rust. Since Barbara has a lot of Rust experience, +she would probably already be familiar with this aspect.

    +

    How would this story have played out differently if Alan came from another GC'd language?

    +

    It would be very close, since all other languages (that I know of) provide async runtimes out of the box and it's not something the programmer needs to concern themselves with.

    +

    😱 Status quo stories: Alan thinks he needs async locks

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    One of Alan's first Rust related tasks in his job at YouBuy is writing an HTTP based service. This service is a simple internal proxy router that inspects an incoming HTTP request and picks the downstream service to call based on certain aspects of the HTTP request.

    +

    Alan decides that he'll simply use some shared state that request handlers can read from in order to decide how to proxy the request.

    +

    Alan, having read the Rust book and successfully completed the challenge in the last chapters, knows that shared state can be achieved in Rust with reference counting (using std::sync::Arc) and locks (using std::sync::Mutex). Alan starts by throwing his shared state (a std::collections::HashMap<String, url::Url>) into an Arc<Mutex<T>>.

    +

    Alan, smitten with how quickly he can write Rust code, ends up with some code that compiles that looks roughly like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +#[derive(Clone)]
    +struct Proxy {
    +   routes: Arc<Mutex<HashMap<String, String>>,
    +}
    +
    +impl Proxy {
    +  async fn handle(&self, key: String, request: Request) -> crate::Result<Response> {
    +      let routes = self.state.lock().unwrap();
    +      let route = routes.get(key).unwrap_or_else(crate::error::MissingRoute)?;
    +      Ok(self.client.perform_request(route, request).await?)
    +  }
    +}
    +}
    +
    +

    Alan is happy that his code seems to be compiling! The short but hard learning curve has been worth it. He's having fun now!

    +

    Unfortunately, Alan's happiness soon comes to end as he starts integrating his request handler into calls to tokio::spawn which he knows will allow him to manage multiple requests at a time. The error message is somewhat cryptic, but Alan is confident he'll be able to figure it out:

    +
    189 |     tokio::spawn(async {
    +    |     ^^^^^^^^^^^^ future created by async block is not `Send`
    +::: /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.5.0/src/task/spawn.rs:129:21
    +    |
    +129 |         T: Future + Send + 'static,
    +    |                     ---- required by this bound in `tokio::spawn`
    +
    +note: future is not `Send` as this value is used across an await
    +   --> src/handler.rs:787:9
    +      |
    +786   |         let routes = self.state.lock().unwrap();
    +      |             - has type `std::sync::MutexGuard<'_, HashMap<String, Url>>` which is not `Send`
    +787   |         Ok(self.client.perform_request(route, request).await?)
    +      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `routes` maybe used later
    +788   |     })
    +      |     - `routes` is later dropped here
    +
    +

    Alan stops and takes a deep breath. He tries his best to make sense of the error message. He sort of understands the issue the compiler is telling him. Apparently routes is not marked as Send, and because it is still alive over a call to await, it is making the future his handler returns not Send. And tokio's spawn function seems to require that the future it received be Send.

    +

    Alan reaches the boundaries of his knowledge of Rust, so he reaches out over chat to ask his co-worker Barbara for help. Not wanting to bother her, Alan provides the context he's already figured out for himself.

    +

    Barbara knows that mutex guards are not Send because sending mutex guards to different threads is not a good idea. She suggests looking into async locks which can be held across await points because they are Send. Alan looks into the tokio documentation for more info and is easily able to move the use of the standard library's mutex to tokio's mutex. It compiles!

    +

    Alan ships his code and it gets a lot of usage. After a while, Alan notices some potential performance issues. It seems his proxy handler does not have the throughput he would expect. Barbara, having newly joined his team, sits down with him to take a look at potential issues. Barbara is immediately worried by the fact that the lock is being held much longer than it needs to be. The lock only needs to be held while accessing the route and not during the entire duration of the downstream request.

    +

    She suggests to Alan to switch to not holding the lock across the I/O operations. Alan first tries to do this by explicitly cloning the url and dropping the lock before the proxy request is made:

    +
    
    +#![allow(unused)]
    +fn main() {
    +impl Proxy {
    +  async fn handle(&self, key: String, request: Request) -> crate::Result<Response> {
    +      let routes = self.state.lock().unwrap();
    +      let route = routes.get(key).unwrap_or_else(crate::error::MissingRoute)?.clone();
    +      drop(routes);
    +      Ok(self.client.perform_request(route, request).await?)
    +  }
    +}
    +}
    +
    +

    This compiles fine and works in testing! After shipping to production, they notice a large increase in throughput. It seems their change made a big difference. Alan is really excited about Rust, and wants to write more!

    +

    Alan continues his journey of learning even more about async Rust. After some enlightening talks at the latest RustConf, he decides to revisit the code that he and Barbara wrote together. He asks himself, is using an async lock the right thing to do? This lock should only be held for a very short amount of time. Yielding to the runtime is likely more expensive than just synchronously locking. But he remembers vaguely hearing that you should never use blocking code in async code as this will block the entire async executor from being able to make progress, so he doubts his intuition.

    +

    After chatting with Barbara, who encourages him to benchmark and measure, he decides to switch back to synchronous locks.

    +

    Unfortunately, switching back to synchronous locks brings back the old compiler error message about his future not being Send. Alan is confused as he's dropping the mutex guard before it ever crosses an await point.

    +

    Confused Alan goes to Barbara for advice. She is also confused, and it takes several minutes of exploration before she comes to a solution that works: wrapping the mutex access in a block and implicitly dropping the mutex.

    +
    
    +#![allow(unused)]
    +fn main() {
    +impl Proxy {
    +  async fn handle(&self, key: String, request: Request) -> crate::Result<Response> {
    +      let route = {
    +        let routes = self.state.lock().unwrap();
    +        routes.get(key).unwrap_or_else(crate::error::MissingRoute)?.clone()
    +      };
    +      Ok(self.client.perform_request(route, request).await?)
    +  }
    +}
    +}
    +
    +

    Barbara mentions she's unsure why explicitly dropping the mutex guard did not work, but they're both happy that the code compiles. In fact it seems to have improved the performance of the service when its under extreme load. Alan's intuition was right!

    +

    In the end, Barbara decides to write a blog post about how blocking in async code isn't always such a bad idea.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
    * Locks can be quite common in async code as many tasks might need to mutate some shared state.
    +* Error messages can be fairly good, but they still require a decent understanding of Rust (e.g., `Send`, `MutexGuard`, drop semantics) to fully understand what's going on.
    +* This can lead to needing to use certain patterns (like dropping mutex guards early) in order to get code working.
    +* The advice to never block in async code is not always true: if blocking is short enough, is it even blocking at all?
    +
    +

    What are the sources for this story?

    +
    * Chats with [Alice](https://github.com/Darksonn) and [Lucio](https://github.com/LucioFranco).
    +* Alice's [blog post](https://ryhl.io/blog/async-what-is-blocking/) on the subject has some good insights.
    +* The issue of conservative analysis of whether values are used across await points causing futures to be `!Send` is [known](https://rust-lang.github.io/async-book/07_workarounds/03_send_approximation.html), but it takes some digging to find out about this issue. A tracking issue for this can be [found here](https://github.com/rust-lang/rust/issues/57478).
    +
    +

    Why did you choose Alan to tell this story?

    +
    * While Barbara might be tripped up on some of the subtlties, an experienced Rust developer can usually tell how to avoid some of the issues of using locks in async code. Alan on the other hand, might be surprised when his code does not compile as the issue the `Send` error is protecting against (i.e., a mutex guard being moved to another thread) is not protected against in other languages.
    +
    +

    How would this story have played out differently for the other characters?

    +
    * Grace would have likely had a similar time to Alan. These problems are not necessarily issues you would run into in other languages in the same way.
    +* Niklaus may have been completely lost. This stuff requires a decent understanding of Rust and of async computational systems.
    +
    +

    😱 Status quo stories: Alan tries using a socket Sink

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Alan is working on a project that uses async-std. He has worked a bit with tokio in the past and is more familiar with that, but he is interested to learn something how things work in async-std.

    +

    One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket RPC calls can be forwarded to a transport-agnostic RPC server.

    +

    In this server implementation:

    +
      +
    • RPC call strings can be received over a WebSocket
    • +
    • The strings are decoded and sent to an RPC router that calls the methods specified in the RPC call
    • +
    • Some of the methods that are called can take some time to return a result, so they are spawned separately +
        +
      • RPC has built-in properties to organize call IDs and methods, so results can be sent in any order
      • +
      +
    • +
    • Since WebSockets are bidirectional streams (duplex sockets), the response is sent back through the same client socket
    • +
    +

    He finds the HTTP server tide and it seems fairly similar to warp, which he was using with tokio. He also finds the WebSocket middleware library tide-websockets that goes with it.

    +

    However, as he's working, Alan encounters a situation where the socket needs to be written to within an async thread, and the traits just aren't working. He wants to split the stream into a sender and receiver:

    +
    
    +#![allow(unused)]
    +fn main() {
    +use futures::{SinkExt, StreamExt};
    +use async_std::sync::{Arc, Mutex};
    +use log::{debug, info, warn};
    +
    +async fn rpc_ws_handler(ws_stream: WebSocketConnection) {
    +    let (ws_sender, mut ws_receiver) = ws_stream.split();
    +    let ws_sender = Arc::new(Mutex::new(ws_sender));
    +
    +    while let Some(msg) = ws_receiver.next().await {
    +        debug!("Received new WS RPC message: {:?}", msg);
    +
    +        let ws_sender = ws_sender.clone();
    +
    +        async_std::task::spawn(async move {
    +            let res = call_rpc(msg).await?;
    +
    +            match ws_sender.lock().await.send_string(res).await {
    +                Ok(_) => info!("New WS data sent."),
    +                Err(_) => warn!("WS connection closed."),
    +            };
    +        });
    +    }
    +}
    +}
    +
    +

    The split method splits the ws_stream into two separate halves:

    +
      +
    • a producer (ws_sender) that implements a Stream with the messages arriving on the websocket;
    • +
    • a consumer (ws_receiver) that implements Sink, which can be used to send responses.
    • +
    +

    This way, one task can pull items from the ws_sender and spawn out subtasks. Those subtasks share access to the ws_receiver and send messages there when they're done. Unfortunately, Alan finds that he can't use this pattern here, as the Sink trait wasn't implemented in the WebSockets middleware library he's using.

    +

    Alan also tries creating a sort of poller worker thread using an intermediary messaging channel, but he has trouble reasoning about the code and wasn't able to get it to compile:

    +
    
    +#![allow(unused)]
    +fn main() {
    +use async_std::channel;
    +use async_std::sync::{Arc, Mutex};
    +use log::{debug, info, warn};
    +
    +async fn rpc_ws_handler(ws_stream: WebSocketConnection) {
    +    let (ws_sender, mut ws_receiver) = channel::unbounded::<String>();
    +    let ws_receiver = Arc::new(ws_receiver);
    +
    +    let ws_stream = Arc::new(Mutex::new(ws_stream));
    +    let poller_ws_stream = ws_stream.clone();
    +
    +    async_std::task::spawn(async move {
    +        while let Some(msg) = ws_receiver.next().await {
    +            match poller_ws_stream.lock().await.send_string(msg).await {
    +                Ok(msg) => info!("New WS data sent. {:?}", msg),
    +                Err(msg) => warn!("WS connection closed. {:?}", msg),
    +            };
    +        }
    +    });
    +
    +    while let Some(msg) = ws_stream.lock().await.next().await {
    +        async_std::task::spawn(async move {
    +            let res = call_rpc(msg).await?;
    +            ws_sender.send(res);
    +        });
    +    }
    +}
    +}
    +
    +

    Alan wonders if he's thinking about it wrong, but the solution isn't as obvious as his earlier Sink approach. Looking around, he realizes a solution to his problems already exists-- as others have been in his shoes before-- within two other nearly-identical pull requests, but they were both closed by the project maintainers. He tries opening a third one with the same code, pointing to an example where it was actually found to be useful. To his joy, his original approach works with the code in the closed pull requests in his local copy! Alan's branch is able to compile for the first time.

    +

    However, almost immediately, his request is closed with a comment suggesting that he try to create an intermediate polling task instead, much as he was trying before. Alan is feeling frustrated. "I already tried that approach," he thinks, "and it doesn't work!"

    +

    As a result of his frustration, Alan calls out one developer of the project on social media. He knows this developer is opposed to the Sink traits. Alan's message is not well-received: the maintainer sends a short response and Alan feels dismissed. Alan later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and suggests that Alan "get over it". Alan is given a link to a blog post. The post provides a number of criticisms of Sink but, after reading it, Alan isn't sure what he should do instead.

    +

    Because of this heated exchange, Alan grows concerned for his own career, what these well-known community members might think or say about his to others, and his confidence in the community surrounding this language that he really enjoys using is somewhat shaken.

    +

    Despite this, Alan takes a walk, gathers his determination, and commits to maintaining his fork with the changes from the other pull requests that were shut down. He publishes his version to crates.io, vowing to be more welcoming to "misfit" pull requests like the one he needed.

    +

    A few weeks later, Alan's work at his project at work is merged with his new forked crate. It's a big deal, his first professional open source contribution to a Rust project! Still, he doesn't feel like he has a sense of closure with the community. Meanwhile, his friends say they want to try Rust, but they're worried about its async execution issues, and he doesn't know what else to say, other than to offer a sense of understanding. Maybe the situation will get better someday, he hopes.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • There are often many sources of opinion in the community regarding futures and async, but these opinions aren't always backed up with examples of how it should be better accomplished. Sometimes we just find a thing that works and would prefer to stick with it, but others argue that some traits make implementations unnecessarily complex, and choose to leave it out. Disagreements like these in the ecosystem can be harmful to the reputation of the project and the participants.
    • +
    • If there's a source of substantial disagreement, the community becomes even further fragmented, and this may cause additional confusion in newcomers.
    • +
    • Alan is used to fragmentation from the communities he comes from, so this isn't too discouraging, but what's difficult is that there's enough functionality overlap in async libraries that it's tempting to get them to interop with each other as-needed, and this can lead to architectural challenges resulting from a difference in design philosophies.
    • +
    • It's also unclear if Futures are core to the Rust asynchronous experience, much as Promises are in JavaScript, or if the situation is actually more complex.
    • +
    • The Sink trait is complex but it solves a real problem, and the workarounds required to solve problems without it can be unsatisfactory.
    • +
    • Disagreement about core abstractions like Sink can make interoperability between runtimes more difficult; it also makes it harder for people to reproduce patterns they are used to from one runtime to another.
    • +
    • It is all too easy for technical discussions like this to become heated; it's important for all participants to try and provide each other with the "benefit of the doubt".
    • +
    +

    What are the sources for this story?

    + +

    Why did you choose Alan to tell this story?

    +
      +
    • Alan is more representative of the original author's background in JS, TypeScript, and NodeJS.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • (I'm not sure.)
    • +
    +

    😱 Status quo stories: Alan tries to debug a hang

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Alan's startup has officially launched and YouBuy is live for the world to use. +The whole team is very excited especially as this will be their first use of Rust in production! +Normally, as a .NET shop, they would have written the entire application in C#, but because of the scalability and latency requirements on their inventory service, they decided to write a microservice in Rust utilizing the async features they've heard so much about.

    +

    The day's excitement soon turns into concern as reports begin coming into support of customers who can't checkout. +After a few cases, a pattern begins to emerge: when a customer tries to buy the last available item, the checkout process hangs forever.

    +

    Alan suspects there is an issue with the lock used in the inventory service to prevent multiple people from buying the last available item at the same time. +With this hunch, he builds the latest code and opens this local dev environment to conduct some tests. +Soon enough, Alan has a repro of the bug.

    +

    With the broken environment still running, he decides to use a debugger to see if he can confirm his theory. +In the past, Alan has used Visual Studio's debugger to diagnose a very similar issue in a C# application he wrote. +The debugger was able to show him all the async Tasks currently waiting, their call stacks and what resource they were waiting on.

    +

    Alan hasn't used a debugger with Rust before, usually a combination of the strict compiler and a bit of manual testing has been enough to fix all the bugs he's previously encountered. +He does a quick Google search to see what debugger he should use and decides to go with gdb because it is already installed on his system and sounds like it should work. +Alan also pulls up a blog post that has a helpful cheatsheet of gdb commands since he's not familiar with the debugger.

    +

    Alan restarts the inventory service under gdb and gets to work reproducing the issue. +He reproduces the issue a few times in the hope of making it easier to identify the cause of the problem. +Ready to pinpoint the issue, Alan presses Ctrl+C and then types bt to get a backtrace:

    +
    (gdb) bt +
    (gdb) bt
    +#0  0x00007ffff7d5e58a in epoll_wait (epfd=3, events=0x555555711340, maxevents=1024, timeout=49152)
    +    at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
    +#1  0x000055555564cf7d in mio::sys::unix::selector::epoll::Selector::select (self=0x7fffffffd008, events=0x7fffffffba40, 
    +    timeout=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/mio-0.7.11/src/sys/unix/selector/epoll.rs:68
    +#2  0x000055555564a82f in mio::poll::Poll::poll (self=0x7fffffffd008, events=0x7fffffffba40, timeout=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/mio-0.7.11/src/poll.rs:314
    +#3  0x000055555559ad96 in tokio::io::driver::Driver::turn (self=0x7fffffffce28, max_wait=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/io/driver/mod.rs:162
    +#4  0x000055555559b8da in <tokio::io::driver::Driver as tokio::park::Park>::park_timeout (self=0x7fffffffce28, duration=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/io/driver/mod.rs:238
    +#5  0x00005555555e9909 in <tokio::signal::unix::driver::Driver as tokio::park::Park>::park_timeout (self=0x7fffffffce28, 
    +    duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/signal/unix/driver.rs:156
    +#6  0x00005555555a9229 in <tokio::process::imp::driver::Driver as tokio::park::Park>::park_timeout (self=0x7fffffffce28, 
    +    duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/process/unix/driver.rs:84
    +#7  0x00005555555a898d in <tokio::park::either::Either<A,B> as tokio::park::Park>::park_timeout (self=0x7fffffffce20, 
    +    duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/park/either.rs:37
    +#8  0x00005555555ce0b8 in tokio::time::driver::Driver<P>::park_internal (self=0x7fffffffcdf8, limit=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/time/driver/mod.rs:226
    +#9  0x00005555555cee60 in <tokio::time::driver::Driver<P> as tokio::park::Park>::park (self=0x7fffffffcdf8)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/time/driver/mod.rs:398
    +#10 0x00005555555a87bb in <tokio::park::either::Either<A,B> as tokio::park::Park>::park (self=0x7fffffffcdf0)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/park/either.rs:30
    +#11 0x000055555559ce47 in <tokio::runtime::driver::Driver as tokio::park::Park>::park (self=0x7fffffffcdf0)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/driver.rs:198
    +#12 0x000055555557a2f7 in tokio::runtime::basic_scheduler::Inner<P>::block_on::{{closure}} (scheduler=0x7fffffffcdb8, 
    +    context=0x7fffffffcaf0)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:224
    +#13 0x000055555557b1b4 in tokio::runtime::basic_scheduler::enter::{{closure}} ()
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:279
    +#14 0x000055555558174a in tokio::macros::scoped_tls::ScopedKey<T>::set (
    +    self=0x555555701af8 <tokio::runtime::basic_scheduler::CURRENT>, t=0x7fffffffcaf0, f=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/macros/scoped_tls.rs:61
    +#15 0x000055555557b0b6 in tokio::runtime::basic_scheduler::enter (scheduler=0x7fffffffcdb8, f=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:279
    +#16 0x0000555555579d3b in tokio::runtime::basic_scheduler::Inner<P>::block_on (self=0x7fffffffcdb8, future=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:185
    +#17 0x000055555557a755 in tokio::runtime::basic_scheduler::InnerGuard<P>::block_on (self=0x7fffffffcdb8, future=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:425
    +#18 0x000055555557aa9c in tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on (self=0x7fffffffd300, future=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:145
    +#19 0x0000555555582094 in tokio::runtime::Runtime::block_on (self=0x7fffffffd2f8, future=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/mod.rs:450
    +#20 0x000055555557c22f in inventory_service::main () at /home/alan/code/inventory_service/src/main.rs:4
    +
    +
    +

    Puzzled, the only line Alan even recognizes is the main entry point function for the service. +He knows that async tasks in Rust aren't run individually on their own threads which allows them to scale better and use fewer resources but surely there has to be a thread somewhere that's running his code? +Alan doesn't completely understand how async works in Rust but he's seen the Future::poll method so he assumes that there is a thread which constantly polls tasks to see if they are ready to wake up. +"Maybe I can find that thread and inspect its state?" he thinks and then consults the cheatsheet for the appropriate command to see the threads in the program. +info threads seems promising so he tries that:

    +
    (gdb) info threads +
    (gdb) info threads
    +  Id   Target Id                                          Frame 
    +* 1    Thread 0x7ffff7c3b5c0 (LWP 1048) "inventory_servi" 0x00007ffff7d5e58a in epoll_wait (epfd=3, events=0x555555711340, 
    +    maxevents=1024, timeout=49152) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
    +
    +
    +

    Alan is now even more confused: "Where are my tasks?" he thinks. +After looking through the cheatsheet and StackOverflow, he discovers there isn't a way to see which async tasks are waiting to be woken up in the debugger. +Taking a shot in the dark, Alan concludes that this thread must be thread which is polling his tasks since it is the only one in the program. +He googles "epoll_wait rust async tasks" but the results aren't very helpful and inspecting the stack frame doesn't yield him any clues as to where his tasks are so this seems to be a dead end.

    +

    After thinking a bit, Alan realizes that since the runtime must know what tasks are waiting to be woken up, perhaps he can have the service ask the async runtime for that list of tasks every 10 seconds and print them to stdout? +While crude, this would probably also help him diagnose the hang. +Alan gets to work and opens the runtime docs to figure out how to get that list of tasks. +After spending 30 minutes reading the docs, looking at StackOverflow questions and even posting on users.rust-lang.org, he discovers this simply isn't possible and he will have to add tracing to his application to figure out what's going on.

    +

    Disgruntled, Alan begins the arduous, boring task of instrumenting the application in the hope that the logs will be able to help him.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Developers, especially coming from an language that has a tightly integrated development environment, expect their debugger to help them particularly in situations where "println" debugging can't.
    • +
    • If the debugger can't help them, developers will often try to reach for a programmatic solution such as debug functions in their runtime that can be invoked at critical code paths.
    • +
    • Trying to debug an issue by adding logging and then triggering the issue is painful because of the long turn-around times when modifying code, compiling and then repro'ing the issue.
    • +
    +

    What are the sources for this story?

    +
      +
    • @erickt's comments in #76, similar comments I've heard from other developers.
    • +
    +

    Why did you choose Alan to tell this story?

    +
      +
    • Coming from a background in managed languages where the IDE, debugger and runtime are tightly integrated, Alan would be used to using those tools to diagnose his issue.
    • +
    • Alan has also been a bit insulated from the underlying OS and expects the debugger to understand the language and runtime even if the OS doesn't have similar concepts such as async tasks.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • Some of the characters with either a background in Rust or a background in systems programming might know that Rust's async doesn't always map to an underlying system feature and so they might expect that gdb or lldb is unable to help them.
    • +
    • Barbara, the experienced Rust dev, might also have used a tracing/instrumentation library from the beginning and have that to fall back on rather than having to do the work to add it now.
    • +
    +

    😱 Status quo stories: Alan writes a web framework

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    YouBuy is written using an async web framework that predates the stabilization of async function syntax. When Alan joins the company, it is using async functions for its business logic, but can't use them for request handlers because the framework doesn't support it yet. It requires the handler's return value to be Box<dyn Future<...>>. Because the web framework predates async function syntax, it requires you to take ownership of the request context (State) and return it alongside your response in the success/error cases. This means that even with async syntax, an http route handler in this web framework looks something like this (from the Gotham Diesel example):

    +
    
    +#![allow(unused)]
    +fn main() {
    +// For reference, the framework defines these type aliases.
    +pub type HandlerResult = Result<(State, Response<Body>), (State, HandlerError)>;
    +pub type HandlerFuture = dyn Future<Output = HandlerResult> + Send;
    +
    +fn get_products_handler(state: State) -> Pin<Box<HandlerFuture>> {
    +    use crate::schema::products::dsl::*;
    +
    +    async move {
    +        let repo = Repo::borrow_from(&state);
    +        let result = repo.run(move |conn| products.load::<Product>(&conn)).await;
    +        match result {
    +            Ok(prods) => {
    +                let body = serde_json::to_string(&prods).expect("Failed to serialize prods.");
    +                let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body);
    +                Ok((state, res))
    +            }
    +            Err(e) => Err((state, e.into())),
    +        }
    +    }
    +    .boxed()
    +}
    +}
    +
    +

    and then it is registered like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +    router_builder.get("/").to(get_products_handler);
    +}
    +
    +

    The handler code is forced to drift to the right a lot, because of the async block, and the lack of ability to use ? forces the use of a match block, which drifts even further to the right. This goes against what he has learned from his days writing go.

    +

    Rather than switching YouBuy to a different web framework, Alan decides to contribute to the web framework himself. After a bit of a slog and a bit of where-clause-soup, he manages to make the web framework capable of using an async fn as an http request handler. He does this by extending the router builder with a closure that boxes up the impl Future from the async fn and then passes that closure on to .to().

    +
    
    +#![allow(unused)]
    +fn main() {
    +    fn to_async<H, Fut>(self, handler: H)
    +    where
    +        Self: Sized,
    +        H: (FnOnce(State) -> Fut) + RefUnwindSafe + Copy + Send + Sync + 'static,
    +        Fut: Future<Output = HandlerResult> + Send + 'static,
    +    {
    +        self.to(move |s: State| handler(s).boxed())
    +    }
    +}
    +
    +

    The handler registration then becomes:

    +
    
    +#![allow(unused)]
    +fn main() {
    +    router_builder.get("/").to_async(get_products_handler);
    +}
    +
    +

    This allows him to strip out the async blocks in his handlers and use async fn instead.

    +
    
    +#![allow(unused)]
    +fn main() {
    +// Type the library again, in case you've forgotten:
    +pub type HandlerResult = Result<(State, Response<Body>), (State, HandlerError)>;
    +
    +async fn get_products_handler(state: State) -> HandlerResult {
    +    use crate::schema::products::dsl::*;
    +
    +    let repo = Repo::borrow_from(&state);
    +    let result = repo.run(move |conn| products.load::<Product>(&conn)).await;
    +    match result {
    +        Ok(prods) => {
    +            let body = serde_json::to_string(&prods).expect("Failed to serialize prods.");
    +            let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body);
    +            Ok((state, res))
    +        }
    +        Err(e) => Err((state, e.into())),
    +    }
    +}
    +}
    +
    +

    It's still not fantastically ergonomic though. Because the handler takes ownership of State and returns it in tuples in the result, Alan can't use the ? operator inside his http request handlers. If he tries to use ? in a handler, like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn get_products_handler(state: State) -> HandlerResult {
    +    use crate::schema::products::dsl::*;
    +
    +    let repo = Repo::borrow_from(&state);
    +    let prods = repo
    +        .run(move |conn| products.load::<Product>(&conn))
    +        .await?;
    +    let body = serde_json::to_string(&prods).expect("Failed to serialize prods.");
    +    let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body);
    +    Ok((state, res))
    +}
    +}
    +
    +

    then he receives:

    +
    error[E0277]: `?` couldn't convert the error to `(gotham::state::State, HandlerError)`
    +  --> examples/diesel/src/main.rs:84:15
    +   |
    +84 |         .await?;
    +   |               ^ the trait `From<diesel::result::Error>` is not implemented for `(gotham::state::State, HandlerError)`
    +   |
    +   = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    +   = note: required by `std::convert::From::from`
    +
    +

    Alan knows that the answer is to make another wrapper function, so that the handler can take an &mut reference to State for the lifetime of the future, like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn get_products_handler(state: &mut State) -> Result<Response<Body>, HandlerError> {
    +    use crate::schema::products::dsl::*;
    +
    +    let repo = Repo::borrow_from(&state);
    +    let prods = repo
    +        .run(move |conn| products.load::<Product>(&conn))
    +        .await?;
    +    let body = serde_json::to_string(&prods).expect("Failed to serialize prods.");
    +    let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body);
    +    Ok(res)
    +}
    +}
    +
    +

    and then register it with:

    +
    
    +#![allow(unused)]
    +fn main() {
    +    route.get("/").to_async_borrowing(get_products_handler);
    +}
    +
    +

    but Alan can't work out how to express the type signature for the .to_async_borrowing() helper function. He submits his .to_async() pull-request upstream as-is, but it nags on his mind that he has been defeated.

    +

    Shortly afterwards, someone raises a bug about ?, and a few other web framework contributors try to get it to work, but they also get stuck. When Alan tries it, the compiler diagnostics keep sending him around in circles . He can work out how to express the lifetimes for a function that returns a Box<dyn Future + 'a> but not an impl Future because of how where clauses are expressed. Alan longs to be able to say "this function takes an async function as a callback" (fn register_handler(handler: impl async Fn(state: &mut State) -> Result<Response, Error>)) and have Rust elide the lifetimes for him, like how they are elided for async functions.

    +

    A month later, one of the contributors finds a forum comment by Barbara explaining how to express what Alan is after (using higher-order lifetimes and a helper trait). They implement this and merge it. The final .to_async_borrowing() implementation ends up looking like this (also from Gotham):

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub trait AsyncHandlerFn<'a> {
    +    type Res: IntoResponse + 'static;
    +    type Fut: std::future::Future<Output = Result<Self::Res, HandlerError>> + Send + 'a;
    +    fn call(self, arg: &'a mut State) -> Self::Fut;
    +}
    +
    +impl<'a, Fut, R, F> AsyncHandlerFn<'a> for F
    +where
    +    F: FnOnce(&'a mut State) -> Fut,
    +    R: IntoResponse + 'static,
    +    Fut: std::future::Future<Output = Result<R, HandlerError>> + Send + 'a,
    +{
    +    type Res = R;
    +    type Fut = Fut;
    +    fn call(self, state: &'a mut State) -> Fut {
    +        self(state)
    +    }
    +}
    +
    +pub trait HandlerMarker {
    +    fn call_and_wrap(self, state: State) -> Pin<Box<HandlerFuture>>;
    +}
    +
    +impl<F, R> HandlerMarker for F
    +where
    +    R: IntoResponse + 'static,
    +    for<'a> F: AsyncHandlerFn<'a, Res = R> + Send + 'static,
    +{
    +    fn call_and_wrap(self, mut state: State) -> Pin<Box<HandlerFuture>> {
    +        async move {
    +            let fut = self.call(&mut state);
    +            let result = fut.await;
    +            match result {
    +                Ok(data) => {
    +                    let response = data.into_response(&state);
    +                    Ok((state, response))
    +                }
    +                Err(err) => Err((state, err)),
    +            }
    +        }
    +        .boxed()
    +    }
    +}
    +
    +...
    +    fn to_async_borrowing<F>(self, handler: F)
    +    where
    +        Self: Sized,
    +        F: HandlerMarker + Copy + Send + Sync + RefUnwindSafe + 'static,
    +    {
    +        self.to(move |state: State| handler.call_and_wrap(state))
    +    }
    +}
    +
    +

    Alan is still not sure whether it can be simplified.

    +

    Later on, other developers on the project attempt to extend this approach to work with closures, but they encounter limitations in rustc that seem to make it not work (rust-lang/rust#70263).

    +

    When Alan sees another open source project struggling with the same issue, he notices that Barbara has helped them out as well. Alan wonders how many people in the community would be able to write .to_async_borrowing() without help.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Callback-based APIs with async callbacks are a bit fiddly, because of the impl Future return type forcing you to write where-clause-soup, but not insurmountable.
    • +
    • Callback-based APIs with async callbacks that borrow their arguments are almost impossible to write without help.
    • +
    +

    What are the sources for this story?

    + +

    Why did you choose Alan/YouBuy to tell this story?

    +
      +
    • Callback-based apis are a super-common way to interact with web frameworks. I'm not sure how common they are in other fields.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • I suspect that even many Barbara-shaped developers would struggle with this problem.
    • +
    +

    😱 Status quo stories: Barbara Anguishes Over HTTP

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect people's experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara is starting a new project, working together with Alan. They want to write a Rust library and as part of it they will need to make a few HTTP calls to various web services. While HTTP is part of the responsibilities of the library it is by no means the only thing the library will need to do.

    +

    As they are pair programming, they get the part of the library where HTTP will be involved and Alan asks Barbara, "OK, how do I make an HTTP request?".

    +

    As an experienced async Rust developer Barbara has been dreading this question from the start of the project. She's tempted to ask "How long do you have?", but she quickly gathers herself and starts to outline the various considerations. She starts with a relatively simple question: "Should we use an HTTP library with a sync interface or an async interface?".

    +

    Alan, who comes from a JavaScript background, remembers the transition from callbacks to async/await in that language. He assumes Rust is merely making its transition to async/await, and it will eventually be the always preferred choice. He hesitates and asks Barbara: "Isn't async/await always better?". Barbara, who can think of many scenarios where a blocking, sync interface would likely be better, weighs whether going done the rabbit-hole of async vs sync is the right way to spend their time. She decides instead to try to directly get at the question of whether they should use async for this particular project. She knows that bridging sync and async can be difficult, and so there's another question they need to answer first: "Are we going to expose a sync or an async interface to the users of our library?".

    +

    Alan, still confused about when using a sync interface is the right choice, replies as confident as he can: "Everybody wants to use async these days. Let's do that!". He braces for Barbara's answer as he's not even sure what he said is actually true.

    +

    Barbara replies, "If we expose an async API then we need to decide which async HTTP implementation we will use". As she finishes saying this, Barbara feels slightly uneasy. She knows that it is possible to use a sync HTTP library and expose it through an async API, but she fears totally confusing Alan and so decides to not mention this fact.

    +

    Barbara looks over at Alan and sees a blank stare on his face. She repeats the question: "So, which async HTTP implementation should we use?". Alan responds with the only thing that comes to his mind: "which one is the best?" to which Barbara responds "Well, it depends on which async runtime you're using".

    +

    Alan, feeling utterly dejected and hoping that the considerations will soon end tries a new route out of this conversation: "Can we allow the user of the library to decide?".

    +

    Barbara thinks to herself, "Oh boy, we could provide a trait that abstracts over the HTTP request and response and allow the user to provide the implementation for whatever HTTP library they want... BUT, if we ever need any additional functionality that an async runtime needs to expose - like async locks or async timers - we might be forced to pick an actual runtime implementation on behalf of the user... Perhaps, we can put the most popular runtime implementations behind feature flags and let the user chose that way... BUT what if we want to allow plugging in of different runtimes?"

    +

    Alan, having watched Barbara stare off into the distance for what felt like a half-hour, feels bad for his colleague. All he can think to himself is how Rust is so much more complicated that C#.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • What is a very mundane and simple decision in many other languages, picking an HTTP library, requires users to contemplate many different considerations.
    • +
    • There is no practical way to choose an HTTP library that will serve most of the ecosystem. Sync/Async, competing runtimes, etc. - someone will always be left out.
    • +
    • HTTP is a small implementation detail of this library, but it is a HUGE decision that will ultimately be the biggest factor in who can adopt their library.
    • +
    +

    What are the sources for this story?

    +

    Based on the author's personal experience of taking newcomers to Rust through the decision making process of picking an HTTP implementation for a library.

    +

    Why did you choose Barbara to tell this story?

    +

    Barbara knows all the considerations and their consequences. A less experienced Rust developer might just make a choice even if that choice isn't the right one for them.

    +

    😱 Status quo stories: Barbara bridges sync and async in perf.rust-lang.org

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara is working on the code for perf.rust-lang.org and she wants to do a web request to load various intermediate results. She has heard that the reqwest crate is quite nice, so she decides to give it a try. She writes up an async function that does her web request:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn do_web_request(url: &Url) -> Data {
    +    ...
    +}
    +}
    +
    +

    She needs to apply this async function to a number of urls. She wants to use the iterator map function, like so:

    +
    async fn do_web_request(url: &Url) -> Data {...}
    +
    +fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    urls
    +        .iter()
    +        .map(|url| do_web_request(url))
    +        .collect()
    +}
    +
    +fn main() {
    +    /* do stuff */
    +    let data = aggregate();
    +    /* do more stuff */
    +}
    +
    +

    Of course, since do_web_request is an async fn, she gets a type error from the compiler:

    +
    error[E0277]: a value of type `Vec<Data>` cannot be built from an iterator over elements of type `impl Future`
    +  --> src/main.rs:11:14
    +   |
    +11 |             .collect();
    +   |              ^^^^^^^ value of type `Vec<Data>` cannot be built from `std::iter::Iterator<Item=impl Future>`
    +   |
    +   = help: the trait `FromIterator<impl Future>` is not implemented for `Vec<Data>`
    +
    +

    "Of course," she thinks, "I can't call an async function from a closure."

    +

    Introducing block_on

    +

    She decides that since she is not overly concerned about performance, so she decides she'll just use a call to block_on from the futures crate and execute the function synchronously:

    +
    async fn do_web_request(url: &Url) -> Data {...}
    +
    +fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    urls
    +        .iter()
    +        .map(|url| futures::executor::block_on(do_web_request(url)))
    +        .collect()
    +}
    +
    +fn main() {
    +    /* do stuff */
    +    let data = aggregate();
    +    /* do more stuff */
    +}
    +
    +

    The code compiles, and it seems to work.

    +

    Switching to async main

    +

    As Barbara works on perf.rust-lang.org, she realizes that she needs to do more and more async operations. She decides to convert her synchronous main function into an async main. She's using tokio, so she is able to do this very conveniently with the #[tokio::main] decorator:

    +
    #[tokio::main]
    +async fn main() {
    +    /* do stuff */
    +    let data = aggregate();
    +    /* do more stuff */
    +}
    +
    +

    Everything seems to work ok on her laptop, but when she pushes the code to production, it deadlocks immediately. "What's this?" she says. Confused, she runs the code on her laptop a few more times, but it seems to work fine. (There's a faq explaining what's going on. -ed.)

    +

    She decides to try debugging. She fires up a debugger but finds it is isn't really giving her useful information about what is stuck (she has basically the same problems that Alan has). She wishes she could get insight into tokio's state.

    +

    Frustrated, she starts reading the tokio docs more closely and she realizes that tokio runtimes offer their own block_on method. "Maybe using tokio's block_on will help?" she thinks, "Worth a try, anyway." She changes the aggregate function to use tokio's block_on:

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn block_on<O>(f: impl Future<Output = O>) -> O {
    +    let rt = tokio::runtime::Runtime::new().unwrap();
    +    rt.block_on(f)
    +}
    +
    +fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    urls
    +        .iter()
    +        .map(|url| block_on(do_web_request(url)))
    +        .collect()
    +}
    +}
    +
    +

    The good news is that the deadlock is gone. The bad news is that now she is getting a panic:

    +
    +

    thread 'main' panicked at 'Cannot start a runtime from within a runtime. This happens because a function (like block_on) attempted to block the current thread while the thread is being used to drive asynchronous tasks.'

    +
    +

    "Well," she thinks, "I could use the Handle API to get the current runtime instead of creating a new one? Maybe that's the problem."

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn aggregate(urls: &[&str]) -> Vec<String> {
    +    let handle = tokio::runtime::Handle::current();
    +    urls.iter()
    +        .map(|url| handle.block_on(do_web_request(url)))
    +        .collect()
    +}
    +}
    +
    +

    But this also seems to panic in the same way.

    +

    Trying out spawn_blocking

    +

    Reading more into this problem, she realizes she is supposed to be using spawn_blocking. She tries replacing block_on with tokio::task::spawn_blocking:

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    urls
    +        .iter()
    +        .map(|url| tokio::task::spawn_blocking(move || do_web_request(url)))
    +        .collect()
    +}
    +}
    +
    +

    but now she gets a type error again:

    +
    error[E0277]: a value of type `Vec<Data>` cannot be built from an iterator over elements of type `tokio::task::JoinHandle<impl futures::Future>`
    +  --> src/main.rs:22:14
    +   |
    +22 |             .collect();
    +   |              ^^^^^^^ value of type `Vec<Data>` cannot be built from `std::iter::Iterator<Item=tokio::task::JoinHandle<impl futures::Future>>`
    +   |
    +   = help: the trait `FromIterator<tokio::task::JoinHandle<impl futures::Future>>` is not implemented for `Vec<Data>`
    +
    +

    Of course! spawn_blocking, like map, just takes a regular closure, not an async closure; it's purpose is to embed some sync code within an async task, so a sync closure makes sense -- and moreover async closures aren't stable -- but it's all rather frustrating nonetheless. "Well," she thinks, "I can use spawn to get back into an async context!" So she adds a call to spawn inside the spawn_blocking closure:

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    urls
    +        .iter()
    +        .map(|url| tokio::task::spawn_blocking(move || {
    +            tokio::task::spawn(async move {
    +                do_web_request(url).await
    +            })
    +        }))
    +        .collect()
    +}
    +}
    +
    +

    But this isn't really helping, as spawn still yields a future. She's getting the same errors.

    +

    Trying out join_all

    +

    She remembers now that this whole drama started because she was converting her main function to be async. Maybe she doesn't have to bridge between sync and async? She starts digging around in the docs and finds futures::join_all. Using that, she can change aggregate to be an async function too:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    futures::join_all(
    +        urls
    +            .iter()
    +            .map(|url| do_web_request(url))
    +    ).await
    +}
    +}
    +
    +

    Things are working again now, so she is happy, although she notes that join_all has quadratic time complexity. That's not great.

    +

    Filtering

    +

    Later on, she would like to apply a filter to the aggregation operation. She realizes that if she wants to use the fetched data when doing the filtering, she has to filter the vector after the join has completed. She wants to write something like

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    futures::join_all(
    +        urls
    +            .iter()
    +            .map(|url| do_web_request(url))
    +            .filter(|data| test(data))
    +    ).await
    +}
    +}
    +
    +

    but she can't, because data is a future and not the Data itself. Instead she has to build the vector first and then post-process it:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    let mut data: Vec<Data> = futures::join_all(
    +        urls
    +            .iter()
    +            .map(|url| do_web_request(url))
    +    ).await;
    +    data.retain(test);
    +    data
    +}
    +}
    +
    +

    This is annoying, but performance isn't critical, so it's ok.

    +

    And the cycle begins again

    +

    Later on, she wants to call aggregate from another binary. This one doesn't have an async main. This context is deep inside of an iterator chain and was previously entirely synchronous. She realizes it would be a lot of work to change all the intervening stack frames to be async fn, rewrite the iterators into streams, etc. She decides to just call block_on again, even though it make her nervous.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Some projects don't care about max performance and just want things to work once the program compiles. +
        +
      • They would probably be happy with sync but as the most popular libraries for web requests, databases, etc, offer async interfaces, they may still be using async code.
      • +
      +
    • +
    • There are contexts where you can't easily add an await. +
        +
      • For example, inside of an iterator chain.
      • +
      • Big block of existing code.
      • +
      +
    • +
    • Mixing sync and async code can cause deadlocks that are really painful to diagnose, particularly when you have an async-sync-async sandwich.
    • +
    +

    Why did you choose Barbara to tell this story?

    +
      +
    • Because Mark (who experienced most of it) is a very experienced Rust developer.
    • +
    • Because you could experience this story regardless of language background or being new to Rust.
    • +
    +

    How would this story have played out differently for the other characters?

    +

    I would expect it would work out fairly similarly, except that the type errors and things might well have been more challenging for people to figure out, assuming they aren't already familiar with Rust.

    +

    Why did Barbara only get deadlocks in production, and not on her laptop?

    +

    This is because the production instance she was using had only a single core, but her laptop is a multicore machine. The actual cause of the deadlocks is that block_on basically "takes over" the tokio worker thread, and hence the tokio scheduler cannot run. If that block_on is blocked on another future that will have to execute, then some other thread must take over of completing that future. On Barbara's multicore machine, there were more threads available, so the system did not deadlock. But on the production instance, there was only a single thread. Barbara could have encountered deadlocks on her local machine as well if she had enough instances of block_on running at once.

    +

    Could the runtime have prevented the deadlock?

    +

    One way to resolve this problem would be to have a runtime that creates more threads as needed. This is what was proposed in this blog post, for example.

    +

    Adapting the number of worker threads has downsides. It requires knowing the right threshold for creating new threads (which is fundamentally unknowable). The result is that the runtime will sometimes observe that some thread seems to be taking a long time and create new threads just before that thread was about to finish. These new threads generate overhead and lower the overall performance. It also requires work stealing and other techniques that can lead to work running on mulitple cores and having less locality. Systems tuned for maximal performance tend to prefer a single thread per core for this reason.

    +

    If some runtimes are adaptive, that may also lead to people writing libraries which block without caring. These libraries would then be a performance or deadlock hazard when used on a runtime that is not adaptive.

    +

    Is there any way to have kept aggregate as a synchronous function?

    +

    Yes, Barbara could have written something like this:

    +
    fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    let handle = Handle::current();
    +
    +    urls.iter()
    +        .map(|url| handle.block_on(do_web_request(url)))
    +        .collect()
    +}
    +
    +#[tokio::main]
    +async fn main() {
    +    let data = task::spawn_blocking(move || aggregate(&[Url, Url]))
    +        .await
    +        .unwrap();
    +    println!("done");
    +}
    +
    +

    This aggregate function can only safely be invoked from inside a tokio spawn_blocking call, however, since Handle::current will only work in that context. She could also have used the original futures variant of block_on, in that case, and things would also work.

    +

    Why didn't Barbara just use the sync API for reqwest?

    +

    reqwest does offer a synchronous API, but it's not enabled by default, you have to use an optional feature. Further, not all crates offer synchronous APIs. Finally, Barbara has had some vague poor experience when using synchronous APIs, such as panics, and so she's learned the heuristic of "use the async API unless you're doing something really, really simple".

    +

    Regardless, the synchronous reqwest API is actually itself implemented using block_on: so Barbara would have ultimately hit the same issues. Further, not all crates offer synchronous APIs -- some offer only async APIs. In fact, these same issues are probably the sources of those panics that Barbara encountered in the past.

    +

    In general, though, embedded sync within async or vice versa works "ok", once you know the right tricks. Where things become challenging is when you have a "sandwich", with async-sync-async.

    +

    Do people mix spawn_blocking and spawn successfully in real code?

    +

    Yes! Here is some code from perf.rust-lang.org doing exactly that. The catch is that it winds up giving you a future in the end, which didn't work for Barbara because her code is embedded within an iterator (and hence she can't make things async "all the way down").

    +

    What are other ways people could experience similar problems mixing sync and async?

    +
      +
    • Using std::Mutex in async code.
    • +
    • Calling the blocking version of an asynchronous API. +
        +
      • For example, reqwest::blocking, the synchronous zbus and rumqtt APIs.
      • +
      • These are commonly implemented by using some variant of block_on internally.
      • +
      • Therefore they can lead to panics or deadlocks depending on what async runtime they are built from and used with.
      • +
      +
    • +
    +

    Why wouldn't Barbara just make everything async from the start?

    +

    There are times when converting synchronous code to async is difficult or even impossible. Here are some of the reasons:

    +
      +
    • Asynchronous functions cannot appear in trait impls.
    • +
    • Asynchronous functions cannot be called from APIs that take closures for callbacks, like Iterator::map in this example.
    • +
    • Sometimes the synchronous functions come from other crates and are not fully under their control.
    • +
    • It's just a lot of work!
    • +
    +

    How many variants of block_on are there?

    +
      +
    • the futures crate offers a runtime-independent block-on (which can lead to deadlocks, as in this story)
    • +
    • the tokio crate offers a block_on method (which will panic if used inside of another tokio runtime, as in this story)
    • +
    • the pollster crate exists just to offer block_on
    • +
    • the futures-lite crate offers a block_on
    • +
    • the aysnc-std crate offers block_on
    • +
    • the async-io crate offers block_on
    • +
    • ...there are probably more, but I think you get the point.
    • +
    +

    😱 Status quo stories: Barbara builds an async executor

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    Barbara wants to set priorities to the tasks spawned to the executor. However, she finds no existing async executor provides such a feature so she decided to build her own async executor.

    +

    First, Barbara found crossbeam-deque provides work-stealing deques of good quality. She decides to use it to build task schedulers. She plans for each working thread to have a loop which repeatedly gets a task from the deque and polls it.

    +

    But wait, what should we put into those queues to represent each "task"?

    +

    At first, Barbara thought it must contain the Future itself and the additional priority which was used by the scheduler. So she first wrote:

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub struct Task {
    +    future: Pin<Box<dyn Future<Output = ()> + Send + 'static>>,
    +    priority: u8
    +}
    +}
    +
    +

    And the working thread loop should run something like:

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub fn poll_task(task: Task) {
    +    let waker = todo!();
    +    let mut cx = Context::from_waker(&waker);
    +    task.future.as_mut().poll(&mut cx);
    +}
    +}
    +
    +

    "How do I create a waker?" Barbara asked herself. Quickly, she found the Wake trait. Seeing the wake method takes an Arc<Self>, she realized the task in the scheduler should be stored in an Arc. After some thought, she realizes it makes sense because both the deque in the scheduler and the waker may hold a reference to the task.

    +

    To implement Wake, the Task should contain the sender of the scheduler. She changed the code to something like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub struct Task {
    +    future: Pin<Box<dyn Future<Output = ()> + Send + 'static>>,
    +    scheduler: SchedulerSender,
    +    priority: u8,
    +}
    +
    +unsafe impl Sync for Task {}
    +
    +impl Wake for Task {
    +    fn wake(self: Arc<Self>) {
    +        self.scheduler.send(self.clone());
    +    }
    +}
    +
    +pub fn poll_task(task: Arc<Task>) {
    +    let waker = Waker::from(task.clone());
    +    let mut cx = Context::from_waker(&waker);
    +    task.future.as_mut().poll(&mut cx);
    +//  ^^^^^^^^^^^ cannot borrow as mutable
    +}
    +}
    +
    +

    The code still needed some change because the future in the Arc<Task> became immutable.

    +

    "Okay. I can guarantee Task is created from a Pin<Box<Future>>, and I think the same future won't be polled concurrently in two threads. So let me bypass the safety checks." Barbara changed the future to a raw pointer and confidently used some unsafe blocks to make it compile.

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub struct Task {
    +    future: *mut (dyn Future<Output = ()> + Send + 'static),
    +    ...
    +}
    +
    +unsafe impl Send for Task {}
    +unsafe impl Sync for Task {}
    +
    +pub fn poll_task(task: Arc<Task>) {
    +    ...
    +    unsafe {
    +        Pin::new_unchecked(&mut *task.future).poll(&mut cx);
    +    }
    +}
    +}
    +
    +

    Luckily, a colleague of Barbara noticed something wrong. The wake method could be called multiple times so multiple copies of the task could exist in the scheduler. The scheduler might not work correctly because of this. What's worse, a more severe problem was that multiple threads might get copies of the same task from the scheduler and cause a race in polling the future.

    +

    Barbara soon got a idea to solve it. She added a state field to the Task. By carefully maintaining the state of the task, she could guarantee there are no duplicate tasks in the scheduler and no race can happen when polling the future.

    +
    
    +#![allow(unused)]
    +fn main() {
    +const NOTIFIED: u64 = 1;
    +const IDLE: u64 = 2;
    +const POLLING: u64 = 3;
    +const COMPLETED: u64 = 4;
    +
    +pub struct Task {
    +    ...
    +    state: AtomicU64,
    +}
    +
    +impl Wake for Task {
    +    fn wake(self: Arc<Self>) {
    +        let mut state = self.state.load(Relaxed);
    +        loop {
    +            match state {
    +                // To prevent a task from appearing in the scheduler twice, only send the task
    +                // to the scheduler if the task is not notified nor being polling. 
    +                IDLE => match self
    +                    .state
    +                    .compare_exchange_weak(IDLE, NOTIFIED, AcqRel, Acquire)
    +                {
    +                    Ok(_) => self.scheduler.send(self.clone()),
    +                    Err(s) => state = s,
    +                },
    +                POLLING => match self
    +                    .state
    +                    .compare_exchange_weak(POLLING, NOTIFIED, AcqRel, Acquire)
    +                {
    +                    Ok(_) => break,
    +                    Err(s) => state = s,
    +                },
    +                _ => break,
    +            }
    +        }
    +    }
    +}
    +
    +pub fn poll_task(task: Arc<Task>) {
    +    let waker = Waker::from(task.clone());
    +    let mut cx = Context::from_waker(&waker);
    +    loop {
    +        // We needn't read the task state here because the waker prevents the task from
    +        // appearing in the scheduler twice. The state must be NOTIFIED now.
    +        task.state.store(POLLING, Release);
    +        if let Poll::Ready(()) = unsafe { Pin::new_unchecked(&mut *task.future).poll(&mut cx) } {
    +            task.state.store(COMPLETED, Release);
    +        }
    +        match task.state.compare_exchange(POLLING, IDLE, AcqRel, Acquire) {
    +            Ok(_) => break,
    +            Err(NOTIFIED) => continue,
    +            _ => unreachable!(),
    +        }
    +    }
    +}
    +}
    +
    +

    Barbara finished her initial implementation of the async executor. Despite there were a lot more possible optimizations, Barbara already felt it is a bit complex. She was also confused about why she needed to care so much about polling and waking while her initial requirement was just adding additional information to the task for customizing scheduling.

    +

    🤔 Frequently Asked Questions

    +

    Here are some standard FAQ to get you started. Feel free to add more!

    +

    What are the morals of the story?

    +
      +
    • It is difficult to customize any of the current async executors (to my knowledge). To have any bit of special requirement forces building an async executor from scratch.
    • +
    • It is also not easy to build an async executor. It needs quite some exploration and is error-prone. async-task is a good attempt to simplify the process but it could not satisfy all kinds of needs of customizing the executor (it does not give you the chance to extend the task itself).
    • +
    +

    What are the sources for this story?

    +
      +
    • The story was from my own experience about writing a new thread pool supporting futures: https://github.com/tikv/yatp.
    • +
    • People may feel strange about why we want to set priorities for tasks. Currently, the futures in the thread pool are like user-space threads. They are mostly CPU intensive. But I think people doing async I/O may have the same problem.
    • +
    +

    Why did you choose Barbara to tell this story?

    +
      +
    • At the time of the story, I had written Rust for years but I was new to the concepts for async/await like Pin and Waker.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • People with less experience in Rust may be less likely to build their own executor. If they try, I think the story is probably similar.
    • +
    +

    😱 Status quo stories: Barbara carefully dismisses embedded Future

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara is contributing to an OS that supports +running multiple applications on a single microcontroller. These +microcontrollers have as little as 10's of kilobytes of RAM and 100's of +kilobytes of flash memory for code. Barbara is writing a library that is used by +multiple applications -- and is linked into each application -- so the library +is very resource constrained. The library should support asynchronous operation, +so that multiple APIs can be used in parallel within each (single-threaded) +application.

    +

    Barbara begins writing the library by trying to write a console interface, which +allows byte sequences to be printed to the system console. Here is an example +sequence of events for a console print:

    +
      +
    1. The interface gives the kernel a callback to call when the print finishes, +and gives the kernel the buffer to print.
    2. +
    3. The kernel prints the buffer in the background while the app is free to do +other things.
    4. +
    5. The print finishes.
    6. +
    7. The app tells the kernel it is ready for the callback to be invoked, and the +kernel invokes the callback.
    8. +
    +

    Barbara tries to implement the API using +core::future::Future +so that the library can be compatible with the async Rust ecosystem. The OS +kernel does not expose a Future-based interface, so Barbara has to implement +Future by hand rather than using async/await syntax. She starts with a +skeleton:

    +
    
    +#![allow(unused)]
    +fn main() {
    +/// Passes `buffer` to the kernel, and prints it to the console. Returns a
    +/// future that returns `buffer` when the print is complete. The caller must
    +/// call kernel_ready_for_callbacks() when it is ready for the future to return. 
    +fn print_buffer(buffer: &'static mut [u8]) -> PrintFuture {
    +    // TODO: Set the callback
    +    // TODO: Tell the kernel to print `buffer`
    +}
    +
    +struct PrintFuture;
    +
    +impl core::future::Future for PrintFuture {
    +    type Output = &'static mut [u8];
    +
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
    +        // TODO: Detect when the print is done, retrieve `buffer`, and return
    +        // it.
    +    }
    +}
    +}
    +
    +

    Note: All error handling is omitted to keep things understandable.

    +

    Barbara begins to implement print_buffer:

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn print_buffer(buffer: &'static mut [u8]) -> PrintFuture {
    +    kernel_set_print_callback(callback);
    +    kernel_start_print(buffer);
    +    PrintFuture {}
    +}
    +
    +// New! The callback the kernel calls.
    +extern fn callback() {
    +    // TODO: Wake up the currently-waiting PrintFuture.
    +}
    +}
    +
    +

    So far so good. Barbara then works on poll:

    +
    
    +#![allow(unused)]
    +fn main() {
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
    +        if kernel_is_print_done() {
    +            return Poll::Ready(kernel_get_buffer_back());
    +        }
    +        Poll::Pending
    +    }
    +}
    +
    +

    Of course, there's something missing here. How does the callback wake the +PrintFuture? She needs to store the +Waker +somewhere! Barbara puts the Waker in a global variable so the callback can +find it (this is fine because the app is single threaded and callbacks do NOT +interrupt execution the way Unix signals do):

    +
    
    +#![allow(unused)]
    +fn main() {
    +static mut PRINT_WAKER: Option<Waker> = None;
    +
    +extern fn callback() {
    +    if let Some(waker) = unsafe { PRINT_WAKER.as_ref() } {
    +        waker.wake_by_ref();
    +    }
    +}
    +}
    +
    +

    She then modifies poll to set PRINT_WAKER:

    +
    
    +#![allow(unused)]
    +fn main() {
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
    +        if kernel_is_print_done() {
    +            return Poll::Ready(kernel_get_buffer_back());
    +        }
    +        unsafe { PRINT_WAKER = Some(cx.waker()); }
    +        Poll::Pending
    +    }
    +}
    +
    +

    PRINT_WAKER is stored in .bss, which occupies space in RAM but not flash. It +is two words in size. It points to a +RawWakerVTable +that is provided by the executor. RawWakerVTable's design is a compromise that +supports environments both with and without alloc. In no-alloc environments, +drop and clone are generally no-ops, and wake/wake_by_ref seem like +duplicates. Looking at RawWakerVTable makes Barbara realize that even though +Future was designed to work in embedded contexts, it may have too much +overhead for her use case.

    +

    Barbara decides to do some benchmarking. She comes up with a sample application +-- an app that blinks a led and responds to button presses -- and implements it +twice. One implementation does not use Future at all, the other does. Both +implementations have two asynchronous interfaces: a timer interface and a GPIO +interface, as well as an application component that uses the interfaces +concurrently. In the Future-based app, the application component functions +like a future combinator, as it is a Future that is almost always waiting for +a timer or GPIO future to finish.

    +

    To drive the application future, Barbara implements an executor. The executor +functions like a background thread. Because alloc is not available, this +executor contains a single future. The executor has a spawn function that +accepts a future and starts running that future (overwriting the existing future +in the executor if one is already present). Once started, the executor runs +entirely in kernel callbacks.

    +

    Barbara identifies several factors that add branching and error handling code to +the executor:

    +
      +
    1. spawn should be a safe function, because it is called by high-level +application code. However, that means it can be called by the future it +contains. If handled naively, this would result in dropping the future while +it executes. Barbara adds runtime checks to identify this situation.
    2. +
    3. Waker is Sync, so on a multithreaded system, a future could give another +thread access to its Waker and the other thread could wake it up. This +could happen while the poll is executing, before poll returns +Poll::Pending. Therefore, Barbara concludes that if wake is called while +a future is being polled then the future should be re-polled, even if the +current poll returns Poll::Pending. This requires putting a retry loop +into the executor.
    4. +
    5. A kernel callback may call Waker::wake after its future returns +Poll::Ready. After poll returns Poll::Ready, the executor should not +poll the future again, so Barbara adds code to ignore those wakeups. This +duplicates the "ignore spurious wakeups" functionality that exists in the +future itself.
    6. +
    +

    Ultimately, this made the executor +logic +nontrivial, and it compiled into 96 bytes of code. The executor logic is +monomorphized for each future, which allows the compiler to make inlining +optimizations, but results in a significant amount of duplicate code. +Alternatively, it could be adapted to use function pointers or vtables to avoid +the code duplication, but then the compiler definitely cannot inline +Future::poll into the kernel callbacks.

    +

    Barbara publishes an +analysis +of the relative sizes of the two app implementations, finding a large percentage +increase in both code size and RAM usage (note: stack usage was not +investigated). Most of the code size increase is from the future +combinator code.

    +

    In the no-Future version of the app, a kernel callback causes the following:

    +
      +
    1. The kernel callback calls the application logic's event-handling function for +the specific event type.
    2. +
    3. The application handles the event.
    4. +
    +

    The call in step 1 is inlined, so the compiled kernel callback consists only of +the application's event-handling logic.

    +

    In the Future-based version of the app, a kernel callback causes the +following:

    +
      +
    1. The kernel callback updates some global state to indicate the event happened.
    2. +
    3. The kernel callback invokes Waker::wake.
    4. +
    5. Waker::wake calls poll on the application future.
    6. +
    7. The application future has to look at the state saved in step 1 to determine +what event happened.
    8. +
    9. The application future handles the event.
    10. +
    +

    LLVM is unable to devirtualize the call in step 2, so the optimizer is unable to +simplify the above steps. Steps 1-4 only exist in the future-based version of +the code, and add over 200 bytes of code (note: Barbara believes this could be +reduced to between 100 and 200 bytes at the expense of execution speed).

    +

    Barbara concludes that Future is not suitable for +highly-resource-constrained environments due to the amount of code and RAM +required to implement executors and combinators.

    +

    Barbara redesigns the library she is building to use a different +concept +for implementing async APIs in Rust that are much lighter weight. She has moved +on from Future and is refining her async +traits +instead. Here are some ways in which these APIs are lighter weight than a +Future implementation:

    +
      +
    1. After monomorphization, kernel callbacks directly call application code. This +allows the application code to be inlined into the kernel callback.
    2. +
    3. The callback invocation is more precise: these APIs don't make spurious +wakeups, so application code does not need to handle spurious wakeups.
    4. +
    5. The async traits lack an equivalent of Waker. Instead, all callbacks are +expected to be 'static (i.e. they modify global state) and passing pointers +around is replaced by static dispatch.
    6. +
    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • core::future::Future isn't suitable for every asynchronous API in Rust. +Future has a lot of capabilities, such as the ability to spawn +dynamically-allocated futures, that are unnecessary in embedded systems. +These capabilities have a cost, which is unavoidable without +backwards-incompatible changes to the trait.
    • +
    • We should look at embedded Rust's relationship with Future so we don't +fragment the embedded Rust ecosystem. Other embedded crates use Future +-- Future certainly has a lot of advantages over lighter-weight +alternatives, if you have the space to use it.
    • +
    +

    Why did you choose Barbara to tell this story?

    +
      +
    • This story is about someone who is an experienced systems programmer and +an experienced Rust developer. All the other characters have "new to Rust" +or "new to programming" as a key characteristic.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • Alan would have found the #![no_std] crate ecosystem lacking async +support. He would have moved forward with a Future-based implementation, +unaware of its impact on code size and RAM usage.
    • +
    • Grace would have handled the issue similarly to Barbara, but may not +have tried as hard to use Future. Barbara has been paying attention to +Rust long enough to know how significant the Future trait is in the Rust +community and ecosystem.
    • +
    • Niklaus would really have struggled. If he asked for help, he probably +would've gotten conflicting advice from the community.
    • +
    +

    Future has a lot of features that Barbara's traits don't have -- aren't those worth the cost?

    +
      +
    • Future has many additional features that are nice-to-have: +
        +
      1. Future works smoothly in a multithreaded environment. Futures can +be Send and/or Sync, and do not need to have interior mutability, +which avoids the need for internal locking. +
          +
        • Manipulating arbitrary Rust types without locking allows async fn +to be efficient.
        • +
        +
      2. +
      3. Futures can be spawned and dropped in a dynamic manner: an executor +that supports dynamic allocation can manage an arbitrary number of +futures at runtime, and futures may easily be dropped to stop their +execution. +
          +
        • Dropping a future will also drop futures it owns, conveniently +providing good cancellation semantics.
        • +
        • A future that creates other futures (e.g. an async fn that calls +other async fns) can be spawned with only a single memory +allocation, whereas callback-based approaches need to allocate for +each asynchronous component.
        • +
        +
      4. +
      5. Community and ecosystem support. This isn't a feature of Future per +se, but the Rust language has special support for Future +(async/await) and practically the entire async Rust ecosystem is +based on Future. The ability to use existing async crates is a very +strong reason to use Future over any alternative async abstraction.
      6. +
      +
    • +
    • However, the code size impact of Future is a deal-breaker, and no number +of nice-to-have features can outweigh a deal-breaker. Barbara's traits +have every feature she needs.
    • +
    • Using Future saves developer time relative to building your own async +abstractions. Developers can use the time they saved to minimize code size +elsewhere in the project. In some cases, this may result in a net decrease +in code size for the same total effort. However, code size reduction +efforts have diminishing returns, so projects that expect to optimize code +size regardless likely won't find the tradeoff beneficial.
    • +
    +

    Is the code size impact of Future fundamental, or can the design be tweaked in a way that eliminates the tradeoff?

    +
      +
    • Future isolates the code that determines a future should wake up (the +code that calls Waker::wake) from the code that executes the future (the +executor). The only information transferred via Waker::wake is "try +waking up now" -- any other information has to be stored somewhere. When +polled, a future has to run logic to identify how it can make progress -- +in many cases this requires answering "who woke me up?" -- and retrieve +the stored information. Most completion-driven async APIs allow +information about the event to be transferred directly to the code that +handles the event. According to Barbara's analysis, the code required to +determine what event happened was the majority of the size impact of +Future.
    • +
    +

    I thought Future was a zero-cost abstraction?

    +
      +
    • Aaron Turon described futures as zero-cost +abstractions. +In the linked post, he elaborated on what he meant by zero-cost +abstraction, and eliminating their impact on code size was not part of +that definition. Since then, the statement that future is a zero-cost +abstraction has been repeated many times, mostly without the context that +Aaron provided. Rust has many zero-cost abstractions, most of which do not +impact code size (assuming optimization is enabled), so it is easy for +developers to see "futures are zero-cost" and assume that makes them +lighter-weight than they are.
    • +
    +

    How does Barbara's code handle thread-safety? Is her executor unsound?

    +
      +
    • The library Barbara is writing only works in Tock OS' userspace +environment. This environment is single-threaded: the runtime does not +provide a way to spawn another thread, hardware interrupts do not execute +in userspace, and there are no interrupt-style callbacks like Unix +signals. All kernel callbacks are invoked synchronously, using a method +that is functionally equivalent to a function call.
    • +
    +

    😱 Status quo stories: Barbara compares some code (and has a performance problem)

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]!

    +

    The story

    +

    Barbara is recreating some code that has been written in other languages they have some familiarity with. These include C++, but +also GC'd languages like Python.

    +

    This code collates a large number of requests to network services, with each response containing a large amount of data. +To speed this up, Barbara uses buffer_unordered, and writes code like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +let mut queries = futures::stream::iter(...)
    +    .map(|query| async move {
    +        let d: Data = self.client.request(&query).await?;
    +        d
    +     })
    +     .buffer_unordered(32);
    +
    +use futures::stream::StreamExt;
    +let results = queries.collect::<Vec<Data>>().await;
    +}
    +
    +

    Barbara thinks this is similar in function to things she has seen using +Python's asyncio.wait, +as well as some code her coworkers have written using c++20's coroutines, +using this:

    +
    std::vector<folly::coro::Task<Data>> tasks;
    + for (const auto& query : queries) {
    +    tasks.push_back(
    +        folly::coro::co_invoke([this, &query]() -> folly::coro::Task<Data> {
    +              co_return co_await client_->co_request(query);
    +        }
    +    )
    +}
    +auto results = co_await folly:coro::collectAllWindowed(
    +      move(tasks), 32);
    +
    +

    However, the Rust code performs quite poorly compared to the other impls, +appearing to effectively complete the requests serially, despite on the surface +looking like effectively identical code.

    +

    While investigating, Barbara looks at top, and realises that her coworker's C++20 code sometimes results in her 16 core laptop using 1600% CPU; her Rust async code never exceeds 100% CPU usage. She spends time investigating her runtime setup, but Tokio is configured to use enough worker threads to keep all her CPU cores busy. This feels to her like a bug in buffer_unordered or tokio, needing more time to investigate.

    +

    Barbara goes deep into investigating this, spends time reading how buffer_unordered is +implemented, how its underlying FuturesUnordered is implemented, and even thinks about +how polling and the tokio runtime she is using works. She evens tries to figure out if the +upstream service is doing some sort of queueing.

    +

    Eventually Barbara starts reading more about c++20 coroutines, looking closer at the folly +implementation used above, noticing that is works primarily with tasks, which are not exactly +equivalent to rust Future's.

    +

    Then it strikes her! request is implemented something like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +impl Client {
    +    async fn request(&self) -> Result<Data> {
    +        let bytes = self.inner.network_request().await?
    +        Ok(serialization_libary::from_bytes(&bytes)?)
    +   }
    +}
    +}
    +
    +

    The results from the network service are sometimes (but not always) VERY large, and the BufferedUnordered stream is contained within 1 tokio task. +The request future does non-trivial cpu work to deserialize the data. +This causes significant slowdowns in wall-time as the the process CAN BE bounded by the time it takes +the single thread running the tokio-task to deserialize all the data. +This problem hadn't shown up in test cases, where the results from the mocked network service are always small; many common uses of the network service only ever have small results, so it takes a specific production load to trigger this issue, or a large scale test.

    +

    The solution is to spawn tasks (note this requires 'static futures):

    +
    
    +#![allow(unused)]
    +fn main() {
    +let mut queries = futures::stream::iter(...)
    +    .map(|query| async move {
    +        let d: Data = tokio::spawn(
    +        self.client.request(&query)).await??;
    +        d
    +     })
    +     .buffer_unordered(32);
    +
    +use futures::stream::StreamExt;
    +let results = queries.collect::<Vec<Data>>().await;
    +}
    +
    +

    Barbara was able to figure this out by reading enough and trying things out, but had that not worked, it +would have probably required figuring out how to use perf or some similar tool.

    +

    Later on, Barbara gets surprised by this code again. It's now being used as part of a system that handles a very high number of requests per second, but sometimes the system stalls under load. She enlists Grace to help debug, and the two of them identify via perf that all the CPU cores are busy running serialization_libary::from_bytes. Barbara revisits this solution, and discovers tokio::task::block_in_place which she uses to wrap the calls to serialization_libary::from_bytes:

    +
    
    +#![allow(unused)]
    +fn main() {
    +impl Client {
    +    async fn request(&self) -> Result<Data> {
    +        let bytes = self.inner.network_request().await?
    +        Ok(tokio::task::block_in_place(move || serialization_libary::from_bytes(&bytes))?)
    +   }
    +}
    +}
    +
    +

    This resolves the problem as seen in production, but leads to Niklaus's code review suggesting the use of tokio::task::spawn_blocking inside request, instead of spawn inside buffer_unordered. This discussion is challenging, because the tradeoffs between spawn on a Future including block_in_place and spawn_blocking and then not spawning the containing Future are subtle and tricky to explain. Also, either block_in_place and spawn_blocking are heavyweight and Barbara would prefer to avoid them when the cost of serialization is low, which is usually a runtime-property of the system.

    +

    🤔 Frequently Asked Questions

    +

    Are any of these actually the correct solution?

    +
      +
    • Only in part. It may cause other kinds of contention or blocking on the runtime. As mentioned above, the deserialization work probably needs to be wrapped in something like block_in_place, so that other tasks are not starved on the runtime, or might want to use spawn_blocking. There are some important caveats/details that matter: +
        +
      • This is dependent on how the runtime works.
      • +
      • block_in_place + tokio::spawn might be better if the caller wants to control concurrency, as spawning is heavyweight when the deserialization work happens to be small. However, as mentioned above, this can be complex to reason about, and in some cases, may be as heavyweight as spawn_blocking
      • +
      • spawn_blocking, at least in some executors, cannot be cancelled, a departure from the prototypical cancellation story in async Rust.
      • +
      • "Dependently blocking work" in the context of async programming is a hard problem to solve generally. https://github.com/async-rs/async-std/pull/631 was an attempt but the details are making runtime's agnostic blocking are extremely complex.
      • +
      • The way this problem manifests may be subtle, and it may be specific production load that triggers it.
      • +
      • The outlined solutions have tradeoffs that each only make sense for certain kind of workloads. It may be better to expose the io aspect of the request and the deserialization aspect as separate APIs, but that complicates the library's usage, lays the burden of choosing the tradeoff on the callee (which may not be generally possible).
      • +
      +
    • +
    +

    What are the morals of the story?

    +
      +
    • Producing concurrent, performant code in Rust async is not always trivial. Debugging performance +issues can be difficult.
    • +
    • Rust's async model, particularly the blocking nature of polling, can be complex to reason about, +and in some cases is different from other languages choices in meaningful ways.
    • +
    • CPU-bound code can be easily hidden.
    • +
    +

    What are the sources for this story?

    +
      +
    • This is a issue I personally hit while writing code required for production.
    • +
    +

    Why did you choose Barbara to tell this story?

    +

    That's probably the person in the cast that I am most similar to, but Alan +and to some extent Grace make sense for the story as well.

    +

    How would this story have played out differently for the other characters?

    +
      +
    • Alan: May have taken longer to figure out.
    • +
    • Grace: Likely would have been as interested in the details of how polling works.
    • +
    • Niklaus: Depends on their experience.
    • +
    +

    😱 Status quo stories: Barbara makes their first foray into async

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    Barbara's first big project in Rust: a journey marred by doubt

    +

    It's Barbara's last year at their university and for their master's thesis, they have chosen to create a distributed database. +They have chosen to use their favorite language, Rust, because Rust is a suitable language for low latency applications that they have found very pleasant to work in. +Their project presents quite a challenge since they have only written some small algorithms in Rust, and it's also their first foray into creating a big distributed system.

    +

    Deciding to use Async

    +

    Up until now, Barbara has followed the development of Async from afar by reading the occasional Boats blog post, and celebrating the release announcements with the rest of the happy community. +Due to never having worked with async in other languages, and not having had a project suitable for async experimentation, their understanding of async and its ecosystem remained superficial. +However, since they have heard that async is suitable for fast networked applications, they decide to try using async for their distributed database. +After all, a fast networked application is exactly what they are trying to make.

    +

    To further solidify the decision of using async, Barbara goes looking for some information and opinions on async in Rust. Doubts created by reading some tweets about how most people should be using threads instead of async for simplicity reasons are quickly washed away by helpful conversations on the Rust discord.

    +

    Learning about Async

    +

    Still enamored with the first edition of the Rust book, they decide to go looking for an updated version, hoping that it will teach them async in the same manner that it taught them so much about the language and design patterns for Rust. Disappointed, they find no mention of async in the book, aside from a note that it exists as a keyword.

    +

    Not to be deterred, they go looking further, and start looking for similarly great documentation about async. +After stumbling upon the async book, their disappointment is briefly replaced with relief as the async book does a good job at solidifying what they have already learned in various blog posts about async, why one would use it and even a bit about how it all works under the hood. +They skim over the parts that seem a bit too in-depth for now like pinning, as they're looking to quickly get their hands dirty. +Chapter 8: The Async Ecosystem teaches them what they already picked up on through blog posts and contentious tweets: the choice of the runtime has large implications on what libraries they can use.

    +

    The wrong time for big decisions

    +

    Barbara's dreams to quickly get their hands dirty with async Rust are shattered as they discover that they first need to make a big choice: what executor to use. Having had quite a bit of exposure to the conversations surrounding the incompatible ecosystems, Barbara is perhaps a bit more paranoid about making the wrong choice than the average newcomer. +This feels like a big decision to them, as it would influence the libraries they could use and switching to a different ecosystem would be all but impossible after a while. Since they would like to choose what libraries they use before having to choose an executor, Barbara feels like the decision-making is turned on its head.

    +

    Their paranoia about choosing the right ecosystem is eased after a few days of research, and some more conversations on the Rust subreddit, after which they discover that most of the RPC libraries they might want to use are situated within the most popular Tokio ecosystem anyways. Tokio also has a brief tutorial, which teaches them some basic concepts within Tokio and talks a bit more about async in general.

    +

    Woes of a newcomer to async

    +

    Being reasonably confident in their choice of ecosystem, Barbara starts building their distributed system. +After a while, they want to introduce another networking library of which the api isn't async. Luckily Barbara picked up on that blocking was not allowed in async (or at least not in any of the currently existing executors), through reading some blog posts about async. More reddit discussions point them towards spawn_blocking in Tokio, and even rayon. But they're none the wiser about how to apply these paradigms in a neat manner.

    +

    Previously the design patterns learned in other languages, combined with the patterns taught in the book, were usually sufficient to come to reasonably neat designs. +But neither their previous experience, nor the async book nor the Tokio tutorial were of much use when trying to neatly incorporate blocking code into their previously fully async project.

    +

    Confused ever after

    +

    To this day the lack of a blessed approach leaves Barbara unsure about the choices they've made so far and misconceptions they might still have, evermore wondering if the original tweets they read about how most people should just stick to threads were right all along.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • When entering Rust's async world without previous async experience, and no benchmarks for what good async design patters look like, getting started with async can be a bit overwhelming.
    • +
    • Other languages which only have a single ecosystem seem to have a much better story for beginners since there's no fear of lock in, or ecosystem fomo about making the wrong choices early on.
    • +
    • This lack of documentation on design patterns, and solid guidance about the async ecosystem for unopiniated newcomers is partially made up for by Rust's community which often provides educated opinions on the design and technical choices one should make. Because of this getting started in async favors those who know where to find answers about Rust: blogs, Discord, Reddit, etc.
    • +
    +

    What are the sources for their story?

    +

    This is based on the author's personal experience

    +

    What documentation did the character read during this story?

    +
      +
    • Various blog posts of withoutboats
    • +
    • A blog post which spurred a lot of discussion about blocking in async: https://async.rs/blog/stop-worrying-about-blocking-the-new-async-std-runtime/
    • +
    • A nice blog post about blocking in Tokio, which still doesn't have any nice design patterns: https://ryhl.io/blog/async-what-is-blocking/
    • +
    • An example of design patterns being discussed for sync Rust in the book: https://doc.rust-lang.org/book/ch17-03-oo-design-patterns.html#trade-offs-of-the-state-pattern
    • +
    • Perhaps I should've read a bit more of Niko's blogs and his async interviews.
    • +
    +

    Why did you choose Barbara to tell their story?

    +

    Like the author of this story, Barbara had previous experience with Rust. Knowing where to find the community also played a significant part in this story. This story could be construed as how Barbara got started with async while starting to maintain some async projects.

    +

    How would their story have played out differently for the other characters?

    +
      +
    • Characters with previous async experience would probably have had a better experience getting started with async in Rust since they might know what design patterns to apply to async code. +On the other hand, since Rust's async story is noticeably different from other languages, having async experience in other languages might even be harmful by requiring the user to unlearn certain habits. I don't know if this is actually the case since I don't have any experience with async in other languages.
    • +
    • Characters which are less in touch with Rust's community than Barbara might have had a much worse time, since just skimming over the documentation might leave some lost, and unaware of common pitfalls. On the other hand, not having learned a lot about async through blog posts and other materials, might compel someone to read the documentation more thoroughly.
    • +
    +

    😱 Status quo stories: Barbara needs Async Helpers

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara, an experienced Rust user, is prototyping an async Rust service for work. To get things working quickly, she decides to prototype in tokio, since it is unclear which runtime her work will use.

    +

    She starts adding warp and tokio to her dependencies list. She notices that warp suggests using tokio with the full feature. She's a bit concerned about how this might affect the compile times and also that all of tokio is needed for her little project, but she pushes forward.

    +

    As she builds out functionality, she's pleased to see tokio provides a bunch of helpers like join! and async versions of the standard library types like channels and mutexes.

    +

    After completing one endpoint, she moves to a new one which requires streaming http responses to the client. Barbara quickly finds out from tokio docs, that it does not provide a stream type, and so she adds tokio-stream to her dependencies.

    +

    Moving on she tries to make some functions generic over the web framework underneath, so she tries to abstract off the functionality to a trait. So she writes an async function inside a trait, just like a normal function.

    +
    
    +#![allow(unused)]
    +fn main() {
    +trait Client {
    +    async fn get();
    +}
    +}
    +
    +

    Then she gets a helpful error message.

    +
    error[E0706]: functions in traits cannot be declared `async`
    + --> src/lib.rs:2:5
    +  |
    +2 |     async fn get();
    +  |     -----^^^^^^^^^^
    +  |     |
    +  |     `async` because of this
    +  |
    +  = note: `async` trait functions are not currently supported
    +  = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait
    +
    +

    She then realizes that Rust doesn't support async functions in traits yet, so she adds async-trait to her dependencies.

    +

    Some of her functions are recursive, and she wanted them to be async functions, so she sprinkles some async/.await keywords in those functions.

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn sum(n: usize) -> usize {
    +    if n == 0 {
    +        0
    +    } else {
    +        n + sum(n - 1).await
    +    }
    +}
    +}
    +
    +

    Then she gets an error message.

    +
    error[E0733]: recursion in an `async fn` requires boxing
    + --> src/lib.rs:1:27
    +  |
    +1 | async fn sum(n: usize) -> usize {
    +  |                           ^^^^^ recursive `async fn`
    +  |
    +  = note: a recursive `async fn` must be rewritten to return a boxed `dyn Future`
    +
    +

    So to make these functions async she starts boxing her futures the hard way, fighting with the compiler. She knows that async keyword is sort of a sugar for impl Future so she tries the following at first.

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn sum(n: usize) -> Box<dyn Future<Output = usize>> {
    +    Box::new(async move {
    +        if n == 0 {
    +            0
    +        } else {
    +            n + sum(n - 1).await
    +        }
    +    })
    +}
    +}
    +
    +

    The compiler gives the following error.

    +
    error[E0277]: `dyn Future<Output = usize>` cannot be unpinned
    +  --> src/main.rs:11:17
    +   |
    +11 |             n + sum(n - 1).await
    +   |                 ^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `dyn Future<Output = usize>`
    +   |
    +   = note: required because of the requirements on the impl of `Future` for `Box<dyn Future<Output = usize>>`
    +   = note: required by `poll`
    +
    +

    She then reads about Unpin and Pin, and finally comes up with a solution.

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn sum(n: usize) -> Pin<Box<dyn Future<Output = usize>>> {
    +    Box::pin(async move {
    +        if n == 0 {
    +            0
    +        } else {
    +            n + sum(n - 1).await
    +        }
    +    })
    +}
    +}
    +
    +

    The code works!

    +

    She searches online for better methods and finds out the async-book. She reads about recursion and finds out a cleaner way using the futures crate.

    +
    
    +#![allow(unused)]
    +fn main() {
    +use futures::future::{BoxFuture, FutureExt};
    +
    +fn sum(n: usize) -> BoxFuture<'static, usize> {
    +    async move {
    +        if n == 0 {
    +            0
    +        } else {
    +            n + sum(n - 1).await
    +        }
    +    }.boxed()
    +}
    +}
    +
    +

    She also asks one of her peers for a code review asynchronously, and after awaiting their response, she learns about the async-recursion crate. Then she adds async-recursion to the dependencies. Now she can write the follwing, which seems reasonably clean:

    +
    
    +#![allow(unused)]
    +fn main() {
    +#[async_recursion]
    +async fn sum(n: usize) -> usize {
    +        if n == 0 {
    +            0
    +        } else {
    +            n + sum(n - 1).await
    +        }
    +}
    +}
    +
    +

    As she is working, she realizes that what she really needs is to write a Stream of data. She starts trying to write her Stream implementation and spends several hours banging her head against her desk in frustration (her challenges are pretty similar to what Alan experienced). Ultimately she's stuck trying to figure out why her &mut self.foo call is giving her errors:

    +
    error[E0277]: `R` cannot be unpinned
    +  --src/main.rs:52:26
    +   |
    +52 |                 Pin::new(&mut self.reader).poll_read(cx, buf)
    +   |                          ^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `R`
    +   |
    +   = note: required by `Pin::<P>::new`
    +help: consider further restricting this bound
    +   |
    +40 |     R: AsyncRead + Unpin,
    +   |                  ^^^^^^^
    +
    +

    Fortunately, that weekend, @fasterthanlime publishes a blog post covering the gory details of Pin. Reading that post, she learns about pin-project, which she adds as a dependency. She's able to get her code working, but it's kind of a mess. Feeling quite proud of herself, she shows it to a friend, and they suggest that maybe she ought to try the async-stream crate. Reading that, she realizes she can use this crate to simplify some of her streams, though not all of them fit.

    +

    "Finally!", Barbara says, breathing a sigh of relief. She is done with her prototype, and shows it off at work, but to her dismay, the team decides that they need to use a custom runtime for their use case. They're building an embedded system and it has relatively limited resources. Barbara thinks, "No problem, it should be easy enough to change runtimes, right?"

    +

    So now Barbara starts the journey of replacing tokio with a myriad of off the shelf and custom helpers. She can't use warp so now she has to find an alternative. She also has to find a new channel implementations and there are a few:

    +
      +
    • In futures
    • +
    • async-std has one, but it seems to be tied to another runtime so she can't use that.
    • +
    • smol has one that is independent.
    • +
    +

    This process of "figure out which alternative is an option" is repeated many times. She also tries to use the select! macro from futures but it requires more pinning and workarounds (not to mention a stack overflow or two).

    +

    But Barbara fights through all of it. In the end, she gets it to work, but she realizes that she has a ton of random dependencies and associated compilation time. She wonders if all that dependencies will have a negative effect on the binary size. She also had to rewrite some bits of functionality on her own.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Functionality is found either in "framework"-like crates (e.g., tokio) and spread around many different ecosystem crates.
    • +
    • It's sometimes difficult to discover where this functionality lives.
    • +
    • Additionally, the trouble of non runtime-agnostic libraries becomes very apparent.
    • +
    • Helpers and utilities might have analogues across the ecosystem, but they are different in subtle ways.
    • +
    • Some patterns are clean if you know the right utility crate and very painful otherwise.
    • +
    +

    What are the sources for this story?

    +

    Issue 105

    +

    What are helper functions/macros?

    +

    They are functions/macros that helps with certain basic pieces of functionality and features. Like to await on multiple futures concurrently (join! in tokio), or else race the futures and take the result of the one that finishes first.

    +

    Will there be a difference if lifetimes are involved in async recursion functions?

    +

    Lifetimes would make it a bit more difficult. Although for simple functions it shouldn't be much of a problem.

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn concat<'a>(string: &'a mut String, slice: &'a str) -> Pin<Box<dyn Future<Output = ()> + 'a>> {
    +    Box::pin(async move {
    +        if !slice.is_empty() {
    +            string.push_str(&slice[0..1]);
    +            concat(string, &slice[1..]).await;
    +        }
    +    })
    +}
    +}
    +
    +

    Why did you choose Barbara to tell this story?

    +

    This particular issue impacts all users of Rust even (and sometimes especially) experienced ones.

    +

    How would this story have played out differently for the other characters?

    +

    Other characters may not know all their options and hence might have fewer problems as a result.

    +

    😱 Status quo stories: Barbara plays with async

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara has been following async rust for a long time, in eager anticipation +of writing some project using async. The last time she tried to do anything +with futures in rust was more than a year ago (before async functions), and +when you had to chain futures together with many calls to then +(often leading to inscrutable error messages hundreds of characters long). +This was not a pleasant experience for Barbara.

    +

    After watching the development of rust async/await (by following +discussions on /r/rust and the internals forums), she wants +to start to play around with writing async code. Before starting on any real +project, she starts with a "playground" where she can try to write some simple +async rust code to see how it feels and how it compares to how async code feels +in other languages she knows (like C# and JavaScript).

    +

    She starts by opening a blank project in VSCode with rust-analyzer. Because she's +been following the overall state of rust async, she knows that she needs a runtime, +and quickly decides to use tokio, because she knows its quite popular and well documented.

    +

    After looking the long length of the tokio tutorial, she decides to not read +most of it right now, and tries to dive right in to writing code. But she does +look at the "Hello Tokio" section that shows what feature flags are required by tokio:

    +
    [dependencies]
    +tokio = { version = "1", features = ["full"] }
    +
    +

    Poking around the tokio API docs in search of something to play with, she sees +a simple future that looks interesting: the sleep future +that will wait for a certain duration to elapse before resolving.

    +

    Borrowing again from the "Hello Tokio" tutorial to make sure she has the correct +spelling for the tokio macros, she writes up the following code:

    +
    #[tokio::main]
    +pub async fn main() {
    +    let mut rng = thread_rng();
    +    let t = Uniform::new(100, 5000);
    +
    +    let mut futures = Vec::new();
    +    for _ in 0..10 {
    +        let delay = rng.sample(t);
    +        futures.push(tokio::time::sleep(Duration::from_millis(delay)));
    +    }
    +    println!("Created 10 futures");
    +
    +    for f in futures {
    +        f.await;
    +    }
    +
    +    println!("Done waiting for all futures");
    +}
    +
    +

    This very first version she wrote compiled on the first try and had no errors +when running it. Barbara was pleased about this.

    +

    However, this example is pretty boring. The program just sits there for a few +seconds doing nothing, and giving no hints about what it's actually doing. +So for the next iteration, Barbara wants to have a message printed out +when each future is resolved. She tries this code at first:

    +
    
    +#![allow(unused)]
    +fn main() {
    +let mut futures = Vec::new();
    +for _ in 0..10 {
    +    let delay = rng.sample(t);
    +    futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| {
    +        println!("Done!");
    +    }));
    +}
    +println!("Created 10 futures");
    +}
    +
    +

    But the compiler gives this error:

    +
    error[E0277]: `()` is not a future
    +  --> src\main.rs:13:71
    +   |
    +13 |         futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| {
    +   |                                                                       ^^^^ `()` is not a future
    +   |
    +   = help: the trait `futures::Future` is not implemented for `()`
    +
    +

    Even though the error is pointing at the then function, Barbara pretty quickly +recognizes the problem -- her closure needs to return a future, but () is not +a future (though she wonders "why not?"). Looking at the tokio docs is not very +helpful. The Future trait isn't even defined in the tokio docs, so +she looks at the docs for the Future trait in the rust standard library docs +and she sees it only has 5 implementors; one of them is called Ready +which looks interesting. +Indeed, this struct is a future that will resolve instantly, which is what +she wants:

    +
    
    +#![allow(unused)]
    +fn main() {
    +for _ in 0..10 {
    +    let delay = rng.sample(t);
    +    futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| {
    +        println!("Done!");
    +        std::future::ready(())
    +    }));
    +}
    +}
    +
    +

    This compiles without error, but when Barbara goes to run the code, the output +surprises her a little bit: After waiting running the program, nothing happened +for about 4 seconds. Then the first "Done!" message was printed, followed very +quickly by the other 9 messages. Based on the code she wrote, she expected 10 +"Done!" messages to be printed to the console over the span of about 5 seconds, +with roughly a uniform distribution.

    +

    After running the program few more times, she always observes that while the +first view messages are printed after some delay, the last few messages are +always printed all at once.

    +

    Barbara has experience writing async code in JavaScript, and so she thinks for +a moment about how this toy code might have looked like if she was using JS:

    +
    async function main() {
    +    const futures = [];
    +    for (let idx = 0; idx < 10; idx++) {
    +        const delay = 100 + (Math.random() * 4900);
    +        const f = new Promise(() => {
    +            setTimeout(() => console.log("Done!"), delay)
    +        })
    +        futures.push(f);
    +    }
    +
    +    Promise.all(futures);
    +}
    +
    +

    After imagining this code, Barbara has an "ah-ha!" moment, and realizes the +problem is likely how she is waiting for the futures in her rust code. +In her rust code, she is waiting for the futures one-by-one, but in the +JavaScript code she is waiting for all of them simultaneously.

    +

    So Barbara looks for a way to wait for a Vec of futures. After a bunch of +searching in the tokio docs, she finds nothing. The closet thing she finds +is a join! macro, but this appears to only work on individually specified +futures, not a Vec of futures.

    +

    Disappointed, she then looks at the future module from the rust standard +library, but module is tiny and very +clearly doesn't have what she wants. Then Barbara has another "ah-ha!" moment +and remembers that there's a 3rd-party crate called "futures" +on crates.io that she's seen mentioned in some /r/rust posts. She checks the +docs and finds the join_all function which looks like what she wants:

    +
    
    +#![allow(unused)]
    +fn main() {
    +let mut futures = Vec::new();
    +for _ in 0..10 {
    +    let delay = rng.sample(t);
    +    futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| {
    +        println!("Done!");
    +        std::future::ready(())
    +    }));
    +}
    +println!("Created 10 futures");
    +
    +futures::future::join_all(futures).await;
    +println!("Done");
    +}
    +
    +

    It works exactly as expected now! After having written the code, Barbara begins +to remember an important detail about rust futures that she once read somewhere: +rust futures are lazy, and won't make progress unless you await them.

    +

    Happy with this success, Barbara continues to expand her toy program by making +a few small adjustments:

    +
    
    +#![allow(unused)]
    +fn main() {
    +for counter in 0..10 {
    +    let delay = rng.sample(t);
    +    let delay_future = tokio::time::sleep(Duration::from_millis(delay));
    +
    +    if counter < 9 {
    +        futures.push(delay_future.then(|_| {
    +            println!("Done!");
    +            std::future::ready(())
    +        }));
    +    } else {
    +        futures.push(delay_future.then(|_| {
    +            println!("Done with the last future!");
    +            std::future::ready(())
    +        }));
    +    }
    +}
    +}
    +
    +

    This fails to compile:

    +
    error[E0308]: mismatched types
    +
    +   = note: expected closure `[closure@src\main.rs:16:44: 19:14]`
    +              found closure `[closure@src\main.rs:21:44: 24:14]`
    +   = note: no two closures, even if identical, have the same type
    +   = help: consider boxing your closure and/or using it as a trait object
    +
    +

    This error doesn't actually surprise Barbara that much, as she is familiar with +the idea of having to box objects sometimes. She does +notice the "consider boxing your closure" error, but thinks that this is not +likely the correct solution. Instead, she thinks that she should box the +entire future.

    +

    She first adds explicit type annotations to the Vec:

    +
    
    +#![allow(unused)]
    +fn main() {
    +let mut futures: Vec<Box<dyn Future<Output=()>>> = Vec::new();
    +}
    +
    +

    She then notices that her IDE (VSCode + rust-analyzer) has a new error on +each call to push. The code assist on each error says Store this in the heap by calling 'Box::new'. She is exactly what she wants, and it happy that +rust-analyzer perfectly handled this case.

    +

    Now each future is boxed up, but there is one final error still, +this time on the call to join_all(futures).await:

    +
    error[E0277]: `dyn futures::Future<Output = ()>` cannot be unpinned
    +  --> src\main.rs:34:31
    +   |
    +34 |     futures::future::join_all(futures).await;
    +
    +

    Barbara has been around rust for long enough to know that there is a Box::pin +API, but she doesn't really understand what it does, nor does she have a good +intuition about what this API is for. But she is accustomed to just trying +things in rust to see if they work. And indeed, after changing Box::new to +Box::pin:

    +
    
    +#![allow(unused)]
    +fn main() {
    +futures.push(Box::pin(delay_future.then(|_| {
    +    println!("Done!");
    +    std::future::ready(())
    +})));
    +}
    +
    +

    and adjusting the type of the Vec:

    +
    
    +#![allow(unused)]
    +fn main() {
    +let mut futures: Vec<Pin<Box<dyn Future<Output=()>>>> = Vec::new();
    +}
    +
    +

    the code compiles and runs successfully.

    +

    But even though the run is working correctly, she wishes she had a better idea +why pinning is necessary here and feels a little uneasy having to use something +she doesn't yet understand well.

    +

    As one final task, Barbara wants to try to replace the chained call to then +with a async block. She remembers that these were a big deal in a recent +release of rust, and that they looked a lot nicer than a long chain of then +calls. She doesn't remember the exact syntax for this, but she read a blog +post about async rust a few weeks ago, and has a vague idea of how it looks.

    +

    She tries writing this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +futures.push(Box::pin(async || {
    +    tokio::time::sleep(Duration::from_millis(delay)).await;
    +    println!("Done after {}ms", delay);
    +}));
    +}
    +
    +

    The compiler gives an error:

    +
    error[E0658]: async closures are unstable
    +  --> src\main.rs:14:31
    +   |
    +14 |         futures.push(Box::pin(async || {
    +   |                               ^^^^^
    +   |
    +   = note: see issue #62290 <https://github.com/rust-lang/rust/issues/62290> for more information
    +   = help: add `#![feature(async_closure)]` to the crate attributes to enable
    +   = help: to use an async block, remove the `||`: `async {`
    +
    +

    Barbara knows that async is stable and using this nightly feature isn't what +she wants. So the tries the suggestion made by the compiler and removes the || bars:

    +
    
    +#![allow(unused)]
    +fn main() {
    +futures.push(Box::pin(async {
    +    tokio::time::sleep(Duration::from_millis(delay)).await;
    +    println!("Done after {}ms", delay);
    +}));
    +}
    +
    +

    A new error this time:

    +
    error[E0597]: `delay` does not live long enough
    +15 | |             tokio::time::sleep(Duration::from_millis(delay)).await;
    +   | |                                                      ^^^^^ borrowed value does not live long enough
    +
    +

    This is an error that Barbara is very familiar with. If she was working with +a closure, she knows she can use a move-closure (since her delay type is Copy). +But she not using a closure (she just tried, but the compiler told her to switch +to an async block), but Barbara's experience with rust tells her that it's a very +consistent language. Maybe the same keyword used in move closures will work here? +She tries it:

    +
    
    +#![allow(unused)]
    +fn main() {
    +futures.push(Box::pin(async move {
    +    tokio::time::sleep(Duration::from_millis(delay)).await;
    +    println!("Done after {}ms", delay);
    +}));
    +}
    +
    +

    It works! Satisfied but still thinking about async rust, Barbara takes a break +to eat a cookie.

    +

    🤔 Frequently Asked Questions

    +

    Here are some standard FAQ to get you started. Feel free to add more!

    +

    Why did you choose Barbara to tell this story?

    +

    Barbara has years of rust experience that she brings to bear in her async learning experiences.

    +

    What are the morals of the story?

    +
      +
    • +

      Due to Barbara's long experience with rust, she knows most of the language +pretty well (except for things like async, and advanced concepts like pinned objects). +She generally trusts the rust compiler, and she's learned over the years that she +can learn how to use an unfamiliar library by reading the API docs. As long +as she can get the types to line up and the code to compile, things generally +work as she expects.

      +

      But this is not the case with rust async:

      +
        +
      • There can be new syntax to learn (e.g. async blocks)
      • +
      • It can be hard to find basic functionality (like futures::future::join_all)
      • +
      • It's not always clear how the ecosystem all fits together +(what functionality is part of tokio? What is part of the +standard library? What is part of other crates like the +futures crate?)
      • +
      • Sometimes it looks like there multiple ways to do something: +
          +
        • What's the difference between futures::future::Future and std::future::Future?
        • +
        • What's the difference between tokio::time::Instant and std::time::Instant?
        • +
        • What's the difference between std::future::ready and futures::future::ok?
        • +
        +
      • +
      +
    • +
    • +

      Barbara's has a lot to learn. Her usual methods of learning how to use +new crates doesn't really work when learning tokio and async. She wonders +if she actually should have read the long tokio tutorial before starting. +She realizes it will take her a while to build up the necessary foundation +of knowledge before she can be proficient in async rust.

      +
    • +
    • +

      There were several times where the compiler or the IDE gave helpful error +messages and Barbara appreciated these a lot.

      +
    • +
    +

    What are the sources for this story?

    +

    Personal experiences of the author

    +

    How would this story have played out differently for the other characters?

    +

    Other characters would likely have written all the same code as Barbara, +and probably would have run into the same problems. But other characters +might have needed quite a bit longer to get to the solution.

    +

    For example, it was Barbara's experience with move-closures that led her to try +adding the move keyword to the async block. And it was her general +"ambient knowledge" of things that allowed her to remember that things +like the futures crate exist. Other characters would have likely needed +to resort to an internet search or asking on a rust community.

    + + +

    😱 Status quo stories: Barbara tries async streams

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    Barbara has years of experience in Rust and was looking forward to using some of that experience with the brand-new async functionality. Async/await had been a dream of Rust for so long, and it was finally here!

    +

    As she began her next side project, she would quickly partner up with other experienced Rust developers. One of these Rust developers, who had more async experience than Barbara, suggested they use 'async streams' as the core abstraction for this project. Barbara trusted the experience of this other developer. Though she didn't yet understand how async streams worked, she was happy to go along with the decision and build her experience over time.

    +

    Month after month, the side project grew in scope and number of users. Potential contributors would try to contribute, but some would leave because they found the combination of concepts and the additional set of borrowchecker-friendly code patterns difficult to understand and master. Barbara was frustrated to lose potential contributors but kept going.

    +

    Users also began to discover performance bottlenecks as they pushed the system harder. Barbara, determined to help the users as best she could, pulled her thinking cap tight and started to probe the codebase.

    +

    In her investigations, she experimented with adding parallelism to the async stream. She knew that if she called .next() twice, that in theory she should have two separate futures. There were a few ways to run multiple futures in parallel, so this seemed like it might pan out to be a useful way of leveraging the existing architecture.

    +

    Unfortunately, to Barbara's chagrin, async streams do not support this kind of activity. Each .next() must be awaited so that the ownership system allowed her to get the next value in the stream. Effectively, this collapsed the model to being a synchronous iterator with a more modern scent. Barbara was frustrated and started to clarify her understanding of what asynchrony actually meant, looking through the implementations for these abstractions.

    +

    When she was satisfied, she took a step back and thought for a moment. If optional parallelism was a potential win and the core data processing system actually was going to run synchronously anyway -- despite using async/await extensively in the project -- perhaps it would make more sense to redesign the core abstraction.

    +

    With that, Barbara set off to experiment with a new engine for her project. The new engine focused on standard iterators and rayon instead of async streams. As a result, the code was much easier for new users, as iterators are well-understood and have good error messages. Just as importantly, the code was noticeably faster than its async counterpart. Barbara benchmarked a variety of cases to be sure, and always found that the new, simpler approach performed better than the async stream original.

    +

    To help those who followed after her, Barbara sat down to write out her experiences to share with the rest of the world. Perhaps future engineers might learn from the twists and turns her project took.

    +

    🤔 Frequently Asked Questions

    +

    Here are some standard FAQ to get you started. Feel free to add more!

    +

    What are the morals of the story?

    +
      +
    • Easy to get the wrong idea. The current state of documentation does not make the use cases clear, so it's easy to grab this as an abstraction because it's the closest that fits.
    • +
    • Async streams are just iterators. Async streams do not offer useful asynchrony in and of themselves. A possible help here might be renaming "async streams" to "async iterators" to help underscore their use case and help developers more quickly understand their limitations.
    • +
    • A single async stream can not be operated on in parallel. They open up asynchrony only during the .next() step and are unable to offer asynchrony between steps (eg by calling .next() twice and operating on the resulting Futures).
    • +
    +

    What are the sources for this story?

    + +

    Why did you choose Barbara to tell this story?

    +

    Barbara is an experienced engineer who may come to async streams and async/await in general with a partially-incorrect set of baseline understanding. It may take her time to understand and see more clearly where her model was wrong because there are things similar to other experiences she's had. For example, Rust futures differ from C++ futures and do not offer the same style of asynchrony. Terms like "streams" sound like they may have more internal functionality, and it would be easy for an experienced developer to trip up with the wrong starting assumption.

    +

    How would this story have played out differently for the other characters?

    +
      +
    • Alan may have come to a similar idea for an architecture, as async/await is popular in languages like JavaScript and C#. Once Alan attempted to use asynchrony between units of work, namely using async streams, this is where Alan may have failed. The amount of Rust one has to know to succeed here is quite high and includes understanding Arc, Pin, Streams, traits/adapters, the borrowchecker and dealing with different types of errors, and more.
    • +
    • Grace may have chosen a different core abstraction from the start. She has a good chance of thinking through how she'd like the data processing system to work. It's possible she would have found threads and channels a better fit. This would have had different trade-offs.
    • +
    • Niklaus may have also tried to go down the async stream path. The information available is mixed and hype around async/await is too strong. This makes it shine brighter than it should. Without experience with different systems languages to temper the direction, the most likely path would be to experiment with asynchrony and hope that "underneath the surface it does the right thing."
    • +
    +

    😱 Status quo stories: Barbara trims a stacktrace

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara is triaging the reported bugs for her SLOW library. For each bug, she tries to quickly see if she can diagnose the basic area of code that is affected so she knows which people to ping to help fix it. She opens a bug report from a user complaining about a panic when too many connections arrive at the same time. The bug report includes a backtrace from the user's code, and it looks like this:

    +
    thread 'main' panicked at 'something bad happened here', src/main.rs:16:5
    +stack backtrace:
    +   0: std::panicking::begin_panic
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:519:12
    +   1: slow_rs::process_one::{{closure}}
    +             at ./src/main.rs:16:5
    +   2: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
    +   3: slow_rs::process_many::{{closure}}
    +             at ./src/main.rs:10:5
    +   4: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
    +   5: slow_rs::main::{{closure}}::{{closure}}
    +             at ./src/main.rs:4:9
    +   6: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
    +   7: slow_rs::main::{{closure}}
    +             at ./src/main.rs:3:5
    +   8: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
    +   9: tokio::park::thread::CachedParkThread::block_on::{{closure}}
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/park/thread.rs:263:54
    +  10: tokio::coop::with_budget::{{closure}}
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/coop.rs:106:9
    +  11: std::thread::local::LocalKey<T>::try_with
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:272:16
    +  12: std::thread::local::LocalKey<T>::with
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:248:9
    +  13: tokio::coop::with_budget
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/coop.rs:99:5
    +  14: tokio::coop::budget
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/coop.rs:76:5
    +  15: tokio::park::thread::CachedParkThread::block_on
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/park/thread.rs:263:31
    +  16: tokio::runtime::enter::Enter::block_on
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/runtime/enter.rs:151:13
    +  17: tokio::runtime::thread_pool::ThreadPool::block_on
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/runtime/thread_pool/mod.rs:71:9
    +  18: tokio::runtime::Runtime::block_on
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/runtime/mod.rs:452:43
    +  19: slow_rs::main
    +             at ./src/main.rs:1:1
    +  20: core::ops::function::FnOnce::call_once
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5
    +note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
    +
    +

    Barbara finds the text overwhelming. She can't just browse it to figure out what code is affected. Instead, she pops up a new tab with gist.github.com copies the text into that handy text box and starts deleting stuff. To start, she deletes the first few lines until her code appears, then she deletes:

    +
      +
    • the extra lines from calls to poll that are introduced by the async fn machinery;
    • +
    • the bits of code that come from tokio that don't affect her;
    • +
    • the intermediate wrappers from the standard library pertaining to thread-local variables.
    • +
    +

    She's a bit confused by the ::{closure} lines on her symbols but she learned by now that this is normal for async fn. After some work, she has reduced her stack to this:

    +
    thread 'main' panicked at 'something bad happened here', src/main.rs:16:5
    +stack backtrace:
    +   1: slow_rs::process_one::{{closure}} at ./src/main.rs:16:5
    +   3: slow_rs::process_many::{{closure}} at ./src/main.rs:10:5
    +   5: slow_rs::main::{{closure}}::{{closure}} at ./src/main.rs:4:9
    +   7: slow_rs::main::{{closure}} at ./src/main.rs:3:5
    +  13: <tokio stuff> 
    +  19: slow_rs::main
    +note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
    +
    +

    Based on this, she is able to figure out who to ping about the problem. She pastes her reduced stack trace into the issue pings Alan, who is responsible that module. Alan thanks her for reducing the stack trace and mentions, "Oh, when I used to work in C#, this is what the stack traces always looked like. I miss those days."

    +

    Fin.

    +

    🤔 Frequently Asked Questions

    +

    Here are some standard FAQ to get you started. Feel free to add more!

    +

    What are the morals of the story?

    +
      +
    • Rust stack traces -- but async stack traces in particular -- reveal lots of implementation details to the user: +
        +
      • Bits of the runtime and intermediate libraries whose source code is likely not of interest to the user (but it might be);
      • +
      • Intermediate frames from the stdlib;
      • +
      • ::{closure} symbols on async functions and blocks (even though they don't appear to be closures to the user);
      • +
      • calls to poll.
      • +
      +
    • +
    +

    What are the sources for this story?

    +

    Sergey Galich reported this problem, among many others.

    +

    Why did you choose Barbara to tell this story?

    +

    She knows about the desugarings that give rise to symbols like ::{closure}, but she still finds them annoying to deal with in practice.

    +

    How would this story have played out differently for the other characters?

    +
      +
    • Other characters might have wasted a lot of time trying to read through the stack trace in place before editing it.
    • +
    • They might not have known how to trim down the stack trace to something that focused on their code, or it might have taken them much longer to do so.
    • +
    +

    How does this compare to other languages?

    +
      +
    • Rust's async model does have some advantages, because the complete stack trace is available unless there is an intermediate spawn.
    • +
    • Other languages have developed special tools to connect async functions to their callers, however, which gives them a nice experience. For example, Chrome has a UI for enabling stacktraces that cross await points.
    • +
    +

    Why doesn't Barbara view this in a debugger?

    +
      +
    • Because it came in an issue report (or, freqently, as a crash report or email).
    • +
    • But also, that isn't necessarily an improvement! Expand below if you would like to see what we mean.
    • +
    +
    +(click to see how a backtrace looks in lldb) +
    * thread #1, name = 'foo', stop reason = breakpoint 1.1
    +  * frame #0: 0x0000555555583d24 foo`foo::main::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h617d49d0841ffc0d((null)=closure-0 @ 0x00007fffffffae38, (null)=<unavailable>) at main.rs:11:13
    +    frame #1: 0x0000555555583d09 foo`_$LT$T$u20$as$u20$futures_util..fns..FnOnce1$LT$A$GT$$GT$::call_once::hc559b1f3f708a7b0(self=closure-0 @ 0x00007fffffffae68, arg=<unavailable>) at fns.rs:15:9
    +    frame #2: 0x000055555557f300 foo`_$LT$futures_util..future..future..map..Map$LT$Fut$C$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hebf5b295fcc0837f(self=(pointer = 0x0000555555700e00), cx=0x00007fffffffcf50) at map.rs:57:73
    +    frame #3: 0x00005555555836ac foo`_$LT$futures_util..future..future..Map$LT$Fut$C$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::h482f253651b968e6(self=Pin<&mut futures_util::future::future::Map<tokio::time::driver::sleep::Sleep, closure-0>> @ 0x00007fffffffb268, cx=0x00007fffffffcf50)
    +at lib.rs:102:13
    +    frame #4: 0x000055555557995a foo`_$LT$futures_util..future..future..flatten..Flatten$LT$Fut$C$$LT$Fut$u20$as$u20$core..future..future..Future$GT$..Output$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hd62d2a2417c0f2ea(self=(pointer = 0x0000555555700d80), cx=0x00007fffffffcf50) at flatten.rs:48:36
    +    frame #5: 0x00005555555834fc foo`_$LT$futures_util..future..future..Then$LT$Fut1$C$Fut2$C$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hf60f05f9e9d6f307(self=Pin<&mut futures_util::future::future::Then<tokio::time::driver::sleep::Sleep, core::future::ready::Ready<()>, closure-0>> @ 0x00007fffffffc148, cx=0x00007fffffffcf50) at lib.rs:102:13
    +    frame #6: 0x000055555558474a foo`_$LT$core..pin..Pin$LT$P$GT$$u20$as$u20$core..future..future..Future$GT$::poll::h4dad267b4f10535d(self=Pin<&mut core::pin::Pin<alloc::boxed::Box<Future, alloc::alloc::Global>>> @ 0x00007fffffffc188, cx=0x00007fffffffcf50) at future.rs:119:9
    +    frame #7: 0x000055555557a693 foo`_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hdb6db40c2b3f2f1b(self=(pointer = 0x00005555557011b0), cx=0x00007fffffffcf50) at maybe_done.rs:95:38
    +    frame #8: 0x0000555555581254 foo`_$LT$futures_util..future..join_all..JoinAll$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::ha2472a9a54f0e504(self=Pin<&mut futures_util::future::join_all::JoinAll<core::pin::Pin<alloc::boxed::Box<Future, alloc::alloc::Global>>>> @ 0x00007fffffffc388, cx=0x00007fffffffcf50) at join_all.rs:101:16
    +    frame #9: 0x0000555555584095 foo`foo::main::_$u7b$$u7b$closure$u7d$$u7d$::h6459086fc041943f((null)=ResumeTy @ 0x00007fffffffcc40) at main.rs:17:5
    +    frame #10: 0x0000555555580eab foo`_$LT$core..future..from_generator..GenFuture$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$::poll::h272e2b5e808264a2(self=Pin<&mut core::future::from_generator::GenFuture<generator-0>> @ 0x00007fffffffccf8, cx=0x00007fffffffcf50) at mod.rs:80:19
    +    frame #11: 0x00005555555805a0 foo`tokio::park::thread::CachedParkThread::block_on::_$u7b$$u7b$closure$u7d$$u7d$::hbfc61d9f747eef7b at thread.rs:263:54
    +    frame #12: 0x00005555555795cc foo`tokio::coop::with_budget::_$u7b$$u7b$closure$u7d$$u7d$::ha229cfa0c1a2e13f(cell=0x00007ffff7c06712) at coop.rs:106:9
    +    frame #13: 0x00005555555773cc foo`std::thread::local::LocalKey$LT$T$GT$::try_with::h9a2f70c5c8e63288(self=0x00005555556e2a48, f=<unavailable>) at local.rs:272:16
    +    frame #14: 0x0000555555576ead foo`std::thread::local::LocalKey$LT$T$GT$::with::h12eeed0906b94d09(self=0x00005555556e2a48, f=<unavailable>) at local.rs:248:9
    +    frame #15: 0x000055555557fea6 foo`tokio::park::thread::CachedParkThread::block_on::h33b270af584419f1 [inlined] tokio::coop::with_budget::hcd477734d4970ed5(budget=(__0 = core::option::Option<u8> @ 0x00007fffffffd040), f=closure-0 @ 0x00007fffffffd048) at coop.rs:99:5
    +    frame #16: 0x000055555557fe73 foo`tokio::park::thread::CachedParkThread::block_on::h33b270af584419f1 [inlined] tokio::coop::budget::h410dced2a7df3ec8(f=closure-0 @ 0x00007fffffffd008) at coop.rs:76
    +    frame #17: 0x000055555557fe0c foo`tokio::park::thread::CachedParkThread::block_on::h33b270af584419f1(self=0x00007fffffffd078, f=<unavailable>) at thread.rs:263
    +    frame #18: 0x0000555555578f76 foo`tokio::runtime::enter::Enter::block_on::h4a9c2602e7b82840(self=0x00007fffffffd0f8, f=<unavailable>) at enter.rs:151:13
    +    frame #19: 0x000055555558482b foo`tokio::runtime::thread_pool::ThreadPool::block_on::h6b211ce19db8989d(self=0x00007fffffffd280, future=(__0 = foo::main::generator-0 @ 0x00007fffffffd200)) at mod.rs:71:9
    +    frame #20: 0x0000555555583324 foo`tokio::runtime::Runtime::block_on::h5f6badd2dffadf55(self=0x00007fffffffd278, future=(__0 = foo::main::generator-0 @ 0x00007fffffffd968)) at mod.rs:452:43
    +    frame #21: 0x0000555555579052 foo`foo::main::h3106d444f509ad81 at main.rs:5:1
    +    frame #22: 0x000055555557b69b foo`core::ops::function::FnOnce::call_once::hba86afc3f8197561((null)=(foo`foo::main::h3106d444f509ad81 at main.rs:6), (null)=<unavailable>) at function.rs:227:5
    +    frame #23: 0x0000555555580efe foo`std::sys_common::backtrace::__rust_begin_short_backtrace::h856d648367895391(f=(foo`foo::main::h3106d444f509ad81 at main.rs:6)) at backtrace.rs:125:18
    +    frame #24: 0x00005555555842f1 foo`std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::h24c58cd1e112136f at rt.rs:66:18
    +    frame #25: 0x0000555555670aca foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] core::ops::function::impls::_$LT$impl$u20$core..ops..function..FnOnce$LT$A$GT$$u20$for$u20$$RF$F$GT$::call_once::hbcc915e668c7ca11 at function.rs:259:13
    +    frame #26: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] std::panicking::try::do_call::h6b0f430d48122ddf at panicking.rs:379
    +    frame #27: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] std::panicking::try::h6ba420e2e21b5afa at panicking.rs:343
    +    frame #28: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] std::panic::catch_unwind::h8366719d1f615eee at panic.rs:431
    +    frame #29: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 at rt.rs:51
    +    frame #30: 0x00005555555842d0 foo`std::rt::lang_start::ha8694bc6fe5182cd(main=(foo`foo::main::h3106d444f509ad81 at main.rs:6), argc=1, argv=0x00007fffffffdc88) at rt.rs:65:5
    +    frame #31: 0x00005555555790ec foo`main + 28
    +    frame #32: 0x00007ffff7c2f09b libc.so.6`__libc_start_main(main=(foo`main), argc=1, argv=0x00007fffffffdc88, init=<unavailable>, fini=<unavailable>, rtld_fini=<unavailable>, stack_end=0x00007fffffffdc78) at libc-start.c:308:16
    +
    +
    +

    Doesn't Rust have backtrace trimming support?

    +

    Yes, this is the reduced backtrace. You don't even want to know what the full one looks like. Don't click it. Don't!

    +

    😱 Status quo stories: Barbara wants Async Insights

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara has an initial prototype of a new service she wrote in sync Rust. She then decides, since the service is extremely I/O bound, to port it to async Rust and her benchmarks have led her to believe that performance is being left on the table.

    +

    She does this by sprinkling async/.await everywhere, picking an executor, and moving dependencies from sync to async.

    +

    Once she has the program compiling, she thinks "oh that was easy". She runs it for the first time and surprisingly she finds out that when hitting an endpoint, nothing happens.

    +

    Barbara, always prepared, has already added logging to her service and she checks the logs. As she expected, she sees here that the endpoint handler has been invoked but then... nothing. Barbara exclaims, "Oh no! This was not what I was expecting, but let's dig deeper."

    +

    She checks the code and sees that the endpoint spawns several tasks, but unfortunately those tasks don't have much logging in them.

    +

    Barbara knows that debugging with a traditional debugger is not very fruitful in async Rust. She does a deep dive into the source code and doesn't find anything. Then she adds much more logging, but to her dismay she finds that a particular task seems stuck, but she has no idea why.

    +

    She really wishes that there was a way to get more insight into why the task is stuck. These were the thoughts inside her head at that moment:

    +
      +
    • Is it waiting on I/O?
    • +
    • Is there a deadlock?
    • +
    • Did she miss some sync code that might still be there and messing with the executor?
    • +
    +

    For the I/O question she knows to use some tools on her operating system (lsof). This reveals some open sockets but she's not sure how to act on this.

    +

    She scans the code for any std lib imports that might be blocking, but doesn't find anything.

    +

    After hours of crawling through the code, she notices that her task is receiving a message from a bounded async channel. She changes this to be an unbounded channel and then things start working.

    +

    She wants to know why the code was not working, but unfortunately she has no way to gain insight into this issue. She fears that her task might use too much memory knowing that the channel is unbounded, but she can't really tell.

    +

    She thinks, "Anyhow it is working now, let's see if we got some performance gains." After thorough benchmarking she finds out that she didn't quite get the performance gain she was expecting. "Something is not working, as intended", she thinks.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • There are very few ways to get insights into running systems. Tracing is state of the art. console.log #ftw
    • +
    • Tracing is a static activity and there's no way to dynamically gain insights.
    • +
    • While it's possible to find solutions to these issues, often you don't have insight into if those solutions bring new problems.
    • +
    • Debugging process for non-trivial issues is almost guaranteed to be painful and expensive.
    • +
    +

    What are the sources for this story?

    +

    Issue 75

    +

    What are examples of the kinds of things a user might want to have insight into?

    +
      +
    • Custom Events - logging/tracing (Per task?)
    • +
    • Memory consumption per task.
    • +
    • I/O handles in waiting state per task.
    • +
    • Number of tasks and their states over time.
    • +
    • Wake and drop specific tasks.
    • +
    • Denoised stack traces and/or stack traces that are task aware.
    • +
    • Who spawned the task?
    • +
    • Worker threads that are blocked from progressing tasks forward.
    • +
    • Tasks that are not progressing.
    • +
    +

    Why did you choose Barbara to tell this story?

    +

    Barbara knows what she's doing, but still there is little way to get insights.

    +

    How would this story have played out differently for the other characters?

    +

    Depending on what languages he was using before, Alan would likely have had experience with a stronger tooling story:

    + +

    Barbara wants to use GhostCell-like cell borrowing with futures

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the +brainstorming period. It is derived from real-life experiences of +actual Rust users and is meant to reflect some of the challenges that +Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to +the FAQ, feel free to open a PR making edits (but keep in mind that, +as they reflect peoples' experiences, status quo stories cannot be +wrong, only inaccurate). Alternatively, you may wish to add your own +status quo story!

    +

    The story

    +

    Barbara quite likes using statically-checked cell borrowing. "Cell" +in Rust terminology refers to types like Cell or RefCell that +enable interior mutability, i.e. modifying or mutably borrowing stuff +even if you've only got an immutable reference to it. +Statically-checked cell borrowing is a technique whereby one object +(an "owner") acts as a gatekeeper for borrow-access to a set of other +objects ("cells"). So if you have mutable borrow access to the owner, +you can temporarily transfer that mutable borrow access to a cell in +order to modify it. This is all checked at compile-time, hence +"statically-checked".

    +

    In comparison RefCell does borrow-checking, but it is checked at +runtime and it will panic if you make a coding mistake. The advantage +of statically-checked borrowing is that it cannot panic at runtime, +i.e. all your borrowing bugs show up at compile time. The history +goes way back, and the technique has been reinvented at least 2-3 +times as far as Barbara is aware. This is implemented in various +forms in GhostCell and +qcell.

    +

    Barbara would like to use statically-checked cell borrowing within +futures, but there is no way to get the owner borrow through the +Future::poll call, i.e. there is no argument or object that the +runtime could save the borrow in. Mostly this does not cause a +problem, because there are other ways for a runtime to share data, +e.g. data can be incorporated into the future when it is created. +However in this specific case, for the specific technique of +statically-checked cell borrows, we need an active borrow to the owner +to be passed down the call stack through all the poll calls.

    +

    So Barbara is forced to use RefCell instead and be very careful not +to cause panics. This seems like a step back. It feels dangerous to +use RefCell and to have to manually verify that her cell borrows are +panic-free.

    +

    There are good habits that you can adopt to offset the dangers, of +course. If you are very careful to make sure that you call no other +method or function which might in turn call code which might attempt +to get another borrow on the same cell, then the RefCell::borrow_mut +panics can be avoided. However this is easy to overlook, and it is +easy to fail to anticipate what indirect calls will be made by a given +call, and of course this may change later on due to maintenance and +new features. A borrow may stay active longer than expected, so calls +which appear safe might actually panic. Sometimes it's necessary to +manually drop the borrow to be sure. In addition you'll never know +what indirect calls might be made until all the possible code-paths +have been explored, either through testing or through running in +production.

    +

    So Barbara prefers to avoid all these problems, and use +statically-checked cell borrowing where possible.

    +

    Example 1: Accessing an object shared outside the runtime

    +

    In this minimized example of code to interface a stream to code +outside of the async/await system, the buffer has to be accessible +from both the stream and the outside code, so it is handled as a +Rc<RefCell<StreamBuffer<T>>>.

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub struct StreamPipe<T> {
    +    buf: Rc<RefCell<StreamBuffer<T>>>,
    +    req_more: Rc<dyn Fn()>,
    +}
    +
    +impl<T> Stream for StreamPipe<T> {
    +    type Item = T;
    +
    +    fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<Option<T>> {
    +        let mut buf = self.buf.borrow_mut();
    +        if let Some(item) = buf.value.take() {
    +            return Poll::Ready(Some(item));
    +        }
    +        if buf.end {
    +            return Poll::Ready(None);
    +        }
    +        (self.req_more)();  // Callback to request more data
    +        Poll::Pending
    +    }
    +}
    +}
    +
    +

    Probably req_more() has to schedule some background operation, but +if it doesn't and attempts to modify the shared buf immediately then +we get a panic, because buf is still borrowed. The real life code +could be a lot more complicated, and the required combination of +conditions might be harder to hit in testing.

    +

    With statically-checked borrowing, the borrow would be something like +let mut buf = self.buf.rw(cx);, and the req_more call would either +have to take the cx as an argument (forcing the previous borrow to +end) or would not take cx, meaning that it would always have to +defer the access to the buffer to other code, because without the cx +there is no possible way to access the buffer.

    +

    Example 2: Shared monitoring data

    +

    In this example, the app keeps tallies of various things in a +Monitor structure. This might be data in/out, number of errors +detected, maybe a hashmap of current links, etc. Since it is accessed +from various components, it is kept behind an Rc<RefCell<_>>.

    +
    // Dependency: futures-lite = "1.11.3"
    +use std::cell::RefCell;
    +use std::rc::Rc;
    +
    +fn main() {
    +    let monitor0 = Rc::new(RefCell::new(Monitor { count: 0 }));
    +    let monitor1 = monitor0.clone();
    +
    +    let fut0 = async move {
    +        let mut borrow = monitor0.borrow_mut();
    +        borrow.count += 1;
    +    };
    +
    +    let fut1 = async move {
    +        let mut borrow = monitor1.borrow_mut();
    +        borrow.count += 1;
    +        fut0.await;
    +    };
    +
    +    futures_lite::future::block_on(fut1);
    +}
    +
    +struct Monitor {
    +    count: usize,
    +}
    +
    +

    The problem is that this panics with a borrowing error because the +borrow is still active when the fut0.await executes and attempts +another borrow. The solution is to remember to drop the borrow before +awaiting.

    +

    In this example code the bug is obvious, but in real life maybe fut0 +only borrows in rare situations, e.g. when an error is detected. Or +maybe the future that borrows is several calls away down the +callstack.

    +

    With statically-checked borrowing, there is a slight problem in that +currently there is no way to access the poll context from async {} +code. But if there was then the borrow would be something like let mut borrow = monitor1.rw(cx);, and since the fut0.await implicitly +requires the cx in order to poll, the borrow would be forced to end +at that point.

    +

    Further investigation by Barbara

    +

    The mechanism

    +

    Barbara understands that statically-checked cell borrows work by +having an owner held by the runtime, and various instances of a cell +held by things running on top of the runtime (these cells would +typically be behind Rc references). A mutable borrow on the owner +is passed down the stack, which enables safe borrows on all the cells, +since a mutable borrow on a cell is enabled by temporarily holding +onto the mutable borrow of the owner, which is all checked at +compile-time.

    +

    So the mutable owner borrow needs to be passed through the poll +call, and Barbara realizes that this would require support from the +standard library.

    +

    Right now a &mut Context<'_> is passed to poll, and so within +Context would be the ideal place to hold a borrow on the cell owner. +However as far as Barbara can see there are difficulties with all the +current implementations:

    +
      +
    • +

      GhostCell (or qcell::LCell) may be the best available solution, +because it doesn't have any restrictions on how many runtimes might +be running or how they might be nested. But Rust insists that the +lifetimes <'id> on methods and types are explicit, so it seems +like that would force a change to the signature of poll, which +would break the ecosystem.

      +

      Here Barbara experiments with a working example of a modified Future +trait and a future implementation that makes use of LCell:

      +
    • +
    +
    // Requires dependency: qcell = "0.4"
    +use qcell::{LCell, LCellOwner};
    +use std::pin::Pin;
    +use std::rc::Rc;
    +use std::task::Poll;
    +
    +struct Context<'id, 'a> {
    +    cell_owner: &'a mut LCellOwner<'id>,
    +}
    +
    +struct AsyncCell<'id, T>(LCell<'id, T>);
    +impl<'id, T> AsyncCell<'id, T> {
    +    pub fn new(value: T) -> Self {
    +        Self(LCell::new(value))
    +    }
    +    pub fn rw<'a, 'b: 'a>(&'a self, cx: &'a mut Context<'id, 'b>) -> &'a mut T {
    +        cx.cell_owner.rw(&self.0)
    +    }
    +}
    +
    +trait Future<'id> {
    +    type Output;
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context<'id, '_>) -> Poll<Self::Output>;
    +}
    +
    +struct MyFuture<'id> {
    +    count: Rc<AsyncCell<'id, usize>>,
    +}
    +impl<'id> Future<'id> for MyFuture<'id> {
    +    type Output = ();
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context<'id, '_>) -> Poll<Self::Output> {
    +        *self.count.rw(cx) += 1;
    +        Poll::Ready(())
    +    }
    +}
    +
    +fn main() {
    +    LCellOwner::scope(|mut owner| {
    +        let mut cx = Context { cell_owner: &mut owner };
    +        let count = Rc::new(AsyncCell::new(0_usize));
    +        let mut fut = Box::pin(MyFuture { count: count.clone() });
    +        let _ = fut.as_mut().poll(&mut cx);
    +        assert_eq!(1, *count.rw(&mut cx));
    +    });
    +}
    +
    +
      +
    • +

      The other qcell types (QCell, TCell and TLCell) have various +restrictions or overheads which might make them unsuitable as a +general-purpose solution in the standard library. However they do +have the positive feature of not requiring any change in the +signature of poll. It looks like they could be added to Context +without breaking anything.

      +

      Here Barbara tries using TLCell, and finds that the signature of +poll doesn't need to change:

      +
    • +
    +
    // Requires dependency: qcell = "0.4"
    +use qcell::{TLCell, TLCellOwner};
    +use std::pin::Pin;
    +use std::rc::Rc;
    +use std::task::Poll;
    +
    +struct AsyncMarker;
    +struct Context<'a> {
    +    cell_owner: &'a mut TLCellOwner<AsyncMarker>,
    +}
    +
    +struct AsyncCell<T>(TLCell<AsyncMarker, T>);
    +impl<T> AsyncCell<T> {
    +    pub fn new(value: T) -> Self {
    +        Self(TLCell::new(value))
    +    }
    +    pub fn rw<'a, 'b: 'a>(&'a self, cx: &'a mut Context<'b>) -> &'a mut T {
    +        cx.cell_owner.rw(&self.0)
    +    }
    +}
    +
    +trait Future {
    +    type Output;
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>;
    +}
    +
    +struct MyFuture {
    +    count: Rc<AsyncCell<usize>>,
    +}
    +impl Future for MyFuture {
    +    type Output = ();
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
    +        *self.count.rw(cx) += 1;
    +        Poll::Ready(())
    +    }
    +}
    +
    +fn main() {
    +    let mut owner = TLCellOwner::new();
    +    let mut cx = Context { cell_owner: &mut owner };
    +    let count = Rc::new(AsyncCell::new(0_usize));
    +    let mut fut = Box::pin(MyFuture { count: count.clone() });
    +    let _ = fut.as_mut().poll(&mut cx);
    +    assert_eq!(1, *count.rw(&mut cx));
    +}
    +
    +

    (For comparison, TCell only allows one owner per marker type in +the whole process. QCell allows many owners, but requires a +runtime check to make sure you're using the right owner to access a +cell. TLCell allows only one owner per thread per marker type, +but also lets cells migrate between threads and be borrowed locally, +which the others don't -- see qcell +docs.)

    +

    So the choice is GhostCell/LCell and lifetimes everywhere, or various +other cell types that may be too restrictive.

    +

    Right now Barbara thinks that none of these solutions is likely to be +acceptable for the standard library. However still it is a desirable +feature, so maybe someone can think of a way around the problems. Or +maybe someone has a different perspective on what would be acceptable.

    +

    Proof of concept

    +

    The Stakker runtime makes use of +qcell-based statically-checked cell borrowing. It uses this to get +zero-cost access to actors, guaranteeing at compile time that no actor +can access any other actor's state. It also uses it to allow +inter-actor shared +state to be +accessed safely and zero-cost, without RefCell.

    +

    (For example within a Stakker actor, you can access the contents of a +Share<T> via the actor context cx as follows: share.rw(cx), +which blocks borrowing or accessing cx until that borrow on share +has been released. Share<T> is effectively a Rc<ShareCell<T> and +cx has access to an active borrow on the ShareCellOwner, just as +in the long examples above.)

    +

    Stakker doesn't use GhostCell (LCell) because of the need for <'id> +annotations on methods and types. Instead it uses the other three +cell types according to how many Stakker instances will be run, either +one Stakker instance only, one per thread, or multiple per thread. +This is selected by cargo features.

    +

    Switching implementations like this doesn't seem like an option for +the standard library.

    +

    Way forward

    +

    Barbara wonders whether there is any way this can be made to work. +For example, could the compiler derive all those <'id> annotations +automatically for GhostCell/LCell?

    +

    Or for multi-threaded runtimes, would +qcell::TLCell be acceptable? +This allows a single cell-owner in every thread. So it would not +allow nested runtimes of the same type. However it does allow borrows +to happen at the same time independently in different threads, and it +also allows the migration of cells between threads, which is safe +because that kind of cell isn't Sync.

    +

    Or is there some other form of cell-borrowing that could be devised +that would work better for this?

    +

    The interface between cells and Context should be straightforward +once a particular cell type is demonstrated to be workable with the +poll interface and futures ecosystem. For example copying the API +style of Stakker:

    +
    let rc = Rc::new(AsyncCell::new(1_u32));
    +*rc.rw(cx) = 2;
    +
    +

    So logically you obtain read-write access to a cell by naming the +authority by which you claim access, in this case the poll context. +In this case it really is naming rather than accessing since the +checks are done at compile time and the address that cx represents +doesn't actually get passed anywhere or evaluated, once inlining and +optimisation is complete.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +

    The main problem is that Barbara has got used to a safer environment +and it feels dangerous to go back to RefCell and have to manually +verify that her cell borrows are panic-free.

    +

    What are the sources for this story?

    +

    The author of Stakker is trying to interface it to async/await and +futures.

    +

    Why did you choose Barbara to tell this story?

    +

    Barbara has enough Rust knowledge to understand the benefits that +GhostCell/qcell-like borrowing might bring.

    +

    How would this story have played out differently for the other characters?

    +

    The other characters perhaps wouldn't have heard of statically-checked +cell borrows so would be unaware of the possibility of making things +safer.

    +

    😱 Status quo stories: Grace deploys her service and hits obstacles

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    When examining her service metrics, Grace notices tail latencies in the P99 that exceed their target. She identifies GC in the routing layer as the culprit. Grace follows industry trends and is already aware of Rust and its ecosystem at a high level. She decides to investigate rewriting the routing service in Rust.

    +

    To meet throughput requirements, Grace has already decided to use a thread-per-core model and minimize cross-thread communication. She explores available ecosystem options and finds no option that gets her exactly what she is looking for out of the box. However, she can use Tokio with minimal configuration to achieve her architecture.

    +

    A few months of frantic hacking follow.

    +

    montage of cats typing

    +

    Soon enough, she and her team have a proof of concept working. They run some local stress tests and notice that 5% of requests hang and fail to respond. The client eventually times out. She cannot reproduce this problem when running one-off requests locally. It only shows up when sending above 200 requests-per-second.

    +

    She realizes that she doesn't have any tooling to give her insight into what's going on. She starts to add lots of logging, attempting to tie log entries to specific connections. Using an operating system tool, she can identify the socket addresses for the hung connections, so she also includes the socket addresses in each log message. She then filters the logs to find entries associated with hung connections. Of course, the logs only tell her what the connection managed to do successfully; they don't tell her why it stopped -- so she keeps going back to add more logging until she can narrow down the exact call that hangs.

    +

    Eventually, she identifies that the last log message is right before authenticating the request. An existing C library performs authentication, integrated with the routing service using a custom future implementation. She eventually finds a bug in the implementation that resulted in occasional lost wake-ups.

    +

    She fixes the bug. The service is now working as expected and meeting Grace's performance goals.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • When coming from a background of network engineering, users will bring their own design choices around architecture. + +
    • +
    • There is a lack of debugging tools for async.
    • +
    • Writing futures by hand is error prone.
    • +
    +

    What are the sources for this story?

    +

    This is based on the experiences of helping a tokio user to diagnose a bug in their code.

    +

    Why did you choose Grace to tell this story?

    +
      +
    • The actual user who experienced this problem fit the profile of Grace.
    • +
    • The story is focused on the experience of people aiming to use workflows they are familiar with from C in a Rust setting.
    • +
    +

    How would this story have played out differently for the other characters?

    +

    Alan or Niklaus may well have had a much harder time diagnosing the problem due to not having as much of a background in systems programming. For example, they may not have known about the system tool that allowed them to find the list of dangling connections.

    +

    Could Grace have used another runtime to achieve the same objectives?

    +
      +
    • Maybe! But in this instance the people this story is based on were using tokio, so that's the one we wrote into the story.
    • +
    • (If folks want to expand this answer with details of how to achieve similar goals on other runtimes that would be welcome!)
    • +
    +

    😱 Status quo stories: Grace tries new libraries

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    When Grace searched crates.io for a library, she found an interesting library that she wants to use. The code examples use a map/reduce style. As Grace is more familiar with C and C++, as a first step she wants to convert them from this style to using loops.

    +
    Controller::new(root_kind_api, ListParams::default())
    +    .owns(child_kind_api, ListParams::default())
    +    .run(reconcile, error_policy, context)
    +    .for_each(|res| async move {
    +        match res {
    +            Ok(o) => info!("reconciled {:?}", o),
    +            Err(e) => warn!("reconcile failed: {}", Report::from(e)),
    +        }
    +    })
    +    .await;
    +
    +

    (Example code from taken from https://github.com/clux/kube-rs)

    +

    So she takes the naive approach to just convert that as follows:

    +
    let controller = Controller::new(root_kind_api, ListParams::default())
    +    .owns(child_kind_api, ListParams::default())
    +    .run(reconcile, error_policy, context);
    +
    +while let Ok(o) = controller.try_next().await {
    +    info!("reconciled {:?}", o),
    +}
    +
    +

    when she compiles her source code she ends up with wall of error messages like the following:

    +
    $ cargo run
    +   Compiling kube-rs-test v0.1.0 (/home/project-gec/src/kube-rs-test)
    +error[E0277]: `from_generator::GenFuture<[static generator@watcher<Secret>::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api<Secret>, &'r kube::Api<Secret>, ListParams, &'s ListParams, watcher::State<Secret>, impl futures::Future, ()}]>` cannot be unpinned
    +  --> src/main.rs:23:41
    +   |
    +23 |     while let Ok(o) = controller.try_next().await {
    +   |                                  ^^^^^^^^ within `futures_util::unfold_state::_::__Origin<'_, (kube::Api<Secret>, ListParams, watcher::State<Secret>), impl futures::Future>`, the trait `Unpin` is not implemented for `from_generator::GenFuture<[static generator@watcher<Secret>::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api<Secret>, &'r kube::Api<Secret>, ListParams, &'s ListParams, watcher::State<Secret>, impl futures::Future, ()}]>`
    +   |
    +   = note: required because it appears within the type `impl futures::Future`
    +   = note: required because it appears within the type `futures_util::unfold_state::_::__Origin<'_, (kube::Api<Secret>, ListParams, watcher::State<Secret>), impl futures::Future>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures_util::unfold_state::UnfoldState<(kube::Api<Secret>, ListParams, watcher::State<Secret>), impl futures::Future>`
    +   = note: required because it appears within the type `futures::stream::unfold::_::__Origin<'_, (kube::Api<Secret>, ListParams, watcher::State<Secret>), [closure@watcher<Secret>::{closure#0}], impl futures::Future>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Unfold<(kube::Api<Secret>, ListParams, watcher::State<Secret>), [closure@watcher<Secret>::{closure#0}], impl futures::Future>`
    +   = note: required because it appears within the type `impl std::marker::Send+futures::Stream`
    +   = note: required because it appears within the type `futures::stream::try_stream::into_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::IntoStream<impl std::marker::Send+futures::Stream>`
    +   = note: required because it appears within the type `futures::stream::stream::map::_::__Origin<'_, futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectFn<futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Map<futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectFn<futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>>`
    +   = note: required because it appears within the type `futures::stream::stream::_::__Origin<'_, futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Inspect<futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>`
    +   = note: required because it appears within the type `futures::stream::try_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream, [closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::InspectOk<impl std::marker::Send+futures::Stream, [closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>`
    +   = note: required because it appears within the type `impl futures::Stream`
    +
    +error[E0277]: `from_generator::GenFuture<[static generator@watcher<Secret>::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api<Secret>, &'r kube::Api<Secret>, ListParams, &'s ListParams, watcher::State<Secret>, impl futures::Future, ()}]>` cannot be unpinned
    +  --> src/main.rs:23:27
    +   |
    +23 |     while let Ok(o) = controller.try_next().await {
    +   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^ within `futures_util::unfold_state::_::__Origin<'_, (kube::Api<Secret>, ListParams, watcher::State<Secret>), impl futures::Future>`, the trait `Unpin` is not implemented for `from_generator::GenFuture<[static generator@watcher<Secret>::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api<Secret>, &'r kube::Api<Secret>, ListParams, &'s ListParams, watcher::State<Secret>, impl futures::Future, ()}]>`
    +   |
    +   = note: required because it appears within the type `impl futures::Future`
    +   = note: required because it appears within the type `futures_util::unfold_state::_::__Origin<'_, (kube::Api<Secret>, ListParams, watcher::State<Secret>), impl futures::Future>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures_util::unfold_state::UnfoldState<(kube::Api<Secret>, ListParams, watcher::State<Secret>), impl futures::Future>`
    +   = note: required because it appears within the type `futures::stream::unfold::_::__Origin<'_, (kube::Api<Secret>, ListParams, watcher::State<Secret>), [closure@watcher<Secret>::{closure#0}], impl futures::Future>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Unfold<(kube::Api<Secret>, ListParams, watcher::State<Secret>), [closure@watcher<Secret>::{closure#0}], impl futures::Future>`
    +   = note: required because it appears within the type `impl std::marker::Send+futures::Stream`
    +   = note: required because it appears within the type `futures::stream::try_stream::into_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::IntoStream<impl std::marker::Send+futures::Stream>`
    +   = note: required because it appears within the type `futures::stream::stream::map::_::__Origin<'_, futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectFn<futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Map<futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectFn<futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>>`
    +   = note: required because it appears within the type `futures::stream::stream::_::__Origin<'_, futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Inspect<futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>`
    +   = note: required because it appears within the type `futures::stream::try_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream, [closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::InspectOk<impl std::marker::Send+futures::Stream, [closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>`
    +   = note: required because it appears within the type `impl futures::Stream`
    +   = note: required because of the requirements on the impl of `futures::Future` for `TryNext<'_, impl futures::Stream>`
    +   = note: required by `futures::Future::poll`
    +
    +error: aborting due to 2 previous errors
    +
    +For more information about this error, try `rustc --explain E0277`.
    +error: could not compile `kube-rs-test`
    +
    +To learn more, run the command again with --verbose.
    +
    +

    From her background she has an understanding what could go wrong. So she remembered, that she could box the values to solve the issue with calling .boxed() on the controller. But on the other hand she could see no reason why this while loop should fail when the original .for_each() example just works as expected.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Working with async can give huge errors from fairly common place transforms, and requires knowing some "not entirely obvious" workarounds.
    • +
    +

    What are the sources for this story?

    +
      +
    • Personal experience.
    • +
    +

    Why did you choose Grace to tell this story?

    +
      +
    • Reflects the background of the author.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • Ultimately the only way to know how to solve this problem is to have seen it before and learned how to solve it. The compiler doesn't help and the result is not obvious.
    • +
    • So it probably doesn't matter that much which character is used, except that Barbara may be more likely to have seen how to solve it.
    • +
    +

    Status quo: Grace waits for gdb next

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Grace wants to walk through the behavior of a toy program.

    +

    She first fires up cargo run --verbose to remind herself what the path to the target binary is. Part of the resulting Cargo output is:

    +
         Running `target/debug/toy`
    +
    +

    From that, Grace tries running gdb on the printed path.

    +
        gdb target/debug/toy
    +
    +

    and then

    +
    (gdb) start
    +
    +

    to start the program and set a breakpoint on the main function.

    +

    Grace hits Ctrl-x a and gets a TUI mode view that includes this:

    +
    │   52          }                                                                                                                                                                                                                    │
    +│   53                                                                                                                                                                                                                               │
    +│   54          #[tokio::main]                                                                                                                                                                                                       │
    +│B+>55          pub(crate) async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {                                                                                                                                   │
    +│   56              println!("Hello, world!");                                                                                                                                                                                       │
    +│   57              let record = Box::new(Mutex::new(Record::new()));                                                                                                                                                                │
    +│   58              let record = &*Box::leak(record);                                                                                                                                                                                │
    +│   59                                                                                                                                                                                                                              
    +
    +

    Excitedly Grace types next to continue to the next line of the function.

    +

    And waits. And the program does not stop anywhere.

    +

    ...

    +

    Eventually Grace remembers that #[tokio::main] injects a different main function that isn't the one that she wrote as an async fn, and so the next operation in gdb isn't going to set a breakpoint within Grace's async fn main.

    +

    So Grace restarts the debugger, and then asks for a breakpoint on the first line of her function:

    +
    (gdb) start
    +(gdb) break 56
    +(gdb) continue
    +
    +

    And now it stops on the line that she expected:

    +
    │   53                                                                                                                                                                                                                               │
    +│   54          #[tokio::main]                                                                                                                                                                                                       │
    +│   55          pub(crate) async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {                                                                                                                                   │
    +│B+>56              println!("Hello, world!");                                                                                                                                                                                       │
    +│   57              let record = Box::new(Mutex::new(Record::new()));                                                                                                                                                                │
    +│   58              let record = &*Box::leak(record);                                                                                                                                                                                │
    +│   59                                                                                                                                                                                                                               │
    +│   60              let (tx, mut rx) = channel(100);                                                                                                                                                                                 │
    +
    +

    Grace is now able to use next to walk through the main function. She does notice that the calls to tokio::spawn are skipped over by next, but that's not as much of a surprise to her, since those are indeed function calls that are taking async blocks. She sets breakpoints on the first line of each async block so that the debugger will stop when control reaches them as she steps through the code.

    +

    🤔 Frequently Asked Questions

    +

    Here are some standard FAQ to get you started. Feel free to add more!

    +

    What are the morals of the story?

    +
      +
    • A common usage pattern: hitting next to go to what seems like the next statement, breaks down due to implementation details of #[tokio::main] and async fn.
    • +
    • This is one example of where next breaks, in terms of what a user is likely to want. The other common scenario where the behavior of next is non-ideal is higher-order functions, like option.and_then(|t| { ... }, where someone stepping through the code probably wants next to set +a temporary breakpoint in the ... of the closure.
    • +
    +

    What are the sources for this story?

    +

    Personal experience. I haven't acquired the muscle memory to stop using next, even though it breaks down in such cases.

    +

    Why did you choose Grace to tell this story?

    +

    I needed someone who, like me, would actually be tempted to use gdb even when println debugging is so popular.

    +

    How would this story have played out differently for the other characters?

    +
    * Alan might have used whatever debugger is offered by his IDE, which might have the same problem (via a toolbar button that has the same semantics as `next`); but many people using IDE's to debugger just naturally set breakpoints by hand on the lines in their IDE editor, and thus will not run into this.
    +* Most characters would probably have abandoned using gdb much sooner. E.g. Grace may have started out by adding `println` or `tracing` instrumention to the code, rather than trying to open it up in a debugger.
    +
    +

    😱 Status quo stories: Grace wants to integrate a C-API

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life +experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    Grace is integrating a camera into an embedded project. Grace has done similar projects before in the past, and has +even used this particular hardware before. Fortunately, the camera manufacturer provides a library in C to interface +with the driver.

    +

    Grace knows that Rust provides strong memory safety guarantees, and the library provided by the manufacturer sports an +API that is easy to misuse. In particular, ownership concerns are tricky and Grace and her team have often complained in +the past that making memory mistakes is very easy and one has to be extremely careful to manage lifetimes. Therefore, +for this project, Grace opts to start with Rust as many of the pitfalls of the manufacturer's library can be +automatically caught by embedding the lifetimes into a lightweight wrapper over code bridged into Rust with bindgen.

    +

    Grace's team manages to write a thin Rust wrapper over the manufacturer's library with little complication. This library +fortunately offers two interfaces for grabbing frames from the camera: a blocking interface that waits for the next +frame, and a non-blocking interface that polls to check if there are any frames currently available and waiting. Grace +is tempted to write a callback-based architecture by relying on the blocking interface that waits; however, early the +next morning the customer comes back and informs her that they are scaling up the system, and that there will now be 5 +cameras instead of 1.

    +

    She knows from experience that she cannot rely on having 5 threads blocking just for getting camera frames, because the +embedded system she is deploying to only has 2 cores total! Her team would be introducing a lot of overhead into the +system with the continuous context switching of every thread. Some folks were unsure of Rust's asynchronous +capabilities, and with the requirements changing there were some that argued maybe they should stick to the tried and +true in pure C. However, Grace eventually convinced them that the benefits of memory safety were still applicable, and +that a lot of bugs that have taken weeks to diagnose in the past have already been completely wiped out. The team +decided to stick with Rust, and dig deeper into implementing this project in async Rust.

    +

    Fortunately, Grace notices the similarities between the polling interface in the underlying C library and the Poll +type returned by Rust's Future trait. "Surely," she thinks, "I can asynchronously interleave polls to each camera over +a single thread, and process frames as they become available!" Such a thing would be quite difficult in C while +guaranteeing memory safety was maintained. However, Grace's team has already dodged that bullet thanks to writing a thin +wrapper in Rust that manages these tricky lifetimes!

    +

    The first problem: polls and wake-ups

    +

    Grace sets out to start writing the pipeline to get frames from the cameras. She realizes that while the polling call +that the manufacturer provided in their library is similar in nature to a future, it doesn't quite encompass everything. +In C, one might have to set some kind of heartbeat timer for polling. Grace explains to her team that this heartbeat is +similar to how the Waker object works in a Future's Context type, in that it is how often the execution +environment should re-try the future if the call to poll returns Poll::Pending.

    +

    A member of Grace's team asks her how she was able to understand all this. After all, Grace had been writing Rust about +as long as the rest of her team. The main difference was that she had many more years of systems programming under C and +C++ under her belt than they had. Grace responded that for the most part she had just read the documentation for the +Future trait, and that she had intuited how async-await de-sugars itself into a regular function that returns a future +of some kind. The de-sugaring process was, after all, very similar to how lambda objects in C++ were de-sugared as well. +She leaves her teammate with an +article she once found online that +explained the process in a lot more detail for a problem much harder than they were trying to solve.

    +

    Something Grace and her team learn to love immediately about Rust is that writing the Future here does not require her +team to write their own execution environment. In fact, the future can be entirely written independently of the +execution environment. She quickly writes an async method to represent the polling process:

    +
    
    +#![allow(unused)]
    +fn main() {
    +/// Gets the next frame from the camera, waiting `retry_after` time until polling again if it fails.
    +///
    +/// Returns Some(frame) if a frame is found, or None if the camera is disconnected or goes down before a frame is
    +/// available.
    +async fn next_frame(camera: &Camera, retry_after: Duration) -> Option<Frame> {
    +    while camera.is_available() {
    +        if let Some(frame) = camera.poll() {
    +            return Some(frame);
    +        } else {
    +            task::sleep_for(retry_after).await;
    +        }
    +    }
    +
    +    None
    +}
    +}
    +
    +

    The underlying C API doesn't provide any hooks that can be used to wake the Waker object on this future up, so Grace +and her team decide that it is probably best if they just choose a sufficiently balanced retry_after period in which +to try again. It does feel somewhat unsatisfying, as calling sleep_for feels about as hacky as calling +std::this_thread::sleep_for in C++. However, there is no way to directly interoperate with the waker without having a +separate thread of execution wake it up, and the underlying C library doesn't have any interface offering a notification +for when that should be. In the end, this is the same kind of code that they would write in C, just without having to +implement a custom execution loop themselves, so the team decides it is not a total loss.

    +

    The second problem: doing this many times

    +

    Doing this a single time is fine, but an end goal of the project is to be able to stream frames from the camera for +unspecified lengths of time. Grace spends some time searching, and realizes that what she actually wants is a Stream +of some kind. Stream objects are the asynchronous equivalent of iterators, and her team wants to eventually write +something akin to:

    +
    
    +#![allow(unused)]
    +fn main() {
    +let frame_stream = stream_from_camera(camera, Duration::from_millis(5));
    +
    +while let Some(frame) = frame_stream.next().await {
    +    // process frames
    +}
    +
    +println!("Frame stream closed.");
    +}
    +
    +

    She scours existing crates, in particular looking for one way to transform the above future into a stream that can be +executed many times. The only available option to transform a future into a series of futures is stream::unfold, +which seems to do exactly what Grace is looking for. Grace begins by adding a small intermediate type, and then plugging +in the remaining holes:

    +
    
    +#![allow(unused)]
    +fn main() {
    +struct StreamState {
    +    camera: Camera,
    +    retry_after: Duration,
    +}
    +
    +fn stream_from_camera(camera: Camera, retry_after: Duration) -> Unfold<Frame, ??, ??> {
    +    let initial_state = StreamState { camera, retry_after };
    +
    +    stream::unfold(initial_state, |state| async move {
    +        let frame = next_frame(&state.camera, state.retry_after).await
    +        (frame, state)
    +    })
    +}
    +}
    +
    +

    This looks like it mostly hits the mark, but Grace is left with a couple of questions for how to get the remainder of +this building:

    +
      +
    1. What is the type that fills in the third template parameter in the return? It should be the type of the future that +is returned by the async closure passed into stream::unfold, but we don't know the type of a closure!
    2. +
    3. What is the type that fills in the second template parameter of the closure in the return?
    4. +
    +

    Grace spends a lot of time trying to figure out how she might find those types! She asks Barbara what the idiomatic +way to get around this in Rust would be. Barbara explains again how closures don't have concrete types, and that the +only way to do this will be to use the impl keyword.

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn stream_from_camera(camera: Camera, retry_after: Duration) -> impl Stream<Item = Frame> {
    +    // same as before
    +}
    +}
    +
    +

    While Grace was was on the correct path and now her team is able to write the code they want to, she realizes that +sometimes writing the types out explicitly can be very hard. She reflects on what it would have taken to write the type +of an equivalent function pointer in C, and slightly laments that Rust cannot express such as clearly.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Rust was the correct choice for the team across the board thanks to its memory safety and ownership. The +underlying C library was just too complex for any single programmer to be able to maintain in their head all at +once while also trying to accomplish other tasks.
    • +
    • Evolving requirements meant that the team would have had to either start over in plain C, giving up a lot of the +safety they would gain from switching to Rust, or exploring async code in a more rigorous way.
    • +
    • The async code is actually much simpler than writing the entire execution loop in C themselves. However, the +assumption that you would write the entire execution loop is baked into the underlying library which Grace's team +cannot rewrite entirely from scratch. Integrating Rust async code with other languages which might have different +mental models can sometimes lead to unidiomatic or unsatisfying code, even if the intent of the code in Rust is +clear.
    • +
    • Grace eventually discovered that the problem was best modeled as a stream, rather than as a single future. +However, converting a future into a stream was not necessarily something that was obvious for someone with a C/C++ +background.
    • +
    • Closures and related types can be very hard to write in Rust, and if you are used to being very explicit with your +types, tricks such as the impl trick above for Streams aren't immediately obvious at first glance.
    • +
    +

    What are the sources for this story?

    +

    My own personal experience trying to incorporate the Intel RealSense library into Rust.

    +

    Why did you choose Grace to tell this story?

    +
      +
    • I am a C++ programmer who has written many event / callback based systems for streaming from custom camera +hardware. I mirror Grace in that I am used to using other systems languages, and even rely on libraries in those +languages as I've moved to Rust. I did not want to give up the memory and lifetime benefits of Rust because of +evolving runtime requirements.
    • +
    • In particular, C and C++ do not encourage async-style code, and often involve threads heavily. However, some +contexts cannot make effective use of threads. In such cases, C and C++ programmers are often oriented towards +writing custom execution loops and writing a lot of logic to do so. Grace discovered the benefit of not having to +choose an executor upfront, because the async primitives let her express most of the logic without relying on a +particular executor's behaviour.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • Alan would have struggled with understanding the embedded context of the problem, where GC'd languages don't see +much use.
    • +
    • Niklaus and Barbara may not have approached the problem with the same assimilation biases from C and C++ as +Grace. Some of the revelations in the story such as discovering that Grace's team didn't have to write their own +execution loop were unexpected benefits when starting down the path of using Rust!
    • +
    +

    Could Grace have used another runtime to achieve the same objectives?

    +

    Grace can use any runtime, which was an unexpected benefit of her work!

    +

    How did Grace know to use Unfold as the return type in the first place?

    +

    She saw it in the rustdoc for stream::unfold.

    +

    😱 Status quo stories: Niklaus Builds a Hydrodynamics Simulator

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Problem

    +

    Niklaus is a professor of physics at the University of Rustville. He needed to build a tool to solve hydrodynamics simulations; there is a common method for this that subdivides a region into a grid and computes the solution for each grid patch. All the patches in a grid for a point in time are independent and can be computed in parallel, but they are dependent on neighboring patches in the previously computed frame in time. This is a well known computational model and the patterns for basic parallelization are well established.

    +

    Niklaus wanted to write a performant tool to compute the solutions to the simulations of his research. He chose Rust because he needed high performance but he also wanted something that could be maintained by his students, who are not professional programmers. Rust's safety guarantees giver him confidence that his results are not going to be corrupted by data races or other programming errors. After implementing the core mathematical formulas, Niklaus began implementing the parallelization architecture.

    +

    His first attempt to was to emulate a common CFD design pattern: using message passing to communicate between processes that are each assigned a specific patch in the grid. So he assign one thread to each patch and used messages to communicate solution state to dependent patches. With one thread per patch this usually meant that there were 5-10x more threads than CPU cores.

    +

    This solution worked, but Niklaus had two problems with it. First, it gave him no control over CPU usage so the solution would greedily use all available CPU resources. Second, using messages to communicate solution values between patches did not scale when his team added a new feature (tracer particles) the additional messages caused by this change created so much overhead that parallel processing was no faster than serial. So, Niklaus decided to find a better solution.

    +

    Solution Path

    +

    To address the first problem: Niklaus' new design decoupled the work that needed to be done (solving physics equations for each patch in the grid) from the workers (threads), this would allow him to set the number of threads and not use all the CPU resources. So, he began looking for a tool in Rust that would meet this design pattern. When he read about async and how it allowed the user to define units of work and send those to an executor which would manage the execution of those tasks across a set of workers, he thought he'd found exactly what he needed. He also thought that the .await semantics would give a much better way of coordinating dependencies between patches. Further reading indicated that tokio was the runtime of choice for async in the community and, so, he began building a new CFD solver with async and tokio.

    +

    After making some progress, Niklaus ran into his firts problem. Niklaus had been under a false impression about what async executors do. He had assumed that a multi-threaded executor could automatically move the execution of an async block to a worker thread. When this turned out to wrong, he went to Stackoverflow and learned that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Niklaus felt that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel.

    +

    Niklaus second problem came as he tried to fully replace the message passing from the first design: sharing data between tasks. He used the async API to coordinate computation of patches so that a patch would only go to a worker when all its dependencies had completed. But he also needed to account for the solution data which was passed in the messages. He setup a shared data structure to track the solutions for each patch now that messages would not be passing that data. Learning how to properly use shared data with async was a new challenge. The initial design:

    +
    
    +#![allow(unused)]
    +fn main() {
    +    let mut stage_primitive_and_scalar = |index: BlockIndex, state: BlockState<C>, hydro: H, geometry: GridGeometry| {
    +        let stage = async move {
    +            let p = state.try_to_primitive(&hydro, &geometry)?;
    +            let s = state.scalar_mass / &geometry.cell_volumes / p.map(P::lorentz_factor);
    +            Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) )
    +        };
    +        stage_map.insert(index, runtime.spawn(stage).map(|f| f.unwrap()).shared());
    +    };
    +}
    +
    +

    lacked performance because he needed to clone the value for every task. So, Niklaus switched over to using Arc to keep a thread safe RC to the shared data. But this change introduced a lot of .map and .unwrap function calls, making the code much harder to read. He realized that managing the dependency graph was not intuitive when using async for concurrency.

    +

    As the program matured, a new problem arose: a steep learning curve with error handling. The initial version of his design used panic!s to fail the program if an error was encountered, but the stack traces were almost unreadable. He asked his teammate Grace to migrate over to using the Result idiom for error handling and Grace found a major inconvenience. The Rust type inference inconsistently breaks when propagating Result in async blocks. Grace frequently found that she had to specify the type of the error when creating a result value:

    +
    
    +#![allow(unused)]
    +fn main() {
    +Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) )  
    +}
    +
    +

    And she could not figure out why she had to add the ::<_, HydroError> to some of the Result values.

    +

    Finally, once Niklaus' team began using the new async design for their simulations, they noticed an important issue that impacted productivity: compilation time had now increased to between 30 and 60 seconds. The nature of their work requires frequent changes to code and recompilation and 30-60 seconds is long enough to have a noticeable impact on their quality of life. What he and his team want is for compilation to be 2 to 3 seconds. Niklaus believes that the use of async is a major contributor to the long compilation times.

    +

    This new solution works, but Niklaus is not satisfied with how complex his code became after the move to async and that compilation time is now 30-60 seconds. The state sharing adding a large amount of cruft with Arc and async is not well suited for using a dependency graph to schedule tasks so implementing this solution created a key component of his program that was difficult to understand and pervasive. Ultimately, his conclusion was that async is not appropriate for parallelizing computational tasks. He will be trying a new design based upon Rayon in the next version of her application.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • async looks to be the wrong choice for parallelizing compute bound/computational work
    • +
    • There is a lack of guidance to help people solving such problems get started on the right foot
    • +
    • Quality of Life issues (compilation time, type inference on Result) can create a drag on users ability to focus on their domain problem
    • +
    +

    What are the sources for this story?

    +

    This story is based on the experience of building the kilonova hydrodynamics simulation solver.

    +

    Why did you choose Niklaus and Grace to tell this story?

    +

    I chose Niklaus as the primary character in this story because this work was driven by someone who only uses programming for a small part of their work. Grace was chosen as a supporting character because of that persons experience with C/C++ programming and to avoid repeating characters.

    +

    How would this story have played out differently for the other characters?

    +
      +
    • Alan: there's a good chance he would have already had experience working with either async workflows in another language or doing parallelization of compute bound tasks; and so would already know from experience that async was not the right place to start.
    • +
    • Grace: likewise, might already have experience with problems like this and would know what to look for when searching for tools.
    • +
    • Barbara: the experience would likely be fairly similar, since the actual subject of this story is quite familiar with Rust by now
    • +
    +

    😱 Status quo stories: Niklaus Wants to Share Knowledge

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Niklaus, who sometimes goes by the pen name "Starol Klichols", has authored some long-form documentation about Rust that people have found helpful. One could even go so far as to call this documentation a "book".

    +

    Niklaus has typically minimized the use of crates in documentation like this as much as possible. Niklaus has limited time to dedicate to keeping the documentation up to date, and given the speed at which the ecosystem sometimes evolves, it's hard to keep up when crates are involved. Also, Niklaus would like to avoid limiting the readership of the documentation to the users of a particular crate only, and would like to avoid any accusations of favoritism.

    +

    But Niklaus would really really like to document async to avoid disappointing people like Barbara!

    +

    Niklaus was excited about the RFC proposing that block_on be added to the stdlib, because it seemed like that would solve Niklaus' problems. Niklaus would really like to include async in a big update to the documentation. No pressure.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +

    Writing documentation to go with the language/stdlib for something that is half in the language/stdlib and half in the ecosystem is hard. +This is related to Barbara's story about wanting to get started without needing to pick an executor. +There are topics of async that apply no matter what executor you pick, but it's hard to explain those topics without picking an executor to demonstrate with. +We all have too much work to do and not enough time.

    +

    What are the sources for this story?

    + +

    Why did you choose Niklaus to tell this story?

    +

    Niko said I couldn't add new characters.

    +

    How would this story have played out differently for the other characters?

    +

    I happen to know that the next version of Programming Rust, whose authors might be described as different characters, includes async and uses async-std. So it's possible to just pick an executor and add async to the book, but I don't wanna.

    +

    ✨ Shiny future: Where we want to get to

    +

    🚧 Under construction! Help needed! 🚧

    +

    We are still in the process of drafting the vision document. The stories you see on this page are examples meant to give a feeling for how a shiny future story looks; you can expect them to change. We encourage you to propose your own by opening a PR -- see the "How to vision" page for instructions and details.

    +

    What it this

    +

    The "shiny future" is here to tell you what we are trying to build over the next 2 to 3 years. That is, it presents our "best guess" as to what will look like a few years from now. When describing specific features, it also embeds links to design notes that describe the constraints and general plans around that feature.

    +

    🧐 You may also enjoy reading the blog post announcing the brainstorming effort.

    +

    Think big -- too big, if you have to

    +

    You'll notice that the ideas in this document are maximalist and ambitious. They stake out an opinionated position on how the ergonomics of Async I/O should feel. This position may not, in truth, be attainable, and for sure there will be changes along the way. Sometimes the realities of how computers actually work may prevent us from doing all that we'd like to. That's ok. This is a dream and a goal.

    +

    We fully expect that the designs and stories described in this document will change as we work towards realizing them. When there are areas of particular uncertainty, we use the Frequently Asked Questions and the design docs to call them out.

    +

    Where are the stories?

    +

    We haven't written these yet!

    +

    ✨ Shiny future stories: template

    +

    This is a template for adding new "shiny future" stories. To propose a new shiny future PR, do the following:

    +
      +
    • Create a new file in the shiny_future directory named something like Alan_loves_foo.md or Grace_does_bar_and_its_great.md, and start from the raw source from this template. You can replace all the italicized stuff. :)
    • +
    • Do not add a link to your story to the SUMMARY.md file; we'll do it after merging, otherwise there will be too many conflicts.
    • +
    +

    For more detailed instructions, see the How To Vision: Shiny Future page!

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story!

    +

    The story

    +

    Write your story here! Feel free to add subsections, citations, links, code examples, whatever you think is best.

    +

    🤔 Frequently Asked Questions

    +

    NB: These are generic FAQs. Feel free to customize them to your story or to add more.

    +

    What status quo stories are you retelling?

    +

    Link to status quo stories if they exist. If not, that's ok, we'll help find them.

    +

    What are the key attributes of this shiny future?

    +

    Summarize the main attributes of the design you were trying to convey.

    +

    What is the "most shiny" about this future?

    +

    Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Which benefit the most relative to today?

    +

    What are some of the potential pitfalls about this future?

    +

    Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Are any of them negatively impacted? Are there specific application areas that are impacted negatively? You might find the sample projects helpful in this regard, or perhaps looking at the goals of each character.

    +

    Did anything surprise you when writing this story? Did the story go any place unexpected?

    +

    The act of writing shiny future stories can uncover things we didn't expect to find. Did you have any new and exciting ideas as you were writing? Realize some complications that you didn't foresee?

    +

    What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written?

    +

    Often when writing stories, we think about various possibilities. Sketch out some of the turning points here -- maybe someone will want to turn them into a full story! Alternatively, if this is a variation on an existing story, link back to it here.

    +

    What are some of the things we'll have to figure out to realize this future? What projects besides Rust itself are involved, if any? (Optional)

    +

    Often the 'shiny future' stories involve technical problems that we don't really know how to solve yet. If you see such problems, list them here!

    +

    ✨ Shiny future stories: Alan switches runtimes

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story!

    +

    The story

    +

    Since his early adventures with Async I/O went so well, Alan has been looking for a way to learn more. He finds a job working in Rust. One of the projects he works on is DistriData. Looking at their code, he sees an annotation he has never seen before:

    +
    #[humboldt::main]
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let result = std::async_thread::spawn(async move {
    +        do_something()
    +    });
    +}
    +
    +

    He asks Barbara, one of his coworkers, "What is this humboldt::main annotation? What's humboldt?" She answers by explaining to him that Rust's support for async I/O is actually based around an underlying runtime. "Rust gives you a pretty decent runtime by default," she says, "but it's not tuned for our workloads. We wrote our own runtime, which we call humboldt."

    +

    Alan asks, "What happens with the various std APIs? For example, I see we are calling std::async_thread::spawn -- when I used that before, it spawned tasks into the default runtime. What happens now?"

    +

    Barbara explains that the "async" APIs in std generally execute relative to the current runtime that is in use. "When you call std::async_thread::spawn, it will spawn a task onto the current runtime. It's the same with the routines in std::async_io and so forth. The humboldt::main annotation actually just creates a synchronous main function that initializes the humboldt runtime and launches the first future. When you just write an async fn main without any annotation, the compiler synthesizes the same main function with the default runtime."

    +

    Learning more about Humboldt

    +

    Alan sees that some of the networking code that is being used in their application is creating network connections using humboldt APIs:

    +
    
    +#![allow(unused)]
    +fn main() {
    +use humboldt::network;
    +}
    +
    +

    He asks Barbara, "Why don't we use the std::async_io APIs for that?" She explains that Humboldt makes use of some custom kernel extensions that, naturally enough, aren't part of the std library. "TCP is for rubes," she says, "we are using TTCP -- Turbo TCP." Her mind wanders briefly to Turbo Pascal and she has a brief moment of yearning for the days when computers had a "Turbo" button that changed them from 8 MHz to 12 MHz. She snaps back into the present day. "Anyway, the std::async_io APIs just call into humboldt's APIs via various traits. But we can code directly against humboldt when we want to access the extra capabilities it offers. That does make it harder to change to another runtime later, though."

    +

    Integrating into other event loops

    +

    Later on, Alan is working on a visualizer front-end that integrates with DistriData to give more details about their workloads. To do it, he needs to integrate with Cocoa APIs and he wants to run certain tasks on Grand Central Dispatch. He approaches Barbara and asks, "If everything is running on humboldt, is there a way for me to run some things on another event loop? How does that work?"

    +

    Barbara explains, "That's easy. You just have to use the gcd wrapper crate -- you can find it on crates.io. It implements the runtime traits for gcd and it has a spawn method. Once you spawn your task onto gcd, everything you run within gcd will be running in that context."

    +

    Alan says, "And so, if I want to get things running on humboldt again, I spawn a task back on humboldt?"

    +

    "Exactly," says Barbara. "Humboldt has a global event loop, so you can do that by just doing humboldt::spawn. You can also just use the humboldt::io APIs directly. They will always use the Humboldt I/O threads, rather than using the current runtime."

    +

    Alan winds up with some code that looks like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn do_something_on_humboldt() {
    +    gcd::spawn(async move {
    +        let foo = do_something_on_gcd();
    +
    +        let bar = humboldt::spawn(async move {
    +            do_a_little_bit_of_stuff_on_humboldt();
    +        });
    +
    +        combine(foo.await, bar.await);
    +    });
    +}
    +}
    +
    +

    🤔 Frequently Asked Questions

    +

    What status quo story or stories are you retelling?

    +

    Good question! I'm not entirely sure! I have to go looking and think about it. Maybe we'll have to write some more.

    +

    What are the key points you were trying to convey with this status quo story?

    +
      +
    • There is some way to seamlessly change to a different default runtime to use for async fn main.
    • +
    • There is no global runtime, just the current runtime.
    • +
    • When you are using this different runtime, you can write code that is hard-coded to it and which exposes additional capabilities.
    • +
    • You can integrate multiple runtimes relatively easily, and the std APIs work with whichever is the current runtime.
    • +
    +

    How do you imagine the std APIs and so forth know the current runtime?

    +

    I was imagining that we would add fields to the Context<'_> struct that is supplied to each async fn when it runs. Users don't have direct access to this struct, but the compiler does. If the std APIs return futures, they would gain access to it that way as well. If not, we'd have to create some other mechanism.

    +

    What happens for runtimes that don't support all the features that std supports?

    +

    That feels like a portability question. See the (yet to be written) sequel story, "Alan runs some things on WebAssembly". =)

    +

    What is Alan most excited about in this future? Is he disappointed by anything?

    +

    Alan is excited about how easy it is to get async programs up and running, and he finds that they perform pretty well once he does so, so he's happy.

    +

    What is Grace most excited about in this future? Is she disappointed by anything?

    +

    Grace is concerned with memory safety and being able to deploy her tricks she knows from other languages. Memory safety works fine here. In terms of tricks she knows and loves, she's happy that she can easily switch to another runtime. The default runtime is good and works well for most things, but for the [DistriData] project, they really need something tailored just for them. She is also happy she can use the extended APIs offered by humboldt.

    +

    What is Niklaus most excited about in this future? Is he disappointed by anything?

    +

    Niklaus finds it async Rust quite accessible, for the same reasons cited as in "Alan's Trust in the Rust Compiler is Rewarded".

    +

    What is Barbara most excited about in this future? Is she disappointed by anything?

    +

    Depending on the technical details, Barbara may be a bit disappointed by the details of how std interfaces with the runtimes, as that may introduce some amount of overhead. This may not matter in practice, but it could also lead to library authors avoiding the std APIs in favor of writing generics or other mechanisms that are "zero overhead".

    +

    What projects benefit the most from this future?

    +

    Projects like DistriData really benefit from being able to customize their runtime.

    +

    Are there any projects that are hindered by this future?

    +

    We have to pay careful attention to embedded projects like MonsterMesh. Some of the most obvious ways to implement this future would lean on dyn types and perhaps boxing, and that would rule out some embedded projects. Embedded runtimes like embassy are also the most different in their overall design and they would have the hardest time fitting into the std APIs (of course, many embedded projects are already no-std, but many of them make use of some subset of the std capabilities through the facade). In general, traits and generic functions in std could lead to larger code size, as well.

    +

    What are the incremental steps towards realizing this shiny future?

    +

    There are a few steps required to realize this future:

    +
      +
    • We have to determine the core mechanism that is used for std types to interface with the current scheduler. +
        +
      • Is it based on dynamic dispatch? Delayed linking? Some other tricks we have yet to invent?
      • +
      • Depending on the details, language changes may be required.
      • +
      +
    • +
    • We have to hammer out the set of traits or other interfaces used to define the parts of a runtime (see below for some of the considerations). +
        +
      • We can start with easier cases and proceed to more difficult ones, however.
      • +
      +
    • +
    +

    Does realizing this future require cooperation between many projects?

    +

    Yes. We will need to collaborate to define traits that std can use to interface with each runtime, and the runtimes will need to implement those traits. This is going to be non-trivial, because we want to preserve the ability for independent runtimes to experiment, while also preserving the ability to "max and match" and re-use components. For example, it'd probably be useful to have a bunch of shared I/O infrastructure, or to have utility crates for locks, for running threadpools, and the like. On the other hand, tokio takes advantage of the fact that it owns the I/O types and the locks and the scheduler to do some nifty tricks and we would want to ensure that remains an option.

    +

    ✨ Shiny future stories: Alan's trust in the compiler is rewarded

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story!

    +

    The story

    +

    Trust the compiler

    +

    Alan has a lot of experience in C#, but in the meantime has created some successful projects in Rust. +He has dealt with his fair share of race conditions/thread safety issues during runtime in C#, but is now starting to trust that if his Rust code compiles, +he won't have those annoying runtime problems to deal with.

    +

    This allows him to try to squeeze his programs for as much performance as he wants, because the compiler will stop him when he tries things that could result in runtime problems. +After seeing the performance and the lack of runtime problems, he starts to trust the compiler more and more with each project finished.

    +

    He knows what he can do with external libraries, he does not need to fear concurrency issues if the library cannot be used from multiple threads, because the compiler would tell him.

    +

    His trust in the compiler solidifies further the more he codes in Rust.

    +

    The first async project

    +

    Alan now starts with his first async project. He opens up the Rust book to the "Async I/O" chapter and it guides him to writing his first program. He starts by writing some synchronous code to write to the file system:

    +
    use std::fs::File;
    +
    +fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt")?;
    +    file.write_all(b"Hello, world!")?;
    +    Ok(())
    +}
    +
    +

    Next, he adapts that to run in an async fashion. He starts by converting main into async fn main:

    +
    use std::fs::File;
    +
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt")?;
    +    file.write_all(b"Hello, world!")?;
    +    Ok(())
    +}
    +
    +

    The code compiles, but he gets a warning:

    +
    warning: using a blocking API within an async function
    + --> src/main.rs:4:25
    +1 | use std::fs::File;
    +  |     ------------- try changing to `std::async_io::fs::File`
    +  | ...
    +4 |     let mut file: u32 = File::create("a.txt")?;
    +  |                         ^^^^^^^^^^^^ blocking functions should not be used in async fn
    +help: try importing the async version of this type
    + --> src/main.rs:1
    +1 | use std::async_fs::File;
    +
    +

    "Oh, right," he says, "I am supposed to use the async variants of the APIs." He applies the suggested fix in his IDE, and now his code looks like:

    +
    use std::async_fs::File;
    +
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt")?;
    +    file.write_all(b"Hello, world!")?;
    +    Ok(())
    +}
    +
    +

    His IDE recompiles instantaneously and he now sees two little squiggles, one under each ?. Clicking on the errors, he sees:

    +
    error: missing await
    + --> src/main.rs:4:25
    +4 |     let mut file: u32 = File::create("a.txt")?;
    +  |                                              ^ returns a future, which requires an await
    +help: try adding an await
    + --> src/main.rs:1
    +4 |     let mut file: u32 = File::create("a.txt").await?;
    +
    +

    He again applies the suggested fix, and his code now shows:

    +
    use std::async_fs::File;
    +
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt").await?;
    +    file.write_all(b"Hello, world!").await?;
    +    Ok(())
    +}
    +
    +

    Happily, it compiles, and when he runs it, everything works as expected. "Cool," he thinks, "this async stuff is pretty easy!"

    +

    Making some web requests

    +

    Next, Alan decides to experiment with some simple web requests. This isn't part of the standard library, but the fetch_rs package is listed in the Rust book. He runs cargo add fetch_rs to add it to his Cargo.toml and then writes:

    +
    use std::async_fs::File;
    +use fetch_rs;
    +
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt")?;
    +    file.write_all(b"Hello, world!")?;
    +
    +    let body = fetch_rs::get("https://www.rust-lang.org")
    +        .await?
    +        .text()
    +        .await?;
    +    println!("{}", body);
    +
    +    Ok(())
    +}
    +
    +

    This feels pretty easy!

    +

    🤔 Frequently Asked Questions

    +

    What status quo story or stories are you retelling?

    + +

    What are the key points you were trying to convey with this status quo story?

    +
      +
    • Getting started with async should be as automated as possible: +
        +
      • change main to an async fn;
      • +
      • use the APIs found in modules like std::async_foo, which should map as closely as possible to their non-async equivalents.
      • +
      +
    • +
    • You should get some sort of default runtime that is decent
    • +
    • Lints should guide you in using async: +
        +
      • identifying blocking functions
      • +
      • identifying missing await
      • +
      +
    • +
    • You should be able to grab libraries from the ecosystem and they should integrate with the default runtime without fuss
    • +
    +

    Is there a "one size fits all" runtime in this future?

    +

    This particular story doesn't talk about what happens when the default runtime isn't suitable. But you may want to read its sequel, "Alan Switches Runtimes".

    +

    What is Alan most excited about in this future? Is he disappointed by anything?

    +

    Alan is excited about how easy it is to get async programs up and running. He also finds the performance is good. He's good.

    +

    What is Grace most excited about in this future? Is she disappointed by anything?

    +

    Grace is happy because she is getting strong safety guarantees and isn't getting surprising runtime panics when composing libraries. The question of whether she's able to use the tricks she knows and loves is a good one, though. The default scheduler may not optimize for maximum performance -- this is something to explore in future stories. The "Alan Switches Runtimes", for example, talks more about the ability to change runtimes.

    +

    What is Niklaus most excited about in this future? Is he disappointed by anything?

    +

    Niklaus is quite happy. Async Rust is fairly familiar and usable for him. Further, the standard library includes "just enough" infrastructure to enable a vibrant crates-io ecosystem without centralizing everything.

    +

    What is Barbara most excited about in this future? Is she disappointed by anything?

    +

    Barbara quite likes that the std APIs for sync and sync fit together, and that there is a consistent naming scheme across them. She likes that there is a flourishing ecosystem of async crates that she can choose from.

    +

    What projects benefit the most from this future?

    +

    A number of projects benefit:

    +
      +
    • Projects like YouBuy are able to get up and going faster.
    • +
    • Libraries like SLOW become easier because they can target the std APIs and there is a defined plan for porting across runtimes.
    • +
    +

    Are there any projects that are hindered by this future?

    +

    It depends on the details of how we integrate other runtimes. If we wound up with a future where most libraries are "hard-coded" to a single default runtime, this could very well hinder any number of projects, but nobody wants that.

    +

    What are the incremental steps towards realizing this shiny future?

    +

    This question can't really be answered in isolation, because so much depends on the story for how we integrate with other runtimes. I don't think we can accept a future where is literally a single runtime that everyone has to use, but I wanted to pull out the question of "non-default runtimes" (as well as more details about the default) to other stories.

    +

    Does realizing this future require cooperation between many projects?

    +

    Yes. For external libraries like fetch_rs to interoperate they will want to use the std APIs (and probably traits).

    +

    ✨ Shiny future stories: Barbara makes a wish

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story!

    +

    The story

    +

    Barbara has an initial prototype of a new service she wrote in sync Rust. She then decides, since the service is extremely I/O bound, to port it to async Rust and her benchmarks have led her to believe that performance is being left on the table.

    +

    She does this by sprinkling async/.await everywhere, picking an executor, and moving dependencies from sync to async.

    +

    Once she has the program compiling, she thinks "oh that was easy". She runs it for the first time and surprisingly she finds out that when hitting an endpoint, nothing happens.

    +

    Barbara, always prepared, has already added logging to her service and she checks the logs. As she expected, she sees here that the endpoint handler has been invoked but then... nothing. Barbara exclaims, "Oh no! This was not what I was expecting, but let's dig deeper."

    +

    She checks the code and sees that the endpoint spawns several tasks, but unfortunately those tasks don't have much logging in them.

    +

    Barbara now remembers hearing something about a wish4-async-insight crate, which has gotten some buzz on her Rust-related social media channels. She decides to give that a shot.

    +

    She adds the crate as a dependency to her Cargo.toml, renaming it to just insight to make it easier to reference in her code, and then initializes it in her main async function.

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> {
    +    insight::init(); // new code
    +    ...
    +}
    +}
    +
    +

    Barbara rebuilds and runs her program again. She doesn't see anything different in the terminal output for the program itself though, and the behavior is the same as before: hitting an endpoint, nothing happens. She double-checks the readme for the wish4-async-insight crate, and realizes that she needs to connect other programs to her service to observe the insights being gathered. Barbara decides that she wants to customize the port that insight is listening on before she starts her experiments with those programs.

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> {
    +    insight::init(listen_port => 8080); // new code, leveraging keyword arguments feature added in 2024
    +    ...
    +}
    +}
    +
    +

    While her code rebuilds, Barbara investigates what programs she might use to connect to the insight crate.

    +

    One such program, consolation, can run in the terminal. Barbara is currently just deploying her service locally on her development box, so she opts to try that out and see what it tells her.

    +
    % rustup install wish4-consolation
    +...
    +% consolation --port 8080
    +
    +

    This brings up a terminal window that looks similar to the Unix top program, except that instead of a list of OS processes, this offers a list of tasks, with each task having a type, ID, and status history (i.e. percentage of time spent in running, ready to poll, or blocked). Barbara skims the output in the list, and sees that one task is listed as currently blocked.

    +

    Barbara taps the arrow-keys and sees that this causes a cursor to highlight different tasks in the list. She highlights the blocked task and hits the Enter key. This causes the terminal to switch to a Task view, describing more details about that task and its status.

    +

    The Task view here says that the task is blocked, references a file and line number, and also includes the line from the source code, which says chan.send(value).await. The blocked task also lists the resources that the task is waiting on: prototype_channel, and next to that there is text on a dark red background: "waiting on channel capacity." Again, Barbara taps the arrow-keys and sees that she can select the line for the resource.

    +

    Barbara notices that this whole time, at the bottom of the terminal, there was a line that says "For help, hit ? key"; she taps question mark. This brings up a help message in a scrollable subwindow explaining the task view in general as well as link to online documentation. The help message notes that the user can follow the chain: One can go from the blocked task to the resource it's waiting on, and from that resource to a list of tasks responsible for freeing up the resource.

    +

    Barbara hits the Escape key to close the help window. The highlight is still on the line that says "prototype_channel: waiting on channel capacity"; Barbara hits Enter, and this brings up a list with just one task on it: The channel reader task. Barbara realizes what this is saying: The channel resource is blocking the sender because it is full, and the only way that can be resolved is if the channel reader manages to receive some inputs from the channel.

    +

    Barbara opens the help window again, and brings up the link to the online documentation. There, she sees discussion of resource starvation and the specific case of a bounded channel being filled up before its receiver makes progress. The main responses outlined there are 1. decrease the send rate, 2. increase the receive rate, or 3. increase the channel's internal capacity, noting the extreme approach of changing to an unbounded channel (with the caveat that this risks resource exhaustion).

    +

    Barbara skims the task view for the channel reader, since she wants to determine why it is not making progress. However, she is eager to see if her service as a whole is workable apart from this issue, so she also adopts the quick fix of swapping in an unbounded channel. Barbara is betting that if this works, she can use the data from wish4-async-insight about the channel sizes to put a bounded channel with an appropriate size in later.

    +

    Barbara happily moves along to some initial performance analysis of her "working" code, eager to see what other things wish4-async-insight will reveal during her explorations.

    +

    Alternate History

    +

    The original status quo story just said that Barbara's problem was resolved (sort of) by switching to an unbounded channel. I, much like Barbara, could not tell why this resolved her problem. In particular, I could not tell whether there was an outright deadlock due to a cycle in the task-resource dependency chain that, or if there something more subtle happening. In the story above, I assumed it was the second case: something subtle.

    +

    Here's an important alternate history though, for the first case of a cycle. Its ... the same story, right up to when Barbara first runs consolation:

    +
    % rustup install wish4-consolation
    +...
    +% consolation --port 8080
    +
    +

    This brings up a terminal window that looks similar to the Unix top program, except that instead of a list of OS processes, this offers a list of tasks, and shows their status (i.e. running, ready to poll, or blocked), as well as some metrics about how long the tasks spend in each state.

    +

    At the top of the screen, Barbara sees highlighted warning: "deadlock cycle was detected. hit P for more info."

    +

    Barbara types capital P. The terminal switches to "problem view," which shows

    +
      +
    • The task types, ID, and attributes for each type.
    • +
    • The resources being awaited on
    • +
    • The location / backtrace of the await.
    • +
    • A link to a documentation page expanding on the issue.
    • +
    +

    The screen also says "hit D to generate a graphviz .dot file to disk describing the cycle."

    +

    Barbara hits D and stares at the resulting graph, which shows a single circle (labelled "task"), and an arc to a box (labelled "prototype_channel"), and an arc from that box back to the circle. The arc from the circle to the box is labelled send: waiting on channel capacity, and the arc from the box to the circle is labelled "sole consumer (mpsc channel)".

    +
    graph TD
    +  task -- send: waiting on channel capacity --> prototype_channel
    +  prototype_channel -- "sole receiver (mpsc channel)" --> task
    +  task((task))
    +
    +

    Barbara suddenly realizes her mistake: She had constructed a single task that was sometimes enqueuing work (by sending messages on the channel), and sometimes dequeuing work, but she had not put any controls into place to ensure that the dequeuing (via recv) would get prioritized as the channel filled up.

    +

    Barbara reflects on the matter: she knows that she could swap in an unbounded channel to resolve this, but she thinks that she would be better off thinking a bit more about her system design, to see if she can figure out a way to supply back-pressure so that the send rate will go down as the channel fills up.

    +

    🤔 Frequently Asked Questions

    +

    What status quo story or stories are you retelling?

    +

    Barbara wants Async Insights

    +

    What is Alan most excited about in this future? Is he disappointed by anything?

    +

    Alan is happy to see a tool that gives one a view into the internals of the async executor.

    +

    Alan is not so thrilled about using the consolation terminal interface; but luckily there are other options, namely IDE/editor plugins as well as a web-browser based client, that offer even richer functionality, such as renderings of the task/resource dependency graph.

    +

    What is Grace most excited about in this future? Is she disappointed by anything?

    +

    Grace is happy to see a tool, but wonders whether it could have been integrated into gdb.

    +

    Grace is not so thrilled to learn that this tool is not going to try to provide specific insight into performance issues that arise solely from computational overheads in her own code. (The readme for wish4-async-insight says on this matter "for that, use perf," which Grace finds unsatisfying.)

    +

    What is Niklaus most excited about in this future? Is he disappointed by anything?

    +

    Niklaus is happy to learn that the wish4-async-insight is supported by both async-std and tokio, since he relies on friends in both communities to help him learn more about Async Rust.

    +

    Niklaus is happy about the tool's core presentation oriented around abstractions he understands (tasks and resources). Niklaus is also happy about the integrated help.

    +

    However, Niklaus is a little nervous about some of the details in the output that he doesn't understand.

    +

    What is Barbara most excited about in this future? Is she disappointed by anything?

    +

    Barbara is thrilled with how this tool has given her insight into the innards of the async executor she is using.

    +

    She is disappointed to learn that not every async executor supports the wish4-async-insight crate. The crate works by monitoring state changes within the executor, instrumented via the tracing crate. Not every async-executor is instrumented in a fashion compatible with wish4-async-insight.

    +

    What projects benefit the most from this future?

    +

    Any async codebase that can hook into the wish4-async-insight crate and supply its data via a network port during development would benefit from this. So, I suspect any codebase that uses a sufficiently popular (i.e. appropriately instrumented) async executor will benefit.

    +

    The main exception I can imagine right now is MonsterMesh: its resource constraints and #![no_std] environment are almost certainly incompatible with the needs of the wish4-async-insight crate.

    +

    Are there any projects that are hindered by this future?

    +

    The only "hindrance" is that the there is an expectation that the async-executor be instrumented appropriately to feed its data to the wish4-async-insight crate once it is initialized.

    +

    What are the incremental steps towards realizing this shiny future? (Optional)

    +
      +
    • +

      Get tracing crate to 1.0 so that async executors can rely on it.

      +
    • +
    • +

      Prototype an insight console atop a concrete async executor (e.g. tokio)

      +
    • +
    • +

      Develop a shared protocol atop tracing that compatible async executors will use to provide the insightful data.

      +
    • +
    +

    Does realizing this future require cooperation between many projects? (Optional)

    +

    Yes. Yes it does.

    +

    At the very least, as mentioned among the "incremental steps", we will need a common protocol that the async executors use to communicate their internal state.

    +

    📅 The roadmap: what we're doing in 2021

    +

    This page describes the current plans for 2021. +It is updated on a monthly basis.

    +

    🛑 Not time for this yet 🛑

    +

    We're not really ready to work on this section yet. We're still focused on writing out the status quo. What you see here are really just placeholders to give you the idea of what this section might look like.

    +

    Key

    + + + + + + +
    EmojiMeaning
    🥬"Healthy" -- on track with the plan as described in the doc
    ✏️"Planning" -- Still figuring out the plan
    🤒"Worried" -- things are looking a bit tricky, plans aren't working out
    🏖️"On vacation" -- taking a break right now
    ⚰️We gave up on this idea =)
    +

    Roadmap items

    + + +
    PlanOwnerStatusLast updated
    Async functions in traitsnikomatsakis🥬2021-02
    +

    🔍 Triage meetings

    +

    When, where

    +

    The weekly triage meeting is held on Zulip at 13:00 US Eastern time on Fridays (google calendar event for meeting).

    +

    So you want to fix a bug?

    +

    If you're interested in fixing bugs, there is no need to wait for the triage meeting. +Take a look at the mentored async-await bugs that have no assignee. +Every mentored bug should have a few comments. +If you see one you like, you can add the @rustbot claim comment into the bug and start working on it! +Feel to reach out to the mentor on Zulip to ask questions.

    +

    Project board

    +

    The project board tracks various bugs and other work items for the async foundation group. +It is used to drive the triage process.

    +

    Triage process

    +

    In our weekly triage meetings, we take new issues assigned A-async-await and categorize them. +The process is:

    +
      +
    • Review the project board, from right to left: +
        +
      • Look at what got Done, and celebrate! :tada:
      • +
      • Review In progress issues to check we are making progress and there is a clear path to finishing (otherwise, move to the appropriate column)
      • +
      • Review Blocked issues to see if there is anything we can do to unblock
      • +
      • Review Claimed issues to see if they are in progress, and if the assigned person still intends to work on it
      • +
      • Review To do issues and assign to anyone who wants to work on something
      • +
      +
    • +
    • Review uncategorized issues +
        +
      • Mark P-low, P-medium, or P-high
      • +
      • Add P-high and assigned E-needs-mentor issues to the project board
      • +
      • Mark AsyncAwait-triaged
      • +
      +
    • +
    • If there's still a shortage of To do issues, review the list of P-medium or P-low issues for candidates
    • +
    +

    Mentoring

    +

    If an issue is a good candidate for mentoring, mark E-needs-mentor and try to find a mentor.

    +

    Mentors assigned to issues should write up mentoring instructions. +Often, this is just a couple lines pointing to the relevant code. +Mentorship doesn't require intimate knowledge of the compiler, just some familiarity and a willingness to look around for the right code.

    +

    After writing instructions, mentors should un-assign themselves, add E-mentor, and remove E-needs-mentor. +On the project board, if a mentor is assigned to an issue, it should go to the Claimed column until mentoring instructions are provided. +After that, it should go to To do until someone has volunteered to work on it.

    +

    🔬 Design documents

    +

    The design documents (or "design docs", more commonly) describe potential designs. These docs vary greatly in terms of their readiness to be implemented:

    +
      +
    • Early on, they describe a vague idea for a future. Often this takes the shape of capturing constraints on the solution, rather than the solution itself.
    • +
    • When a feature is getting ready to ship, they can evolve into a full blown RFC, with links to tracking issues or other notes.
    • +
    +

    Early stage design docs

    +

    In the early stages, design docs are meant to capture interesting bits of "async design space". They are often updated to capture the results of a fruitful conversation or thread which uncovered contraints or challenges in solving a particular problem. They will capture a combination of the following:

    +
      +
    • use cases;
    • +
    • interesting aspects to the design;
    • +
    • alternatives;
    • +
    • interactions with other features.
    • +
    +

    Late stage design docs

    +

    As a design progresses, the doc should get more and more complete, until it becomes something akin to an RFC. (Often, at that point, we will expand the design document into a directory, adding an actual RFC draft and other contents; those things can live in this repo or elsewhere, depending.) Once we decide to put a design doc onto the roadmap, it will also contain links to tracking issues or other places to track the status.

    +

    ⚠️ Yield-safe lint

    +

    Use-case

    +

    Some types should not be held across a "yield" bound. A typical example is a MutexGuard:

    +
    async fn example(x: &Lock<u32>) {
    +    let data = x.lock().unwrap();
    +    something().await;
    +    *data += 1;
    +}
    +
    +async fn something() { }
    +
    +

    In practice, a lot of these issues are avoided because MutexGuard is not Send, but single-thread runtimes hit these issues.

    +

    Types where this would apply

    +
      +
    • MutexGuard for mutexes, read-write locks
    • +
    • Guards for ref-cells
    • +
    • Things that might use these types internally and wish to bubble it up
    • +
    + +
      +
    • The #[must_use] lint on types, we would want their design to work very closely.
    • +
    • Non-async-friendly functions like sleep or task::block_on.
    • +
    +

    ☔ Stream trait

    + +

    Trait definition

    +
    pub trait Stream {
    +    type Item;
    +
    +    fn poll_next(
    +        self: Pin<&mut Self>,
    +        cx: &mut Context<'_>,
    +    ) -> Poll<Option<Self::Item>>;
    +
    +    #[inline]
    +    fn size_hint(&self) -> (usize, Option<usize>) {
    +        (0, None)
    +    }
    +}
    +
    +

    Concerns

    +

    Poll-based design

    +
      +
    • You have to think about Pin if you implement this trait.
    • +
    • Combinators can be more difficult.
    • +
    • One solution: generator syntax.
    • +
    +

    Attached streams are commonly desired

    +

    Sometimes streams need to reuse internal storage (Discussion).

    +

    Combinators

    +
      +
    • Currently the combinations are stored in the StreamExt module.
    • +
    • In some cases, this is because of the lack of async closures support. +
        +
      • Also serves as a "semver barrier".
      • +
      • Also no-std compatibility.
      • +
      +
    • +
    • One question: what combinators (if any) to include when stabilizing? +
        +
      • e.g., poll_next_unpin can make working with pin easier, albeit at a loss of generality +
          +
        • folks who are new to pinning could use this method, and it can help us to guide the diagnostics by suggesting that they Box::pin
        • +
        +
      • +
      +
    • +
    +

    ⚡ Generator syntax

    +
      +
    • It would be useful to be able to write a function to return an iterator or (in the async context) a generator
    • +
    • The basic shape might be (modulo bikeshedding) gen fn that contains yield
    • +
    • Some question marks: +
        +
      • How general of a mechanism do we want? +
          +
        • Just target iterators and streams, or shoot for something more general?
        • +
        +
      • +
      +
    • +
    • Some of the question marks that arise if you go beyond iterators and streams: +
        +
      • Return values that are not unit
      • +
      • Have yield return a value that is passed by the caller of next ("resume args")
      • +
      +
    • +
    +

    📝 AsyncRead, AsyncWrite traits

    +

    🧬 Async fn in traits

    + +

    General goal

    +
    trait Foo {
    +    // Currently disallowed:
    +    async fn bar();
    +}
    +
    +

    Concerns

    +

    How to name the resulting future

    +

    If you wanted to name the future that results from calling bar (or whatever), you can't.

    +

    Also true for functions fn bar() -> impl Trait.

    +

    Requiring Send on futures

    +

    Relevant thread

    +
    async fn foo() {}
    +
    +// desugars to
    +fn foo() -> impl Future<Output = ()> { } // resulting type is Send if it can be
    +
    +// alternative desugaring we chose not to adopt would require Send
    +fn foo() -> impl Future + Send { }
    +
    +

    If I want to constrain the future I get back from a method, it is difficult to do without a name:

    +
    trait Service {
    +    async fn request(&self);
    +}
    +
    +fn parallel_service<S: Service>()
    +where
    +    S::Future: Send,
    +{
    +    ...
    +}
    +
    +
      +
    • Should this be solved at the impl trait layer
    • +
    • Or should we specialize something for async functions
    • +
    • Would be nice, if there are many, associated types, to have some shorthand
    • +
    +

    Example use case: the Service

    +
    trait Service {
    +    type Future: Future<Output = Response>;
    +
    +    fn request(&self, ...) -> Self::Future;
    +}
    +
    +impl Service for MyService {
    +    type Future = impl Future<Output = Response>;
    +
    +    fn request(&self) -> Self::Future {
    +        async move { .. }
    +    }
    +}
    +
    +
      +
    • Dependent on impl Trait, see lang-team repo
    • +
    +

    Example use case: capturing lifetimes of arguments

    +
    trait MyMethod {
    +    async fn foo(&self);
    +}
    +
    +

    🤔 Frequently Asked Questions

    +

    What do people say about this to their friends on twitter?

    +
      +
    • (Explain your key points here)
    • +
    +

    🔒 Mutex (future-aware)

    +

    Description of various challenges with async mutexes

    +

    📺 Async aware channels

    +

    📦 Async closures

    +

    🤝 Join combinator

    +

    🤷‍♀️ Select combinator

    +

    🚰 Sink trait

    +

    🎇 Async main

    +

    What is it?

    +

    Motivation

    +

    Frequently Asked Questions

    +

    🗑️ Async drop

    +

    ♻️ Async lifecycle

    +

    ⏳ Completion-based futures

    +

    Notes on io_uring

    +

    💬 Conversations

    +

    This section contains notes and summaries from conversations that we have had with people are using Rust and async and describing their experiences. These conversations and links are used as "evidence" when building the "status quo" section.

    +

    Not exhaustive nor mandatory

    +

    This section is not meant to be an "exhaustive list" of all sources. That would be impossible. Many conversations are short, not recorded, and hard to summaize. Others are subject to NDA. We certainly don't require that all claims in the status quo section are backed by evidence found here. Still, it's useful to have a place to dump notes and things for future reference.

    +

    🐦 2021-02-12 Twitter thread

    +

    Notes taken from the thread in response to Niko's tweet.

    +
      +
    • Enzo +
        +
      • A default event loop. "choosing your own event loop" takes time, then you have to understand the differences between each event loop etc.
      • +
      • Standard way of doing for await (variable of iterable) would be nice.
      • +
      • Standard promise combinators.
      • +
      +
    • +
    • creepy_owlet +
        +
      • https://github.com/dtantsur/rust-osauth/blob/master/src/sync.rs
      • +
      +
    • +
    • async trait -- +
        +
      • https://twitter.com/jcsp_tweets/status/1359820431151267843
      • +
      • "I thought async was built-in"?
      • +
      • nasty compiler errors
      • +
      • ownership puzzle blog post
      • +
      +
    • +
    • rubdos +
        +
      • blog post describes integrating two event loops
      • +
      • mentions desire for runtime independent libraries
      • +
      • qt provides a mechanism to integrate one's own event loop
      • +
      • llvm bug generates invalid arm7 assembly
      • +
      +
    • +
    • alexmiberry +
        +
      • kotlin/scala code, blocked by absence of async trait
      • +
      +
    • +
    • helpful blog post +
        +
      • jamesmcm +
          +
        • note that join and Result play poorly together + +
        • +
        +
      • +
      • the post mentions rayon but this isn't really a case where one ought to use rayon -- still, Rayon's APIs here are SO much nicer :)
      • +
      • rust aws and lambda
      • +
      +
    • +
    • issue requiring async drop
    • +
    • fasterthanlime -- +
        +
      • this post is amazing
      • +
      • the discussion on Send bounds and the ways to debug it is great
      • +
      +
    • +
    • bridging different runtimes using GATs
    • +
    • first server app, great thread with problems +
        +
      • "I wasn't expecting that it will be easy but after Go and Node.js development it felt extremely hard to start off anything with Rust."
      • +
      • "felt like I have to re-learn everything from scratch: structuring project and modules, dependency injection, managing the DB and of course dealing with concurrency"
      • +
      • common thread: poor docs, though only somewhat in async libraries +
          +
        • I had enums in the DB and it was a bit more complex to map them to my custom Rust enums but I succeeded with the help of a couple of blog posts – and not with Diesel documentation
        • +
        • I used Rusoto for dealing with AWS services. It's also pretty straightforward and high quality package – but again the documentation was sooo poor.
        • +
        +
      • +
      +
    • +
    • implaustin wrote a very nice post but it felt more like a "look how well this worked" post than one with actionable feedback +
        +
      • "Async has worked well so far. My top wishlist items are Sink and Stream traits in std. It's quite difficult to abstract over types that asynchronously produce or consume values."
      • +
      • "AsyncRead/AsyncWrite work fine for files, tcp streams, etc. But once you are past I/O and want to pass around structs, Sink and Stream are needed. One example of fragmentation is that Tokio channels used to implement the futures Sink/Stream traits, but no longer do in 1.0."
      • +
      • "I usually use Sink/Stream to abstract over different async channel types. Sometimes to hide the details of external dependencies from a task (e.g. where is this data going?). And sometimes to write common utility methods."
      • +
      • "One thing I can think of: there are still a lot of popular libraries that don't have async support (or are just getting there). Rocket, Criterion, Crossterm's execute, etc."
      • +
      +
    • +
    • EchoRior: +
        +
      • "I've written a bit of rust before, but rust is my first introduction to Async. My main gripes are that it's hard to figure our what the "blessed" way of doing async is. I'd love to see async included in the book, but I understand that async is still evolving too much for that."
      • +
      • "Adding to the confusion: theres multiple executors, and they have a bit of lock in. Async libraries being dependent on which executor version I use is also confusing for newcomers. In other langs, it seems like one just uses everything from the stdlib and everything is compatible"
      • +
      • "That kind of gave me a lot of hesitation/fomo in the beginning, because it felt like I had to make some big choices around my tech stack that I felt I would be stuck with later. I ended up chatting about this in the discord & researching for multiple days before getting started."
      • +
      • "Also, due to there not being a "blessed" approach, I don't know if I'm working with some misconceptions around async in rust, and will end up discovering I will need to redo large parts of what I wrote."
      • +
      +
    • +
    +

    ❤️ Acknowledgments

    +

    Thanks to everyone who helped forming the future of Rust async.

    +

    ✍️ Participating in an writing session

    +

    Thanks to everyone who helped writing Stories by participating in one of the Async Rust writing sessions.

    +
      +
    • todo
    • +
    +

    💬 Discussing about stories

    +

    Thanks to everyone who discussed about stories, shiny future and new features.

    + +

    ✨ Directly contributing

    +

    Thanks to everyone who opened a Pull Request and wrote a story, shiny future or improved the organization of the repository.

    + + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/searcher.js b/docs/searcher.js new file mode 100644 index 00000000..d2b0aeed --- /dev/null +++ b/docs/searcher.js @@ -0,0 +1,483 @@ +"use strict"; +window.search = window.search || {}; +(function search(search) { + // Search functionality + // + // You can use !hasFocus() to prevent keyhandling in your key + // event handlers while the user is typing their search. + + if (!Mark || !elasticlunr) { + return; + } + + //IE 11 Compatibility from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + if (!String.prototype.startsWith) { + String.prototype.startsWith = function(search, pos) { + return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; + }; + } + + var search_wrap = document.getElementById('search-wrapper'), + searchbar = document.getElementById('searchbar'), + searchbar_outer = document.getElementById('searchbar-outer'), + searchresults = document.getElementById('searchresults'), + searchresults_outer = document.getElementById('searchresults-outer'), + searchresults_header = document.getElementById('searchresults-header'), + searchicon = document.getElementById('search-toggle'), + content = document.getElementById('content'), + + searchindex = null, + doc_urls = [], + results_options = { + teaser_word_count: 30, + limit_results: 30, + }, + search_options = { + bool: "AND", + expand: true, + fields: { + title: {boost: 1}, + body: {boost: 1}, + breadcrumbs: {boost: 0} + } + }, + mark_exclude = [], + marker = new Mark(content), + current_searchterm = "", + URL_SEARCH_PARAM = 'search', + URL_MARK_PARAM = 'highlight', + teaser_count = 0, + + SEARCH_HOTKEY_KEYCODE = 83, + ESCAPE_KEYCODE = 27, + DOWN_KEYCODE = 40, + UP_KEYCODE = 38, + SELECT_KEYCODE = 13; + + function hasFocus() { + return searchbar === document.activeElement; + } + + function removeChildren(elem) { + while (elem.firstChild) { + elem.removeChild(elem.firstChild); + } + } + + // Helper to parse a url into its building blocks. + function parseURL(url) { + var a = document.createElement('a'); + a.href = url; + return { + source: url, + protocol: a.protocol.replace(':',''), + host: a.hostname, + port: a.port, + params: (function(){ + var ret = {}; + var seg = a.search.replace(/^\?/,'').split('&'); + var len = seg.length, i = 0, s; + for (;i': '>', + '"': '"', + "'": ''' + }; + var repl = function(c) { return MAP[c]; }; + return function(s) { + return s.replace(/[&<>'"]/g, repl); + }; + })(); + + function formatSearchMetric(count, searchterm) { + if (count == 1) { + return count + " search result for '" + searchterm + "':"; + } else if (count == 0) { + return "No search results for '" + searchterm + "'."; + } else { + return count + " search results for '" + searchterm + "':"; + } + } + + function formatSearchResult(result, searchterms) { + var teaser = makeTeaser(escapeHTML(result.doc.body), searchterms); + teaser_count++; + + // The ?URL_MARK_PARAM= parameter belongs inbetween the page and the #heading-anchor + var url = doc_urls[result.ref].split("#"); + if (url.length == 1) { // no anchor found + url.push(""); + } + + // encodeURIComponent escapes all chars that could allow an XSS except + // for '. Due to that we also manually replace ' with its url-encoded + // representation (%27). + var searchterms = encodeURIComponent(searchterms.join(" ")).replace(/\'/g, "%27"); + + return '' + result.doc.breadcrumbs + '' + + '' + + teaser + ''; + } + + function makeTeaser(body, searchterms) { + // The strategy is as follows: + // First, assign a value to each word in the document: + // Words that correspond to search terms (stemmer aware): 40 + // Normal words: 2 + // First word in a sentence: 8 + // Then use a sliding window with a constant number of words and count the + // sum of the values of the words within the window. Then use the window that got the + // maximum sum. If there are multiple maximas, then get the last one. + // Enclose the terms in . + var stemmed_searchterms = searchterms.map(function(w) { + return elasticlunr.stemmer(w.toLowerCase()); + }); + var searchterm_weight = 40; + var weighted = []; // contains elements of ["word", weight, index_in_document] + // split in sentences, then words + var sentences = body.toLowerCase().split('. '); + var index = 0; + var value = 0; + var searchterm_found = false; + for (var sentenceindex in sentences) { + var words = sentences[sentenceindex].split(' '); + value = 8; + for (var wordindex in words) { + var word = words[wordindex]; + if (word.length > 0) { + for (var searchtermindex in stemmed_searchterms) { + if (elasticlunr.stemmer(word).startsWith(stemmed_searchterms[searchtermindex])) { + value = searchterm_weight; + searchterm_found = true; + } + }; + weighted.push([word, value, index]); + value = 2; + } + index += word.length; + index += 1; // ' ' or '.' if last word in sentence + }; + index += 1; // because we split at a two-char boundary '. ' + }; + + if (weighted.length == 0) { + return body; + } + + var window_weight = []; + var window_size = Math.min(weighted.length, results_options.teaser_word_count); + + var cur_sum = 0; + for (var wordindex = 0; wordindex < window_size; wordindex++) { + cur_sum += weighted[wordindex][1]; + }; + window_weight.push(cur_sum); + for (var wordindex = 0; wordindex < weighted.length - window_size; wordindex++) { + cur_sum -= weighted[wordindex][1]; + cur_sum += weighted[wordindex + window_size][1]; + window_weight.push(cur_sum); + }; + + if (searchterm_found) { + var max_sum = 0; + var max_sum_window_index = 0; + // backwards + for (var i = window_weight.length - 1; i >= 0; i--) { + if (window_weight[i] > max_sum) { + max_sum = window_weight[i]; + max_sum_window_index = i; + } + }; + } else { + max_sum_window_index = 0; + } + + // add around searchterms + var teaser_split = []; + var index = weighted[max_sum_window_index][2]; + for (var i = max_sum_window_index; i < max_sum_window_index+window_size; i++) { + var word = weighted[i]; + if (index < word[2]) { + // missing text from index to start of `word` + teaser_split.push(body.substring(index, word[2])); + index = word[2]; + } + if (word[1] == searchterm_weight) { + teaser_split.push("") + } + index = word[2] + word[0].length; + teaser_split.push(body.substring(word[2], index)); + if (word[1] == searchterm_weight) { + teaser_split.push("") + } + }; + + return teaser_split.join(''); + } + + function init(config) { + results_options = config.results_options; + search_options = config.search_options; + searchbar_outer = config.searchbar_outer; + doc_urls = config.doc_urls; + searchindex = elasticlunr.Index.load(config.index); + + // Set up events + searchicon.addEventListener('click', function(e) { searchIconClickHandler(); }, false); + searchbar.addEventListener('keyup', function(e) { searchbarKeyUpHandler(); }, false); + document.addEventListener('keydown', function(e) { globalKeyHandler(e); }, false); + // If the user uses the browser buttons, do the same as if a reload happened + window.onpopstate = function(e) { doSearchOrMarkFromUrl(); }; + // Suppress "submit" events so the page doesn't reload when the user presses Enter + document.addEventListener('submit', function(e) { e.preventDefault(); }, false); + + // If reloaded, do the search or mark again, depending on the current url parameters + doSearchOrMarkFromUrl(); + } + + function unfocusSearchbar() { + // hacky, but just focusing a div only works once + var tmp = document.createElement('input'); + tmp.setAttribute('style', 'position: absolute; opacity: 0;'); + searchicon.appendChild(tmp); + tmp.focus(); + tmp.remove(); + } + + // On reload or browser history backwards/forwards events, parse the url and do search or mark + function doSearchOrMarkFromUrl() { + // Check current URL for search request + var url = parseURL(window.location.href); + if (url.params.hasOwnProperty(URL_SEARCH_PARAM) + && url.params[URL_SEARCH_PARAM] != "") { + showSearch(true); + searchbar.value = decodeURIComponent( + (url.params[URL_SEARCH_PARAM]+'').replace(/\+/g, '%20')); + searchbarKeyUpHandler(); // -> doSearch() + } else { + showSearch(false); + } + + if (url.params.hasOwnProperty(URL_MARK_PARAM)) { + var words = decodeURIComponent(url.params[URL_MARK_PARAM]).split(' '); + marker.mark(words, { + exclude: mark_exclude + }); + + var markers = document.querySelectorAll("mark"); + function hide() { + for (var i = 0; i < markers.length; i++) { + markers[i].classList.add("fade-out"); + window.setTimeout(function(e) { marker.unmark(); }, 300); + } + } + for (var i = 0; i < markers.length; i++) { + markers[i].addEventListener('click', hide); + } + } + } + + // Eventhandler for keyevents on `document` + function globalKeyHandler(e) { + if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey || e.target.type === 'textarea' || e.target.type === 'text') { return; } + + if (e.keyCode === ESCAPE_KEYCODE) { + e.preventDefault(); + searchbar.classList.remove("active"); + setSearchUrlParameters("", + (searchbar.value.trim() !== "") ? "push" : "replace"); + if (hasFocus()) { + unfocusSearchbar(); + } + showSearch(false); + marker.unmark(); + } else if (!hasFocus() && e.keyCode === SEARCH_HOTKEY_KEYCODE) { + e.preventDefault(); + showSearch(true); + window.scrollTo(0, 0); + searchbar.select(); + } else if (hasFocus() && e.keyCode === DOWN_KEYCODE) { + e.preventDefault(); + unfocusSearchbar(); + searchresults.firstElementChild.classList.add("focus"); + } else if (!hasFocus() && (e.keyCode === DOWN_KEYCODE + || e.keyCode === UP_KEYCODE + || e.keyCode === SELECT_KEYCODE)) { + // not `:focus` because browser does annoying scrolling + var focused = searchresults.querySelector("li.focus"); + if (!focused) return; + e.preventDefault(); + if (e.keyCode === DOWN_KEYCODE) { + var next = focused.nextElementSibling; + if (next) { + focused.classList.remove("focus"); + next.classList.add("focus"); + } + } else if (e.keyCode === UP_KEYCODE) { + focused.classList.remove("focus"); + var prev = focused.previousElementSibling; + if (prev) { + prev.classList.add("focus"); + } else { + searchbar.select(); + } + } else { // SELECT_KEYCODE + window.location.assign(focused.querySelector('a')); + } + } + } + + function showSearch(yes) { + if (yes) { + search_wrap.classList.remove('hidden'); + searchicon.setAttribute('aria-expanded', 'true'); + } else { + search_wrap.classList.add('hidden'); + searchicon.setAttribute('aria-expanded', 'false'); + var results = searchresults.children; + for (var i = 0; i < results.length; i++) { + results[i].classList.remove("focus"); + } + } + } + + function showResults(yes) { + if (yes) { + searchresults_outer.classList.remove('hidden'); + } else { + searchresults_outer.classList.add('hidden'); + } + } + + // Eventhandler for search icon + function searchIconClickHandler() { + if (search_wrap.classList.contains('hidden')) { + showSearch(true); + window.scrollTo(0, 0); + searchbar.select(); + } else { + showSearch(false); + } + } + + // Eventhandler for keyevents while the searchbar is focused + function searchbarKeyUpHandler() { + var searchterm = searchbar.value.trim(); + if (searchterm != "") { + searchbar.classList.add("active"); + doSearch(searchterm); + } else { + searchbar.classList.remove("active"); + showResults(false); + removeChildren(searchresults); + } + + setSearchUrlParameters(searchterm, "push_if_new_search_else_replace"); + + // Remove marks + marker.unmark(); + } + + // Update current url with ?URL_SEARCH_PARAM= parameter, remove ?URL_MARK_PARAM and #heading-anchor . + // `action` can be one of "push", "replace", "push_if_new_search_else_replace" + // and replaces or pushes a new browser history item. + // "push_if_new_search_else_replace" pushes if there is no `?URL_SEARCH_PARAM=abc` yet. + function setSearchUrlParameters(searchterm, action) { + var url = parseURL(window.location.href); + var first_search = ! url.params.hasOwnProperty(URL_SEARCH_PARAM); + if (searchterm != "" || action == "push_if_new_search_else_replace") { + url.params[URL_SEARCH_PARAM] = searchterm; + delete url.params[URL_MARK_PARAM]; + url.hash = ""; + } else { + delete url.params[URL_MARK_PARAM]; + delete url.params[URL_SEARCH_PARAM]; + } + // A new search will also add a new history item, so the user can go back + // to the page prior to searching. A updated search term will only replace + // the url. + if (action == "push" || (action == "push_if_new_search_else_replace" && first_search) ) { + history.pushState({}, document.title, renderURL(url)); + } else if (action == "replace" || (action == "push_if_new_search_else_replace" && !first_search) ) { + history.replaceState({}, document.title, renderURL(url)); + } + } + + function doSearch(searchterm) { + + // Don't search the same twice + if (current_searchterm == searchterm) { return; } + else { current_searchterm = searchterm; } + + if (searchindex == null) { return; } + + // Do the actual search + var results = searchindex.search(searchterm, search_options); + var resultcount = Math.min(results.length, results_options.limit_results); + + // Display search metrics + searchresults_header.innerText = formatSearchMetric(resultcount, searchterm); + + // Clear and insert results + var searchterms = searchterm.split(' '); + removeChildren(searchresults); + for(var i = 0; i < resultcount ; i++){ + var resultElem = document.createElement('li'); + resultElem.innerHTML = formatSearchResult(results[i], searchterms); + searchresults.appendChild(resultElem); + } + + // Display results + showResults(true); + } + + fetch(path_to_root + 'searchindex.json') + .then(response => response.json()) + .then(json => init(json)) + .catch(error => { // Try to load searchindex.js if fetch failed + var script = document.createElement('script'); + script.src = path_to_root + 'searchindex.js'; + script.onload = () => init(window.search); + document.head.appendChild(script); + }); + + // Exported functions + search.hasFocus = hasFocus; +})(window.search); diff --git a/docs/searchindex.js b/docs/searchindex.js new file mode 100644 index 00000000..b93d4c0f --- /dev/null +++ b/docs/searchindex.js @@ -0,0 +1 @@ +Object.assign(window.search, {"doc_urls":["welcome.html#-welcome","welcome.html#leads","welcome.html#getting-involved","welcome.html#what-is-the-goal-of-this-working-group","welcome.html#zulip","welcome.html#license","welcome.html#contribution","vision.html#-the-vision","vision.html#what-is-this","vision.html#where-we-are-and-where-we-are-going","vision.html#the-vision-drives-the-work","vision.html#involving-the-whole-community","vision.html#-under-construction-help-needed-","vision/how_to_vision.html#-how-to-vision","vision/how_to_vision.html#how-you-can-help","vision/how_to_vision.html#the-big-picture","vision/how_to_vision.html#brainstorming","vision/how_to_vision.html#harmonizing","vision/how_to_vision.html#living-document","vision/how_to_vision.html#wait-did-somebody-say-awards","vision/how_to_vision/projects.html#-how-to-vision-projects","vision/how_to_vision/projects.html#how-to-open-a-pr","vision/how_to_vision/projects.html#faqs-to-answer-in-your-pr","vision/how_to_vision/status_quo.html#-how-to-vision-status-quo-stories","vision/how_to_vision/status_quo.html#tldr","vision/how_to_vision/status_quo.html#optional-open-an-issue-to-discuss-your-story-or-find-others-with-similar-experiences","vision/how_to_vision/status_quo.html#how-to-open-a-pr","vision/how_to_vision/status_quo.html#goals-of-a-status-quo-pr","vision/how_to_vision/status_quo.html#the-role-of-the-faq","vision/how_to_vision/status_quo.html#the-review-process","vision/how_to_vision/status_quo.html#-frequently-asked-questions","vision/how_to_vision/status_quo.html#what-is-the-process-to-propose-a-status-quo-story","vision/how_to_vision/status_quo.html#what-if-my-story-applies-to-multiple-characters","vision/how_to_vision/status_quo.html#how-much-detail-should-i-give-how-specific-should-i-be","vision/how_to_vision/status_quo.html#what-should-i-do-when-im-trying-to-be-specific-but-i-have-to-make-an-arbitrary-choice","vision/how_to_vision/status_quo.html#none-of-the-characters-are-a-fit-for-my-story","vision/how_to_vision/status_quo.html#how-should-i-describe-the-evidence-for-my-status-quo-story","vision/how_to_vision/shiny_future.html#-how-to-vision-shiny-future-stories","vision/how_to_vision/shiny_future.html#tldr","vision/how_to_vision/shiny_future.html#how-to-open-a-pr","vision/how_to_vision/shiny_future.html#goals-of-a-shiny-future-pr","vision/how_to_vision/shiny_future.html#the-role-of-the-faq","vision/how_to_vision/shiny_future.html#the-review-process","vision/how_to_vision/shiny_future.html#-frequently-asked-questions","vision/how_to_vision/shiny_future.html#what-is-the-process-to-propose-a-shiny-future-story","vision/how_to_vision/shiny_future.html#what-character-should-i-use-for-my-shiny-future-story","vision/how_to_vision/shiny_future.html#what-do-i-do-if-there-is-no-status-quo-story-for-my-shiny-future","vision/how_to_vision/shiny_future.html#how-much-detail-should-i-give-how-specific-should-i-be","vision/how_to_vision/shiny_future.html#what-do-i-do-when-i-get-to-details-that-i-dont-know-yet","vision/how_to_vision/shiny_future.html#do-we-have-to-know-exactly-how-we-will-achieve-the-shiny-future","vision/how_to_vision/shiny_future.html#what-do-i-do-if-somebody-leaves-a-comment-about-how-my-idea-will-work-and-i-dont-know-the-answer","vision/how_to_vision/shiny_future.html#what-if-we-write-a-shiny-future-story-but-it-turns-out-to-be-impossible-to-implement","vision/how_to_vision/comment.html#-how-to-vision-constructive-comments","vision/how_to_vision/comment.html#be-respectful-and-supportive","vision/how_to_vision/comment.html#comment-to-understand-or-improve-not-to-negate-or-dissuade","vision/how_to_vision/comment.html#you-might-just-want-to-write-your-own-story","vision/how_to_vision/comment.html#good-questions-for-status-quo-stories","vision/how_to_vision/comment.html#good-questions-for-shiny-future-stories","vision/how_to_vision/awards.html#-how-to-vision-awards","vision/how_to_vision/awards.html#award-categories","vision/how_to_vision/awards.html#voting","vision/tenets.html#-design-tenets-for-async","vision/tenets.html#stress-tests","vision/characters.html#-cast-of-characters","vision/characters.html#what-is-this","vision/characters.html#the-characters","vision/characters.html#-frequently-asked-questions","vision/characters.html#where-do-the-names-come-from","vision/characters.html#i-dont-see-myself-in-these-characters-what-should-i-do","vision/characters.html#i-see-myself-in-more-than-one-of-these-characters","vision/characters/alan.html#-cast-of-characters","vision/characters/alan.html#alan-the-experienced-gcd-language-developer-new-to-rust","vision/characters/alan.html#variant-a-dynamic-languages","vision/characters/alan.html#variant-b-java","vision/characters/alan.html#variant-c-kotlin","vision/characters/alan.html#-frequently-asked-questions","vision/characters/alan.html#what-does-alan-want-most-from-async-rust","vision/characters/alan.html#what-expectations-does-alan-bring-from-his-current-environment","vision/characters/grace.html#-cast-of-characters","vision/characters/grace.html#grace-the-systems-programming-expert-new-to-rust","vision/characters/grace.html#-frequently-asked-questions","vision/characters/grace.html#what-does-grace-want-most-from-async-rust","vision/characters/grace.html#what-expectations-does-grace-bring-from-her-current-environment","vision/characters/niklaus.html#-cast-of-characters","vision/characters/niklaus.html#niklaus-new-programmer-from-an-unconventional-background","vision/characters/niklaus.html#-frequently-asked-questions","vision/characters/niklaus.html#what-does-niklaus-want-most-from-async-rust","vision/characters/niklaus.html#what-expectations-does-niklaus-bring-from-his-current-environment","vision/characters/barbara.html#-cast-of-characters","vision/characters/barbara.html#barbara-the-experienced-rust-developer","vision/characters/barbara.html#-frequently-asked-questions","vision/characters/barbara.html#what-does-barbara-want-most-from-async-rust","vision/characters/barbara.html#what-expectations-does-barbara-bring-from-her-current-environment","vision/projects.html#-projects","vision/projects.html#what-is-this","vision/projects.html#list-of-projects","vision/projects.html#dont-find-a-project-like-yours-here","vision/projects/template.html#-projects-name-domain","vision/projects/template.html#what-is-this","vision/projects/template.html#description","vision/projects/template.html#-frequently-asked-questions","vision/projects/template.html#what-makes-this-project-different-from-others","vision/projects/template.html#does-this-project-require-a-custom-tailored-runtime","vision/projects/template.html#how-much-of-this-project-is-likely-to-be-built-with-open-source-components-from-cratesio","vision/projects/template.html#what-is-of-most-concern-to-this-project","vision/projects/template.html#what-is-of-least-concern-to-this-project","vision/projects/MonsterMesh.html#-projects-monstermesh-embedded-sensors","vision/projects/MonsterMesh.html#what-is-this","vision/projects/MonsterMesh.html#description","vision/projects/MonsterMesh.html#-frequently-asked-questions","vision/projects/MonsterMesh.html#what-makes-embedded-projects-like-monstermesh-different-from-others","vision/projects/MonsterMesh.html#does-monstermesh-require-a-custom-tailored-runtime","vision/projects/MonsterMesh.html#how-much-of-this-project-is-likely-to-be-built-with-open-source-components-from-cratesio","vision/projects/MonsterMesh.html#how-did-you-pick-the-name","vision/projects/DistriData.html#-projects-distridata-generic-infrastructure","vision/projects/DistriData.html#what-is-this","vision/projects/DistriData.html#description","vision/projects/DistriData.html#-frequently-asked-questions","vision/projects/DistriData.html#what-makes-distridata-different-from-others","vision/projects/DistriData.html#does-distridata-require-a-custom-tailored-runtime","vision/projects/DistriData.html#how-much-of-this-project-is-likely-to-be-built-with-open-source-components-from-cratesio","vision/projects/DistriData.html#what-is-of-most-concern-to-this-project","vision/projects/DistriData.html#what-is-of-least-concern-to-this-project","vision/projects/TrafficMonitor.html#-projects-trafficmonitor-custom-infrastructure","vision/projects/TrafficMonitor.html#what-is-this","vision/projects/TrafficMonitor.html#description","vision/projects/TrafficMonitor.html#-frequently-asked-questions","vision/projects/TrafficMonitor.html#what-makes-networking-infrastructure-projects-like-trafficmonitor-different-from-others","vision/projects/TrafficMonitor.html#does-trafficmonitor-require-a-custom-tailored-runtime","vision/projects/TrafficMonitor.html#how-much-of-this-project-is-likely-to-be-built-with-open-source-components-from-cratesio","vision/projects/TrafficMonitor.html#what-is-of-most-concern-to-this-project","vision/projects/TrafficMonitor.html#what-is-of-least-concern-to-this-project","vision/projects/YouBuy.html#-projects-youbuy-traditional-server-application","vision/projects/YouBuy.html#what-is-this","vision/projects/YouBuy.html#description","vision/projects/YouBuy.html#-frequently-asked-questions","vision/projects/YouBuy.html#what-makes-youbuy-and-other-server-applications-different-from-others","vision/projects/YouBuy.html#does-youbuy-require-a-custom-tailored-runtime","vision/projects/YouBuy.html#how-much-of-this-project-is-likely-to-be-built-with-open-source-components-from-cratesio","vision/projects/YouBuy.html#what-is-of-most-concern-to-this-project","vision/projects/YouBuy.html#what-is-of-least-concern-to-this-project","vision/projects/SLOW.html#-projects-slow-protocol-implementation","vision/projects/SLOW.html#what-is-this","vision/projects/SLOW.html#description","vision/projects/SLOW.html#-frequently-asked-questions","vision/projects/SLOW.html#what-makes-this-project-different-from-others","vision/projects/SLOW.html#does-this-project-require-a-custom-tailored-runtime","vision/projects/SLOW.html#how-much-of-this-project-is-likely-to-be-built-with-open-source-components-from-cratesio","vision/projects/SLOW.html#what-is-of-most-concern-to-this-project","vision/projects/SLOW.html#what-is-of-least-concern-to-this-project","vision/projects/SLOW.html#why-is-this-called-slow","vision/status_quo.html#-status-quo-stories","vision/status_quo.html#-under-construction-help-needed-","vision/status_quo.html#what-is-this","vision/status_quo.html#based-on-a-true-story","vision/status_quo.html#the-stories-provide-data-we-use-to-prioritize-not-a-prioritization-itself","vision/status_quo.html#metanarrative","vision/status_quo/template.html#-status-quo-stories-template","vision/status_quo/template.html#-warning-draft-status-","vision/status_quo/template.html#the-story","vision/status_quo/template.html#-frequently-asked-questions","vision/status_quo/template.html#what-are-the-morals-of-the-story","vision/status_quo/template.html#what-are-the-sources-for-this-story","vision/status_quo/template.html#why-did-you-choose--name--to-tell-this-story","vision/status_quo/template.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_builds_a_cache.html#-status-quo-stories-alan-tries-to-cache-requests-which-doesnt-always-happen","vision/status_quo/alan_builds_a_cache.html#-warning-draft-status-","vision/status_quo/alan_builds_a_cache.html#the-story","vision/status_quo/alan_builds_a_cache.html#the-bug","vision/status_quo/alan_builds_a_cache.html#the-solution","vision/status_quo/alan_builds_a_cache.html#-frequently-asked-questions","vision/status_quo/alan_builds_a_cache.html#what-are-the-morals-of-the-story","vision/status_quo/alan_builds_a_cache.html#what-are-the-sources-for-this-story","vision/status_quo/alan_builds_a_cache.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_builds_a_cache.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_finds_database_drops_hard.html#-status-quo-stories-alan-finds-dropping-database-handles-is-hard","vision/status_quo/alan_finds_database_drops_hard.html#-warning-draft-status-","vision/status_quo/alan_finds_database_drops_hard.html#the-problem","vision/status_quo/alan_finds_database_drops_hard.html#searching-for-the-solution","vision/status_quo/alan_finds_database_drops_hard.html#finding-the-solution","vision/status_quo/alan_finds_database_drops_hard.html#-frequently-asked-questions","vision/status_quo/alan_finds_database_drops_hard.html#what-are-the-morals-of-the-story","vision/status_quo/alan_finds_database_drops_hard.html#what-are-the-sources-for-this-story","vision/status_quo/alan_finds_database_drops_hard.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_finds_database_drops_hard.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_has_an_event_loop.html#-status-quo-stories-alan-has-an-external-event-loop-and-wants-to-use-futuresstreams","vision/status_quo/alan_has_an_event_loop.html#-warning-draft-status-","vision/status_quo/alan_has_an_event_loop.html#the-story","vision/status_quo/alan_has_an_event_loop.html#alans-hopes-and-dreams","vision/status_quo/alan_has_an_event_loop.html#first-time-dealing-with-runtimes","vision/status_quo/alan_has_an_event_loop.html#fun-time-is-over","vision/status_quo/alan_has_an_event_loop.html#the-cheap-way-out","vision/status_quo/alan_has_an_event_loop.html#-frequently-asked-questions","vision/status_quo/alan_hates_writing_a_stream.html#-status-quo-stories-alan-hates-writing-a-stream","vision/status_quo/alan_hates_writing_a_stream.html#-warning-draft-status-","vision/status_quo/alan_hates_writing_a_stream.html#the-story","vision/status_quo/alan_hates_writing_a_stream.html#imperatively-wrong","vision/status_quo/alan_hates_writing_a_stream.html#implementing-stream","vision/status_quo/alan_hates_writing_a_stream.html#pin-scream","vision/status_quo/alan_hates_writing_a_stream.html#state-machine","vision/status_quo/alan_hates_writing_a_stream.html#wakers","vision/status_quo/alan_hates_writing_a_stream.html#gives-up","vision/status_quo/alan_hates_writing_a_stream.html#-frequently-asked-questions","vision/status_quo/alan_hates_writing_a_stream.html#what-are-the-morals-of-the-story","vision/status_quo/alan_hates_writing_a_stream.html#what-are-the-sources-for-this-story","vision/status_quo/alan_hates_writing_a_stream.html#why-did-you-choose--alan--to-tell-this-story","vision/status_quo/alan_hates_writing_a_stream.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_iteratively_regresses.html#-status-quo-stories-alan-iteratively-regresses-performance","vision/status_quo/alan_iteratively_regresses.html#-warning-draft-status-","vision/status_quo/alan_iteratively_regresses.html#the-story","vision/status_quo/alan_iteratively_regresses.html#-frequently-asked-questions","vision/status_quo/alan_iteratively_regresses.html#what-are-the-morals-of-the-story","vision/status_quo/alan_iteratively_regresses.html#what-are-the-sources-for-this-story","vision/status_quo/alan_iteratively_regresses.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_iteratively_regresses.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_lost_the_world.html#-status-quo-stories-alan-lost-the-world","vision/status_quo/alan_lost_the_world.html#-warning-draft-status-","vision/status_quo/alan_lost_the_world.html#the-story","vision/status_quo/alan_lost_the_world.html#-frequently-asked-questions","vision/status_quo/alan_needs_async_in_traits.html#-status-quo-stories-alan-needs-async-in-traits","vision/status_quo/alan_needs_async_in_traits.html#-warning-draft-status-","vision/status_quo/alan_needs_async_in_traits.html#the-story","vision/status_quo/alan_needs_async_in_traits.html#-frequently-asked-questions","vision/status_quo/alan_needs_async_in_traits.html#what-are-the-morals-of-the-story","vision/status_quo/alan_needs_async_in_traits.html#what-are-the-sources-for-this-story","vision/status_quo/alan_needs_async_in_traits.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_needs_async_in_traits.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_picks_web_server.html#-status-quo-stories-alan-wants-to-migrate-a-web-server-to-rust","vision/status_quo/alan_picks_web_server.html#-warning-draft-status-","vision/status_quo/alan_picks_web_server.html#the-story","vision/status_quo/alan_picks_web_server.html#is-rust-ready-for-the-web","vision/status_quo/alan_picks_web_server.html#picking-a-web-server-is-ok","vision/status_quo/alan_picks_web_server.html#the-first-endpoint","vision/status_quo/alan_picks_web_server.html#first-problem-incompatible-runtimes","vision/status_quo/alan_picks_web_server.html#second-problem-incompatible-versions-of-the-same-runtime","vision/status_quo/alan_picks_web_server.html#can-alan-sell-the-rust-migration-to-his-boss","vision/status_quo/alan_picks_web_server.html#-frequently-asked-questions","vision/status_quo/alan_picks_web_server.html#what-are-the-morals-of-the-story","vision/status_quo/alan_picks_web_server.html#what-are-the-sources-for-this-story","vision/status_quo/alan_picks_web_server.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_picks_web_server.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_picks_web_server.html#how-would-this-story-have-played-out-differently-if-alan-came-from-another-gcd-language","vision/status_quo/alan_runs_into_stack_trouble.html#-status-quo-stories-alan-runs-into-stack-allocation-trouble","vision/status_quo/alan_runs_into_stack_trouble.html#-warning-draft-status-","vision/status_quo/alan_runs_into_stack_trouble.html#the-problem","vision/status_quo/alan_runs_into_stack_trouble.html#searching-for-the-solution","vision/status_quo/alan_runs_into_stack_trouble.html#finding-the-solution","vision/status_quo/alan_runs_into_stack_trouble.html#-frequently-asked-questions","vision/status_quo/alan_runs_into_stack_trouble.html#what-are-the-morals-of-the-story","vision/status_quo/alan_runs_into_stack_trouble.html#what-are-the-sources-for-this-story","vision/status_quo/alan_runs_into_stack_trouble.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_runs_into_stack_trouble.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_runs_into_stack_trouble.html#could-alan-have-used-another-api-to-achieve-the-same-objectives","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#-status-quo-stories-alan-started-trusting-the-rust-compiler-but-then-async","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#-warning-draft-status-","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#the-story","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#trust-the-compiler","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#the-first-async-project","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#fractured-futures-fractured-trust","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#the-spider-man-effect","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#-frequently-asked-questions","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#what-are-the-morals-of-the-story","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#what-are-the-sources-for-this-story","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#how-would-this-story-have-played-out-differently-if-alan-came-from-another-gcd-language","vision/status_quo/alan_thinks_he_needs_async_locks.html#-status-quo-stories-alan-thinks-he-needs-async-locks","vision/status_quo/alan_thinks_he_needs_async_locks.html#-warning-draft-status-","vision/status_quo/alan_thinks_he_needs_async_locks.html#the-story","vision/status_quo/alan_thinks_he_needs_async_locks.html#-frequently-asked-questions","vision/status_quo/alan_thinks_he_needs_async_locks.html#what-are-the-morals-of-the-story","vision/status_quo/alan_thinks_he_needs_async_locks.html#what-are-the-sources-for-this-story","vision/status_quo/alan_thinks_he_needs_async_locks.html#why-did-you-choose--alan--to-tell-this-story","vision/status_quo/alan_thinks_he_needs_async_locks.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_tries_a_socket_sink.html#-status-quo-stories-alan-tries-using-a-socket-sink","vision/status_quo/alan_tries_a_socket_sink.html#-warning-draft-status-","vision/status_quo/alan_tries_a_socket_sink.html#the-story","vision/status_quo/alan_tries_a_socket_sink.html#-frequently-asked-questions","vision/status_quo/alan_tries_a_socket_sink.html#what-are-the-morals-of-the-story","vision/status_quo/alan_tries_a_socket_sink.html#what-are-the-sources-for-this-story","vision/status_quo/alan_tries_a_socket_sink.html#why-did-you-choose--alan--to-tell-this-story","vision/status_quo/alan_tries_a_socket_sink.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_tries_to_debug_a_hang.html#-status-quo-stories-alan-tries-to-debug-a-hang","vision/status_quo/alan_tries_to_debug_a_hang.html#-warning-draft-status-","vision/status_quo/alan_tries_to_debug_a_hang.html#the-story","vision/status_quo/alan_tries_to_debug_a_hang.html#-frequently-asked-questions","vision/status_quo/alan_tries_to_debug_a_hang.html#what-are-the-morals-of-the-story","vision/status_quo/alan_tries_to_debug_a_hang.html#what-are-the-sources-for-this-story","vision/status_quo/alan_tries_to_debug_a_hang.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_tries_to_debug_a_hang.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_writes_a_web_framework.html#-status-quo-stories-alan-writes-a-web-framework","vision/status_quo/alan_writes_a_web_framework.html#-warning-draft-status-","vision/status_quo/alan_writes_a_web_framework.html#the-story","vision/status_quo/alan_writes_a_web_framework.html#-frequently-asked-questions","vision/status_quo/alan_writes_a_web_framework.html#what-are-the-morals-of-the-story","vision/status_quo/alan_writes_a_web_framework.html#what-are-the-sources-for-this-story","vision/status_quo/alan_writes_a_web_framework.html#why-did-you-choose-alanyoubuy-to-tell-this-story","vision/status_quo/alan_writes_a_web_framework.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_anguishes_over_http.html#-status-quo-stories-barbara-anguishes-over-http","vision/status_quo/barbara_anguishes_over_http.html#-warning-draft-status-","vision/status_quo/barbara_anguishes_over_http.html#the-story","vision/status_quo/barbara_anguishes_over_http.html#-frequently-asked-questions","vision/status_quo/barbara_anguishes_over_http.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_anguishes_over_http.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_anguishes_over_http.html#why-did-you-choose--barbara--to-tell-this-story","vision/status_quo/barbara_bridges_sync_and_async.html#-status-quo-stories-barbara-bridges-sync-and-async-in-perfrust-langorg","vision/status_quo/barbara_bridges_sync_and_async.html#-warning-draft-status-","vision/status_quo/barbara_bridges_sync_and_async.html#the-story","vision/status_quo/barbara_bridges_sync_and_async.html#introducing-block_on","vision/status_quo/barbara_bridges_sync_and_async.html#switching-to-async-main","vision/status_quo/barbara_bridges_sync_and_async.html#trying-out-spawn_blocking","vision/status_quo/barbara_bridges_sync_and_async.html#trying-out-join_all","vision/status_quo/barbara_bridges_sync_and_async.html#filtering","vision/status_quo/barbara_bridges_sync_and_async.html#and-the-cycle-begins-again","vision/status_quo/barbara_bridges_sync_and_async.html#-frequently-asked-questions","vision/status_quo/barbara_bridges_sync_and_async.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_bridges_sync_and_async.html#why-did-you-choose-barbara-to-tell-this-story","vision/status_quo/barbara_bridges_sync_and_async.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_bridges_sync_and_async.html#why-did-barbara-only-get-deadlocks-in-production-and-not-on-her-laptop","vision/status_quo/barbara_bridges_sync_and_async.html#could-the-runtime-have-prevented-the-deadlock","vision/status_quo/barbara_bridges_sync_and_async.html#is-there-any-way-to-have-kept-aggregate-as-a-synchronous-function","vision/status_quo/barbara_bridges_sync_and_async.html#why-didnt-barbara-just-use-the-sync-api-for-reqwest","vision/status_quo/barbara_bridges_sync_and_async.html#do-people-mix-spawn_blocking-and-spawn-successfully-in-real-code","vision/status_quo/barbara_bridges_sync_and_async.html#what-are-other-ways-people-could-experience-similar-problems-mixing-sync-and-async","vision/status_quo/barbara_bridges_sync_and_async.html#why-wouldnt-barbara-just-make-everything-async-from-the-start","vision/status_quo/barbara_bridges_sync_and_async.html#how-many-variants-of-block_on-are-there","vision/status_quo/barbara_builds_an_async_executor.html#-status-quo-stories-barbara-builds-an-async-executor","vision/status_quo/barbara_builds_an_async_executor.html#-warning-draft-status-","vision/status_quo/barbara_builds_an_async_executor.html#the-story","vision/status_quo/barbara_builds_an_async_executor.html#-frequently-asked-questions","vision/status_quo/barbara_builds_an_async_executor.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_builds_an_async_executor.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_builds_an_async_executor.html#why-did-you-choose-barbara-to-tell-this-story","vision/status_quo/barbara_builds_an_async_executor.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#-status-quo-stories-barbara-carefully-dismisses-embedded-future","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#-warning-draft-status-","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#the-story","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#-frequently-asked-questions","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#why-did-you-choose--barbara--to-tell-this-story","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#future-has-a-lot-of-features-that-barbaras-traits-dont-have----arent-those-worth-the-cost","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#is-the-code-size-impact-of-future-fundamental-or-can-the-design-be-tweaked-in-a-way-that-eliminates-the-tradeoff","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#i-thought-future-was-a-zero-cost-abstraction","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#how-does-barbaras-code-handle-thread-safety-is-her-executor-unsound","vision/status_quo/barbara_compares_some_cpp_code.html#-status-quo-stories-barbara-compares-some-code-and-has-a-performance-problem","vision/status_quo/barbara_compares_some_cpp_code.html#-warning-draft-status-","vision/status_quo/barbara_compares_some_cpp_code.html#the-story","vision/status_quo/barbara_compares_some_cpp_code.html#-frequently-asked-questions","vision/status_quo/barbara_compares_some_cpp_code.html#are-any-of-these-actually-the-correct-solution","vision/status_quo/barbara_compares_some_cpp_code.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_compares_some_cpp_code.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_compares_some_cpp_code.html#why-did-you-choose--barbara--to-tell-this-story","vision/status_quo/barbara_compares_some_cpp_code.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_makes_their_first_steps_into_async.html#-status-quo-stories-barbara-makes-their-first-foray-into-async","vision/status_quo/barbara_makes_their_first_steps_into_async.html#-warning-draft-status-","vision/status_quo/barbara_makes_their_first_steps_into_async.html#barbaras-first-big-project-in-rust-a-journey-marred-by-doubt","vision/status_quo/barbara_makes_their_first_steps_into_async.html#deciding-to-use-async","vision/status_quo/barbara_makes_their_first_steps_into_async.html#learning-about-async","vision/status_quo/barbara_makes_their_first_steps_into_async.html#the-wrong-time-for-big-decisions","vision/status_quo/barbara_makes_their_first_steps_into_async.html#woes-of-a-newcomer-to-async","vision/status_quo/barbara_makes_their_first_steps_into_async.html#confused-ever-after","vision/status_quo/barbara_makes_their_first_steps_into_async.html#-frequently-asked-questions","vision/status_quo/barbara_makes_their_first_steps_into_async.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_makes_their_first_steps_into_async.html#what-are-the-sources-for-their-story","vision/status_quo/barbara_makes_their_first_steps_into_async.html#what-documentation-did-the-character-read-during-this-story","vision/status_quo/barbara_makes_their_first_steps_into_async.html#why-did-you-choose-barbara-to-tell-their-story","vision/status_quo/barbara_makes_their_first_steps_into_async.html#how-would-their-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_needs_async_helpers.html#-status-quo-stories-barbara-needs-async-helpers","vision/status_quo/barbara_needs_async_helpers.html#-warning-draft-status-","vision/status_quo/barbara_needs_async_helpers.html#the-story","vision/status_quo/barbara_needs_async_helpers.html#-frequently-asked-questions","vision/status_quo/barbara_needs_async_helpers.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_needs_async_helpers.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_needs_async_helpers.html#what-are-helper-functionsmacros","vision/status_quo/barbara_needs_async_helpers.html#will-there-be-a-difference-if-lifetimes-are-involved-in-async-recursion-functions","vision/status_quo/barbara_needs_async_helpers.html#why-did-you-choose--barbara--to-tell-this-story","vision/status_quo/barbara_needs_async_helpers.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_plays_with_async.html#-status-quo-stories-barbara-plays-with-async","vision/status_quo/barbara_plays_with_async.html#-warning-draft-status-","vision/status_quo/barbara_plays_with_async.html#the-story","vision/status_quo/barbara_plays_with_async.html#-frequently-asked-questions","vision/status_quo/barbara_plays_with_async.html#why-did-you-choose-barbara-to-tell-this-story","vision/status_quo/barbara_plays_with_async.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_plays_with_async.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_plays_with_async.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_plays_with_async.html#what-are-other-related-stories","vision/status_quo/barbara_tries_async_streams.html#-status-quo-stories-barbara-tries-async-streams","vision/status_quo/barbara_tries_async_streams.html#-warning-draft-status-","vision/status_quo/barbara_tries_async_streams.html#the-story","vision/status_quo/barbara_tries_async_streams.html#-frequently-asked-questions","vision/status_quo/barbara_tries_async_streams.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_tries_async_streams.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_tries_async_streams.html#why-did-you-choose-barbara-to-tell-this-story","vision/status_quo/barbara_tries_async_streams.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_trims_a_stacktrace.html#-status-quo-stories-barbara-trims-a-stacktrace","vision/status_quo/barbara_trims_a_stacktrace.html#-warning-draft-status-","vision/status_quo/barbara_trims_a_stacktrace.html#the-story","vision/status_quo/barbara_trims_a_stacktrace.html#-frequently-asked-questions","vision/status_quo/barbara_trims_a_stacktrace.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_trims_a_stacktrace.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_trims_a_stacktrace.html#why-did-you-choose-barbara-to-tell-this-story","vision/status_quo/barbara_trims_a_stacktrace.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_trims_a_stacktrace.html#how-does-this-compare-to-other-languages","vision/status_quo/barbara_trims_a_stacktrace.html#why-doesnt-barbara-view-this-in-a-debugger","vision/status_quo/barbara_trims_a_stacktrace.html#doesnt-rust-have-backtrace-trimming-support","vision/status_quo/barbara_wants_async_insights.html#-status-quo-stories-barbara-wants-async-insights","vision/status_quo/barbara_wants_async_insights.html#-warning-draft-status-","vision/status_quo/barbara_wants_async_insights.html#the-story","vision/status_quo/barbara_wants_async_insights.html#-frequently-asked-questions","vision/status_quo/barbara_wants_async_insights.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_wants_async_insights.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_wants_async_insights.html#what-are-examples-of-the-kinds-of-things-a-user-might-want-to-have-insight-into","vision/status_quo/barbara_wants_async_insights.html#why-did-you-choose--barbara--to-tell-this-story","vision/status_quo/barbara_wants_async_insights.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_wants_to_use_ghostcell.html#barbara-wants-to-use-ghostcell-like-cell-borrowing-with-futures","vision/status_quo/barbara_wants_to_use_ghostcell.html#-warning-draft-status-","vision/status_quo/barbara_wants_to_use_ghostcell.html#the-story","vision/status_quo/barbara_wants_to_use_ghostcell.html#example-1-accessing-an-object-shared-outside-the-runtime","vision/status_quo/barbara_wants_to_use_ghostcell.html#example-2-shared-monitoring-data","vision/status_quo/barbara_wants_to_use_ghostcell.html#further-investigation-by-barbara","vision/status_quo/barbara_wants_to_use_ghostcell.html#the-mechanism","vision/status_quo/barbara_wants_to_use_ghostcell.html#proof-of-concept","vision/status_quo/barbara_wants_to_use_ghostcell.html#way-forward","vision/status_quo/barbara_wants_to_use_ghostcell.html#-frequently-asked-questions","vision/status_quo/barbara_wants_to_use_ghostcell.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_wants_to_use_ghostcell.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_wants_to_use_ghostcell.html#why-did-you-choose-barbara-to-tell-this-story","vision/status_quo/barbara_wants_to_use_ghostcell.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/grace_deploys_her_service.html#-status-quo-stories-grace-deploys-her-service-and-hits-obstacles","vision/status_quo/grace_deploys_her_service.html#-warning-draft-status-","vision/status_quo/grace_deploys_her_service.html#the-story","vision/status_quo/grace_deploys_her_service.html#-frequently-asked-questions","vision/status_quo/grace_deploys_her_service.html#what-are-the-morals-of-the-story","vision/status_quo/grace_deploys_her_service.html#what-are-the-sources-for-this-story","vision/status_quo/grace_deploys_her_service.html#why-did-you-choose-grace-to-tell-this-story","vision/status_quo/grace_deploys_her_service.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/grace_deploys_her_service.html#could-grace-have-used-another-runtime-to-achieve-the-same-objectives","vision/status_quo/grace_tries_new_libraries.html#-status-quo-stories-grace-tries-new-libraries","vision/status_quo/grace_tries_new_libraries.html#-warning-draft-status-","vision/status_quo/grace_tries_new_libraries.html#the-story","vision/status_quo/grace_tries_new_libraries.html#-frequently-asked-questions","vision/status_quo/grace_tries_new_libraries.html#what-are-the-morals-of-the-story","vision/status_quo/grace_tries_new_libraries.html#what-are-the-sources-for-this-story","vision/status_quo/grace_tries_new_libraries.html#why-did-you-choose-grace-to-tell-this-story","vision/status_quo/grace_tries_new_libraries.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/grace_waits_for_gdb_next.html#status-quo-grace-waits-for-gdb-next","vision/status_quo/grace_waits_for_gdb_next.html#-warning-draft-status-","vision/status_quo/grace_waits_for_gdb_next.html#the-story","vision/status_quo/grace_waits_for_gdb_next.html#-frequently-asked-questions","vision/status_quo/grace_waits_for_gdb_next.html#what-are-the-morals-of-the-story","vision/status_quo/grace_waits_for_gdb_next.html#what-are-the-sources-for-this-story","vision/status_quo/grace_waits_for_gdb_next.html#why-did-you-choose-grace-to-tell-this-story","vision/status_quo/grace_waits_for_gdb_next.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/grace_wants_to_integrate_c_api.html#-status-quo-stories-grace-wants-to-integrate-a-c-api","vision/status_quo/grace_wants_to_integrate_c_api.html#-warning-draft-status-","vision/status_quo/grace_wants_to_integrate_c_api.html#the-story","vision/status_quo/grace_wants_to_integrate_c_api.html#the-first-problem-polls-and-wake-ups","vision/status_quo/grace_wants_to_integrate_c_api.html#the-second-problem-doing-this-many-times","vision/status_quo/grace_wants_to_integrate_c_api.html#-frequently-asked-questions","vision/status_quo/grace_wants_to_integrate_c_api.html#what-are-the-morals-of-the-story","vision/status_quo/grace_wants_to_integrate_c_api.html#what-are-the-sources-for-this-story","vision/status_quo/grace_wants_to_integrate_c_api.html#why-did-you-choose-grace-to-tell-this-story","vision/status_quo/grace_wants_to_integrate_c_api.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/grace_wants_to_integrate_c_api.html#could-grace-have-used-another-runtime-to-achieve-the-same-objectives","vision/status_quo/grace_wants_to_integrate_c_api.html#how-did-grace-know-to-use-unfold-as-the-return-type-in-the-first-place","vision/status_quo/niklaus_simulates_hydrodynamics.html#-status-quo-stories-niklaus-builds-a-hydrodynamics-simulator","vision/status_quo/niklaus_simulates_hydrodynamics.html#-warning-draft-status-","vision/status_quo/niklaus_simulates_hydrodynamics.html#the-story","vision/status_quo/niklaus_simulates_hydrodynamics.html#problem","vision/status_quo/niklaus_simulates_hydrodynamics.html#solution-path","vision/status_quo/niklaus_simulates_hydrodynamics.html#-frequently-asked-questions","vision/status_quo/niklaus_simulates_hydrodynamics.html#what-are-the-morals-of-the-story","vision/status_quo/niklaus_simulates_hydrodynamics.html#what-are-the-sources-for-this-story","vision/status_quo/niklaus_simulates_hydrodynamics.html#why-did-you-choose-niklaus-and-grace-to-tell-this-story","vision/status_quo/niklaus_simulates_hydrodynamics.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/niklaus_wants_to_share_knowledge.html#-status-quo-stories-niklaus-wants-to-share-knowledge","vision/status_quo/niklaus_wants_to_share_knowledge.html#-warning-draft-status-","vision/status_quo/niklaus_wants_to_share_knowledge.html#the-story","vision/status_quo/niklaus_wants_to_share_knowledge.html#-frequently-asked-questions","vision/status_quo/niklaus_wants_to_share_knowledge.html#what-are-the-morals-of-the-story","vision/status_quo/niklaus_wants_to_share_knowledge.html#what-are-the-sources-for-this-story","vision/status_quo/niklaus_wants_to_share_knowledge.html#why-did-you-choose--niklaus--to-tell-this-story","vision/status_quo/niklaus_wants_to_share_knowledge.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/shiny_future.html#-shiny-future-where-we-want-to-get-to","vision/shiny_future.html#-under-construction-help-needed-","vision/shiny_future.html#what-it-this","vision/shiny_future.html#think-big----too-big-if-you-have-to","vision/shiny_future.html#where-are-the-stories","vision/shiny_future/template.html#-shiny-future-stories-template","vision/shiny_future/template.html#-warning-draft-status-","vision/shiny_future/template.html#the-story","vision/shiny_future/template.html#-frequently-asked-questions","vision/shiny_future/template.html#what-status-quo-stories-are-you-retelling","vision/shiny_future/template.html#what-are-the-key-attributes-of-this-shiny-future","vision/shiny_future/template.html#what-is-the-most-shiny-about-this-future","vision/shiny_future/template.html#what-are-some-of-the-potential-pitfalls-about-this-future","vision/shiny_future/template.html#did-anything-surprise-you-when-writing-this-story-did-the-story-go-any-place-unexpected","vision/shiny_future/template.html#what-are-some-variations-of-this-story-that-you-considered-or-that-you-think-might-be-fun-to-write-have-any-variations-of-this-story-already-been-written","vision/shiny_future/template.html#what-are-some-of-the-things-well-have-to-figure-out-to-realize-this-future-what-projects-besides-rust-itself-are-involved-if-any-optional","vision/shiny_future/alan_switches_runtimes.html#-shiny-future-stories-alan-switches-runtimes","vision/shiny_future/alan_switches_runtimes.html#-warning-draft-status-","vision/shiny_future/alan_switches_runtimes.html#the-story","vision/shiny_future/alan_switches_runtimes.html#learning-more-about-humboldt","vision/shiny_future/alan_switches_runtimes.html#integrating-into-other-event-loops","vision/shiny_future/alan_switches_runtimes.html#-frequently-asked-questions","vision/shiny_future/alan_switches_runtimes.html#what-status-quo-story-or-stories-are-you-retelling","vision/shiny_future/alan_switches_runtimes.html#what-are-the-key-points-you-were-trying-to-convey-with-this-status-quo-story","vision/shiny_future/alan_switches_runtimes.html#how-do-you-imagine-the-std-apis-and-so-forth-know-the-current-runtime","vision/shiny_future/alan_switches_runtimes.html#what-happens-for-runtimes-that-dont-support-all-the-features-that-std-supports","vision/shiny_future/alan_switches_runtimes.html#what-is--alan--most-excited-about-in-this-future-is-he-disappointed-by-anything","vision/shiny_future/alan_switches_runtimes.html#what-is--grace--most-excited-about-in-this-future-is-she-disappointed-by-anything","vision/shiny_future/alan_switches_runtimes.html#what-is--niklaus--most-excited-about-in-this-future-is-he-disappointed-by-anything","vision/shiny_future/alan_switches_runtimes.html#what-is--barbara--most-excited-about-in-this-future-is-she-disappointed-by-anything","vision/shiny_future/alan_switches_runtimes.html#what--projects--benefit-the-most-from-this-future","vision/shiny_future/alan_switches_runtimes.html#are-there-any--projects--that-are-hindered-by-this-future","vision/shiny_future/alan_switches_runtimes.html#what-are-the-incremental-steps-towards-realizing-this-shiny-future","vision/shiny_future/alan_switches_runtimes.html#does-realizing-this-future-require-cooperation-between-many-projects","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#-shiny-future-stories-alans-trust-in-the-compiler-is-rewarded","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#-warning-draft-status-","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#the-story","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#trust-the-compiler","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#the-first-async-project","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#making-some-web-requests","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#-frequently-asked-questions","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-status-quo-story-or-stories-are-you-retelling","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-are-the-key-points-you-were-trying-to-convey-with-this-status-quo-story","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#is-there-a-one-size-fits-all-runtime-in-this-future","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-is--alan--most-excited-about-in-this-future-is-he-disappointed-by-anything","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-is--grace--most-excited-about-in-this-future-is-she-disappointed-by-anything","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-is--niklaus--most-excited-about-in-this-future-is-he-disappointed-by-anything","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-is--barbara--most-excited-about-in-this-future-is-she-disappointed-by-anything","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what--projects--benefit-the-most-from-this-future","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#are-there-any--projects--that-are-hindered-by-this-future","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-are-the-incremental-steps-towards-realizing-this-shiny-future","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#does-realizing-this-future-require-cooperation-between-many-projects","vision/shiny_future/barbara_makes_a_wish.html#-shiny-future-stories-barbara-makes-a-wish","vision/shiny_future/barbara_makes_a_wish.html#-warning-draft-status-","vision/shiny_future/barbara_makes_a_wish.html#the-story","vision/shiny_future/barbara_makes_a_wish.html#alternate-history","vision/shiny_future/barbara_makes_a_wish.html#-frequently-asked-questions","vision/shiny_future/barbara_makes_a_wish.html#what-status-quo-story-or-stories-are-you-retelling","vision/shiny_future/barbara_makes_a_wish.html#what-is--alan--most-excited-about-in-this-future-is-he-disappointed-by-anything","vision/shiny_future/barbara_makes_a_wish.html#what-is--grace--most-excited-about-in-this-future-is-she-disappointed-by-anything","vision/shiny_future/barbara_makes_a_wish.html#what-is--niklaus--most-excited-about-in-this-future-is-he-disappointed-by-anything","vision/shiny_future/barbara_makes_a_wish.html#what-is--barbara--most-excited-about-in-this-future-is-she-disappointed-by-anything","vision/shiny_future/barbara_makes_a_wish.html#what--projects--benefit-the-most-from-this-future","vision/shiny_future/barbara_makes_a_wish.html#are-there-any--projects--that-are-hindered-by-this-future","vision/shiny_future/barbara_makes_a_wish.html#what-are-the-incremental-steps-towards-realizing-this-shiny-future--optional","vision/shiny_future/barbara_makes_a_wish.html#does-realizing-this-future-require-cooperation-between-many-projects--optional","vision/roadmap.html#-the-roadmap-what-were-doing-in-2021","vision/roadmap.html#-not-time-for-this-yet-","vision/roadmap.html#key","vision/roadmap.html#roadmap-items","triage.html#-triage-meetings","triage.html#when-where","triage.html#so-you-want-to-fix-a-bug","triage.html#project-board","triage.html#triage-process","triage.html#mentoring","design_docs.html#-design-documents","design_docs.html#early-stage-design-docs","design_docs.html#late-stage-design-docs","design_docs/yield_safe.html#-yield-safe-lint","design_docs/yield_safe.html#use-case","design_docs/yield_safe.html#types-where-this-would-apply","design_docs/yield_safe.html#precedent-and-related-questions","design_docs/stream.html#-stream-trait","design_docs/stream.html#trait-definition","design_docs/stream.html#concerns","design_docs/stream.html#poll-based-design","design_docs/stream.html#attached-streams-are-commonly-desired","design_docs/stream.html#combinators","design_docs/generator_syntax.html#--generator-syntax","design_docs/async_read_write.html#-asyncread-asyncwrite-traits","design_docs/async_fn_in_traits.html#-async-fn-in-traits","design_docs/async_fn_in_traits.html#general-goal","design_docs/async_fn_in_traits.html#concerns","design_docs/async_fn_in_traits.html#how-to-name-the-resulting-future","design_docs/async_fn_in_traits.html#requiring-send-on-futures","design_docs/async_fn_in_traits.html#example-use-case-the-service","design_docs/async_fn_in_traits.html#example-use-case-capturing-lifetimes-of-arguments","design_docs/async_fn_in_traits.html#-frequently-asked-questions","design_docs/async_fn_in_traits.html#what-do-people-say-about-this-to-their-friends-on-twitter","design_docs/mutex.html#-mutex-future-aware","design_docs/channels.html#-async-aware-channels","design_docs/async_closures.html#-async-closures","design_docs/join.html#-join-combinator","design_docs/select.html#-select-combinator","design_docs/sink_trait.html#-sink-trait","design_docs/async_main.html#-async-main","design_docs/async_main.html#what-is-it","design_docs/async_main.html#motivation","design_docs/async_main.html#frequently-asked-questions","design_docs/async_drop.html#-async-drop","design_docs/async_lifecycle.html#-async-lifecycle","design_docs/completion_based_futures.html#-completion-based-futures","conversations.html#-conversations","conversations.html#not-exhaustive-nor-mandatory","conversations/2021-02-12-Twitter-Thread.html#-2021-02-12-twitter-thread","acknowledgments.html#-acknowledgments","acknowledgments.html#-participating-in-an-writing-session","acknowledgments.html#-discussing-about-stories","acknowledgments.html#-directly-contributing"],"index":{"documentStore":{"docInfo":{"0":{"body":5,"breadcrumbs":2,"title":1},"1":{"body":8,"breadcrumbs":2,"title":1},"10":{"body":20,"breadcrumbs":4,"title":3},"100":{"body":0,"breadcrumbs":6,"title":3},"101":{"body":0,"breadcrumbs":7,"title":4},"102":{"body":0,"breadcrumbs":8,"title":5},"103":{"body":0,"breadcrumbs":10,"title":7},"104":{"body":0,"breadcrumbs":5,"title":2},"105":{"body":0,"breadcrumbs":5,"title":2},"106":{"body":0,"breadcrumbs":9,"title":4},"107":{"body":10,"breadcrumbs":5,"title":0},"108":{"body":30,"breadcrumbs":6,"title":1},"109":{"body":0,"breadcrumbs":8,"title":3},"11":{"body":40,"breadcrumbs":4,"title":3},"110":{"body":111,"breadcrumbs":11,"title":6},"111":{"body":21,"breadcrumbs":10,"title":5},"112":{"body":30,"breadcrumbs":12,"title":7},"113":{"body":6,"breadcrumbs":7,"title":2},"114":{"body":0,"breadcrumbs":9,"title":4},"115":{"body":10,"breadcrumbs":5,"title":0},"116":{"body":35,"breadcrumbs":6,"title":1},"117":{"body":0,"breadcrumbs":8,"title":3},"118":{"body":23,"breadcrumbs":9,"title":4},"119":{"body":15,"breadcrumbs":10,"title":5},"12":{"body":23,"breadcrumbs":5,"title":4},"120":{"body":19,"breadcrumbs":12,"title":7},"121":{"body":11,"breadcrumbs":7,"title":2},"122":{"body":15,"breadcrumbs":7,"title":2},"123":{"body":0,"breadcrumbs":9,"title":4},"124":{"body":10,"breadcrumbs":5,"title":0},"125":{"body":65,"breadcrumbs":6,"title":1},"126":{"body":0,"breadcrumbs":8,"title":3},"127":{"body":61,"breadcrumbs":12,"title":7},"128":{"body":22,"breadcrumbs":10,"title":5},"129":{"body":38,"breadcrumbs":12,"title":7},"13":{"body":0,"breadcrumbs":3,"title":1},"130":{"body":45,"breadcrumbs":7,"title":2},"131":{"body":22,"breadcrumbs":7,"title":2},"132":{"body":0,"breadcrumbs":11,"title":5},"133":{"body":10,"breadcrumbs":6,"title":0},"134":{"body":46,"breadcrumbs":7,"title":1},"135":{"body":0,"breadcrumbs":9,"title":3},"136":{"body":60,"breadcrumbs":12,"title":6},"137":{"body":15,"breadcrumbs":11,"title":5},"138":{"body":27,"breadcrumbs":13,"title":7},"139":{"body":24,"breadcrumbs":8,"title":2},"14":{"body":45,"breadcrumbs":3,"title":1},"140":{"body":21,"breadcrumbs":8,"title":2},"141":{"body":0,"breadcrumbs":9,"title":4},"142":{"body":10,"breadcrumbs":5,"title":0},"143":{"body":23,"breadcrumbs":6,"title":1},"144":{"body":0,"breadcrumbs":8,"title":3},"145":{"body":3,"breadcrumbs":9,"title":4},"146":{"body":12,"breadcrumbs":10,"title":5},"147":{"body":16,"breadcrumbs":12,"title":7},"148":{"body":11,"breadcrumbs":7,"title":2},"149":{"body":11,"breadcrumbs":7,"title":2},"15":{"body":88,"breadcrumbs":4,"title":2},"150":{"body":4,"breadcrumbs":7,"title":2},"151":{"body":0,"breadcrumbs":6,"title":3},"152":{"body":27,"breadcrumbs":7,"title":4},"153":{"body":67,"breadcrumbs":3,"title":0},"154":{"body":47,"breadcrumbs":6,"title":3},"155":{"body":28,"breadcrumbs":10,"title":7},"156":{"body":786,"breadcrumbs":4,"title":1},"157":{"body":60,"breadcrumbs":8,"title":4},"158":{"body":50,"breadcrumbs":7,"title":3},"159":{"body":14,"breadcrumbs":5,"title":1},"16":{"body":156,"breadcrumbs":3,"title":1},"160":{"body":8,"breadcrumbs":7,"title":3},"161":{"body":6,"breadcrumbs":6,"title":2},"162":{"body":9,"breadcrumbs":6,"title":2},"163":{"body":4,"breadcrumbs":8,"title":4},"164":{"body":12,"breadcrumbs":9,"title":5},"165":{"body":0,"breadcrumbs":20,"title":10},"166":{"body":50,"breadcrumbs":13,"title":3},"167":{"body":82,"breadcrumbs":11,"title":1},"168":{"body":44,"breadcrumbs":11,"title":1},"169":{"body":82,"breadcrumbs":11,"title":1},"17":{"body":36,"breadcrumbs":3,"title":1},"170":{"body":0,"breadcrumbs":13,"title":3},"171":{"body":68,"breadcrumbs":12,"title":2},"172":{"body":7,"breadcrumbs":12,"title":2},"173":{"body":12,"breadcrumbs":14,"title":4},"174":{"body":17,"breadcrumbs":15,"title":5},"175":{"body":0,"breadcrumbs":18,"title":9},"176":{"body":50,"breadcrumbs":12,"title":3},"177":{"body":81,"breadcrumbs":10,"title":1},"178":{"body":197,"breadcrumbs":11,"title":2},"179":{"body":28,"breadcrumbs":11,"title":2},"18":{"body":26,"breadcrumbs":4,"title":2},"180":{"body":0,"breadcrumbs":12,"title":3},"181":{"body":38,"breadcrumbs":11,"title":2},"182":{"body":9,"breadcrumbs":11,"title":2},"183":{"body":13,"breadcrumbs":13,"title":4},"184":{"body":5,"breadcrumbs":14,"title":5},"185":{"body":0,"breadcrumbs":16,"title":9},"186":{"body":50,"breadcrumbs":10,"title":3},"187":{"body":31,"breadcrumbs":8,"title":1},"188":{"body":47,"breadcrumbs":10,"title":3},"189":{"body":64,"breadcrumbs":11,"title":4},"19":{"body":22,"breadcrumbs":5,"title":3},"190":{"body":107,"breadcrumbs":10,"title":3},"191":{"body":24,"breadcrumbs":10,"title":3},"192":{"body":91,"breadcrumbs":10,"title":3},"193":{"body":0,"breadcrumbs":14,"title":7},"194":{"body":50,"breadcrumbs":10,"title":3},"195":{"body":96,"breadcrumbs":8,"title":1},"196":{"body":96,"breadcrumbs":9,"title":2},"197":{"body":47,"breadcrumbs":9,"title":2},"198":{"body":66,"breadcrumbs":9,"title":2},"199":{"body":217,"breadcrumbs":9,"title":2},"2":{"body":25,"breadcrumbs":3,"title":2},"20":{"body":0,"breadcrumbs":5,"title":2},"200":{"body":162,"breadcrumbs":8,"title":1},"201":{"body":26,"breadcrumbs":9,"title":2},"202":{"body":0,"breadcrumbs":10,"title":3},"203":{"body":38,"breadcrumbs":9,"title":2},"204":{"body":13,"breadcrumbs":9,"title":2},"205":{"body":12,"breadcrumbs":11,"title":4},"206":{"body":13,"breadcrumbs":12,"title":5},"207":{"body":0,"breadcrumbs":14,"title":7},"208":{"body":50,"breadcrumbs":10,"title":3},"209":{"body":558,"breadcrumbs":8,"title":1},"21":{"body":43,"breadcrumbs":5,"title":2},"210":{"body":0,"breadcrumbs":10,"title":3},"211":{"body":135,"breadcrumbs":9,"title":2},"212":{"body":5,"breadcrumbs":9,"title":2},"213":{"body":49,"breadcrumbs":11,"title":4},"214":{"body":81,"breadcrumbs":12,"title":5},"215":{"body":0,"breadcrumbs":12,"title":6},"216":{"body":50,"breadcrumbs":9,"title":3},"217":{"body":543,"breadcrumbs":7,"title":1},"218":{"body":270,"breadcrumbs":9,"title":3},"219":{"body":0,"breadcrumbs":14,"title":7},"22":{"body":14,"breadcrumbs":6,"title":3},"220":{"body":50,"breadcrumbs":10,"title":3},"221":{"body":341,"breadcrumbs":8,"title":1},"222":{"body":0,"breadcrumbs":10,"title":3},"223":{"body":25,"breadcrumbs":9,"title":2},"224":{"body":16,"breadcrumbs":9,"title":2},"225":{"body":28,"breadcrumbs":11,"title":4},"226":{"body":32,"breadcrumbs":12,"title":5},"227":{"body":0,"breadcrumbs":16,"title":8},"228":{"body":23,"breadcrumbs":11,"title":3},"229":{"body":0,"breadcrumbs":9,"title":1},"23":{"body":35,"breadcrumbs":9,"title":4},"230":{"body":97,"breadcrumbs":11,"title":3},"231":{"body":66,"breadcrumbs":12,"title":4},"232":{"body":57,"breadcrumbs":10,"title":2},"233":{"body":46,"breadcrumbs":12,"title":4},"234":{"body":64,"breadcrumbs":14,"title":6},"235":{"body":40,"breadcrumbs":13,"title":5},"236":{"body":0,"breadcrumbs":11,"title":3},"237":{"body":122,"breadcrumbs":10,"title":2},"238":{"body":3,"breadcrumbs":10,"title":2},"239":{"body":15,"breadcrumbs":12,"title":4},"24":{"body":54,"breadcrumbs":6,"title":1},"240":{"body":38,"breadcrumbs":13,"title":5},"241":{"body":17,"breadcrumbs":17,"title":9},"242":{"body":0,"breadcrumbs":15,"title":8},"243":{"body":23,"breadcrumbs":10,"title":3},"244":{"body":34,"breadcrumbs":8,"title":1},"245":{"body":169,"breadcrumbs":9,"title":2},"246":{"body":119,"breadcrumbs":9,"title":2},"247":{"body":0,"breadcrumbs":10,"title":3},"248":{"body":44,"breadcrumbs":9,"title":2},"249":{"body":11,"breadcrumbs":9,"title":2},"25":{"body":57,"breadcrumbs":14,"title":9},"250":{"body":22,"breadcrumbs":11,"title":4},"251":{"body":49,"breadcrumbs":12,"title":5},"252":{"body":35,"breadcrumbs":14,"title":7},"253":{"body":0,"breadcrumbs":18,"title":9},"254":{"body":23,"breadcrumbs":12,"title":3},"255":{"body":0,"breadcrumbs":10,"title":1},"256":{"body":77,"breadcrumbs":11,"title":2},"257":{"body":106,"breadcrumbs":12,"title":3},"258":{"body":216,"breadcrumbs":13,"title":4},"259":{"body":168,"breadcrumbs":12,"title":3},"26":{"body":21,"breadcrumbs":7,"title":2},"260":{"body":0,"breadcrumbs":12,"title":3},"261":{"body":82,"breadcrumbs":11,"title":2},"262":{"body":3,"breadcrumbs":11,"title":2},"263":{"body":21,"breadcrumbs":13,"title":4},"264":{"body":20,"breadcrumbs":14,"title":5},"265":{"body":15,"breadcrumbs":18,"title":9},"266":{"body":0,"breadcrumbs":16,"title":8},"267":{"body":50,"breadcrumbs":11,"title":3},"268":{"body":563,"breadcrumbs":9,"title":1},"269":{"body":0,"breadcrumbs":11,"title":3},"27":{"body":73,"breadcrumbs":9,"title":4},"270":{"body":53,"breadcrumbs":10,"title":2},"271":{"body":34,"breadcrumbs":10,"title":2},"272":{"body":35,"breadcrumbs":12,"title":4},"273":{"body":22,"breadcrumbs":13,"title":5},"274":{"body":0,"breadcrumbs":16,"title":8},"275":{"body":50,"breadcrumbs":11,"title":3},"276":{"body":520,"breadcrumbs":9,"title":1},"277":{"body":0,"breadcrumbs":11,"title":3},"278":{"body":135,"breadcrumbs":10,"title":2},"279":{"body":37,"breadcrumbs":10,"title":2},"28":{"body":70,"breadcrumbs":7,"title":2},"280":{"body":9,"breadcrumbs":12,"title":4},"281":{"body":2,"breadcrumbs":13,"title":5},"282":{"body":0,"breadcrumbs":14,"title":7},"283":{"body":50,"breadcrumbs":10,"title":3},"284":{"body":590,"breadcrumbs":8,"title":1},"285":{"body":0,"breadcrumbs":10,"title":3},"286":{"body":49,"breadcrumbs":9,"title":2},"287":{"body":8,"breadcrumbs":9,"title":2},"288":{"body":34,"breadcrumbs":11,"title":4},"289":{"body":34,"breadcrumbs":12,"title":5},"29":{"body":57,"breadcrumbs":7,"title":2},"290":{"body":0,"breadcrumbs":14,"title":7},"291":{"body":50,"breadcrumbs":10,"title":3},"292":{"body":638,"breadcrumbs":8,"title":1},"293":{"body":0,"breadcrumbs":10,"title":3},"294":{"body":27,"breadcrumbs":9,"title":2},"295":{"body":2,"breadcrumbs":9,"title":2},"296":{"body":13,"breadcrumbs":11,"title":4},"297":{"body":8,"breadcrumbs":12,"title":5},"298":{"body":0,"breadcrumbs":14,"title":7},"299":{"body":50,"breadcrumbs":10,"title":3},"3":{"body":38,"breadcrumbs":4,"title":3},"30":{"body":0,"breadcrumbs":8,"title":3},"300":{"body":323,"breadcrumbs":8,"title":1},"301":{"body":0,"breadcrumbs":10,"title":3},"302":{"body":42,"breadcrumbs":9,"title":2},"303":{"body":15,"breadcrumbs":9,"title":2},"304":{"body":15,"breadcrumbs":11,"title":4},"305":{"body":0,"breadcrumbs":19,"title":9},"306":{"body":50,"breadcrumbs":13,"title":3},"307":{"body":102,"breadcrumbs":11,"title":1},"308":{"body":39,"breadcrumbs":12,"title":2},"309":{"body":184,"breadcrumbs":13,"title":3},"31":{"body":11,"breadcrumbs":10,"title":5},"310":{"body":116,"breadcrumbs":13,"title":3},"311":{"body":50,"breadcrumbs":13,"title":3},"312":{"body":63,"breadcrumbs":11,"title":1},"313":{"body":38,"breadcrumbs":13,"title":3},"314":{"body":0,"breadcrumbs":13,"title":3},"315":{"body":54,"breadcrumbs":12,"title":2},"316":{"body":14,"breadcrumbs":14,"title":4},"317":{"body":20,"breadcrumbs":15,"title":5},"318":{"body":55,"breadcrumbs":14,"title":4},"319":{"body":88,"breadcrumbs":13,"title":3},"32":{"body":22,"breadcrumbs":9,"title":4},"320":{"body":44,"breadcrumbs":15,"title":5},"321":{"body":91,"breadcrumbs":16,"title":6},"322":{"body":27,"breadcrumbs":17,"title":7},"323":{"body":30,"breadcrumbs":18,"title":8},"324":{"body":35,"breadcrumbs":16,"title":6},"325":{"body":45,"breadcrumbs":13,"title":3},"326":{"body":0,"breadcrumbs":14,"title":7},"327":{"body":23,"breadcrumbs":10,"title":3},"328":{"body":424,"breadcrumbs":8,"title":1},"329":{"body":8,"breadcrumbs":10,"title":3},"33":{"body":17,"breadcrumbs":9,"title":4},"330":{"body":39,"breadcrumbs":9,"title":2},"331":{"body":33,"breadcrumbs":9,"title":2},"332":{"body":10,"breadcrumbs":11,"title":4},"333":{"body":12,"breadcrumbs":12,"title":5},"334":{"body":0,"breadcrumbs":16,"title":8},"335":{"body":50,"breadcrumbs":11,"title":3},"336":{"body":786,"breadcrumbs":9,"title":1},"337":{"body":0,"breadcrumbs":11,"title":3},"338":{"body":50,"breadcrumbs":10,"title":2},"339":{"body":15,"breadcrumbs":12,"title":4},"34":{"body":7,"breadcrumbs":11,"title":6},"340":{"body":52,"breadcrumbs":13,"title":5},"341":{"body":176,"breadcrumbs":18,"title":10},"342":{"body":65,"breadcrumbs":18,"title":10},"343":{"body":54,"breadcrumbs":13,"title":5},"344":{"body":36,"breadcrumbs":15,"title":7},"345":{"body":0,"breadcrumbs":15,"title":8},"346":{"body":50,"breadcrumbs":10,"title":3},"347":{"body":417,"breadcrumbs":8,"title":1},"348":{"body":0,"breadcrumbs":10,"title":3},"349":{"body":112,"breadcrumbs":10,"title":3},"35":{"body":14,"breadcrumbs":9,"title":4},"350":{"body":32,"breadcrumbs":9,"title":2},"351":{"body":7,"breadcrumbs":9,"title":2},"352":{"body":12,"breadcrumbs":11,"title":4},"353":{"body":13,"breadcrumbs":12,"title":5},"354":{"body":0,"breadcrumbs":16,"title":8},"355":{"body":23,"breadcrumbs":11,"title":3},"356":{"body":41,"breadcrumbs":16,"title":8},"357":{"body":83,"breadcrumbs":11,"title":3},"358":{"body":99,"breadcrumbs":10,"title":2},"359":{"body":93,"breadcrumbs":12,"title":4},"36":{"body":19,"breadcrumbs":10,"title":5},"360":{"body":81,"breadcrumbs":11,"title":3},"361":{"body":23,"breadcrumbs":9,"title":1},"362":{"body":0,"breadcrumbs":11,"title":3},"363":{"body":72,"breadcrumbs":10,"title":2},"364":{"body":4,"breadcrumbs":10,"title":2},"365":{"body":56,"breadcrumbs":13,"title":5},"366":{"body":22,"breadcrumbs":12,"title":4},"367":{"body":75,"breadcrumbs":13,"title":5},"368":{"body":0,"breadcrumbs":14,"title":7},"369":{"body":50,"breadcrumbs":10,"title":3},"37":{"body":51,"breadcrumbs":9,"title":4},"370":{"body":568,"breadcrumbs":8,"title":1},"371":{"body":0,"breadcrumbs":10,"title":3},"372":{"body":43,"breadcrumbs":9,"title":2},"373":{"body":2,"breadcrumbs":9,"title":2},"374":{"body":20,"breadcrumbs":9,"title":2},"375":{"body":25,"breadcrumbs":13,"title":6},"376":{"body":10,"breadcrumbs":11,"title":4},"377":{"body":7,"breadcrumbs":12,"title":5},"378":{"body":0,"breadcrumbs":12,"title":6},"379":{"body":50,"breadcrumbs":9,"title":3},"38":{"body":22,"breadcrumbs":6,"title":1},"380":{"body":891,"breadcrumbs":7,"title":1},"381":{"body":8,"breadcrumbs":9,"title":3},"382":{"body":9,"breadcrumbs":10,"title":4},"383":{"body":136,"breadcrumbs":8,"title":2},"384":{"body":3,"breadcrumbs":8,"title":2},"385":{"body":45,"breadcrumbs":11,"title":5},"386":{"body":18,"breadcrumbs":8,"title":2},"387":{"body":0,"breadcrumbs":14,"title":7},"388":{"body":23,"breadcrumbs":10,"title":3},"389":{"body":277,"breadcrumbs":8,"title":1},"39":{"body":20,"breadcrumbs":7,"title":2},"390":{"body":8,"breadcrumbs":10,"title":3},"391":{"body":67,"breadcrumbs":9,"title":2},"392":{"body":38,"breadcrumbs":9,"title":2},"393":{"body":49,"breadcrumbs":11,"title":4},"394":{"body":101,"breadcrumbs":12,"title":5},"395":{"body":0,"breadcrumbs":12,"title":6},"396":{"body":50,"breadcrumbs":9,"title":3},"397":{"body":306,"breadcrumbs":7,"title":1},"398":{"body":8,"breadcrumbs":9,"title":3},"399":{"body":37,"breadcrumbs":8,"title":2},"4":{"body":7,"breadcrumbs":2,"title":1},"40":{"body":64,"breadcrumbs":9,"title":4},"400":{"body":6,"breadcrumbs":8,"title":2},"401":{"body":11,"breadcrumbs":10,"title":4},"402":{"body":23,"breadcrumbs":11,"title":5},"403":{"body":30,"breadcrumbs":8,"title":2},"404":{"body":272,"breadcrumbs":10,"title":4},"405":{"body":13,"breadcrumbs":11,"title":5},"406":{"body":0,"breadcrumbs":12,"title":6},"407":{"body":50,"breadcrumbs":9,"title":3},"408":{"body":211,"breadcrumbs":7,"title":1},"409":{"body":0,"breadcrumbs":9,"title":3},"41":{"body":177,"breadcrumbs":7,"title":2},"410":{"body":39,"breadcrumbs":8,"title":2},"411":{"body":2,"breadcrumbs":8,"title":2},"412":{"body":42,"breadcrumbs":12,"title":6},"413":{"body":8,"breadcrumbs":10,"title":4},"414":{"body":28,"breadcrumbs":11,"title":5},"415":{"body":0,"breadcrumbs":14,"title":6},"416":{"body":50,"breadcrumbs":11,"title":3},"417":{"body":259,"breadcrumbs":9,"title":1},"418":{"body":113,"breadcrumbs":15,"title":7},"419":{"body":129,"breadcrumbs":13,"title":5},"42":{"body":61,"breadcrumbs":7,"title":2},"420":{"body":0,"breadcrumbs":11,"title":3},"421":{"body":436,"breadcrumbs":9,"title":1},"422":{"body":105,"breadcrumbs":10,"title":2},"423":{"body":110,"breadcrumbs":10,"title":2},"424":{"body":0,"breadcrumbs":11,"title":3},"425":{"body":17,"breadcrumbs":10,"title":2},"426":{"body":6,"breadcrumbs":10,"title":2},"427":{"body":9,"breadcrumbs":12,"title":4},"428":{"body":13,"breadcrumbs":13,"title":5},"429":{"body":0,"breadcrumbs":16,"title":8},"43":{"body":0,"breadcrumbs":8,"title":3},"430":{"body":23,"breadcrumbs":11,"title":3},"431":{"body":202,"breadcrumbs":9,"title":1},"432":{"body":0,"breadcrumbs":11,"title":3},"433":{"body":22,"breadcrumbs":10,"title":2},"434":{"body":8,"breadcrumbs":10,"title":2},"435":{"body":18,"breadcrumbs":12,"title":4},"436":{"body":23,"breadcrumbs":13,"title":5},"437":{"body":21,"breadcrumbs":15,"title":7},"438":{"body":0,"breadcrumbs":14,"title":7},"439":{"body":23,"breadcrumbs":10,"title":3},"44":{"body":11,"breadcrumbs":10,"title":5},"440":{"body":525,"breadcrumbs":8,"title":1},"441":{"body":0,"breadcrumbs":10,"title":3},"442":{"body":14,"breadcrumbs":9,"title":2},"443":{"body":2,"breadcrumbs":9,"title":2},"444":{"body":3,"breadcrumbs":11,"title":4},"445":{"body":25,"breadcrumbs":12,"title":5},"446":{"body":0,"breadcrumbs":13,"title":6},"447":{"body":50,"breadcrumbs":10,"title":3},"448":{"body":196,"breadcrumbs":8,"title":1},"449":{"body":8,"breadcrumbs":10,"title":3},"45":{"body":15,"breadcrumbs":10,"title":5},"450":{"body":44,"breadcrumbs":9,"title":2},"451":{"body":15,"breadcrumbs":9,"title":2},"452":{"body":10,"breadcrumbs":11,"title":4},"453":{"body":48,"breadcrumbs":12,"title":5},"454":{"body":0,"breadcrumbs":14,"title":7},"455":{"body":23,"breadcrumbs":10,"title":3},"456":{"body":256,"breadcrumbs":8,"title":1},"457":{"body":251,"breadcrumbs":12,"title":5},"458":{"body":201,"breadcrumbs":12,"title":5},"459":{"body":0,"breadcrumbs":10,"title":3},"46":{"body":37,"breadcrumbs":10,"title":5},"460":{"body":125,"breadcrumbs":9,"title":2},"461":{"body":8,"breadcrumbs":9,"title":2},"462":{"body":81,"breadcrumbs":11,"title":4},"463":{"body":39,"breadcrumbs":12,"title":5},"464":{"body":6,"breadcrumbs":14,"title":7},"465":{"body":3,"breadcrumbs":15,"title":8},"466":{"body":0,"breadcrumbs":14,"title":7},"467":{"body":50,"breadcrumbs":10,"title":3},"468":{"body":0,"breadcrumbs":8,"title":1},"469":{"body":175,"breadcrumbs":8,"title":1},"47":{"body":78,"breadcrumbs":9,"title":4},"470":{"body":463,"breadcrumbs":9,"title":2},"471":{"body":0,"breadcrumbs":10,"title":3},"472":{"body":33,"breadcrumbs":9,"title":2},"473":{"body":8,"breadcrumbs":9,"title":2},"474":{"body":24,"breadcrumbs":12,"title":5},"475":{"body":43,"breadcrumbs":12,"title":5},"476":{"body":0,"breadcrumbs":12,"title":6},"477":{"body":50,"breadcrumbs":9,"title":3},"478":{"body":88,"breadcrumbs":7,"title":1},"479":{"body":0,"breadcrumbs":9,"title":3},"48":{"body":10,"breadcrumbs":8,"title":3},"480":{"body":38,"breadcrumbs":8,"title":2},"481":{"body":40,"breadcrumbs":8,"title":2},"482":{"body":5,"breadcrumbs":10,"title":4},"483":{"body":25,"breadcrumbs":11,"title":5},"484":{"body":0,"breadcrumbs":6,"title":3},"485":{"body":27,"breadcrumbs":7,"title":4},"486":{"body":38,"breadcrumbs":3,"title":0},"487":{"body":54,"breadcrumbs":6,"title":3},"488":{"body":2,"breadcrumbs":4,"title":1},"489":{"body":46,"breadcrumbs":8,"title":4},"49":{"body":33,"breadcrumbs":10,"title":5},"490":{"body":63,"breadcrumbs":7,"title":3},"491":{"body":14,"breadcrumbs":5,"title":1},"492":{"body":9,"breadcrumbs":7,"title":3},"493":{"body":10,"breadcrumbs":8,"title":4},"494":{"body":6,"breadcrumbs":8,"title":4},"495":{"body":12,"breadcrumbs":6,"title":2},"496":{"body":26,"breadcrumbs":7,"title":3},"497":{"body":18,"breadcrumbs":12,"title":8},"498":{"body":23,"breadcrumbs":14,"title":10},"499":{"body":15,"breadcrumbs":16,"title":12},"5":{"body":16,"breadcrumbs":2,"title":1},"50":{"body":2,"breadcrumbs":13,"title":8},"500":{"body":0,"breadcrumbs":12,"title":6},"501":{"body":63,"breadcrumbs":9,"title":3},"502":{"body":136,"breadcrumbs":7,"title":1},"503":{"body":86,"breadcrumbs":9,"title":3},"504":{"body":110,"breadcrumbs":9,"title":3},"505":{"body":0,"breadcrumbs":9,"title":3},"506":{"body":12,"breadcrumbs":11,"title":5},"507":{"body":35,"breadcrumbs":13,"title":7},"508":{"body":27,"breadcrumbs":13,"title":7},"509":{"body":11,"breadcrumbs":13,"title":7},"51":{"body":37,"breadcrumbs":13,"title":8},"510":{"body":14,"breadcrumbs":11,"title":5},"511":{"body":42,"breadcrumbs":11,"title":5},"512":{"body":14,"breadcrumbs":11,"title":5},"513":{"body":27,"breadcrumbs":11,"title":5},"514":{"body":7,"breadcrumbs":9,"title":3},"515":{"body":54,"breadcrumbs":9,"title":3},"516":{"body":45,"breadcrumbs":12,"title":6},"517":{"body":60,"breadcrumbs":13,"title":7},"518":{"body":0,"breadcrumbs":14,"title":7},"519":{"body":63,"breadcrumbs":10,"title":3},"52":{"body":13,"breadcrumbs":6,"title":3},"520":{"body":0,"breadcrumbs":8,"title":1},"521":{"body":77,"breadcrumbs":9,"title":2},"522":{"body":198,"breadcrumbs":10,"title":3},"523":{"body":50,"breadcrumbs":10,"title":3},"524":{"body":0,"breadcrumbs":10,"title":3},"525":{"body":11,"breadcrumbs":12,"title":5},"526":{"body":42,"breadcrumbs":14,"title":7},"527":{"body":15,"breadcrumbs":12,"title":5},"528":{"body":12,"breadcrumbs":12,"title":5},"529":{"body":41,"breadcrumbs":12,"title":5},"53":{"body":45,"breadcrumbs":5,"title":2},"530":{"body":22,"breadcrumbs":12,"title":5},"531":{"body":18,"breadcrumbs":12,"title":5},"532":{"body":19,"breadcrumbs":10,"title":3},"533":{"body":19,"breadcrumbs":10,"title":3},"534":{"body":31,"breadcrumbs":13,"title":6},"535":{"body":11,"breadcrumbs":14,"title":7},"536":{"body":0,"breadcrumbs":12,"title":6},"537":{"body":63,"breadcrumbs":9,"title":3},"538":{"body":526,"breadcrumbs":7,"title":1},"539":{"body":249,"breadcrumbs":8,"title":2},"54":{"body":86,"breadcrumbs":8,"title":5},"540":{"body":0,"breadcrumbs":9,"title":3},"541":{"body":3,"breadcrumbs":11,"title":5},"542":{"body":35,"breadcrumbs":11,"title":5},"543":{"body":34,"breadcrumbs":11,"title":5},"544":{"body":42,"breadcrumbs":11,"title":5},"545":{"body":37,"breadcrumbs":11,"title":5},"546":{"body":43,"breadcrumbs":9,"title":3},"547":{"body":14,"breadcrumbs":9,"title":3},"548":{"body":27,"breadcrumbs":13,"title":7},"549":{"body":15,"breadcrumbs":14,"title":8},"55":{"body":42,"breadcrumbs":6,"title":3},"550":{"body":8,"breadcrumbs":7,"title":4},"551":{"body":20,"breadcrumbs":4,"title":1},"552":{"body":29,"breadcrumbs":4,"title":1},"553":{"body":11,"breadcrumbs":5,"title":2},"554":{"body":0,"breadcrumbs":4,"title":2},"555":{"body":13,"breadcrumbs":2,"title":0},"556":{"body":35,"breadcrumbs":5,"title":3},"557":{"body":14,"breadcrumbs":4,"title":2},"558":{"body":90,"breadcrumbs":4,"title":2},"559":{"body":65,"breadcrumbs":3,"title":1},"56":{"body":22,"breadcrumbs":8,"title":5},"560":{"body":39,"breadcrumbs":4,"title":2},"561":{"body":34,"breadcrumbs":6,"title":4},"562":{"body":41,"breadcrumbs":6,"title":4},"563":{"body":0,"breadcrumbs":8,"title":3},"564":{"body":30,"breadcrumbs":7,"title":2},"565":{"body":15,"breadcrumbs":7,"title":2},"566":{"body":14,"breadcrumbs":8,"title":3},"567":{"body":2,"breadcrumbs":6,"title":2},"568":{"body":21,"breadcrumbs":6,"title":2},"569":{"body":0,"breadcrumbs":5,"title":1},"57":{"body":34,"breadcrumbs":8,"title":5},"570":{"body":11,"breadcrumbs":7,"title":3},"571":{"body":7,"breadcrumbs":8,"title":4},"572":{"body":39,"breadcrumbs":5,"title":1},"573":{"body":46,"breadcrumbs":6,"title":2},"574":{"body":0,"breadcrumbs":8,"title":3},"575":{"body":4,"breadcrumbs":8,"title":3},"576":{"body":7,"breadcrumbs":7,"title":2},"577":{"body":0,"breadcrumbs":6,"title":1},"578":{"body":14,"breadcrumbs":8,"title":3},"579":{"body":55,"breadcrumbs":8,"title":3},"58":{"body":14,"breadcrumbs":5,"title":2},"580":{"body":29,"breadcrumbs":9,"title":4},"581":{"body":5,"breadcrumbs":11,"title":6},"582":{"body":0,"breadcrumbs":8,"title":3},"583":{"body":4,"breadcrumbs":8,"title":3},"584":{"body":5,"breadcrumbs":8,"title":3},"585":{"body":0,"breadcrumbs":8,"title":3},"586":{"body":0,"breadcrumbs":6,"title":2},"587":{"body":0,"breadcrumbs":6,"title":2},"588":{"body":0,"breadcrumbs":6,"title":2},"589":{"body":0,"breadcrumbs":6,"title":2},"59":{"body":52,"breadcrumbs":5,"title":2},"590":{"body":0,"breadcrumbs":6,"title":2},"591":{"body":0,"breadcrumbs":4,"title":0},"592":{"body":0,"breadcrumbs":5,"title":1},"593":{"body":0,"breadcrumbs":7,"title":3},"594":{"body":0,"breadcrumbs":6,"title":2},"595":{"body":0,"breadcrumbs":8,"title":2},"596":{"body":2,"breadcrumbs":8,"title":3},"597":{"body":19,"breadcrumbs":2,"title":1},"598":{"body":35,"breadcrumbs":3,"title":2},"599":{"body":416,"breadcrumbs":11,"title":5},"6":{"body":21,"breadcrumbs":2,"title":1},"60":{"body":16,"breadcrumbs":4,"title":1},"600":{"body":7,"breadcrumbs":2,"title":1},"601":{"body":12,"breadcrumbs":4,"title":3},"602":{"body":42,"breadcrumbs":3,"title":2},"603":{"body":45,"breadcrumbs":3,"title":2},"61":{"body":170,"breadcrumbs":7,"title":3},"62":{"body":123,"breadcrumbs":6,"title":2},"63":{"body":0,"breadcrumbs":5,"title":2},"64":{"body":32,"breadcrumbs":3,"title":0},"65":{"body":96,"breadcrumbs":4,"title":1},"66":{"body":0,"breadcrumbs":6,"title":3},"67":{"body":13,"breadcrumbs":5,"title":2},"68":{"body":6,"breadcrumbs":7,"title":4},"69":{"body":1,"breadcrumbs":8,"title":5},"7":{"body":0,"breadcrumbs":2,"title":1},"70":{"body":0,"breadcrumbs":6,"title":2},"71":{"body":0,"breadcrumbs":11,"title":7},"72":{"body":26,"breadcrumbs":7,"title":3},"73":{"body":43,"breadcrumbs":7,"title":3},"74":{"body":33,"breadcrumbs":7,"title":3},"75":{"body":0,"breadcrumbs":7,"title":3},"76":{"body":22,"breadcrumbs":8,"title":4},"77":{"body":7,"breadcrumbs":9,"title":5},"78":{"body":0,"breadcrumbs":6,"title":2},"79":{"body":56,"breadcrumbs":10,"title":6},"8":{"body":63,"breadcrumbs":1,"title":0},"80":{"body":0,"breadcrumbs":7,"title":3},"81":{"body":15,"breadcrumbs":8,"title":4},"82":{"body":38,"breadcrumbs":9,"title":5},"83":{"body":0,"breadcrumbs":6,"title":2},"84":{"body":32,"breadcrumbs":9,"title":5},"85":{"body":0,"breadcrumbs":7,"title":3},"86":{"body":10,"breadcrumbs":8,"title":4},"87":{"body":15,"breadcrumbs":9,"title":5},"88":{"body":0,"breadcrumbs":6,"title":2},"89":{"body":27,"breadcrumbs":8,"title":4},"9":{"body":120,"breadcrumbs":2,"title":1},"90":{"body":0,"breadcrumbs":7,"title":3},"91":{"body":15,"breadcrumbs":8,"title":4},"92":{"body":12,"breadcrumbs":9,"title":5},"93":{"body":0,"breadcrumbs":3,"title":1},"94":{"body":13,"breadcrumbs":2,"title":0},"95":{"body":4,"breadcrumbs":4,"title":2},"96":{"body":30,"breadcrumbs":7,"title":5},"97":{"body":11,"breadcrumbs":6,"title":3},"98":{"body":10,"breadcrumbs":3,"title":0},"99":{"body":9,"breadcrumbs":4,"title":1}},"docs":{"0":{"body":"Welcome to the wg-async-foundations website!","breadcrumbs":"👋🏽 Welcome » 👋🏽 Welcome","id":"0","title":"👋🏽 Welcome"},"1":{"body":"The leads of this working group are @tmandry and @nikomatsakis . Both of them can be found on Zulip .","breadcrumbs":"👋🏽 Welcome » Leads","id":"1","title":"Leads"},"10":{"body":"The vision is not just idle speculation. It is the central document that we use to organize ourselves. When we think about our roadmap for any given year, it is always with the aim of moving us closer to the vision we lay out here.","breadcrumbs":"🔮 The vision » The vision drives the work","id":"10","title":"The vision drives the work"},"100":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » 🤔 Frequently Asked Questions","id":"100","title":"🤔 Frequently Asked Questions"},"101":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » What makes this project different from others?","id":"101","title":"What makes this project different from others?"},"102":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » Does this project require a custom tailored runtime?","id":"102","title":"Does this project require a custom tailored runtime?"},"103":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » How much of this project is likely to be built with open source components from crates.io?","id":"103","title":"How much of this project is likely to be built with open source components from crates.io?"},"104":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » What is of most concern to this project?","id":"104","title":"What is of most concern to this project?"},"105":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » What is of least concern to this project?","id":"105","title":"What is of least concern to this project?"},"106":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » ⚡ Projects: MonsterMesh (embedded sensors)","id":"106","title":"⚡ Projects: MonsterMesh (embedded sensors)"},"107":{"body":"This is a sample project for use within the various \"status quo\" or \"shiny future\" stories.","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » What is this?","id":"107","title":"What is this?"},"108":{"body":"\"MonsterMesh\" is a sensor mesh on microcontrollers using Rust. The nodes communicate wirelessly to relay their results. These sensors are built using very constrained and low power hardware without operating system, so the code is written in a #[no_std] environment and is very careful about available resources.","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » Description","id":"108","title":"Description"},"109":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » 🤔 Frequently Asked Questions","id":"109","title":"🤔 Frequently Asked Questions"},"11":{"body":"The async vision document provides a forum where the Async Rust community can plan a great overall experience for Async Rust users. Async Rust was intentionally designed not to have a \"one size fits all\" mindset, and we don't want to change that. Our goal is to build a shared vision for the end-to-end experience while retaining the loosely coupled, exploration-oriented ecosystem we have built.","breadcrumbs":"🔮 The vision » Involving the whole community","id":"11","title":"Involving the whole community"},"110":{"body":"Embedded developers need to write error-free applications outside of the comfort zone of an operating system. Rust helps to prevent many classes of programming errors at compile time which inspires confidence in the software quality and and cuts time intensive build-flash-test iterations. Embedded developers needs good hardware abstraction. Frameworks in other languages do not provide the sophisticated memory mapped IO to safe type abstraction tooling which have been created by the Rust teams. Embedded developers care about hard real time capabilities; the concept of \"you only pay for what you use\" is very important in embedded applications. The combination of the inherently asynchronous interrupt handling of microcontrollers with the Rust async building blocks are a perfect match to effortlessly create applications with hard realtime capabilities. Embedded developers are particularly appreciative of strong tooling support. The availability of the full environment via rustup and the integration of the full toolchain with cargo and build.rs make her very happy because she can focus on what she does best instead of having regular fights with the environment.","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » What makes embedded projects like MonsterMesh different from others?","id":"110","title":"What makes embedded projects like MonsterMesh different from others?"},"111":{"body":"Yes! The tradeoffs for an embedded application like MonsterMesh and a typical server are very different. Further, most server-grade frameworks are not #[no_std] compatible and far exceeded the available footprint on the sensor nodes.","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » Does MonsterMesh require a custom tailored runtime?","id":"111","title":"Does MonsterMesh require a custom tailored runtime?"},"112":{"body":"Having no operating system to provide abstractions to it, MonsterMesh will contain all the logic it needs to run. Much of this, especially around the hardware-software-interface is unlikely to be unique to MonsterMesh and will be sourced from crates.io. However, the further up the stack one goes, the more specialized the requirements will become.","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » How much of this project is likely to be built with open source components from crates.io?","id":"112","title":"How much of this project is likely to be built with open source components from crates.io?"},"113":{"body":"So glad you asked! Please watch this entertaining video .","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » How did you pick the name?","id":"113","title":"How did you pick the name?"},"114":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » ⚡ Projects: DistriData (Generic Infrastructure)","id":"114","title":"⚡ Projects: DistriData (Generic Infrastructure)"},"115":{"body":"This is a sample project for use within the various \"status quo\" or \"shiny future\" stories.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » What is this?","id":"115","title":"What is this?"},"116":{"body":"DistriData is the latest in containerized, micro-service distributed database technology. Developed completely in the open as part of Cloud Native Computing Foundation, this utility is now deployed in a large portion of networked server applications across the entire industry. Since it's so widely used, DistriData has to balance flexibility with having sensible defaults.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » Description","id":"116","title":"Description"},"117":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » 🤔 Frequently Asked Questions","id":"117","title":"🤔 Frequently Asked Questions"},"118":{"body":"This project is meant to be used in many different ways in many different projects, and is not unique to any one application. Many of those using this project will not even need or want to know that it's written in Rust.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » What makes DistriData different from others?","id":"118","title":"What makes DistriData different from others?"},"119":{"body":"DistriData's concerns are at a higher level than the runtime. A fast, reliable, and resource conscious general purpose runtime will serve DistriData's needs.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » Does DistriData require a custom tailored runtime?","id":"119","title":"Does DistriData require a custom tailored runtime?"},"12":{"body":"This document is not yet complete! We are actively working on it as part of the working group, and we would like your help! Check out the How to vision doc page for more details. graph TD;\nA-->B;\nA-->C;\nB-->D;\nC-->D;","breadcrumbs":"🔮 The vision » 🚧 Under construction! Help needed! 🚧","id":"12","title":"🚧 Under construction! Help needed! 🚧"},"120":{"body":"Yes, while DistriData receives many contributions, it's important to the team that when possible they utilize existing technologies that developers are already familiar with to ensure that contributing to the project is easy.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » How much of this project is likely to be built with open source components from crates.io?","id":"120","title":"How much of this project is likely to be built with open source components from crates.io?"},"121":{"body":"It needs to be resource conscious, fast, reliable, but above all else it needs to be easy to run, monitor, and maintain.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » What is of most concern to this project?","id":"121","title":"What is of most concern to this project?"},"122":{"body":"While DistriData is resource conscious, it's not resource starved . There's no need to make life difficult to save on a memory allocation here or there.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » What is of least concern to this project?","id":"122","title":"What is of least concern to this project?"},"123":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » ⚡ Projects: TrafficMonitor (Custom Infrastructure)","id":"123","title":"⚡ Projects: TrafficMonitor (Custom Infrastructure)"},"124":{"body":"This is a sample project for use within the various \"status quo\" or \"shiny future\" stories.","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » What is this?","id":"124","title":"What is this?"},"125":{"body":"TrafficMonitor is a utility written by AmoogleSoft, a public cloud provider, for monitoring network traffic as it comes into its data centers to prevent things like distributed denial-of-service attacks. It monitors all network traffic, looking for patterns, and deciding when to take action against certain threat vectors. TrafficMonitor runs across almost all server racks in a data center, and while it does run on top of an operating system, it is resource conscious. It's also extremely important that TrafficMonitor stay running and handle network traffic with as few \"hiccups\" as possible. TrafficMonitor is highly tuned to the needs of AmoogleSoft's cloud offering and won't run anywhere else.","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » Description","id":"125","title":"Description"},"126":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » 🤔 Frequently Asked Questions","id":"126","title":"🤔 Frequently Asked Questions"},"127":{"body":"Networking infrastructure powers entire datacenters or even public internet infrastructure, and as such it is imperative that it run without failure. It is also extremely important that such projects take few resources as possible. Being on an operating system and large server racks may mean that using the standard library is possible, but memory and CPU usage should be kept to a minimum. This project is worked on by software developers with different backgrounds. Some are networking infrastructure experts (usually using C) while others have experience in networked applications (usually using GCed languages like Java, Go, or Node).","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » What makes networking infrastructure projects like TrafficMonitor different from others?","id":"127","title":"What makes networking infrastructure projects like TrafficMonitor different from others?"},"128":{"body":"Maybe? TrafficMonitor runs on top of a full operating system and takes full advantage of that operating systems networking stack. It's possible that a runtime meant for server workloads will work with TrafficMonitor.","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » Does TrafficMonitor require a custom tailored runtime?","id":"128","title":"Does TrafficMonitor require a custom tailored runtime?"},"129":{"body":"TrafficMonitor is highly specialized to the internal workings of AmoogleSoft's public cloud offering. Thus, \"off-the-shelf\" solutions will only work if they're highly flexible and highly tuneable. TrafficMonitor is central to AmoogleSoft's success meaning that getting things \"just right\" is much more important than having something from crates.io that mostly works but requires little custom tuning.","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » How much of this project is likely to be built with open source components from crates.io?","id":"129","title":"How much of this project is likely to be built with open source components from crates.io?"},"13":{"body":"","breadcrumbs":"🔮 The vision » ❓How to vision » ❓ How to vision","id":"13","title":"❓ How to vision"},"130":{"body":"Reliability is the number one concern. This infrastructure is at the core of the business - it needs to work extremely reliable. A close second is being easily monitorible. If something goes wrong, AmoogleSoft needs to know very quickly what the issue is. AmoggleSoft is a large company with many existing custom tooling for building, monitoring, and deploying its software. TrafficMonitor has to play nicely in a world that existed long before it came around.","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » What is of most concern to this project?","id":"130","title":"What is of most concern to this project?"},"131":{"body":"AmoogleSoft is a large company with time and resources. High-level frameworks that remove control in favor of peak developer productivity is not what they're after. Sure, the easier things are to get working, the better, but that should not be at the sacrifice of control.","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » What is of least concern to this project?","id":"131","title":"What is of least concern to this project?"},"132":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » ⚡ Projects: YouBuy (Traditional Server Application)","id":"132","title":"⚡ Projects: YouBuy (Traditional Server Application)"},"133":{"body":"This is a sample project for use within the various \"status quo\" or \"shiny future\" stories.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » What is this?","id":"133","title":"What is this?"},"134":{"body":"YouBuy is a growing e-commerce website that now has millions of users. The team behind YouBuy is struggling to keep up with traffic and keep server costs low. Having originally written YouBuy in a mix of Ruby on Rails and Node, the YouBuy team decides to rewrite many parts of their service in Rust which they've investigated and found to be performant while still allowing for high levels of abstraction they're used to.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » Description","id":"134","title":"Description"},"135":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » 🤔 Frequently Asked Questions","id":"135","title":"🤔 Frequently Asked Questions"},"136":{"body":"Many server applications are written in languages with garbage collectors. Many of the things that Rust forces users to care about are not first order concerns for those working on server applications (e.g., memory management, stack vs heap allocations, etc.). Many server applications are written in languages without static type checking. The developers of YouBuy don't have much experience with statically typed languages and some of the developers early in their Rust learning journeys expressed frustration that they found it hard to get their programs to compile especially when using async constructs.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » What makes YouBuy and other server applications different from others?","id":"136","title":"What makes YouBuy and other server applications different from others?"},"137":{"body":"YouBuy should be perfectly fine with a runtime from crates.io. In fact, their concern isn't at the runtime level but at the high-level server framework level.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » Does YouBuy require a custom tailored runtime?","id":"137","title":"Does YouBuy require a custom tailored runtime?"},"138":{"body":"YouBuy is in fierce competition with many other e-commerce sites. Therefore, the less that YouBuy engineers have to write themselves, the better. Ideally, YouBuy can focus 100% of its energy on features that differentiate it from its competition and none of its time on tweaking its networking stack.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » How much of this project is likely to be built with open source components from crates.io?","id":"138","title":"How much of this project is likely to be built with open source components from crates.io?"},"139":{"body":"It seems like YouBuy is always on the verge of either becoming the next billion-dollar company with hundreds of millions of users or completely going out of business. YouBuy needs to be able to move fast and focus on the application business logic.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » What is of most concern to this project?","id":"139","title":"What is of most concern to this project?"},"14":{"body":"When What ✅ Now till 2021-04-30 Improve the sample projects ✅ Now till 2021-04-30 Propose new \"status quo\" stories or comment on existing PRs ✅ Now till 2021-04-30 Propose new \"shiny future\" stories or comment on existing PRs 🛑 Starting 2021-04-30 Vote for the awards on the status quo and shiny future stories!","breadcrumbs":"🔮 The vision » ❓How to vision » How you can help","id":"14","title":"How you can help"},"140":{"body":"Since moving fast is of primary concern, the ins and outs of the underlying networking stack are only of concern when something goes wrong. The hope is that that rarely if ever happens and when it does, it's easy to find the source of the issue.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » What is of least concern to this project?","id":"140","title":"What is of least concern to this project?"},"141":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » ⚡ Projects: SLOW (Protocol implementation)","id":"141","title":"⚡ Projects: SLOW (Protocol implementation)"},"142":{"body":"This is a sample project for use within the various \"status quo\" or \"shiny future\" stories.","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » What is this?","id":"142","title":"What is this?"},"143":{"body":"SLOW is an open source implementation of a fancy new protocol. This protocol uses a mix of TCP and UDP packets and is designed to operate particularly well over high latency, low throughput links.","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » Description","id":"143","title":"Description"},"144":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » 🤔 Frequently Asked Questions","id":"144","title":"🤔 Frequently Asked Questions"},"145":{"body":"SLOW is a library, not an application.","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » What makes this project different from others?","id":"145","title":"What makes this project different from others?"},"146":{"body":"Ideally, SLOW would be developed in an independent way that permits it to be used across many runtimes in a variety of different environments.","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » Does this project require a custom tailored runtime?","id":"146","title":"Does this project require a custom tailored runtime?"},"147":{"body":"SLOW builds on other generic libraries available from crates.io. For example, it would like to make use of compression algorithms that others have written, or to use future adapters.","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » How much of this project is likely to be built with open source components from crates.io?","id":"147","title":"How much of this project is likely to be built with open source components from crates.io?"},"148":{"body":"Uh, I don't really know! If you develop software like this, maybe open a PR and tell me! --nikomatsakis","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » What is of most concern to this project?","id":"148","title":"What is of most concern to this project?"},"149":{"body":"Uh, I don't really know! If you develop software like this, maybe open a PR and tell me! --nikomatsakis","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » What is of least concern to this project?","id":"149","title":"What is of least concern to this project?"},"15":{"body":"The process we are using to write the vision doc encourages active collaboration and \"positive sum\" thinking. It starts with a brainstorming period, during which we aim to collect as many \"status quo\" and \"shiny future\" stories as we can. This brainstorming period runs for six weeks, until the end of April. For the first two weeks (until 2021-04-02), we are collecting \"status quo\" stories only. After that, we will accept both \"status quo\" and \"shiny future\" stories until the end of the brainstorming period. Finally, to cap off the brainstorming period, we will select winners for awards like \"Most Humorous Story\" or \"Most Supportive Contributor\". Once the brainstorming period is complete, the working group leads will begin work on assembling the various stories and shiny futures into a coherent draft. This draft will be reviewed by the community and the Rust teams and adjusted based on feedback.","breadcrumbs":"🔮 The vision » ❓How to vision » The big picture","id":"15","title":"The big picture"},"150":{"body":"It's like QUIC , but slow! Get it? Get it? :D","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » Why is this called SLOW?","id":"150","title":"Why is this called SLOW?"},"151":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » 😱 Status quo stories","id":"151","title":"😱 Status quo stories"},"152":{"body":"We are still in the process of drafting the vision document. The stories you see on this page are examples meant to give a feeling for how a status quo story looks; you can expect them to change. We encourage you to propose your own by opening a PR -- see the \"How to vision\" page for instructions and details.","breadcrumbs":"🔮 The vision » 😱 Status quo » 🚧 Under construction! Help needed! 🚧","id":"152","title":"🚧 Under construction! Help needed! 🚧"},"153":{"body":"The \"status quo\" stories document the experience of using Async Rust today. Each story narrates the challenges encountered by one of our characters as they try (and typically fail in dramatic fashion) to achieve their goals. Writing the \"status quo\" stories helps us to compensate for the curse of knowledge : the folks working on Async Rust tend to be experts in Async Rust. We've gotten used to the workarounds required to be productive, and we know the little tips and tricks that can get you out of a jam. The stories help us gauge the cumulative impact all the paper cuts can have on someone still learning their way around. This gives us the data we need to prioritize.","breadcrumbs":"🔮 The vision » 😱 Status quo » What is this","id":"153","title":"What is this"},"154":{"body":"These stories may not be true, but they are not fiction. They are based on real-life experiences of actual people. Each story contains a \"Frequently Asked Questions\" section referencing sources used to create the story. In some cases, it may link to notes or summaries in the conversations section, though that is not required. The \"Frequently Asked Questions\" section also contains a summary of what the \"morals\" of the story are (i.e., what are the key takeaways), along with answers to questions that people have raised along the way.","breadcrumbs":"🔮 The vision » 😱 Status quo » Based on a true story","id":"154","title":"Based on a true story"},"155":{"body":"Just because a user story is represented here doesn't mean we're going to be able to fix it right now. Some of these user stories will indicate more severe problems than others. As we consider the stories, we'll select some subset to try and address; that choice is reflected in the roadmap .","breadcrumbs":"🔮 The vision » 😱 Status quo » The stories provide data we use to prioritize, not a prioritization itself","id":"155","title":"The stories provide data we use to prioritize, not a prioritization itself"},"156":{"body":"What follows is a kind of \"metanarrative\" of using async Rust that summarizes the challenges that are present today. At each point, we link to the various stories; you can read the full set in the table of contents on the left. We would like to extend this to also cover some of its glories, since reading the current stories is a litany of difficulties, but obviouly we see great promise in async Rust. Note that many stories here appear more than once. Rust strives to be a language that brings together performance, productivity, and correctness. Rust programs are designed to surface bugs early and to make common patterns both ergonomic and efficient, leading to a sense that \"if it compiles, it generally works, and works efficiently\". Async Rust aims to extend that same feeling to an async setting, in which a single process interweaves numerous tasks that execute concurrently. Sometimes this works beautifully. However, other times, the reality falls short of that goal. Making hard choices from a complex ecosystem from the start The problems begin from the very first moment a user starts to try out async Rust. The async Rust support in Rust itself is very basic, consisting only of the core Future mechanism. Everything else -- including the basic async runtimes themselves -- lives in user space. This means that users must make a number of choices rom the very beginning: what runtime to use Barbara makes their first foray into async Niklaus wants to share knowledge what http libraries to use Barbara anguishes over http basic helpers and utility crates are hard to find, and there are many choices, often with subtle differences between them Barbara needs async helpers Furthermore, the async ecosystem is fractured. Choosing one library may entail choosing a specific runtime. Sometimes you may wind up with multiple runtimes running at once. Alan started trusting the rust compiler but then async Barbara needs async helpers 🚧 Need a story about multiple runtimes working together There is a lack of common, standardized abstractions, which means that often there are multiple attempts to establish common traits and different libraries will employ a distinct subset. Sink is not implemented by async-std websockets 🚧 No standardized lower-level traits for read, write, iterators in an async setting 🚧 Lack of widely used higher-level abstractions (like those tower aims to provide) 🚧 Tokio doesn't support the futures Stream trait because of stability concerns Some of the problems are due to the design of Rust itself. The coherence rules in particular. 🚧 Write about how coherence makes it impossible to establish Once your basic setup is done, the best design patterns are subtle and not always known. Writing async programs turns out to have all kinds of subtle tradeoffs. Rust aims to be a language that gives its users control, but that also means that users wind up having to make a lot of choices, and we don't give them much guidance. If you need synchronization, you might want an async lock, but you might want a synchronous lock, it's hard to know. Alan thinks he needs async locks Mixing sync and async code is tricky and it's not always obvious how to do it -- something it's not even clear what is \"sync\" (how long does a loop have to run before you can consider it blocking?) Barbara bridges sync and async Barbara compares some C++ code There are often many options for doing things like writing futures or other core concepts; which libraries or patterns are best? Barbara needs async helpers Grace wants to integrate c api Barbara plays with async , where she tries a number of combinations before she lands on Box::pin(async move { .. }) If you would to have data or task parallel operations, it's not always obvious how to do that Barbara plays with async Barbara tries async streams Niklaus builds a hydrodynamic simulator Sometimes it's hard to understand what will happen when the code runs Grace wants to integrate c api Barbara bridges sync and async Sometimes async may not even be the right solution Niklaus builds a hydrodynamic simulator Even once you've chosen a pattern, gettings things to compile can be a challenge. Async fn doesn't work everywhere not in traits not in closures -- barbara plays with async barbara needs async helpers Recursion doesn't work barbara needs async helpers Things have to be Send all the time, some things can't live across an await send isn't what it means anymore alan thinks he needs async locks The tricks you know from Sync rust apply but don't quite work e.g., Box::pin, not Box::new -- barbara plays with async Sometimes you have to add boxed Grace tries new libraries Writing strings is hard Grace wants to integrate a C API When you stray from the happy path, the complexity cliff is very steep Working with Pin is really hard, but necessary in various scenarios 🚧 Need a story about implementing async-read, async-write Alan hates writing a stream It's easy to forget to invoke a waker Alan hates writing a stream Grace deploys her service Ownership and borrowing rules get really complicated when async is involved Alan writes a web framework Sometimes you want &mut access that ends while the future is suspended Alan lost the world Ghostcell Writing executors is pretty non-trivial, things have to have references to one another in a way that is not very rusty barbara builds an async executor Once you get it to compile, things don't \"just work\" at runtime, or they may be unexpectedly slow. Libraries are tied to particular runtimes and those runtimes can panic when combined, or require special setup Alan started trusting the rust compiler but then async Alan picks a web server Cancellation can in principle occur at any point in time, which leads to subtle bugs Alan builds a cache Alan finds dropping database handles is hard Barbara gets burned by select Dropping is synchronous but sometimes wants to do asynchronous things and block for them to complete Alan finds dropping database handles is hard Nested awaits mean that outer awaits cannot make progress Footgun with futures unordered Async functions let you build up large futures that execute without allocation, which is great, but can be its own cost Alan iteratively regresses Alan runs into stack allocation trouble It's easy to have async functions that inadvertently spend too long in between awaits Barbara compares some C++ code When you have those problems, you can't readily debug them or get visibility into what is going on. The state of the executor can be very opaque: what tasks exist? why are they blocked? Alan tries to debug a hang Barbara wants async insights Grace deploys her service Stacktraces are full of gobbly gook and hard to read. Barbara trims a stacktrace Tooling doesn't work as well with async or just plain doesn't exist. Grace waits for gdb Alan iteratively regresses Rust has always aimed to interoperate well with other languages and to fit itself into every niche, but that's harder with async. Runtimes like tokio and async-std are not designed to \"share ownership\" of the event loop with foreign runtimes Alan has an event loop Embedded environments can have pretty stringent requirements; Future was designed to be minimal, but perhaps not minimal enough Barbara carefully discusses embedded future Evolving specs for C and C++ require careful thought to integrate with async Rust's polling model 🚧 Convert these notes on C++ into a status quo story 🚧 Write about the challenges of io-uring integration Advanced new techniques like Ghostcell may not fit into the traits as designed","breadcrumbs":"🔮 The vision » 😱 Status quo » Metanarrative","id":"156","title":"Metanarrative"},"157":{"body":"This is a template for adding new \"status quo\" stories. To propose a new status quo PR, do the following: Create a new file in the status_quo directory named something like Alan_tries_to_foo.md or Grace_does_bar.md, and start from the raw source from this template . You can replace all the italicized stuff. :) Do not add a link to your story to the SUMMARY.md file; we'll do it after merging, otherwise there will be too many conflicts. For more detailed instructions, see the How To Vision: Status Quo page! If you're looking for ideas of what to write about, take a look at the open issues . You can also open an issue of your own to throw out an idea for others.","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » 😱 Status quo stories: Template","id":"157","title":"😱 Status quo stories: Template"},"158":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » 🚧 Warning: Draft status 🚧","id":"158","title":"🚧 Warning: Draft status 🚧"},"159":{"body":"Write your story here! Feel free to add subsections, citations, links, code examples, whatever you think is best.","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » The story","id":"159","title":"The story"},"16":{"body":"The brainstorming period runs until 2021-04-30: Folks open \"status quo\" and \"shiny future\" story PRs against the wg-async-foundations repo . Templates and instructions for status quo stories can be found here. You can also browse the open \"status quo\" issues for ideas! Templates and instructions for shiny future stories can be found here. We collectively comment on these PRs, helping to improve them and make them more complete. Unless they contain factual inaccuracies, the aim is to merge all PRs opened in the brainstorming period. We also expect people to sometimes extend other stories with additional details or FAQs. At the end of the brainstorming period, we will vote and give awards for things like \"most amusing\". (We'd like suggestions on the best categories!) The more the merrier! During this brainstorming period, we want to focus on getting as many ideas as we can. Having multiple \"shiny futures\" that address the same problem is a feature, not a bug, as it will let us mix-and-match later to try and find the best overall plan. Comments and questions will be used as a tool for improving understanding or sharpening proposals. Presenting alternative ideas is done by writing an alternative story . Reviewing contributions To merge a story or project PR, any member of the working group can open a topic on Zulip and propose it be merged. Ideally there will be no outstanding concerns. If a second member of the working group approves, the PR can then be merged. Reviewers should ensure that new stories and projects are added to the SUMMARY.md file either before merging or directly afterwards.","breadcrumbs":"🔮 The vision » ❓How to vision » Brainstorming","id":"16","title":"Brainstorming"},"160":{"body":"Here are some standard FAQ to get you started. Feel free to add more!","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » 🤔 Frequently Asked Questions","id":"160","title":"🤔 Frequently Asked Questions"},"161":{"body":"Talk about the major takeaways-- what do you see as the biggest problems.","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » What are the morals of the story?","id":"161","title":"What are the morals of the story?"},"162":{"body":"Talk about what the story is based on, ideally with links to blog posts, tweets, or other evidence.","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » What are the sources for this story?","id":"162","title":"What are the sources for this story?"},"163":{"body":"Talk about the character you used for the story and why.","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » Why did you choose NAME to tell this story?","id":"163","title":"Why did you choose NAME to tell this story?"},"164":{"body":"In some cases, there are problems that only occur for people from specific backgrounds, or which play out differently. This question can be used to highlight that.","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » How would this story have played out differently for the other characters?","id":"164","title":"How would this story have played out differently for the other characters?"},"165":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » 😱 Status quo stories: Alan tries to cache requests, which doesn't always happen.","id":"165","title":"😱 Status quo stories: Alan tries to cache requests, which doesn't always happen."},"166":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]!","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » 🚧 Warning: Draft status 🚧","id":"166","title":"🚧 Warning: Draft status 🚧"},"167":{"body":"Alan is working on an HTTP server. The server makes calls to some other service. The performance of the downstream service is somewhat poor, so Alan would like to implement some basic caching. Alan writes up some code which does the caching: async fn get_response(&mut self, key: String) { // Try to get the response from cache if let Some(cached_response) = self.cache.get(key) { self.channel.send(cached_response).await; return; } // Get the response from the downstream service let response = self.http_client.make_request(key).await; self.channel.send(response).await; // Store the response in the cache self.cache.set(key, response);\n} Alan is happy with how things are working, but notices every once in a while the downstream service hangs. To prevent that, Alan implements a timeout. He remembers from the documentation for his favorite runtime that there is the race function which can kick off two futures and polls both until one completes (similar to tokio's select and async-std's race for example). runtime::race(timeout(), get_response(key)).await","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » The story","id":"167","title":"The story"},"168":{"body":"Alan ships to production but after several weeks he notices some users complaining that they receive old data. Alan looks for help. The compiler unfortunately doesn't provide any hints. He turns to his second best friend clippy, who cannot help either. Alan tries debugging. He uses his old friend println!. After hours of working through, he notices that sometimes the line that sets the response in the cache never gets called.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » The bug","id":"168","title":"The bug"},"169":{"body":"Alan goes to [Barbara][] and asks why in the world that might be ⁉️ 💡 Barbara looks through the code and notices that there is an await point between sending the response over the channel and setting the cache. Since the get_response future can be dropped at each available await point, it may be dropped after the http request has been made, but before the response has successfully been sent over the channel, thus not executing the remaining instructions in the function. This means the cache might not be set. Alan fixes it by setting the cache before sending the result over the channel. 🎉 async fn get_response(&mut self, key: String) { // ... cache miss happened here // We perform the HTTP request and our code might continue // after this .await once the HTTP request is complete let response = self.http_client.make_request(key).await; // Immediately store the response in the cache self.cache.set(key, response); self.channel.send(response).await;\n}","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » The solution","id":"169","title":"The solution"},"17":{"body":"At this point, the wg leads will write the draft vision document, drawing on the status quo and shiny future stories that were submitted. Like an RFC, this draft vision doc will be opened for comment and improved based on the resulting feedback. When the wg leads feel it is ready, it will be taken to the lang and libs teams for approval (and other Rust teams as appropriate).","breadcrumbs":"🔮 The vision » ❓How to vision » Harmonizing","id":"17","title":"Harmonizing"},"170":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » 🤔 Frequently Asked Questions","id":"170","title":"🤔 Frequently Asked Questions"},"171":{"body":"Futures can be \"canceled\" at any await point. Authors of futures must be aware that after an await, the code might not run. This is similar to panic safety but way more likely to happen Futures might be polled to completion causing the code to work. But then many years later, the code is changed and the future might conditionally not be polled to completion which breaks things. The burden falls on the user of the future to poll to completion, and there is no way for the lib author to enforce this - they can only document this invariant. Diagnosing and ultimately fixing this issue requires a fairly deep understanding of the semantics of futures. Without a Barbara, it might be hard to even know where to start: No lints are available, Alan is left with a normal debugger and println!.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » What are the morals of the story?","id":"171","title":"What are the morals of the story?"},"172":{"body":"The relevant sources of discussion for this story have been gathered in this github issue .","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » What are the sources for this story?","id":"172","title":"What are the sources for this story?"},"173":{"body":"Alan has enough experience and understanding of push based async languages to make the assumptions that will trigger the bug.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » Why did you choose Alan to tell this story?","id":"173","title":"Why did you choose Alan to tell this story?"},"174":{"body":"This story would likely have played out the same for almost everyone but Barbara, who has probably been bitten by that already. The debugging and fixing time would however probably have varied depending on experience and luck.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » How would this story have played out differently for the other characters?","id":"174","title":"How would this story have played out differently for the other characters?"},"175":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » 😱 Status quo stories: Alan finds dropping database handles is hard.","id":"175","title":"😱 Status quo stories: Alan finds dropping database handles is hard."},"176":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » 🚧 Warning: Draft status 🚧","id":"176","title":"🚧 Warning: Draft status 🚧"},"177":{"body":"Alan has been adding an extension to YouBuy that launches a singleton actor which interacts with a Sqlite database using the sqlx crate. The Sqlite database only permits a single active connection at a time, but this is not a problem, because the actor is a singleton, and so there only should be one at a time. He consults the documentation for sqlx and comes up with the following code to create a connection and do the query he needs: use sqlx::Connection; #[async_std::main]\nasync fn main() -> Result<(), sqlx::Error> { // Create a connection let conn = SqliteConnection::connect(\"sqlite::memory:\").await?; // Make a simple query to return the given parameter let row: (i64,) = sqlx::query_as(\"SELECT $1\") .bind(150_i64) .fetch_one(&conn).await?; assert_eq!(row.0, 150); Ok(())\n} Things seem to be working fairly well but sometimes when he refreshes the page he encounters a panic with the message \"Cannot open a new connection: connection is already open\". He is flummoxed.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » The problem","id":"177","title":"The problem"},"178":{"body":"Alan tries to figure out what happened from the logs, but the only information he sees is that a new connection has been received. Alan turns to the documentation for the sqlx crate to see if there are flags that might enable extra instrumentation but he can't find any. He's a bit confused, because he's accustomed to having things generally be cleaned up automatically when they get dropped (for example, dropping a File will close it). Searching the docs, he sees the close method, but the comments confirm that he shouldn't have to call it explicitly: \"This method is not required for safe and consistent operation. However, it is recommended to call it instead of letting a connection drop as the database backend will be faster at cleaning up resources.\" Still, just in case, he decides to add a call to close into his code. It does seem to help some, but he is still able to reproduce the problem if he refreshes often enough. Feeling confused, he adds a log statement right before calling close to see if it is working: use sqlx::Connection; #[async_std::main]\nasync fn do_the_thing() -> Result<(), sqlx::Error> { // Create a connection let conn = SqliteConnection::connect(\"sqlite::memory:\").await?; // Make a simple query to return the given parameter let row: (i64,) = sqlx::query_as(\"SELECT $1\") .bind(150_i64) .fetch_one(&conn).await?; // <----- if this await is cancelled, doesn't help assert_eq!(row.0, 150); // he adds this: log!(\"closing the connection\"); conn.close(); Ok(())\n} He observes that in the cases where he has the problem the log statement never executes. He asks Barbara for help and she points him to this gist that explains how await can be canceled, and cancellation will invoke the destructors for things that are in scope. He reads the source for the SqliteConnection destructor and finds that destructor spawns a task to actually close the connection. He realizes there is a race condition and the task may not have actually closed the connection before do_the_thing is called a second time. At this point, he is feeling pretty frustrated! Next, Alan seeks verification and validation of his understanding of the source code from the sqlx forum. Someone on the forum explains why the destructor launches a fresh task: Rust doesn't have a way to execute async operations in a destructor.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » Searching for the Solution","id":"178","title":"Searching for the Solution"},"179":{"body":"Alan briefly considers rearchitecting his application in more extreme ways to retain use of async, but he gives up and seeks a more straight forward solution. He discovers rusqlite, a synchronous database library and adopts it. This requires some rearchitecting but solves the problem.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » Finding the Solution","id":"179","title":"Finding the Solution"},"18":{"body":"This meant to be a living document . We plan to revisit it regularly to track our progress and update it based on what we've learned in the meantime. Note that the shiny future stories in particular are going to involve a fair bit of uncertainty, so we expect them to change as we go.","breadcrumbs":"🔮 The vision » ❓How to vision » Living document","id":"18","title":"Living document"},"180":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » 🤔 Frequently Asked Questions","id":"180","title":"🤔 Frequently Asked Questions"},"181":{"body":"Rust's async story is lacking a way of executing async operations in destructors. Spawning is a workaround, but it can have unexpected side-effects. The story demonstrates solid research steps that Alan uses to understand and resolve his problem. Completion of the Cancellation and timeouts docs may have been helpful. It's difficult to know how something absent might have improved the solution search process.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » What are the morals of the story?","id":"181","title":"What are the morals of the story?"},"182":{"body":"This specific story describes an actual bug encountered by Sergey Galich at 1Password.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » What are the sources for this story?","id":"182","title":"What are the sources for this story?"},"183":{"body":"His experience and understanding of other languages coupled with his desire to apply Rust would likely lead him to try solutions before deeply researching them.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » Why did you choose Alan to tell this story?","id":"183","title":"Why did you choose Alan to tell this story?"},"184":{"body":"This story would likely have played out the same for everyone.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » How would this story have played out differently for the other characters?","id":"184","title":"How would this story have played out differently for the other characters?"},"185":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » 😱 Status quo stories: Alan has an external event loop and wants to use futures/streams","id":"185","title":"😱 Status quo stories: Alan has an external event loop and wants to use futures/streams"},"186":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » 🚧 Warning: Draft status 🚧","id":"186","title":"🚧 Warning: Draft status 🚧"},"187":{"body":"As a first Rust Project, Alan decides to program his own IRC Client. Since it is Alan's first Project in Rust, it is going to be a private one. He is going to use it on is Mac, so he decides to go with the cocoa crate to not have to learn any Framework specific quirks. This way Alan can get a feel of Rust itself.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » The story","id":"187","title":"The story"},"188":{"body":"Despite a learning curve, he managed to creating a first window and have some buttons and menus works. After the initialisation is done, the App hand over control to CFRunLoop::Run . Once Alan is happy with his Mock UI, he wants to make it actually do something. Reading about async Rust, he sees that several of the concepts there map pretty well to some core Cocoa concepts: Promises => Futures Observables => Streams. Alan smiles, thinking he knows what and more importantly how to do this.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » Alans hopes and dreams","id":"188","title":"Alans hopes and dreams"},"189":{"body":"Unfortunately, coming from frameworks like Angular or Node.js, Alan is not used to being responsible for driving the processing of Futures/Streams. After reading up about Runtimes, his mental image of a runtime is something like: impl Runtime { fn run() { while !self.tasks.is_empty() { while let Some(task) = self.awoken_tasks.pop() { task.poll(); //... remove finished task from 'tasks' } } }\n} Coming from Single-Threaded Angular development, Alan decides to limit his new App to Single-Threaded. He does not feel like learning about Send/Sync/Mutex as well as struggling with the borrow checker. On top of that, his App is not doing any heavy calculation so he feels async should be enough to not block the main thread too bad and have a hanging UI.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » First time dealing with runtimes","id":"189","title":"First time dealing with runtimes"},"19":{"body":"Yes! We are planning to give awards in various categories for folks who write status quo and shiny future PRs. The precise categories are TBD. Check out the awards page for more details.","breadcrumbs":"🔮 The vision » ❓How to vision » Wait, did somebody say awards?","id":"19","title":"Wait, did somebody say awards?"},"190":{"body":"Soon Alan realises that he cannot use any of those runtimes because they all take control of the thread and block. The same as the OS Event loop. Alan spends quite some time to look through several runtime implementations. Ignoring most internal things, all he wants is a runtime that looks a bit like this: impl Runtime { fn make_progress() { while let Some(task) = self.awoken_tasks.pop() { task.poll(); //... remove finished task from 'tasks' } } fn run() { while !self.tasks.is_empty() { self.make_progress(); } }\n} It could be so easy. Unfortunately he does not find any such solution. Having already looked through quite a bit of low level documentation and runtime code, Alan thinks about implementing his own runtime... ...but only for a very short time. Soon after looking into it, he finds out that he has to deal with RawWakerVTable, RawWaker, Pointers. Worst of all, he has to do that without the safety net of the rust compiler, because this stuff is unsafe. Reimplementing the OS Event Loop is also not an option he wants to take. See here >Override run() if you want the app to manage the main event loop differently than it does by default. (This a critical and complex task, however, that you should only attempt with good reason).","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » Fun time is over","id":"190","title":"Fun time is over"},"191":{"body":"Alan gives up and uses a runtime in a seperate thread from the UI. This means he has to deal with the additional burden of syncing and he has to give up the frictionless use of some of the patterns he is accustomed to by treating UI events as Stream.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » The cheap way out","id":"191","title":"The cheap way out"},"192":{"body":"What are the morals of the story? Even though you come from a language that has async support, does not mean you are used to selecting und driving a runtime. It should be possible to integrate runtimes into existing Event loops. What are the sources for this story? The authors own experience working on a GUI Framework (very early stage) Blog post: Integrating Qt events into Actix and Rust Why did you choose Alan to tell this story? The story deals about UI event loops, but the other characters could run into similar issues when trying to combine event loops from different systems/frameworks. Is this Apple specific? No! You have the same issue with other OSs/Frameworks that don't already support Rust Async. How would this story have played out differently for the other characters? Since this is a technical and not a skill or experience issue, this would play out similar for other Characters. Although someone with deep knowledge of those Event loops, like Grace, might be more willing to re-implement them.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » 🤔 Frequently Asked Questions","id":"192","title":"🤔 Frequently Asked Questions"},"193":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » 😱 Status quo stories: Alan hates writing a Stream","id":"193","title":"😱 Status quo stories: Alan hates writing a Stream"},"194":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » 🚧 Warning: Draft status 🚧","id":"194","title":"🚧 Warning: Draft status 🚧"},"195":{"body":"Alan is used to writing web server applications using async sockets, but wants to try Rust to get that signature vroom vroom. After a couple weeks learning Rust basics, Alan quickly understands async and await, and therefore has several routes built for his application that await a few things and then construct an HTTP response and send a buffered body. To build the buffered response bodies, Alan was reading a file, and then appending a signature, and putting that all into a single buffer of bytes. Eventually, Alan realizes that some responses have enormous bodies, and would like to stream them instead of buffering them fully in memory. He's used the Stream trait before. Using it was very natural, and followed a similar pattern to regular async/await: while let Some(chunk) = body.next().await? { file.write_all(&chunk).await?;\n} However, implementing Stream turns out to be rather different. With a quick search, he learned the simple way to turn a File into a Stream with ReaderStream, but the signing part was much harder.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » The story","id":"195","title":"The story"},"196":{"body":"Alan first hoped he could simply write signing stream imperatively, reusing his new knowledge of async and await, and assuming it'd be similar to JavaScript: async* fn sign(file: ReaderStream) -> Result, Error> { let mut sig = Signature::new(); while let Some(chunk) = file.next().await? { sig.push(&chunk); yield Ok(chunk) } yield Ok(sig.digest().await)\n} Unfortunately, that doesn't work. The compiler first complains about the async* fn syntax: error: expected item, found keyword `async` --> src/lib.rs:21:1 |\n21 | async* fn sign(file: ReaderStream) -> Result, Error> { | ^^^^^ expected item Less hopeful, Alan tries just deleting the asterisk: error[E0658]: yield syntax is experimental --> src/lib.rs:27:9 |\n27 | yield Ok(chunk) | ^^^^^^^^^^^^^^^ | = note: see issue #43122 for more information After reading about how yield is experimental, and giving up reading the 100+ comments in the linked issue , Alan figures he's just got to implement Stream manually.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » Imperatively Wrong","id":"196","title":"Imperatively Wrong"},"197":{"body":"Implementing a Stream means writing async code in a way that doesn't feel like the async fn that Alan has written so far. He needs to write a poll function and it has a lot of unfamiliar concepts: Pin State machines Wakers Unsure of what the final code will look like, he starts with: struct SigningFile; impl Stream for SigningFile { type Item = Result, Error>; fn poll_next(self: Pin<&mut Self>, cx: &mut Context) -> Poll { }\n}","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » Implementing Stream","id":"197","title":"Implementing Stream"},"198":{"body":"First, he notices Pin. Alan wonders, \"Why does self have bounds? I've only ever seen self, &self, and &mut self before\". Curious, he reads the std::pin page, and a bunch of jargon about pinning data in memory. He also reads that this is useful to guarantee that an object cannot move, and he wonders why he cares about that. The only example on the page explains how to write a \"self-referential struct\" , but notices it needs unsafe code, and that triggers an internal alarm in Alan: \"I thought Rust was safe...\" After asking Barbara , Alan realizes that the types he's depending on are Unpin, and so he doesn't need to worry about the unsafe stuff. It's just a more-annoying pointer type.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » Pin :scream:","id":"198","title":"Pin :scream:"},"199":{"body":"With Pin hopefully ignored, Alan next notices that in the imperative style he wanted originally, he didn't need to explicitly keep track of state. The state was simply the imperative order of the function. But in a poll function, the state isn't saved by the compiler. Alan finds blog posts about the dark ages of Futures 0.1, when it was more common for manual Futures to be written with a \"state machine\". He thinks about his stream's states, and settles on the following structure: struct SigningFile { state: State, file: ReaderStream, sig: Signature,\n} enum State { File, Sign,\n} It turns out it was more complicated than Alan thought (the author made this same mistake). The digest method of Signature is async, and it consumes the signature, so the state machine needs to be adjusted. The signature needs to be able to be moved out, and it needs to be able to store a future from an async fn. Trying to figure out how to represent that in the type system was difficult. He considered adding a generic T: Future to the State enum, but then wasn't sure what to set that generic to. Then, he tries just writing Signing(impl Future) as a state variant, but that triggers a compiler error that impl Trait isn't allowed outside of function return types. Patient Barbara helped again, so that Alan learns to just store a Pin>, wondering if the Pin there is important. struct SigningFile { state: State,\n} enum State { File(ReaderStream, Signature), Signing(Pin>>>), Done,\n} Now he tries to write the poll_next method, checking readiness of individual steps (thankfully, Alan remembers ready! from the futures 0.1 blog posts he read) and proceeding to the next state, while grumbling away the weird Pin noise: match self.state { State::File(ref mut file, ref mut sig) => { match ready!(Pin::new(file).poll_next(cx)) { Some(result) => { let chunk = result?; sig.push(&chunk); Poll::Ready(Some(Ok(chunk))) }, None => { let sig = match std::mem::replace(&mut self.state, State::Done) { State::File(_, sig) => sig, _ => unreachable!(), }; self.state = State::Signing(Box::pin(sig.digest())); Poll::Pending } } }, State::Signing(ref mut sig) => { let last_chunk = ready!(sig.as_mut().poll(cx)); self.state = State::Done; Poll::Ready(Some(Ok(last_chunk))) } State::Done => Poll::Ready(None),\n} Oh well, at least it works , right?","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » State Machine","id":"199","title":"State Machine"},"2":{"body":"There is a weekly triage meeting that takes place in our Zulip stream . Feel free to stop by then (or any time!) to introduce yourself. If you're interested in fixing bugs, though, there is no need to wait for the meeting! Take a look at the instructions here.","breadcrumbs":"👋🏽 Welcome » Getting involved","id":"2","title":"Getting involved"},"20":{"body":"","breadcrumbs":"🔮 The vision » ❓How to vision » Projects » ❓ How to vision: Projects","id":"20","title":"❓ How to vision: Projects"},"200":{"body":"So far, Alan hasn't paid too much attention to Context and Poll. It's been fine to simply pass them along untouched. There's a confusing bug in his state machine. Let's look more closely: // zooming in!\nmatch ready!(Pin::new(file).poll_next(cx)) { Some(result) => { let chunk = result?; sig.push(&chunk); return Poll::Ready(Some(Ok(val)); }, None => { self.set_state_to_signing(); // oops! return Poll::Pending; }\n} In one of the branches, the state is changed, and Poll::Pending is returned. Alan assumes that the task will be polled again with the new state. But, since the file was done (and has returned Poll::Ready), there was actually no waker registered to wake the task again. So his stream just hangs forever. The compiler doesn't help at all, and he re-reads his code multiple times, but because of this easy-to-misunderstand logic error, Alan eventually has to ask for help in a chat room. After a half hour of explaining all sorts of details, a kind person points out he either needs to register a waker, or perhaps use a loop. All too often, since we don't want to duplicate code in multiple branches, the solution for Alan is to add an odd loop around the whole thing, so that the next match branch uses the Context: loop { match self.state { State::File(ref mut file, ref mut sig) => { match ready!(Pin::new(file).poll_next(cx)) { Some(result) => { let chunk = result?; sig.push(&chunk); return Poll::Ready(Some(Ok(chunk))) }, None => { let sig = match std::mem::replace(&mut self.state, State::Done) { State::File(_, sig) => sig, _ => unreachable!(), }; self.state = State::Signing(Box::pin(sig.digest())); // loop again, to catch the `State::Signing` branch } } }, State::Signing(ref mut sig) => { let last_chunk = ready!(sig.as_mut().poll(cx)); self.state = State::Done; return Poll::Ready(Some(Ok(last_chunk))) } State::Done => return Poll::Ready(None), }\n}","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » Wakers","id":"200","title":"Wakers"},"201":{"body":"A little later, Alan needs to add some response body transforming to some routes, to add some app-specific framing. Upon realizing he needs to implement another Stream in a generic fashion, he instead closes the editor and complains on Twitter.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » Gives Up","id":"201","title":"Gives Up"},"202":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » 🤔 Frequently Asked Questions","id":"202","title":"🤔 Frequently Asked Questions"},"203":{"body":"Writing an async Stream is drastically different than writing an async fn. The documentation for Pin doesn't provide much practical guidance in how to use it, instead focusing on more abstract considerations. Missing a waker registration is a runtime error, and very hard to debug. If it's even possible, a compiler warning or hint would go a long way.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » What are the morals of the story?","id":"203","title":"What are the morals of the story?"},"204":{"body":"Part of this story is based on the original motivation for async/await in Rust, since similar problems exist writing impl Future.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » What are the sources for this story?","id":"204","title":"What are the sources for this story?"},"205":{"body":"Choosing Alan was somewhat arbitrary, but this does get to reuse the experience that Alan may already have around await coming from JavaScript.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » Why did you choose Alan to tell this story?","id":"205","title":"Why did you choose Alan to tell this story?"},"206":{"body":"This likely would have been a similar story for any character. It's possible Grace would be more used to writing state machines, coming from C.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » How would this story have played out differently for the other characters?","id":"206","title":"How would this story have played out differently for the other characters?"},"207":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » 😱 Status quo stories: Alan iteratively regresses performance","id":"207","title":"😱 Status quo stories: Alan iteratively regresses performance"},"208":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » 🚧 Warning: Draft status 🚧","id":"208","title":"🚧 Warning: Draft status 🚧"},"209":{"body":"A core part of DistriData, called DDSplit, is in charge of splitting input data records into fragments that are stored on distinct servers, and then reassembling those fragments back into records in response to user queries. DDSplit was originally implemented using Java code (plus some C, interfaced via JNI). Alan thinks that Rust could provide the same quality of service while requiring less memory. He decides to try reimplementing DDSplit in Rust, atop tokio. Alan wants to copy some of the abstractions he sees in the Java code that are defined via Java interfaces. Alan sees Rust traits as the closest thing to Java interfaces. However, when he experimentally defines a trait with an async fn, he gets the following message from the compiler: error[E0706]: functions in traits cannot be declared `async` --> src/main.rs:2:5 |\n2 | async fn method() { } | -----^^^^^^^^^^^^^^^^ | | | `async` because of this | = note: `async` trait functions are not currently supported = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait This diagnostic leads Alan to add the async-trait crate as a dependency to his project. Alan then uses the #[async_trait] attribute provided by that crate to be able to define async fn methods within traits. When Alan finishes the prototype code, he finds the prototype performance has 20% slower throughput compared to the Java version. Alan is disappointed; his experience has been that Rust code performs great, (at least once you managed to get the code to be accepted by the compiler). Alan was not expecting to suffer a 20% performance hit over the Java code. The DDSplit service is being developed on a Linux machine, so Alan is able use the perf tool to gather sampling-based profiling data the async/await port of DDSplit. Looking at a flamegraph for the call stacks, Alan identified two sources of execution time overhead that he did not expect: calls into the memory allocator (malloc) with about 1% of the execution time, and calls to move values in memory (memcpy), with about 8% of execution time. Alan reaches out to Barbara, as the local Rust expert, for help on how identify where the performance pitfalls are coming from. Alan asks Barbara whether the problem could be caused by the tokio executor. Barbara says it is hard to know that without more instrumentation. She explains it could be that the program is overloading tokio's task scheduler (for example), but it also could be that the application code itself has expensive operations, such as lots of small I/O operations rather than using a buffer. Alan and Barbara look at the perf data. They find the output of perf report difficult to navigate and interpret. The data has stack trace fragments available, which gives them a few hints to follow up on. But when they try to make perf report annotate the original source, perf only shows disassembled machine code, not the original Rust source code. Alan and Barbara both agree that trying to dissect the problem from the machine code is not an attractive strategy. Alan asks Barbara what she thinks about the malloc calls in the profile. Barbara recommends that Alan try to eliminate the allocation calls, and if they cannot be eliminated, then that Alan try tuning the parameters for the global memory allocator, or even switching which global memory allocator he is using. Alan looks at Barbara in despair: his time tweaking GC settings on the Java Virtual Machine taught him that allocator tuning is often a black art. Barbara suggests that they investigate where the calls to memcpy are arising, since they look like a larger source of overhead based on the profile data. From the call stacks in perf report, Alan and Barbara decide to skim over the source code files for the corresponding functions. Upon seeing #[async_trait] in Alan's source code, Barbara recommends that if performance is a concern, then Alan should avoid #[async_trait]. She explains that #[async_trait] transforms a trait's async methods into methods that return Pin>, and the overhead that injects that will be hard to diagnose and impossible to remove. When Alan asks what other options he could adopt, Barbara thinks for a moment, and says he could make an enum that carries all the different implementations of the code. Alan says he'll consider it, but in the meantime he wants to see how far they can improve the code while keeping #[async_trait]. They continue looking at the code itself, essentially guessing at potential sources of where problematic memcpy's may be arising. They identify two potential sources of moves of large datatypes in the code: pushes and pops on vectors of type Vec, and functions with return types of the form Result. Barbara asks how large the DistriQuery, SuccessCode, and DistriErr types are. Alan immediately notes that DistriQuery may be large, and they discuss options for avoiding the memory traffic incurred by pushing and popping DistriQuery. For the other two types, Alan responds that the SuccessCode is small, and that the error variants are never constructed in his benchmark code. Barbara explains that the size of Result has to be large enough to hold either variant, and that memcpy'ing a result is going to move all of those bytes. Alan investigates and sees that DistriErr has variants that embed byte arrays that go up to 50kb in size. Barbara recommends that Alan look into boxing the variants, or the whole DistriErr type itself, in order to reduce the cost of moving it around. Alan uses Barbara's feedback to box some of the data, and this cuts the memcpy traffic in the perf report to one quarter of what it had been reporting previously. However, there remains a significant performance delta between the Java version and the Rust version. Alan is not sure his Rust-rewrite attempt is going to get anywhere beyond the prototype stage.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » The story","id":"209","title":"The story"},"21":{"body":"If you'd like to add a new project, please open a PR using this template and adding a new file into the projects directory . Do not add your file to SUMMARY.md , that will create conflicts. We'll add it after merging. We are pretty happy to add new projects, although we would prefer only to add a new project if it has some characteristic that is distinct from the other projects we've got so far and which is important to a 'status quo' or 'shiny future' story.","breadcrumbs":"🔮 The vision » ❓How to vision » Projects » How to open a PR","id":"21","title":"How to open a PR"},"210":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » 🤔 Frequently Asked Questions","id":"210","title":"🤔 Frequently Asked Questions"},"211":{"body":"Rust promises great performance, but when performance is not meeting one's targets, it is hard to know what to do next. Rust mostly leans on leveraging existing tools for native code development, but those tools are (a.) foreign to many of our developers, (b.) do not always measure up to what our developers have access to elsewhere, (c.) do not integrate as well with Rust as they might with C or C++. Lack of certain language features leads developers to use constructs like #[async_trait] which add performance overhead that is (a.) hard to understand and (b.) may be significant. Rust makes some things very explicit, e.g. the distinction between Box versus T is quite prominent. But Rust's expressive type system also makes it easy to compose types without realizing how large they have gotten. Programmers do not always have a good mental model for where expensive moves are coming from. An important specific instance of (1c.) for the async vision: Native code tools do not have any insight into Rust's async model, as that is even more distant from the execution model of C and C++. We can actually generalize (5.) further: When async performance does not match expectations, developers do not have much insight into whether the performance pitfalls arise from issues deep in the async executor that they have selected, or if the problems come directly from overheads built into the code they themselves have written.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » What are the morals of the story?","id":"211","title":"What are the morals of the story?"},"212":{"body":"Discussions with engineers at Amazon Web Services.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » What are the sources for this story?","id":"212","title":"What are the sources for this story?"},"213":{"body":"I chose Alan because he is used to Java, where these issues play out differently. Java has very mature tooling, including for performance investigations. Alan has used JProfiler at his work, and VisualVM for personal hobby projects. Alan is frustrated by his attempts to use (or even identify) equivalent tools for Rust. With respect to memory traffic: In Java, every object is handled via a reference, and those references are cheap to copy. (One pays for that convenience in other ways, of course.)","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » Why did you choose Alan to tell this story?","id":"213","title":"Why did you choose Alan to tell this story?"},"214":{"body":"From her C and C++ background, Grace probably would avoid letting her types get so large. But then again, C and C++ do not have enums with a payload, so Grace would likely have fallen in the same trap that Alan did (of assuming that the cost of moving an enum value is proportional to its current variant, rather than to its type's overall size). Also, Grace might report that her experience with gcc-based projects yielded programs that worked better with perf, due in part to gcc producing higher quality DWARF debuginfo. Barbara probably would have added direct instrumentation via the tracing crate, potentially even to tokio itself, rather than spend much time wrestling with perf. Niklaus is unlikely to be as concerned about the 20% throughput hit; he probably would have been happy to get code that seems functionally equivalent to the original Java version.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » How would this story have played out differently for the other characters?","id":"214","title":"How would this story have played out differently for the other characters?"},"215":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan lost the world » 😱 Status quo stories: Alan lost the world!","id":"215","title":"😱 Status quo stories: Alan lost the world!"},"216":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan lost the world » 🚧 Warning: Draft status 🚧","id":"216","title":"🚧 Warning: Draft status 🚧"},"217":{"body":"Alan heard about a project to reimplement a deprecated browser plugin using Rust and WASM. This old technology had the ability to load resources over HTTP; so it makes sense to try and implement that functionality using the Fetch API. Alan looks up the documentation of web_sys and realizes they need to... Call one of the fetch methods , which returns a Promise Convert the Promise into a Rust thing called a Future await the Future in an async function Do whatever they want with the resulting data use web_sys::{Request, window}; fn make_request(src: &url) -> Request { // Pretend this contains all of the complicated code necessary to // initialize a Fetch API request from Rust\n} async fn load_image(src: String) { let request = make_request(&url); window().unwrap().fetch_with_request(&request).await; log::error!(\"It worked\");\n} Alan adds calls to load_image where appropriate. They realize that nothing is happening, so they look through more documentation and find a thing called spawn_local . Once they pass the result of load_image into that function, they see their log message pop up in the console, and figure it's time to actually do something to that loaded image data. At this point, Alan wants to put the downloaded image onto the screen, which in this project means putting it into a Node of the current World. A World is a bundle of global state that's passed around as things are loaded, rendered, and scripts are executed. It looks like this: /// All of the player's global state.\npub struct World<'a> { /// A list of all display Nodes. nodes: &'a mut Vec, /// The last known mouse position. mouse_pos &'a mut (u16, u16), // ...\n} In synchronous code, this was perfectly fine. Alan figures it'll be fine in async code, too. So Alan adds the world as a function parameter and everything else needed to parse an image and add it to our list of nodes: async fn load_image(src: String, inside_of: usize, world: &mut World<'_>) { let request = make_request(&url); let data = window().unwrap().fetch_with_request(&request).await.unwrap().etc.etc.etc; let image = parse_png(data, context); let new_node_index = world.nodes.len(); if let Some(parent) = world.nodes.get(inside_of) { parent.set_child(new_node_index); } world.nodes.push(image.into());\n} Bang! Suddenly, the project stops compiling, giving errors like... error[E0597]: `world` does not live long enough --> src/motionscript/globals/loader.rs:21:43 Hmm, okay, that's kind of odd. We can pass a World to a regular function just fine - why do we have a problem here? Alan glances over at loader.rs... fn attach_image_from_net(world: &mut World<'_>, args: &[Value]) -> Result { let this = args.get(0).coerce_to_object()?; let url = args.get(1).coerce_to_string()?; spawn_local(load_image(url, this.as_node().ok_or(\"Not a node!\")?, world))\n} Hmm, the error is in that last line. spawn_local is a thing Alan had to put into everything that called load_image, otherwise his async code never actually did anything. But why is this a problem? Alan can borrow a World, or anything else for that matter, inside of async code; and it should get it's own lifetime like everything else, right? Alan has a hunch that this spawn_local thing might be causing a problem, so Alan reads the documentation. The function signature seems particularly suspicious: pub fn spawn_local(future: F) where F: Future + 'static So, spawn_local only works with futures that return nothing - so far, so good - and are 'static. Uh-oh. What does that last bit mean? Alan asks Barbara, who responds that it's the lifetime of the whole program. Yeah, but... the async function is part of the program, no? Why wouldn't it have the 'static lifetime? Does that mean all functions that borrow values aren't 'static, or just the async ones? Barbara explains that when you borrow a value in a closure, the closure doesn't gain the lifetime of that borrow. Instead, the borrow comes with it's own lifetime, separate from the closure's. The only time a closure can have a non-'static lifetime is if one or more of its borrows is not provided by it's caller, like so: fn benchmark_sort() -> usize { let mut num_times_called = 0; let test_values = vec![1,3,5,31,2,-13,10,16]; test_values.sort_by(|a, b| { a.cmp(b) num_times_called += 1; }); num_times_called\n} The closure passed to sort_by has to copy or borrow anything not passed into it. In this case, that would be the num_times_called variable. Since we want to modify the variable, it has to be borrowed. Hence, the closure has the lifetime of that borrow, not the whole program, because it can't be called anytime - only when num_times_called is a valid thing to read or write. Async functions, it turns out, act like closures that don't take parameters ! They have to , because all Futures have to implement the same trait method poll: pub trait Future { type Output; fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll;\n} When you call an async function, all of it's parameters are copied or borrowed into the Future that it returns. Since we need to borrow the World, the Future has the lifetime of &'a mut World, not of 'static. Barbara suggests changing all of the async function's parameters to be owned types. Alan asks Grace, who architected this project. Grace recommends holding a reference to the Plugin that owns the World, and then borrowing it whenever you need the World. That ultimately looks like the following: async fn load_image(src: String, inside_of: usize, player: Arc>) { let request = make_request(&url); let data = window().unwrap().fetch_with_request(&request).await.unwrap().etc.etc.etc; let image = parse_png(data, context); player.lock().unwrap().update(|world| { let new_node_index = world.nodes.len(); if let Some(parent) = world.nodes.get(inside_of) { parent.set_child(new_node_index); } world.nodes.push(image.into()); });\n} It works, well enough that Alan is able to finish his changes and PR them into the project. However, Alan wonders if this could be syntactically cleaner, somehow. Right now, async and update code have to be separated - if we need to do something with a World, then await something else, that requires jumping in and out of this update thing. It's a good thing that we only really have to be async in these loaders, but it's also a shame that we practically can't mix async code and Worlds.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan lost the world » The story","id":"217","title":"The story"},"218":{"body":"What are the morals of the story? Async functions capture all of their parameters for the entire duration of the function. This allows them to hold borrows of those parameters across await points. When the parameter represents any kind of \"global environment\", such as the World in this story, it may be useful for that parameter not to be captured by the future but rather supplied anew after each await point. Non-'static Futures are of limited use to developers, as lifetimes are tied to the sync stack. The execution time of most asynchronous operations does not come with an associated lifetime that an executor could use. It is possible to use borrowed futures with block_on style executors, as they necessarily extend all lifetimes to the end of the Future. This is because they turn asynchronous operations back into synchronous ones. Most practical executors want to release the current stack, and thus all of it's associated lifetimes. They need 'static futures. Async programming introduces more complexity to Rust than it does, say, JavaScript. The complexity of async is sometimes explained in terms of 'color' , where functions of one 'color' can only call those of another under certain conditions, and developers have to keep track of what is sync and what is async. Due to Rust's borrowing rules, we actually have three 'colors', not the two of other languages with async I/O: Sync, or 'blue' in the original metaphor. This color of function can both own and borrow it's parameters. If made into the form of a closure, it may have a lifetime if it borrows something from the current stack. Owned Async, or 'red' in the original metaphor. This color of function can only own parameters, by copying them into itself at call time. Borrowed Async. If an async function borrows at least one parameter, it gains a lifetime, and must fully resolve itself before the lifetime of it's parameters expires. What are the sources for this story? This is personal experience. Specifically, I had to do almost exactly this dance in order to get fetch to work in Ruffle. I have omitted a detail from this story: in Ruffle, we use a GC library (gc_arena) that imposes a special lifetime on all GC references. This is how the GC library upholds it's memory safety invariants, but it's also what forces us to pass around contexts, and once you have that, it's natural to start putting even non-GC data into it. It also means we can't hold anything from the GC in the Future as we cannot derive it's Collect trait on an anonymous type. Why did you choose Alan to tell this story? Lifetimes on closures is already non-obvious to new Rust programmers and using them in the context of Futures is particularly unintuitive. How would this story have played out differently for the other characters? Niklaus probably had a similar struggle as Alan. Grace would have felt constrained by the async syntax preventing some kind of workaround for this problem. Barbara already knew about Futures and 'static and carefully organizes their programs accordingly.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan lost the world » 🤔 Frequently Asked Questions","id":"218","title":"🤔 Frequently Asked Questions"},"219":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » 😱 Status quo stories: Alan needs async in traits","id":"219","title":"😱 Status quo stories: Alan needs async in traits"},"22":{"body":"In your PR, make sure to include the following FAQs: What makes this project different from most others? Are there existing crates that are similar to this project?","breadcrumbs":"🔮 The vision » ❓How to vision » Projects » FAQs to answer in your PR","id":"22","title":"FAQs to answer in your PR"},"220":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]!","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » 🚧 Warning: Draft status 🚧","id":"220","title":"🚧 Warning: Draft status 🚧"},"221":{"body":"Alan is working on a project with Barbara which has already gotten off to a somewhat rocky start . He is working on abstracting away the HTTP implementation the library uses so that users can provide their own. He wants the user to implement an async trait called HttpClient which has one method perform(request: Request) -> Response. Alan tries to create the async trait: trait HttpClient { async fn perform(request: Request) -> Response;\n} When Alan tries to compile this, he gets an error: --> src/lib.rs:2:5 |\n2 | async fn perform(request: Request) -> Response; | -----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | | `async` because of this | = note: `async` trait functions are not currently supported = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait Alan, who has been using Rust for a little while now, has learned to follow compiler error messages and adds async-trait to his Cargo.toml. Alan follows the README of async-trait and comes up with the following code: #[async_trait]\ntrait HttpClient { async fn perform(request: Request) -> Response;\n} Alan's code now compiles, but he also finds that his compile times have gone from under a second to around 6s, at least for a clean build. After Alan finishes adding the new trait, he shows his work off to Barbara and mentions he's happy with the work but is a little sad that compile times have worsened. Barbara, an experienced Rust developer, knows that using async-trait comes with some additional issues. In this particular case she is especially worried about tying their public API to a third-party dependency. Even though it is technically possible to implement traits annotated with async_trait without using async_trait, doing so in practice is very painful. For example async_trait: handles lifetimes for you if the returned future is tied to the lifetime of some inputs. boxes and pins the futures for you. which the implementer will have to manually handle if they don't use async_trait. She decides to not worry Alan with this right now. Alan and Barbara are pretty happy with the results and go on to publish their crate which gets lots of users. Later on, a potential user of the library wants to use their library in a no_std context where they will be providing a custom HTTP stack. Alan and Barbara have done a pretty good job of limiting the use of standard library features and think it might be possible to support this use case. However, they quickly run into a show stopper: async-trait boxes all of the futures returned from a async trait function. They report this to Alan through an issue. Alan, feeling (over-) confident in his Rust skills, decides to try to see if he can implement async traits without using async-trait. trait HttpClient { type Response: Future; fn perform(request: Request) -> Self::Response; } Alan seems to have something working, but when he goes to update the examples of how to implement this trait in his crate's documentation, he realizes that he either needs to: use trait object: struct ClientImpl; impl HttpClient for ClientImpl { type Response = Pin>>; fn perform(request: Request) -> Self::Response { Box::pin(async move { // Some async work here creating Reponse }) }\n} which wouldn't work for no_std. implement Future trait manually, which isn't particulary easy/straight-forward for non-trivial cases, especially if it involves making other async calls (likely). After a lot of thinking and discussion, Alan and Barbara accept that they won't be able to support no_std users of their library and add mention of this in crate documentation.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » The story","id":"221","title":"The story"},"222":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » 🤔 Frequently Asked Questions","id":"222","title":"🤔 Frequently Asked Questions"},"223":{"body":"async-trait is awesome, but has some drawbacks compile time increases performance cost of boxing and dynamic dispatch not a standard solution so when this comes to language, it might break things Trying to have a more efficient implementation than async-trait is likely not possible.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » What are the morals of the story?","id":"223","title":"What are the morals of the story?"},"224":{"body":"Zeeshan is looking for a way to implement async version of the service-side zbus API . Ryan had to use async-trait in an internal project.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » What are the sources for this story?","id":"224","title":"What are the sources for this story?"},"225":{"body":"We could have used Barbara here but she'd probably know some of the work-arounds (likely even the details on why they're needed) and wouldn't need help so it wouldn't make for a good story. Having said that, Barbara is involved in the story still so it's not a pure Alan story.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » Why did you choose Alan to tell this story?","id":"225","title":"Why did you choose Alan to tell this story?"},"226":{"body":"Barbara: See above. Grace: Probably won't know the solution to these issues much like Alan, but might have an easier time understanding the why of the whole situation. Niklaus: would be lost - traits are somewhat new themselves. This is just more complexity, and Niklaus might not even know where to go for help (outside of compiler errors).","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » How would this story have played out differently for the other characters?","id":"226","title":"How would this story have played out differently for the other characters?"},"227":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » 😱 Status quo stories: Alan wants to migrate a web server to Rust","id":"227","title":"😱 Status quo stories: Alan wants to migrate a web server to Rust"},"228":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » 🚧 Warning: Draft status 🚧","id":"228","title":"🚧 Warning: Draft status 🚧"},"229":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » The story","id":"229","title":"The story"},"23":{"body":"We want to make sure all Async Rust users and their experiences are reflected in the async vision doc, so please help us by writing 'status quo' stories about your experiences or the experiences of others! Remember, status quo stories are not \"real\", but neither are they fiction. They are constructed from the real experiences of people using Async Rust (often multiple people).","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » ❓ How to vision: \"Status quo\" stories","id":"23","title":"❓ How to vision: \"Status quo\" stories"},"230":{"body":"Alan has been following the arewewebyet site for quite some time. He is a Typescript full-stack developer and follows the project in order to know when it would be sensible to migrate the backend of a web application he's responsible for. Alan loves Rust and has used it for some tasks that didn't quite need async routines. Since arewewebyet is an official Rust language project , he trusts their reviews of several web frameworks, tools, libraries, etc. Alan was thrilled during the 2020 Xmas holiday. It turns out that at that time Rust was declared to be web ready ! Alan takes this is a sign that not only is Rust great for web servers, but also a confirmation that async features have matured and stabilised. For, how can a language be web ready and not fully support asynchronous tasks? Alan's point of reference are the Golang and Javascript languages. They were both created for web servers and clients. They also support async/await natively. At the same time, Alan is not aware of the complexities that these languages are \"hiding\" from him.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » Is Rust ready for the web?","id":"230","title":"Is Rust ready for the web?"},"231":{"body":"Golang native http server is nice but, as a Typescript developer, Alan is also used to dealing with \"Javascript fatigue\". Javascript developers often use this term to refer to a fast-pace framework ecosystem, where every so often there is the \"new\" thing everybody else is migrating to. Similarly, Javascript engineers are used to having to pick from a myriad of options within the vast npm ecosystem. And so, the lack of a web sever in Rust's standard library didn't surprise him. The amount of options didn't overwhelm him either. The arewewebyet site mentions four good web servers. Alan picks Tide because the interfaces and the emphasis on middleware reminds him of Nodejs' Express framework.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » Picking a web server is ok","id":"231","title":"Picking a web server is ok"},"232":{"body":"Alan sets up all the boilerplate and is ready to write the first endpoint. He picks PUT /support-ticket because it barely has any logic in it. When a request arrives, the handler only makes a request to Zendesk to create a support ticket. The handler is stateless and has no middleware. The arewewebyet site doesn't recommend a specific http client, so Alan searches for one in crates.io. He picks reqwest simply because it's the most popular. Alan combines the knowledge he has from programming in synchronous Rust and asynchronous Javascript to come up with a few lines that should work. If the compiler is happy, then so is he!","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » The first endpoint","id":"232","title":"The first endpoint"},"233":{"body":"The first problem he runs into is very similar to the one described in the compiler trust story : thread 'main' panicked at 'there is no reactor running, must be called from the context of a Tokio 1.x runtime. In short, Alan has problems because Tide is based on std-async and reqwest on the latest version of tokio. This is a real pain for Alan as he has now to change either the http client or the server so that they use the same runtime. He decides to switch to Actix web.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » First problem: incompatible runtimes","id":"233","title":"First problem: incompatible runtimes"},"234":{"body":"Alan migrates to Actix web and again the compiler seems to be happy. To his surprise, the same problem happens again. The program panics with the message as before: there is no reactor running, must be called from the context of a Tokio 1.x runtime. He is utterly puzzled as Actix web is based on Tokio just like reqwest. Didn't he just fix problem number 1? It turns out that the issue is that Alan's using v0.11.2 of reqwest, which uses tokio v1, and v3.3.2 of actix-web, which uses tokio v0.3. The solution to this problem is then to dig into all the versions of reqwest until he finds one which uses the same version of tokio.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » Second problem: incompatible versions of the same runtime","id":"234","title":"Second problem: incompatible versions of the same runtime"},"235":{"body":"This experience has made Alan think twice about whether Rust is indeed web ready. On the one hand, there are very good libraries for web servers, ORMs, parsers, session management, etc. On the other, Alan is fearful that in 2/3/6 months time he has to develop new features with libraries that already exist but turn out to be incompatible with the runtime chosen at the beginning of the project.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » Can Alan sell the Rust migration to his boss?","id":"235","title":"Can Alan sell the Rust migration to his boss?"},"236":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » 🤔 Frequently Asked Questions","id":"236","title":"🤔 Frequently Asked Questions"},"237":{"body":"Rust's ecosystem has a lot of great components that may individually be ready for the web, but combining them is still a fraught proposition. In a typical web server project, dependencies that use async features form an intricate web which is hard to decipher for both new and seasoned Rust developers. Alan picked Tide and reqwest, only to realise later that they are not compatible. How many more situations like this will he face? Can Alan be confident that it won't happen again? New users especially are not accustomed to having to think about what \"runtime\" they are using, since there is usually not a choice in the matter. The situation is so complex that it's not enough knowing that all dependencies use the same runtime. They all have to actually be compatible with the same runtime and version. Newer versions of reqwest are incompatible with the latest stable version of actix web (verified at the time of writing) Developers that need a stable environment may be fearful of the complexity that comes with managing async dependencies in Rust. For example, if reqwest had a security or bug fix in one of the latest versions that's not backported to older ones, Alan would not be able to upgrade because actix web is holding him back. He has in fact to wait until ALL dependencies are using the same runtime to apply fixes and upgrades.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » What are the morals of the story?","id":"237","title":"What are the morals of the story?"},"238":{"body":"Personal experience of the author.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » What are the sources for this story?","id":"238","title":"What are the sources for this story?"},"239":{"body":"As a web developer in GC languages, Alan writes async code every day. A language without stable async features is not an option.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » Why did you choose Alan to tell this story?","id":"239","title":"Why did you choose Alan to tell this story?"},"24":{"body":"Just want to get started? Here are quick instructions to get you going: To write your own story: Create a PR based on the \"status quo\" template . Do not add your file to SUMMARY.md -- that will create conflicts, we'll do it manually after merging. To get feedback on a story idea, or look for someone else to write it: Open up a \"status quo\" story issue on the wg-async-foundations repository . To find ideas of what to write, or to share your experiences: Search the open issues tagged as status-quo-story-idea . Remember to comment supportively .","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » TL;DR","id":"24","title":"TL;DR"},"240":{"body":"Learning what async means and what it entails in a codebase is usually hard enough. Niklaus would struggle to learn all that while at the same time dealing with the many gotchas that can happen when building a project with a lot of dependencies. Barbara may be more tolerant with the setup since she probably knows the rationale behind keeping Rust's standard library lean and the need for external async runtimes.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » How would this story have played out differently for the other characters?","id":"240","title":"How would this story have played out differently for the other characters?"},"241":{"body":"Like the trust story, it would be very close, since all other languages (that I know of) provide async runtimes out of the box and it's not something the programmer needs to concern themselves with.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » How would this story have played out differently if Alan came from another GC'd language?","id":"241","title":"How would this story have played out differently if Alan came from another GC'd language?"},"242":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » 😱 Status quo stories: Alan runs into stack allocation trouble","id":"242","title":"😱 Status quo stories: Alan runs into stack allocation trouble"},"243":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » 🚧 Warning: Draft status 🚧","id":"243","title":"🚧 Warning: Draft status 🚧"},"244":{"body":"One day, as Alan is working on his async Rust project, he runs his application and hits an error: $ .\\target\\debug\\application.exe\nthread 'main' has overflowed its stack Perplexed, Alan sees if anything with his application works by seeing if he can get output when the --help flag is passed, but he has no luck: $ .\\target\\debug\\application.exe --help\nthread 'main' has overflowed its stack","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » The problem","id":"244","title":"The problem"},"245":{"body":"Having really only ever seen stack overflow issues caused by recursive functions, Alan desperately tries to find the source of the bug but searching through the codebase for recursive functions only to find none. Having learned that Rust favors stack allocation over heap allocation (a concept Alan didn't really need to worry about before), he started manually looking through his code, searching for structs that looked \"too large\"; he wasn't able to find any candidates. Confused, Alan reached out to Grace for her advice. She suggested making the stack size larger. Although she wasn't a Windows expert, she remembers hearing that stack sizes on Windows might be smaller than on Linux. After much searching, Alan discovers an option do just that: RUSTFLAGS = \"-C link-args=-Wl,-zstack-size=\". While eventually Alan gets the program to run, the stack size must be set to 4GB before it does! This seems untenable, and Alan goes back to the drawing board. Alan reaches out to Barbara for her expertise in Rust to see if she has something to suggest. Barbara recommends using RUSTFLAGS = \"-Zprint-type-sizes to print some type sizes and see if anything jumps out. Barbara noted that if Alan does find a type that stands out, it's usually as easy as putting some boxes in that type to provide some indirection and not have everything be stack allocated. Alan never needs the nightly toolchain, but this option requires it so he installs it using rustup. After searching through types, one did stand out as being quite large. Ultimately, this was a red herring, and putting parts of it in Boxes did not help.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » Searching for the solution","id":"245","title":"Searching for the solution"},"246":{"body":"After getting no where, Alan went home for the weekend defeated. On Monday, he decided to take another look. One piece of code, stuck out to him: the use of the select! macro from the futures crate. This macro allowed multiple futures to race against each other, returning the value of the first one to finish. This macro required the futures to be pinned which the docs had shown could be done by using pin_mut!. Alan didn't fully grasp what pin_mut! was actually doing when he wrote that code. The compiler had complained to him that the futures he was passing to select! needed to be pinned, and pin_mut! was what he found to make the compiler happy. Looking back at the documents made it clear to Alan that this could potentially be the issue: pin_mut! pins futures to the stack. It was relatively clear that a possible solution would be to pin to the heap instead of the stack. Some more digging in the docs lead Alan to Box::pin which did just that. An extra heap allocation was of no consequence to him, so he gave it a try. Lo and behold, this fixed the issue! While Alan knew enough about pinning to know how to satisfy the compiler, he didn't originally take the time to fully understand what the consequences were of using pin_mut! to pin his futures. Now he knows!","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » Finding the solution","id":"246","title":"Finding the solution"},"247":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » 🤔 Frequently Asked Questions","id":"247","title":"🤔 Frequently Asked Questions"},"248":{"body":"When coming from a background of GCed languages, taking the time to understand the allocation profile of a particular piece of code is not something Alan was used to doing. It was hard to tell where in his code the stack was being exhausted. Alan had to rely on manually combing his code to find the culprit. Pinning is relatively confusing, and although the code compiled, Alan didn't fully understand what he wrote and what consequences his decision to use pin_mut! would have.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » What are the morals of the story?","id":"248","title":"What are the morals of the story?"},"249":{"body":"This story is adapted from the experiences of the team working on the Krustlet project. You can read about this story in their own words here .","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » What are the sources for this story?","id":"249","title":"What are the sources for this story?"},"25":{"body":"If you have a story idea but you don't have the time to write about it, or if you would like to know whether other folks have encountered the same sorts of problems, you can open up a \"status quo\" story issue on the wg-async-foundations repository . Alternatively, if you're looking for a story to write, you can browse the open issues tagged as status-quo-story-idea and see if anything catches your eye. If you see people describing problems you have hit, or have questions about the experiences people are sharing, then please leave a comment -- but remember to comment supportively . (You can also come to Zulip to discuss.)","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » Optional: open an issue to discuss your story or find others with similar experiences","id":"25","title":"Optional: open an issue to discuss your story or find others with similar experiences"},"250":{"body":"The programmers this story was based on have an experience mostly in Go, a GCed language. The story is rooted in the explicit choice of using stack vs heap allocation, a choice that in GCed languages is not in the hands of the programmer.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » Why did you choose Alan to tell this story?","id":"250","title":"Why did you choose Alan to tell this story?"},"251":{"body":"Grace would have likely had a similar hard time with this bug. While she's used to the tradeoffs of stack vs heap allocations, the analogy to the Pin API is not present in languages she's used to. Barbara, as an expert in Rust, may have had the tools to understand that pin_mut is used for pinning to the stack while Box::pin is for pinning heap allocations. This problem is somewhat subtle, so someone like Niklaus would probably have had a much harder time figuring this out (or even getting the code to compile in the first place).","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » How would this story have played out differently for the other characters?","id":"251","title":"How would this story have played out differently for the other characters?"},"252":{"body":"Perhaps! Tokio's select! macro doesn't require explicit pinning of the futures it's provided, but it's unclear to this author whether it would have been smart enough to avoid pinning large futures to the stack. However, pinning is a part of the way one uses futures in Rust, so it's possible that such an issue would have arisen elsewhere.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » Could Alan have used another API to achieve the same objectives?","id":"252","title":"Could Alan have used another API to achieve the same objectives?"},"253":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » 😱 Status quo stories: Alan started trusting the Rust compiler, but then... async","id":"253","title":"😱 Status quo stories: Alan started trusting the Rust compiler, but then... async"},"254":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » 🚧 Warning: Draft status 🚧","id":"254","title":"🚧 Warning: Draft status 🚧"},"255":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » The story","id":"255","title":"The story"},"256":{"body":"Alan has a lot of experience in C#, but in the meantime has created some successful projects in Rust. He has dealt with his fair share of race conditions/thread safety issues during runtime in C#, but is now starting to trust that if his Rust code compiles, he won't have those annoying runtime problems to deal with. This allows him to try to squeeze his programs for as much performance as he wants, because the compiler will stop him when he tries things that could result in runtime problems. After seeing the performance and the lack of runtime problems, he starts to trust the compiler more and more with each project finished. He knows what he can do with external libraries, he does not need to fear concurrency issues if the library cannot be used from multiple threads, because the compiler would tell him. His trust in the compiler solidifies further the more he codes in Rust.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » Trust the compiler","id":"256","title":"Trust the compiler"},"257":{"body":"Alan now starts with his first async project. He sees that there is no async in the standard library, but after googling for \"rust async file open\", he finds 'async_std', a crate that provides some async versions of the standard library functions. He has some code written that asynchronously interacts with some files: use async_std::fs::File;\nuse async_std::prelude::*; fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\").await?; file.write_all(b\"Hello, world!\").await?; Ok(())\n} But now the compiler complains that await is only allowed in async functions. He now notices that all the examples use #[async_std::main] as an attribute on the main function in order to be able to turn it into an async main, so he does the same to get his code compiling: use async_std::fs::File;\nuse async_std::prelude::*; #[async_std::main]\nasync fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\").await?; file.write_all(b\"Hello, world!\").await?; Ok(())\n} This aligns with what he knows from C#, where you also change the entry point of the program to be async, in order to use await. Everything is great now, the compiler is happy, so no runtime problems, so Alan is happy. The project is working like a charm.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » The first async project","id":"257","title":"The first async project"},"258":{"body":"The project Alan is building is starting to grow, and he decides to add a new feature that needs to make some API calls. He starts using reqwest in order to help him achieve this task. After a lot of refactoring to make the compiler accept the program again, Alan is satisfied that his refactoring is done. His program now boils down to: use async_std::fs::File;\nuse async_std::prelude::*; #[async_std::main]\nasync fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\").await?; file.write_all(b\"Hello, world!\").await?; let body = reqwest::get(\"https://www.rust-lang.org\") .await? .text() .await?; println!(\"{}\", body); Ok(())\n} He runs his project but is suddenly greeted with a runtime error. He is quite surprised. \"How is this even possible?\", he thinks. \"I don't have any out-of-bounds accesses, and I never use .unwrap or .expect.\" At the top of the error message he sees: thread 'main' panicked at 'there is no reactor running, must be called from the context of a Tokio 1.x runtime' He searches what \"Tokio\" is in Rust, and he finds that it also provides an attribute to put on main, namely [tokio::main], but what is the difference with [async_std::main]? His curiosity leads him to watch videos/read blogs/scour reddit,... on why there are multiple runtimes in Rust. This leads him into a rabbit hole and now he learns about Executors, Wakers, Pin,... He has a basic grasp of what they are, but does not have a good understanding of them or how they all fit together exactly. These are all things he had not need to know nor heed in C#. (Note: there is another story about troubles/confusion that might arise when learning all these things about async: Alan hates writing a Stream ) He does understand the current problems and why there is no one-size-fits-all executor (yet). Trying to get his async Rust code to work, he broadened his knowledge about what async code actually is, he gains another way to reason about asynchronous code, not only in Rust, but also more generally. But now he realizes that there is a whole new area of runtime problems that he did not have to deal with in C#, but he does in Rust. Can he even trust the Rust compiler anymore? What other kinds of runtime problems can occur in Rust that can't in C#? If his projects keep increasing in complexity, will other new kinds of runtime problems keep popping up? Maybe it's better to stick with C#, since Alan already knows all the runtime problems you can have over there.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » Fractured futures, fractured trust","id":"258","title":"Fractured futures, fractured trust"},"259":{"body":"Do you recall in Spider-Man, that after getting bitten by the radioactive spider, Peter first gets ill before he gains his powers? Well, imagine instead of being bitten by a radioactive spider, he was bitten by an async-rust spider... In his work, Alan sees an async call to a C# wrapper around SQLite, his equivalent of a spider-sense (async-sense?) starts tingling. Now knowing from Rust the complexities that arise when trying to create asynchronicity, what kind of complex mechanisms are at play here to enable these async calls from C# that end up in the C/C++ of SQLite? He quickly discovers that there are no complex mechanism at all! It's actually just a synchronous call all the way down, with just some extra overhead from wrapping it into an asynchronous function. There are no points where the async function will yield. He transforms all these asynchronous calls to their synchronous counterparts, and sees a slight improvement in performance. Alan is happy, product management is happy, customers are happy! Over the next few months, he often takes a few seconds to reflect about why certain parts of the code are async, if they should be, or how other parts of the code might benefit from being async and if it's possible to make them async. He also uses what he learned from async Rust in his C# code reviews to find similar problems or general issues (With great power...). He even spots some lifetime bugs w.r.t. asynchronous code in C#, imagine that. His team recognizes that Alan has a pretty good grasp about what async is really about, and he is unofficially crowned the \"async guru\" of the team. Even though this spider-man might have gotten \"ill\" (his negative experience with async Rust), he has now become the superhero he was meant to be!","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » The Spider-Man effect","id":"259","title":"The Spider-Man effect"},"26":{"body":"If you have an idea you'd like to write about, please open a PR using this template and adding a new file into the status_quo directory . Do not add your file to SUMMARY.md -- that will create conflicts, we'll do it manually after merging.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » How to open a PR","id":"26","title":"How to open a PR"},"260":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » 🤔 Frequently Asked Questions","id":"260","title":"🤔 Frequently Asked Questions"},"261":{"body":"Async I/O includes a new set of runtime errors and misbehaviors that the compiler can't help you find. These include cases like executing blocking operations in an async context but also mixing runtime libraries (something users may not even realize is a factor). Rust users get used to the compiler giving them error messages for runtime problems but also helping them to fix them. Pushing error messages to runtimes feels surprising and erodes some of their confidence in Rust. The \"cliff\" in learning about async is very steep -- at first everything seems simple and similar to other languages, then suddenly you are thrown into a lot of information. It's hard to know what's important and what is not. But , at the same time, dipping your toes into async Rust can broaden the understanding a programmer has of asynchronous coding, which can help them even in other languages than Rust.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » What are the morals of the story?","id":"261","title":"What are the morals of the story?"},"262":{"body":"Personal experience of the author.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » What are the sources for this story?","id":"262","title":"What are the sources for this story?"},"263":{"body":"With his experience in C#, Alan probably has experience with async code. Even though C# protects him from certain classes of errors, he can still encounter other classes of errors, which the Rust compiler prevents.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » Why did you choose Alan to tell this story?","id":"263","title":"Why did you choose Alan to tell this story?"},"264":{"body":"For everyone except Barbara, I think these would play out pretty similarly, as this is a kind of problem unique to Rust. Since Barbara has a lot of Rust experience, she would probably already be familiar with this aspect.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » How would this story have played out differently for the other characters?","id":"264","title":"How would this story have played out differently for the other characters?"},"265":{"body":"It would be very close, since all other languages (that I know of) provide async runtimes out of the box and it's not something the programmer needs to concern themselves with.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » How would this story have played out differently if Alan came from another GC'd language?","id":"265","title":"How would this story have played out differently if Alan came from another GC'd language?"},"266":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » 😱 Status quo stories: Alan thinks he needs async locks","id":"266","title":"😱 Status quo stories: Alan thinks he needs async locks"},"267":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » 🚧 Warning: Draft status 🚧","id":"267","title":"🚧 Warning: Draft status 🚧"},"268":{"body":"One of Alan's first Rust related tasks in his job at YouBuy is writing an HTTP based service. This service is a simple internal proxy router that inspects an incoming HTTP request and picks the downstream service to call based on certain aspects of the HTTP request. Alan decides that he'll simply use some shared state that request handlers can read from in order to decide how to proxy the request. Alan, having read the Rust book and successfully completed the challenge in the last chapters , knows that shared state can be achieved in Rust with reference counting (using std::sync::Arc) and locks (using std::sync::Mutex). Alan starts by throwing his shared state (a std::collections::HashMap) into an Arc>. Alan, smitten with how quickly he can write Rust code, ends up with some code that compiles that looks roughly like this: #[derive(Clone)]\nstruct Proxy { routes: Arc>,\n} impl Proxy { async fn handle(&self, key: String, request: Request) -> crate::Result { let routes = self.state.lock().unwrap(); let route = routes.get(key).unwrap_or_else(crate::error::MissingRoute)?; Ok(self.client.perform_request(route, request).await?) }\n} Alan is happy that his code seems to be compiling! The short but hard learning curve has been worth it. He's having fun now! Unfortunately, Alan's happiness soon comes to end as he starts integrating his request handler into calls to tokio::spawn which he knows will allow him to manage multiple requests at a time. The error message is somewhat cryptic, but Alan is confident he'll be able to figure it out: 189 | tokio::spawn(async { | ^^^^^^^^^^^^ future created by async block is not `Send`\n::: /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.5.0/src/task/spawn.rs:129:21 |\n129 | T: Future + Send + 'static, | ---- required by this bound in `tokio::spawn` note: future is not `Send` as this value is used across an await --> src/handler.rs:787:9 |\n786 | let routes = self.state.lock().unwrap(); | - has type `std::sync::MutexGuard<'_, HashMap>` which is not `Send`\n787 | Ok(self.client.perform_request(route, request).await?) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `routes` maybe used later\n788 | }) | - `routes` is later dropped here Alan stops and takes a deep breath. He tries his best to make sense of the error message. He sort of understands the issue the compiler is telling him. Apparently routes is not marked as Send, and because it is still alive over a call to await, it is making the future his handler returns not Send. And tokio's spawn function seems to require that the future it received be Send. Alan reaches the boundaries of his knowledge of Rust, so he reaches out over chat to ask his co-worker Barbara for help. Not wanting to bother her, Alan provides the context he's already figured out for himself. Barbara knows that mutex guards are not Send because sending mutex guards to different threads is not a good idea. She suggests looking into async locks which can be held across await points because they are Send. Alan looks into the tokio documentation for more info and is easily able to move the use of the standard library's mutex to tokio's mutex. It compiles! Alan ships his code and it gets a lot of usage. After a while, Alan notices some potential performance issues. It seems his proxy handler does not have the throughput he would expect. Barbara, having newly joined his team, sits down with him to take a look at potential issues. Barbara is immediately worried by the fact that the lock is being held much longer than it needs to be. The lock only needs to be held while accessing the route and not during the entire duration of the downstream request. She suggests to Alan to switch to not holding the lock across the I/O operations. Alan first tries to do this by explicitly cloning the url and dropping the lock before the proxy request is made: impl Proxy { async fn handle(&self, key: String, request: Request) -> crate::Result { let routes = self.state.lock().unwrap(); let route = routes.get(key).unwrap_or_else(crate::error::MissingRoute)?.clone(); drop(routes); Ok(self.client.perform_request(route, request).await?) }\n} This compiles fine and works in testing! After shipping to production, they notice a large increase in throughput. It seems their change made a big difference. Alan is really excited about Rust, and wants to write more! Alan continues his journey of learning even more about async Rust. After some enlightening talks at the latest RustConf, he decides to revisit the code that he and Barbara wrote together. He asks himself, is using an async lock the right thing to do? This lock should only be held for a very short amount of time. Yielding to the runtime is likely more expensive than just synchronously locking. But he remembers vaguely hearing that you should never use blocking code in async code as this will block the entire async executor from being able to make progress, so he doubts his intuition. After chatting with Barbara, who encourages him to benchmark and measure, he decides to switch back to synchronous locks. Unfortunately, switching back to synchronous locks brings back the old compiler error message about his future not being Send. Alan is confused as he's dropping the mutex guard before it ever crosses an await point. Confused Alan goes to Barbara for advice. She is also confused, and it takes several minutes of exploration before she comes to a solution that works: wrapping the mutex access in a block and implicitly dropping the mutex. impl Proxy { async fn handle(&self, key: String, request: Request) -> crate::Result { let route = { let routes = self.state.lock().unwrap(); routes.get(key).unwrap_or_else(crate::error::MissingRoute)?.clone() }; Ok(self.client.perform_request(route, request).await?) }\n} Barbara mentions she's unsure why explicitly dropping the mutex guard did not work, but they're both happy that the code compiles. In fact it seems to have improved the performance of the service when its under extreme load. Alan's intuition was right! In the end, Barbara decides to write a blog post about how blocking in async code isn't always such a bad idea.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » The story","id":"268","title":"The story"},"269":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » 🤔 Frequently Asked Questions","id":"269","title":"🤔 Frequently Asked Questions"},"27":{"body":"When writing a status quo story, your goal is to present what you see as a major challenge for Async Rust. You want to draw upon people's experiences (sometimes multiple people) to show all the aspects of the problem in an engaging and entertaining way. Each story is always presented from the POV of a particular character . Stories should be detailed, not abstract -- it's better to give specifics than generalities. Don't say \"Grace visited a website to find the answer to her question\", tell us whether she went to stackoverflow, asked on reddit, or found the answer on some random blog post. Ideally you should get this detail from whatever your \"source\" of the story is -- but if you are using multiple sources and they disagree, you can pick one and use the FAQ to convey some of the other alternatives.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » Goals of a status quo PR","id":"27","title":"Goals of a status quo PR"},"270":{"body":"* Locks can be quite common in async code as many tasks might need to mutate some shared state.\n* Error messages can be fairly good, but they still require a decent understanding of Rust (e.g., `Send`, `MutexGuard`, drop semantics) to fully understand what's going on.\n* This can lead to needing to use certain patterns (like dropping mutex guards early) in order to get code working.\n* The advice to never block in async code is not always true: if blocking is short enough, is it even blocking at all?","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » What are the morals of the story?","id":"270","title":"What are the morals of the story?"},"271":{"body":"* Chats with [Alice](https://github.com/Darksonn) and [Lucio](https://github.com/LucioFranco).\n* Alice's [blog post](https://ryhl.io/blog/async-what-is-blocking/) on the subject has some good insights.\n* The issue of conservative analysis of whether values are used across await points causing futures to be `!Send` is [known](https://rust-lang.github.io/async-book/07_workarounds/03_send_approximation.html), but it takes some digging to find out about this issue. A tracking issue for this can be [found here](https://github.com/rust-lang/rust/issues/57478).","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » What are the sources for this story?","id":"271","title":"What are the sources for this story?"},"272":{"body":"* While Barbara might be tripped up on some of the subtlties, an experienced Rust developer can usually tell how to avoid some of the issues of using locks in async code. Alan on the other hand, might be surprised when his code does not compile as the issue the `Send` error is protecting against (i.e., a mutex guard being moved to another thread) is not protected against in other languages.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » Why did you choose Alan to tell this story?","id":"272","title":"Why did you choose Alan to tell this story?"},"273":{"body":"* Grace would have likely had a similar time to Alan. These problems are not necessarily issues you would run into in other languages in the same way.\n* Niklaus may have been completely lost. This stuff requires a decent understanding of Rust and of async computational systems.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » How would this story have played out differently for the other characters?","id":"273","title":"How would this story have played out differently for the other characters?"},"274":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » 😱 Status quo stories: Alan tries using a socket Sink","id":"274","title":"😱 Status quo stories: Alan tries using a socket Sink"},"275":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » 🚧 Warning: Draft status 🚧","id":"275","title":"🚧 Warning: Draft status 🚧"},"276":{"body":"Alan is working on a project that uses async-std. He has worked a bit with tokio in the past and is more familiar with that, but he is interested to learn something how things work in async-std. One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket RPC calls can be forwarded to a transport-agnostic RPC server. In this server implementation: RPC call strings can be received over a WebSocket The strings are decoded and sent to an RPC router that calls the methods specified in the RPC call Some of the methods that are called can take some time to return a result, so they are spawned separately RPC has built-in properties to organize call IDs and methods, so results can be sent in any order Since WebSockets are bidirectional streams (duplex sockets), the response is sent back through the same client socket He finds the HTTP server tide and it seems fairly similar to warp, which he was using with tokio. He also finds the WebSocket middleware library tide-websockets that goes with it. However, as he's working, Alan encounters a situation where the socket needs to be written to within an async thread, and the traits just aren't working. He wants to split the stream into a sender and receiver: use futures::{SinkExt, StreamExt};\nuse async_std::sync::{Arc, Mutex};\nuse log::{debug, info, warn}; async fn rpc_ws_handler(ws_stream: WebSocketConnection) { let (ws_sender, mut ws_receiver) = ws_stream.split(); let ws_sender = Arc::new(Mutex::new(ws_sender)); while let Some(msg) = ws_receiver.next().await { debug!(\"Received new WS RPC message: {:?}\", msg); let ws_sender = ws_sender.clone(); async_std::task::spawn(async move { let res = call_rpc(msg).await?; match ws_sender.lock().await.send_string(res).await { Ok(_) => info!(\"New WS data sent.\"), Err(_) => warn!(\"WS connection closed.\"), }; }); }\n} The split method splits the ws_stream into two separate halves: a producer (ws_sender) that implements a Stream with the messages arriving on the websocket; a consumer (ws_receiver) that implements Sink, which can be used to send responses. This way, one task can pull items from the ws_sender and spawn out subtasks. Those subtasks share access to the ws_receiver and send messages there when they're done. Unfortunately, Alan finds that he can't use this pattern here, as the Sink trait wasn't implemented in the WebSockets middleware library he's using. Alan also tries creating a sort of poller worker thread using an intermediary messaging channel, but he has trouble reasoning about the code and wasn't able to get it to compile: use async_std::channel;\nuse async_std::sync::{Arc, Mutex};\nuse log::{debug, info, warn}; async fn rpc_ws_handler(ws_stream: WebSocketConnection) { let (ws_sender, mut ws_receiver) = channel::unbounded::(); let ws_receiver = Arc::new(ws_receiver); let ws_stream = Arc::new(Mutex::new(ws_stream)); let poller_ws_stream = ws_stream.clone(); async_std::task::spawn(async move { while let Some(msg) = ws_receiver.next().await { match poller_ws_stream.lock().await.send_string(msg).await { Ok(msg) => info!(\"New WS data sent. {:?}\", msg), Err(msg) => warn!(\"WS connection closed. {:?}\", msg), }; } }); while let Some(msg) = ws_stream.lock().await.next().await { async_std::task::spawn(async move { let res = call_rpc(msg).await?; ws_sender.send(res); }); }\n} Alan wonders if he's thinking about it wrong, but the solution isn't as obvious as his earlier Sink approach. Looking around, he realizes a solution to his problems already exists-- as others have been in his shoes before-- within two other nearly-identical pull requests, but they were both closed by the project maintainers. He tries opening a third one with the same code, pointing to an example where it was actually found to be useful. To his joy, his original approach works with the code in the closed pull requests in his local copy! Alan's branch is able to compile for the first time. However, almost immediately, his request is closed with a comment suggesting that he try to create an intermediate polling task instead , much as he was trying before. Alan is feeling frustrated. \"I already tried that approach,\" he thinks, \"and it doesn't work!\" As a result of his frustration, Alan calls out one developer of the project on social media. He knows this developer is opposed to the Sink traits. Alan's message is not well-received: the maintainer sends a short response and Alan feels dismissed. Alan later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and suggests that Alan \"get over it\". Alan is given a link to a blog post. The post provides a number of criticisms of Sink but, after reading it, Alan isn't sure what he should do instead. Because of this heated exchange, Alan grows concerned for his own career, what these well-known community members might think or say about his to others, and his confidence in the community surrounding this language that he really enjoys using is somewhat shaken. Despite this, Alan takes a walk, gathers his determination, and commits to maintaining his fork with the changes from the other pull requests that were shut down. He publishes his version to crates.io, vowing to be more welcoming to \"misfit\" pull requests like the one he needed. A few weeks later, Alan's work at his project at work is merged with his new forked crate. It's a big deal, his first professional open source contribution to a Rust project! Still, he doesn't feel like he has a sense of closure with the community. Meanwhile, his friends say they want to try Rust, but they're worried about its async execution issues, and he doesn't know what else to say, other than to offer a sense of understanding. Maybe the situation will get better someday, he hopes.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » The story","id":"276","title":"The story"},"277":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » 🤔 Frequently Asked Questions","id":"277","title":"🤔 Frequently Asked Questions"},"278":{"body":"There are often many sources of opinion in the community regarding futures and async, but these opinions aren't always backed up with examples of how it should be better accomplished. Sometimes we just find a thing that works and would prefer to stick with it, but others argue that some traits make implementations unnecessarily complex, and choose to leave it out. Disagreements like these in the ecosystem can be harmful to the reputation of the project and the participants. If there's a source of substantial disagreement, the community becomes even further fragmented, and this may cause additional confusion in newcomers. Alan is used to fragmentation from the communities he comes from, so this isn't too discouraging, but what's difficult is that there's enough functionality overlap in async libraries that it's tempting to get them to interop with each other as-needed, and this can lead to architectural challenges resulting from a difference in design philosophies. It's also unclear if Futures are core to the Rust asynchronous experience, much as Promises are in JavaScript, or if the situation is actually more complex. The Sink trait is complex but it solves a real problem, and the workarounds required to solve problems without it can be unsatisfactory. Disagreement about core abstractions like Sink can make interoperability between runtimes more difficult; it also makes it harder for people to reproduce patterns they are used to from one runtime to another. It is all too easy for technical discussions like this to become heated; it's important for all participants to try and provide each other with the \"benefit of the doubt\".","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » What are the morals of the story?","id":"278","title":"What are the morals of the story?"},"279":{"body":"https://github.com/http-rs/tide-websockets https://github.com/http-rs/tide-websockets/pull/17 - Third pull request https://github.com/http-rs/tide-websockets/issues/15#issuecomment-797090892 - Suggestion to use a broadcast channel https://github.com/ChainSafe/forest/commit/ff2691bab92823a8595d1d456ed5fa9683641d76#diff-2770a30d9f259666fb470d6f11cf1851ebb2d579a1480a8173d3855572748385 - Where some of the original polling work is replaced https://github.com/ChainSafe/forest/blob/b9fccde00e7356a5e336665a7e482d4ef439d714/node/rpc/src/rpc_ws_handler.rs#L121 - File with Sink solution https://github.com/cryptoquick/tide-websockets-sink https://twitter.com/cryptoquick/status/1370143022801846275 https://twitter.com/cryptoquick/status/1370155726056738817 https://blog.yoshuawuyts.com/rust-streams/#why-we-do-not-talk-about-the-sink-trait","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » What are the sources for this story?","id":"279","title":"What are the sources for this story?"},"28":{"body":"Every status quo PR includes a FAQ. This FAQ should always include answers to some standard questions: What are the morals of the story? Talk about the major takeaways-- what do you see as the biggest problems. What are the sources for this story? Talk about what the story is based on, ideally with links to blog posts, tweets, or other evidence. Why did you choose NAME to tell this story? Talk about the character you used for the story and why. How would this story have played out differently for the other characters? In some cases, there are problems that only occur for people from specific backgrounds, or which play out differently. This question can be used to highlight that. You can feel free to add whatever other FAQs seem appropriate. You should also expect to grow the FAQ in response to questions that come up on the PR.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » The role of the FAQ","id":"28","title":"The role of the FAQ"},"280":{"body":"Alan is more representative of the original author's background in JS, TypeScript, and NodeJS.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » Why did you choose Alan to tell this story?","id":"280","title":"Why did you choose Alan to tell this story?"},"281":{"body":"(I'm not sure.)","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » How would this story have played out differently for the other characters?","id":"281","title":"How would this story have played out differently for the other characters?"},"282":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » 😱 Status quo stories: Alan tries to debug a hang","id":"282","title":"😱 Status quo stories: Alan tries to debug a hang"},"283":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » 🚧 Warning: Draft status 🚧","id":"283","title":"🚧 Warning: Draft status 🚧"},"284":{"body":"Alan's startup has officially launched and YouBuy is live for the world to use. The whole team is very excited especially as this will be their first use of Rust in production! Normally, as a .NET shop, they would have written the entire application in C#, but because of the scalability and latency requirements on their inventory service, they decided to write a microservice in Rust utilizing the async features they've heard so much about. The day's excitement soon turns into concern as reports begin coming into support of customers who can't checkout. After a few cases, a pattern begins to emerge: when a customer tries to buy the last available item, the checkout process hangs forever. Alan suspects there is an issue with the lock used in the inventory service to prevent multiple people from buying the last available item at the same time. With this hunch, he builds the latest code and opens this local dev environment to conduct some tests. Soon enough, Alan has a repro of the bug. With the broken environment still running, he decides to use a debugger to see if he can confirm his theory. In the past, Alan has used Visual Studio's debugger to diagnose a very similar issue in a C# application he wrote . The debugger was able to show him all the async Tasks currently waiting, their call stacks and what resource they were waiting on. Alan hasn't used a debugger with Rust before, usually a combination of the strict compiler and a bit of manual testing has been enough to fix all the bugs he's previously encountered. He does a quick Google search to see what debugger he should use and decides to go with gdb because it is already installed on his system and sounds like it should work. Alan also pulls up a blog post that has a helpful cheatsheet of gdb commands since he's not familiar with the debugger. Alan restarts the inventory service under gdb and gets to work reproducing the issue. He reproduces the issue a few times in the hope of making it easier to identify the cause of the problem. Ready to pinpoint the issue, Alan presses Ctrl+C and then types bt to get a backtrace: (gdb) bt (gdb) bt\n#0 0x00007ffff7d5e58a in epoll_wait (epfd=3, events=0x555555711340, maxevents=1024, timeout=49152) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30\n#1 0x000055555564cf7d in mio::sys::unix::selector::epoll::Selector::select (self=0x7fffffffd008, events=0x7fffffffba40, timeout=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/mio-0.7.11/src/sys/unix/selector/epoll.rs:68\n#2 0x000055555564a82f in mio::poll::Poll::poll (self=0x7fffffffd008, events=0x7fffffffba40, timeout=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/mio-0.7.11/src/poll.rs:314\n#3 0x000055555559ad96 in tokio::io::driver::Driver::turn (self=0x7fffffffce28, max_wait=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/io/driver/mod.rs:162\n#4 0x000055555559b8da in ::park_timeout (self=0x7fffffffce28, duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/io/driver/mod.rs:238\n#5 0x00005555555e9909 in ::park_timeout (self=0x7fffffffce28, duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/signal/unix/driver.rs:156\n#6 0x00005555555a9229 in ::park_timeout (self=0x7fffffffce28, duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/process/unix/driver.rs:84\n#7 0x00005555555a898d in as tokio::park::Park>::park_timeout (self=0x7fffffffce20, duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/park/either.rs:37\n#8 0x00005555555ce0b8 in tokio::time::driver::Driver

    ::park_internal (self=0x7fffffffcdf8, limit=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/time/driver/mod.rs:226\n#9 0x00005555555cee60 in as tokio::park::Park>::park (self=0x7fffffffcdf8) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/time/driver/mod.rs:398\n#10 0x00005555555a87bb in as tokio::park::Park>::park (self=0x7fffffffcdf0) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/park/either.rs:30\n#11 0x000055555559ce47 in ::park (self=0x7fffffffcdf0) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/driver.rs:198\n#12 0x000055555557a2f7 in tokio::runtime::basic_scheduler::Inner

    ::block_on::{{closure}} (scheduler=0x7fffffffcdb8, context=0x7fffffffcaf0) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:224\n#13 0x000055555557b1b4 in tokio::runtime::basic_scheduler::enter::{{closure}} () at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:279\n#14 0x000055555558174a in tokio::macros::scoped_tls::ScopedKey::set ( self=0x555555701af8 , t=0x7fffffffcaf0, f=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/macros/scoped_tls.rs:61\n#15 0x000055555557b0b6 in tokio::runtime::basic_scheduler::enter (scheduler=0x7fffffffcdb8, f=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:279\n#16 0x0000555555579d3b in tokio::runtime::basic_scheduler::Inner

    ::block_on (self=0x7fffffffcdb8, future=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:185\n#17 0x000055555557a755 in tokio::runtime::basic_scheduler::InnerGuard

    ::block_on (self=0x7fffffffcdb8, future=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:425\n#18 0x000055555557aa9c in tokio::runtime::basic_scheduler::BasicScheduler

    ::block_on (self=0x7fffffffd300, future=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:145\n#19 0x0000555555582094 in tokio::runtime::Runtime::block_on (self=0x7fffffffd2f8, future=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/mod.rs:450\n#20 0x000055555557c22f in inventory_service::main () at /home/alan/code/inventory_service/src/main.rs:4 Puzzled, the only line Alan even recognizes is the main entry point function for the service. He knows that async tasks in Rust aren't run individually on their own threads which allows them to scale better and use fewer resources but surely there has to be a thread somewhere that's running his code? Alan doesn't completely understand how async works in Rust but he's seen the Future::poll method so he assumes that there is a thread which constantly polls tasks to see if they are ready to wake up. \"Maybe I can find that thread and inspect its state?\" he thinks and then consults the cheatsheet for the appropriate command to see the threads in the program. info threads seems promising so he tries that: (gdb) info threads (gdb) info threads Id Target Id Frame * 1 Thread 0x7ffff7c3b5c0 (LWP 1048) \"inventory_servi\" 0x00007ffff7d5e58a in epoll_wait (epfd=3, events=0x555555711340, maxevents=1024, timeout=49152) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30 Alan is now even more confused: \"Where are my tasks?\" he thinks. After looking through the cheatsheet and StackOverflow, he discovers there isn't a way to see which async tasks are waiting to be woken up in the debugger. Taking a shot in the dark, Alan concludes that this thread must be thread which is polling his tasks since it is the only one in the program. He googles \"epoll_wait rust async tasks\" but the results aren't very helpful and inspecting the stack frame doesn't yield him any clues as to where his tasks are so this seems to be a dead end. After thinking a bit, Alan realizes that since the runtime must know what tasks are waiting to be woken up, perhaps he can have the service ask the async runtime for that list of tasks every 10 seconds and print them to stdout? While crude, this would probably also help him diagnose the hang. Alan gets to work and opens the runtime docs to figure out how to get that list of tasks. After spending 30 minutes reading the docs, looking at StackOverflow questions and even posting on users.rust-lang.org, he discovers this simply isn't possible and he will have to add tracing to his application to figure out what's going on. Disgruntled, Alan begins the arduous, boring task of instrumenting the application in the hope that the logs will be able to help him.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » The story","id":"284","title":"The story"},"285":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » 🤔 Frequently Asked Questions","id":"285","title":"🤔 Frequently Asked Questions"},"286":{"body":"Developers, especially coming from an language that has a tightly integrated development environment, expect their debugger to help them particularly in situations where \"println\" debugging can't. If the debugger can't help them, developers will often try to reach for a programmatic solution such as debug functions in their runtime that can be invoked at critical code paths. Trying to debug an issue by adding logging and then triggering the issue is painful because of the long turn-around times when modifying code, compiling and then repro'ing the issue.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » What are the morals of the story?","id":"286","title":"What are the morals of the story?"},"287":{"body":"@erickt's comments in #76, similar comments I've heard from other developers.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » What are the sources for this story?","id":"287","title":"What are the sources for this story?"},"288":{"body":"Coming from a background in managed languages where the IDE, debugger and runtime are tightly integrated, Alan would be used to using those tools to diagnose his issue. Alan has also been a bit insulated from the underlying OS and expects the debugger to understand the language and runtime even if the OS doesn't have similar concepts such as async tasks.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » Why did you choose Alan to tell this story?","id":"288","title":"Why did you choose Alan to tell this story?"},"289":{"body":"Some of the characters with either a background in Rust or a background in systems programming might know that Rust's async doesn't always map to an underlying system feature and so they might expect that gdb or lldb is unable to help them. Barbara, the experienced Rust dev, might also have used a tracing/instrumentation library from the beginning and have that to fall back on rather than having to do the work to add it now.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » How would this story have played out differently for the other characters?","id":"289","title":"How would this story have played out differently for the other characters?"},"29":{"body":"When you open a status quo PR, people will start to comment on it. These comments should always be constructive, with the goal not of negating the story but of making it more precise or more persuasive. Ideally, you should respond to every comment in one of two ways: Adjust the story with more details or to correct factual errors. Add something to the story's FAQ to explain the confusion. If the question is already covered by a FAQ, you can just refer the commenter to that. The goal is that, at the end of the review process, the status quo story has a lot more details that address the major questions people had.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » The review process","id":"29","title":"The review process"},"290":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » 😱 Status quo stories: Alan writes a web framework","id":"290","title":"😱 Status quo stories: Alan writes a web framework"},"291":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » 🚧 Warning: Draft status 🚧","id":"291","title":"🚧 Warning: Draft status 🚧"},"292":{"body":"YouBuy is written using an async web framework that predates the stabilization of async function syntax. When Alan joins the company, it is using async functions for its business logic, but can't use them for request handlers because the framework doesn't support it yet. It requires the handler's return value to be Box>. Because the web framework predates async function syntax, it requires you to take ownership of the request context (State) and return it alongside your response in the success/error cases. This means that even with async syntax, an http route handler in this web framework looks something like this (from the Gotham Diesel example ): // For reference, the framework defines these type aliases.\npub type HandlerResult = Result<(State, Response), (State, HandlerError)>;\npub type HandlerFuture = dyn Future + Send; fn get_products_handler(state: State) -> Pin> { use crate::schema::products::dsl::*; async move { let repo = Repo::borrow_from(&state); let result = repo.run(move |conn| products.load::(&conn)).await; match result { Ok(prods) => { let body = serde_json::to_string(&prods).expect(\"Failed to serialize prods.\"); let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body); Ok((state, res)) } Err(e) => Err((state, e.into())), } } .boxed()\n} and then it is registered like this: router_builder.get(\"/\").to(get_products_handler); The handler code is forced to drift to the right a lot, because of the async block, and the lack of ability to use ? forces the use of a match block, which drifts even further to the right. This goes against what he has learned from his days writing go . Rather than switching YouBuy to a different web framework, Alan decides to contribute to the web framework himself. After a bit of a slog and a bit of where-clause-soup, he manages to make the web framework capable of using an async fn as an http request handler. He does this by extending the router builder with a closure that boxes up the impl Future from the async fn and then passes that closure on to .to(). fn to_async(self, handler: H) where Self: Sized, H: (FnOnce(State) -> Fut) + RefUnwindSafe + Copy + Send + Sync + 'static, Fut: Future + Send + 'static, { self.to(move |s: State| handler(s).boxed()) } The handler registration then becomes: router_builder.get(\"/\").to_async(get_products_handler); This allows him to strip out the async blocks in his handlers and use async fn instead. // Type the library again, in case you've forgotten:\npub type HandlerResult = Result<(State, Response), (State, HandlerError)>; async fn get_products_handler(state: State) -> HandlerResult { use crate::schema::products::dsl::*; let repo = Repo::borrow_from(&state); let result = repo.run(move |conn| products.load::(&conn)).await; match result { Ok(prods) => { let body = serde_json::to_string(&prods).expect(\"Failed to serialize prods.\"); let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body); Ok((state, res)) } Err(e) => Err((state, e.into())), }\n} It's still not fantastically ergonomic though. Because the handler takes ownership of State and returns it in tuples in the result, Alan can't use the ? operator inside his http request handlers. If he tries to use ? in a handler, like this: async fn get_products_handler(state: State) -> HandlerResult { use crate::schema::products::dsl::*; let repo = Repo::borrow_from(&state); let prods = repo .run(move |conn| products.load::(&conn)) .await?; let body = serde_json::to_string(&prods).expect(\"Failed to serialize prods.\"); let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body); Ok((state, res))\n} then he receives: error[E0277]: `?` couldn't convert the error to `(gotham::state::State, HandlerError)` --> examples/diesel/src/main.rs:84:15 |\n84 | .await?; | ^ the trait `From` is not implemented for `(gotham::state::State, HandlerError)` | = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait = note: required by `std::convert::From::from` Alan knows that the answer is to make another wrapper function, so that the handler can take an &mut reference to State for the lifetime of the future, like this: async fn get_products_handler(state: &mut State) -> Result, HandlerError> { use crate::schema::products::dsl::*; let repo = Repo::borrow_from(&state); let prods = repo .run(move |conn| products.load::(&conn)) .await?; let body = serde_json::to_string(&prods).expect(\"Failed to serialize prods.\"); let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body); Ok(res)\n} and then register it with: route.get(\"/\").to_async_borrowing(get_products_handler); but Alan can't work out how to express the type signature for the .to_async_borrowing() helper function. He submits his .to_async() pull-request upstream as-is, but it nags on his mind that he has been defeated. Shortly afterwards, someone raises a bug about ?, and a few other web framework contributors try to get it to work, but they also get stuck. When Alan tries it, the compiler diagnostics keep sending him around in circles . He can work out how to express the lifetimes for a function that returns a Box but not an impl Future because of how where clauses are expressed. Alan longs to be able to say \"this function takes an async function as a callback\" (fn register_handler(handler: impl async Fn(state: &mut State) -> Result)) and have Rust elide the lifetimes for him, like how they are elided for async functions. A month later, one of the contributors finds a forum comment by Barbara explaining how to express what Alan is after (using higher-order lifetimes and a helper trait). They implement this and merge it. The final .to_async_borrowing() implementation ends up looking like this (also from Gotham ): pub trait AsyncHandlerFn<'a> { type Res: IntoResponse + 'static; type Fut: std::future::Future> + Send + 'a; fn call(self, arg: &'a mut State) -> Self::Fut;\n} impl<'a, Fut, R, F> AsyncHandlerFn<'a> for F\nwhere F: FnOnce(&'a mut State) -> Fut, R: IntoResponse + 'static, Fut: std::future::Future> + Send + 'a,\n{ type Res = R; type Fut = Fut; fn call(self, state: &'a mut State) -> Fut { self(state) }\n} pub trait HandlerMarker { fn call_and_wrap(self, state: State) -> Pin>;\n} impl HandlerMarker for F\nwhere R: IntoResponse + 'static, for<'a> F: AsyncHandlerFn<'a, Res = R> + Send + 'static,\n{ fn call_and_wrap(self, mut state: State) -> Pin> { async move { let fut = self.call(&mut state); let result = fut.await; match result { Ok(data) => { let response = data.into_response(&state); Ok((state, response)) } Err(err) => Err((state, err)), } } .boxed() }\n} ... fn to_async_borrowing(self, handler: F) where Self: Sized, F: HandlerMarker + Copy + Send + Sync + RefUnwindSafe + 'static, { self.to(move |state: State| handler.call_and_wrap(state)) } Alan is still not sure whether it can be simplified. Later on, other developers on the project attempt to extend this approach to work with closures, but they encounter limitations in rustc that seem to make it not work ( rust-lang/rust#70263 ). When Alan sees another open source project struggling with the same issue, he notices that Barbara has helped them out as well. Alan wonders how many people in the community would be able to write .to_async_borrowing() without help.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » The story","id":"292","title":"The story"},"293":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » 🤔 Frequently Asked Questions","id":"293","title":"🤔 Frequently Asked Questions"},"294":{"body":"Callback-based APIs with async callbacks are a bit fiddly, because of the impl Future return type forcing you to write where-clause-soup, but not insurmountable. Callback-based APIs with async callbacks that borrow their arguments are almost impossible to write without help.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » What are the morals of the story?","id":"294","title":"What are the morals of the story?"},"295":{"body":"This is from the author's own experience .","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » What are the sources for this story?","id":"295","title":"What are the sources for this story?"},"296":{"body":"Callback-based apis are a super-common way to interact with web frameworks. I'm not sure how common they are in other fields.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » Why did you choose Alan/YouBuy to tell this story?","id":"296","title":"Why did you choose Alan/YouBuy to tell this story?"},"297":{"body":"I suspect that even many Barbara-shaped developers would struggle with this problem.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » How would this story have played out differently for the other characters?","id":"297","title":"How would this story have played out differently for the other characters?"},"298":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » 😱 Status quo stories: Barbara Anguishes Over HTTP","id":"298","title":"😱 Status quo stories: Barbara Anguishes Over HTTP"},"299":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect people's experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » 🚧 Warning: Draft status 🚧","id":"299","title":"🚧 Warning: Draft status 🚧"},"3":{"body":"This working group is focused around implementation/design of the “foundations” for Async I/O. This means that we are focused on designing and implementing extensions to the language, standard library, and other \"core\" bits of support offered by the Rust organization. We do not directly work on external projects like tokio , async-std , smol , embassy and so forth, although we definitely discuss ideas and coordinate with them where appropriate.","breadcrumbs":"👋🏽 Welcome » What is the goal of this working group?","id":"3","title":"What is the goal of this working group?"},"30":{"body":"","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » 🤔 Frequently Asked Questions","id":"30","title":"🤔 Frequently Asked Questions"},"300":{"body":"Barbara is starting a new project, working together with Alan. They want to write a Rust library and as part of it they will need to make a few HTTP calls to various web services. While HTTP is part of the responsibilities of the library it is by no means the only thing the library will need to do. As they are pair programming, they get the part of the library where HTTP will be involved and Alan asks Barbara, \"OK, how do I make an HTTP request?\". As an experienced async Rust developer Barbara has been dreading this question from the start of the project. She's tempted to ask \"How long do you have?\", but she quickly gathers herself and starts to outline the various considerations. She starts with a relatively simple question: \"Should we use an HTTP library with a sync interface or an async interface?\". Alan, who comes from a JavaScript background, remembers the transition from callbacks to async/await in that language. He assumes Rust is merely making its transition to async/await, and it will eventually be the always preferred choice. He hesitates and asks Barbara: \"Isn't async/await always better?\". Barbara, who can think of many scenarios where a blocking, sync interface would likely be better, weighs whether going done the rabbit-hole of async vs sync is the right way to spend their time. She decides instead to try to directly get at the question of whether they should use async for this particular project. She knows that bridging sync and async can be difficult, and so there's another question they need to answer first: \"Are we going to expose a sync or an async interface to the users of our library?\". Alan, still confused about when using a sync interface is the right choice, replies as confident as he can: \"Everybody wants to use async these days. Let's do that!\". He braces for Barbara's answer as he's not even sure what he said is actually true. Barbara replies, \"If we expose an async API then we need to decide which async HTTP implementation we will use\". As she finishes saying this, Barbara feels slightly uneasy. She knows that it is possible to use a sync HTTP library and expose it through an async API, but she fears totally confusing Alan and so decides to not mention this fact. Barbara looks over at Alan and sees a blank stare on his face. She repeats the question: \"So, which async HTTP implementation should we use?\". Alan responds with the only thing that comes to his mind: \"which one is the best?\" to which Barbara responds \"Well, it depends on which async runtime you're using\". Alan, feeling utterly dejected and hoping that the considerations will soon end tries a new route out of this conversation: \"Can we allow the user of the library to decide?\". Barbara thinks to herself, \"Oh boy, we could provide a trait that abstracts over the HTTP request and response and allow the user to provide the implementation for whatever HTTP library they want... BUT, if we ever need any additional functionality that an async runtime needs to expose - like async locks or async timers - we might be forced to pick an actual runtime implementation on behalf of the user... Perhaps, we can put the most popular runtime implementations behind feature flags and let the user chose that way... BUT what if we want to allow plugging in of different runtimes?\" Alan, having watched Barbara stare off into the distance for what felt like a half-hour, feels bad for his colleague. All he can think to himself is how Rust is so much more complicated that C#.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » The story","id":"300","title":"The story"},"301":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » 🤔 Frequently Asked Questions","id":"301","title":"🤔 Frequently Asked Questions"},"302":{"body":"What is a very mundane and simple decision in many other languages, picking an HTTP library, requires users to contemplate many different considerations. There is no practical way to choose an HTTP library that will serve most of the ecosystem. Sync/Async, competing runtimes, etc. - someone will always be left out. HTTP is a small implementation detail of this library, but it is a HUGE decision that will ultimately be the biggest factor in who can adopt their library.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » What are the morals of the story?","id":"302","title":"What are the morals of the story?"},"303":{"body":"Based on the author's personal experience of taking newcomers to Rust through the decision making process of picking an HTTP implementation for a library.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » What are the sources for this story?","id":"303","title":"What are the sources for this story?"},"304":{"body":"Barbara knows all the considerations and their consequences. A less experienced Rust developer might just make a choice even if that choice isn't the right one for them.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » Why did you choose Barbara to tell this story?","id":"304","title":"Why did you choose Barbara to tell this story?"},"305":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » 😱 Status quo stories: Barbara bridges sync and async in perf.rust-lang.org","id":"305","title":"😱 Status quo stories: Barbara bridges sync and async in perf.rust-lang.org"},"306":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » 🚧 Warning: Draft status 🚧","id":"306","title":"🚧 Warning: Draft status 🚧"},"307":{"body":"Barbara is working on the code for perf.rust-lang.org and she wants to do a web request to load various intermediate results. She has heard that the reqwest crate is quite nice, so she decides to give it a try. She writes up an async function that does her web request: async fn do_web_request(url: &Url) -> Data { ...\n} She needs to apply this async function to a number of urls. She wants to use the iterator map function, like so: async fn do_web_request(url: &Url) -> Data {...} fn aggregate(urls: &[Url]) -> Vec { urls .iter() .map(|url| do_web_request(url)) .collect()\n} fn main() { /* do stuff */ let data = aggregate(); /* do more stuff */\n} Of course, since do_web_request is an async fn, she gets a type error from the compiler: error[E0277]: a value of type `Vec` cannot be built from an iterator over elements of type `impl Future` --> src/main.rs:11:14 |\n11 | .collect(); | ^^^^^^^ value of type `Vec` cannot be built from `std::iter::Iterator` | = help: the trait `FromIterator` is not implemented for `Vec` \"Of course,\" she thinks, \"I can't call an async function from a closure.\"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » The story","id":"307","title":"The story"},"308":{"body":"She decides that since she is not overly concerned about performance, so she decides she'll just use a call to block_on from the futures crate and execute the function synchronously: async fn do_web_request(url: &Url) -> Data {...} fn aggregate(urls: &[Url]) -> Vec { urls .iter() .map(|url| futures::executor::block_on(do_web_request(url))) .collect()\n} fn main() { /* do stuff */ let data = aggregate(); /* do more stuff */\n} The code compiles, and it seems to work.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Introducing block_on","id":"308","title":"Introducing block_on"},"309":{"body":"As Barbara works on perf.rust-lang.org , she realizes that she needs to do more and more async operations. She decides to convert her synchronous main function into an async main. She's using tokio, so she is able to do this very conveniently with the #[tokio::main] decorator: #[tokio::main]\nasync fn main() { /* do stuff */ let data = aggregate(); /* do more stuff */\n} Everything seems to work ok on her laptop, but when she pushes the code to production, it deadlocks immediately. \"What's this?\" she says. Confused, she runs the code on her laptop a few more times, but it seems to work fine. (There's a faq explaining what's going on. -ed.) She decides to try debugging. She fires up a debugger but finds it is isn't really giving her useful information about what is stuck (she has basically the same problems that Alan has ). She wishes she could get insight into tokio's state. Frustrated, she starts reading the tokio docs more closely and she realizes that tokio runtimes offer their own block_on method. \"Maybe using tokio's block_on will help?\" she thinks, \"Worth a try, anyway.\" She changes the aggregate function to use tokio's block_on: fn block_on(f: impl Future) -> O { let rt = tokio::runtime::Runtime::new().unwrap(); rt.block_on(f)\n} fn aggregate(urls: &[Url]) -> Vec { urls .iter() .map(|url| block_on(do_web_request(url))) .collect()\n} The good news is that the deadlock is gone. The bad news is that now she is getting a panic: thread 'main' panicked at 'Cannot start a runtime from within a runtime. This happens because a function (like block_on) attempted to block the current thread while the thread is being used to drive asynchronous tasks.' \"Well,\" she thinks, \"I could use the Handle API to get the current runtime instead of creating a new one? Maybe that's the problem.\" fn aggregate(urls: &[&str]) -> Vec { let handle = tokio::runtime::Handle::current(); urls.iter() .map(|url| handle.block_on(do_web_request(url))) .collect()\n} But this also seems to panic in the same way.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Switching to async main","id":"309","title":"Switching to async main"},"31":{"body":"Just open a PR using this template . Do not add your file to SUMMARY.md , that will create conflicts. We'll do it after merging.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » What is the process to propose a status quo story?","id":"31","title":"What is the process to propose a status quo story?"},"310":{"body":"Reading more into this problem, she realizes she is supposed to be using spawn_blocking. She tries replacing block_on with tokio::task::spawn_blocking: fn aggregate(urls: &[Url]) -> Vec { urls .iter() .map(|url| tokio::task::spawn_blocking(move || do_web_request(url))) .collect()\n} but now she gets a type error again: error[E0277]: a value of type `Vec` cannot be built from an iterator over elements of type `tokio::task::JoinHandle` --> src/main.rs:22:14 |\n22 | .collect(); | ^^^^^^^ value of type `Vec` cannot be built from `std::iter::Iterator>` | = help: the trait `FromIterator>` is not implemented for `Vec` Of course! spawn_blocking, like map, just takes a regular closure, not an async closure; it's purpose is to embed some sync code within an async task, so a sync closure makes sense -- and moreover async closures aren't stable -- but it's all rather frustrating nonetheless. \"Well,\" she thinks, \"I can use spawn to get back into an async context!\" So she adds a call to spawn inside the spawn_blocking closure: fn aggregate(urls: &[Url]) -> Vec { urls .iter() .map(|url| tokio::task::spawn_blocking(move || { tokio::task::spawn(async move { do_web_request(url).await }) })) .collect()\n} But this isn't really helping, as spawn still yields a future. She's getting the same errors.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Trying out spawn_blocking","id":"310","title":"Trying out spawn_blocking"},"311":{"body":"She remembers now that this whole drama started because she was converting her main function to be async. Maybe she doesn't have to bridge between sync and async? She starts digging around in the docs and finds futures::join_all. Using that, she can change aggregate to be an async function too: async fn aggregate(urls: &[Url]) -> Vec { futures::join_all( urls .iter() .map(|url| do_web_request(url)) ).await\n} Things are working again now, so she is happy, although she notes that join_all has quadratic time complexity. That's not great.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Trying out join_all","id":"311","title":"Trying out join_all"},"312":{"body":"Later on, she would like to apply a filter to the aggregation operation. She realizes that if she wants to use the fetched data when doing the filtering, she has to filter the vector after the join has completed. She wants to write something like async fn aggregate(urls: &[Url]) -> Vec { futures::join_all( urls .iter() .map(|url| do_web_request(url)) .filter(|data| test(data)) ).await\n} but she can't, because data is a future and not the Data itself. Instead she has to build the vector first and then post-process it: async fn aggregate(urls: &[Url]) -> Vec { let mut data: Vec = futures::join_all( urls .iter() .map(|url| do_web_request(url)) ).await; data.retain(test); data\n} This is annoying, but performance isn't critical, so it's ok.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Filtering","id":"312","title":"Filtering"},"313":{"body":"Later on, she wants to call aggregate from another binary. This one doesn't have an async main. This context is deep inside of an iterator chain and was previously entirely synchronous. She realizes it would be a lot of work to change all the intervening stack frames to be async fn, rewrite the iterators into streams, etc. She decides to just call block_on again, even though it make her nervous.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » And the cycle begins again","id":"313","title":"And the cycle begins again"},"314":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » 🤔 Frequently Asked Questions","id":"314","title":"🤔 Frequently Asked Questions"},"315":{"body":"Some projects don't care about max performance and just want things to work once the program compiles. They would probably be happy with sync but as the most popular libraries for web requests, databases, etc, offer async interfaces, they may still be using async code. There are contexts where you can't easily add an await. For example, inside of an iterator chain. Big block of existing code. Mixing sync and async code can cause deadlocks that are really painful to diagnose, particularly when you have an async-sync-async sandwich.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » What are the morals of the story?","id":"315","title":"What are the morals of the story?"},"316":{"body":"Because Mark (who experienced most of it) is a very experienced Rust developer. Because you could experience this story regardless of language background or being new to Rust.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Why did you choose Barbara to tell this story?","id":"316","title":"Why did you choose Barbara to tell this story?"},"317":{"body":"I would expect it would work out fairly similarly, except that the type errors and things might well have been more challenging for people to figure out, assuming they aren't already familiar with Rust.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » How would this story have played out differently for the other characters?","id":"317","title":"How would this story have played out differently for the other characters?"},"318":{"body":"This is because the production instance she was using had only a single core, but her laptop is a multicore machine. The actual cause of the deadlocks is that block_on basically \"takes over\" the tokio worker thread, and hence the tokio scheduler cannot run. If that block_on is blocked on another future that will have to execute, then some other thread must take over of completing that future. On Barbara's multicore machine, there were more threads available, so the system did not deadlock. But on the production instance, there was only a single thread. Barbara could have encountered deadlocks on her local machine as well if she had enough instances of block_on running at once.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Why did Barbara only get deadlocks in production, and not on her laptop?","id":"318","title":"Why did Barbara only get deadlocks in production, and not on her laptop?"},"319":{"body":"One way to resolve this problem would be to have a runtime that creates more threads as needed. This is what was proposed in this blog post , for example. Adapting the number of worker threads has downsides. It requires knowing the right threshold for creating new threads (which is fundamentally unknowable). The result is that the runtime will sometimes observe that some thread seems to be taking a long time and create new threads just before that thread was about to finish. These new threads generate overhead and lower the overall performance. It also requires work stealing and other techniques that can lead to work running on mulitple cores and having less locality. Systems tuned for maximal performance tend to prefer a single thread per core for this reason. If some runtimes are adaptive, that may also lead to people writing libraries which block without caring. These libraries would then be a performance or deadlock hazard when used on a runtime that is not adaptive.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Could the runtime have prevented the deadlock?","id":"319","title":"Could the runtime have prevented the deadlock?"},"32":{"body":"Look at the \"morals\" of your story and decide which character will let you get those across the best. Use the FAQ to talk about how other characters might have been impacted. If the story would play out really differently for other characters, maybe write it more than once!","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » What if my story applies to multiple characters?","id":"32","title":"What if my story applies to multiple characters?"},"320":{"body":"Yes, Barbara could have written something like this: fn aggregate(urls: &[Url]) -> Vec { let handle = Handle::current(); urls.iter() .map(|url| handle.block_on(do_web_request(url))) .collect()\n} #[tokio::main]\nasync fn main() { let data = task::spawn_blocking(move || aggregate(&[Url, Url])) .await .unwrap(); println!(\"done\");\n} This aggregate function can only safely be invoked from inside a tokio spawn_blocking call, however, since Handle::current will only work in that context. She could also have used the original futures variant of block_on, in that case, and things would also work.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Is there any way to have kept aggregate as a synchronous function?","id":"320","title":"Is there any way to have kept aggregate as a synchronous function?"},"321":{"body":"reqwest does offer a synchronous API, but it's not enabled by default, you have to use an optional feature. Further, not all crates offer synchronous APIs. Finally, Barbara has had some vague poor experience when using synchronous APIs, such as panics, and so she's learned the heuristic of \"use the async API unless you're doing something really, really simple\". Regardless, the synchronous reqwest API is actually itself implemented using block_on: so Barbara would have ultimately hit the same issues. Further, not all crates offer synchronous APIs -- some offer only async APIs. In fact, these same issues are probably the sources of those panics that Barbara encountered in the past. In general, though, embedded sync within async or vice versa works \"ok\", once you know the right tricks. Where things become challenging is when you have a \"sandwich\", with async-sync-async.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Why didn't Barbara just use the sync API for reqwest?","id":"321","title":"Why didn't Barbara just use the sync API for reqwest?"},"322":{"body":"Yes! Here is some code from perf.rust-lang.org doing exactly that. The catch is that it winds up giving you a future in the end, which didn't work for Barbara because her code is embedded within an iterator (and hence she can't make things async \"all the way down\").","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Do people mix spawn_blocking and spawn successfully in real code?","id":"322","title":"Do people mix spawn_blocking and spawn successfully in real code?"},"323":{"body":"Using std::Mutex in async code. Calling the blocking version of an asynchronous API. For example, reqwest::blocking, the synchronous zbus and rumqtt APIs. These are commonly implemented by using some variant of block_on internally. Therefore they can lead to panics or deadlocks depending on what async runtime they are built from and used with.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » What are other ways people could experience similar problems mixing sync and async?","id":"323","title":"What are other ways people could experience similar problems mixing sync and async?"},"324":{"body":"There are times when converting synchronous code to async is difficult or even impossible. Here are some of the reasons: Asynchronous functions cannot appear in trait impls . Asynchronous functions cannot be called from APIs that take closures for callbacks, like Iterator::map in this example. Sometimes the synchronous functions come from other crates and are not fully under their control. It's just a lot of work!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Why wouldn't Barbara just make everything async from the start?","id":"324","title":"Why wouldn't Barbara just make everything async from the start?"},"325":{"body":"the futures crate offers a runtime-independent block-on (which can lead to deadlocks, as in this story) the tokio crate offers a block_on method (which will panic if used inside of another tokio runtime, as in this story) the pollster crate exists just to offer block_on the futures-lite crate offers a block_on the aysnc-std crate offers block_on the async-io crate offers block_on ...there are probably more, but I think you get the point.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » How many variants of block_on are there?","id":"325","title":"How many variants of block_on are there?"},"326":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » 😱 Status quo stories: Barbara builds an async executor","id":"326","title":"😱 Status quo stories: Barbara builds an async executor"},"327":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » 🚧 Warning: Draft status 🚧","id":"327","title":"🚧 Warning: Draft status 🚧"},"328":{"body":"Barbara wants to set priorities to the tasks spawned to the executor. However, she finds no existing async executor provides such a feature so she decided to build her own async executor. First, Barbara found crossbeam-deque provides work-stealing deques of good quality. She decides to use it to build task schedulers. She plans for each working thread to have a loop which repeatedly gets a task from the deque and polls it. But wait, what should we put into those queues to represent each \"task\"? At first, Barbara thought it must contain the Future itself and the additional priority which was used by the scheduler. So she first wrote: pub struct Task { future: Pin + Send + 'static>>, priority: u8\n} And the working thread loop should run something like: pub fn poll_task(task: Task) { let waker = todo!(); let mut cx = Context::from_waker(&waker); task.future.as_mut().poll(&mut cx);\n} \"How do I create a waker?\" Barbara asked herself. Quickly, she found the Wake trait. Seeing the wake method takes an Arc, she realized the task in the scheduler should be stored in an Arc. After some thought, she realizes it makes sense because both the deque in the scheduler and the waker may hold a reference to the task. To implement Wake, the Task should contain the sender of the scheduler. She changed the code to something like this: pub struct Task { future: Pin + Send + 'static>>, scheduler: SchedulerSender, priority: u8,\n} unsafe impl Sync for Task {} impl Wake for Task { fn wake(self: Arc) { self.scheduler.send(self.clone()); }\n} pub fn poll_task(task: Arc) { let waker = Waker::from(task.clone()); let mut cx = Context::from_waker(&waker); task.future.as_mut().poll(&mut cx);\n// ^^^^^^^^^^^ cannot borrow as mutable\n} The code still needed some change because the future in the Arc became immutable. \"Okay. I can guarantee Task is created from a Pin>, and I think the same future won't be polled concurrently in two threads. So let me bypass the safety checks.\" Barbara changed the future to a raw pointer and confidently used some unsafe blocks to make it compile. pub struct Task { future: *mut (dyn Future + Send + 'static), ...\n} unsafe impl Send for Task {}\nunsafe impl Sync for Task {} pub fn poll_task(task: Arc) { ... unsafe { Pin::new_unchecked(&mut *task.future).poll(&mut cx); }\n} Luckily, a colleague of Barbara noticed something wrong. The wake method could be called multiple times so multiple copies of the task could exist in the scheduler. The scheduler might not work correctly because of this. What's worse, a more severe problem was that multiple threads might get copies of the same task from the scheduler and cause a race in polling the future. Barbara soon got a idea to solve it. She added a state field to the Task. By carefully maintaining the state of the task, she could guarantee there are no duplicate tasks in the scheduler and no race can happen when polling the future. const NOTIFIED: u64 = 1;\nconst IDLE: u64 = 2;\nconst POLLING: u64 = 3;\nconst COMPLETED: u64 = 4; pub struct Task { ... state: AtomicU64,\n} impl Wake for Task { fn wake(self: Arc) { let mut state = self.state.load(Relaxed); loop { match state { // To prevent a task from appearing in the scheduler twice, only send the task // to the scheduler if the task is not notified nor being polling. IDLE => match self .state .compare_exchange_weak(IDLE, NOTIFIED, AcqRel, Acquire) { Ok(_) => self.scheduler.send(self.clone()), Err(s) => state = s, }, POLLING => match self .state .compare_exchange_weak(POLLING, NOTIFIED, AcqRel, Acquire) { Ok(_) => break, Err(s) => state = s, }, _ => break, } } }\n} pub fn poll_task(task: Arc) { let waker = Waker::from(task.clone()); let mut cx = Context::from_waker(&waker); loop { // We needn't read the task state here because the waker prevents the task from // appearing in the scheduler twice. The state must be NOTIFIED now. task.state.store(POLLING, Release); if let Poll::Ready(()) = unsafe { Pin::new_unchecked(&mut *task.future).poll(&mut cx) } { task.state.store(COMPLETED, Release); } match task.state.compare_exchange(POLLING, IDLE, AcqRel, Acquire) { Ok(_) => break, Err(NOTIFIED) => continue, _ => unreachable!(), } }\n} Barbara finished her initial implementation of the async executor. Despite there were a lot more possible optimizations, Barbara already felt it is a bit complex. She was also confused about why she needed to care so much about polling and waking while her initial requirement was just adding additional information to the task for customizing scheduling.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » The story","id":"328","title":"The story"},"329":{"body":"Here are some standard FAQ to get you started. Feel free to add more!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » 🤔 Frequently Asked Questions","id":"329","title":"🤔 Frequently Asked Questions"},"33":{"body":"Detailed is generally better, but only if those details are helpful for understanding the morals of your story. Specific is generally better, since an abstract story doesn't feel as real.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » How much detail should I give? How specific should I be?","id":"33","title":"How much detail should I give? How specific should I be?"},"330":{"body":"It is difficult to customize any of the current async executors (to my knowledge). To have any bit of special requirement forces building an async executor from scratch. It is also not easy to build an async executor. It needs quite some exploration and is error-prone. async-task is a good attempt to simplify the process but it could not satisfy all kinds of needs of customizing the executor (it does not give you the chance to extend the task itself).","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » What are the morals of the story?","id":"330","title":"What are the morals of the story?"},"331":{"body":"The story was from my own experience about writing a new thread pool supporting futures: https://github.com/tikv/yatp. People may feel strange about why we want to set priorities for tasks. Currently, the futures in the thread pool are like user-space threads. They are mostly CPU intensive. But I think people doing async I/O may have the same problem.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » What are the sources for this story?","id":"331","title":"What are the sources for this story?"},"332":{"body":"At the time of the story, I had written Rust for years but I was new to the concepts for async/await like Pin and Waker.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » Why did you choose Barbara to tell this story?","id":"332","title":"Why did you choose Barbara to tell this story?"},"333":{"body":"People with less experience in Rust may be less likely to build their own executor. If they try, I think the story is probably similar.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » How would this story have played out differently for the other characters?","id":"333","title":"How would this story have played out differently for the other characters?"},"334":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » 😱 Status quo stories: Barbara carefully dismisses embedded Future","id":"334","title":"😱 Status quo stories: Barbara carefully dismisses embedded Future"},"335":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » 🚧 Warning: Draft status 🚧","id":"335","title":"🚧 Warning: Draft status 🚧"},"336":{"body":"Barbara is contributing to an OS that supports running multiple applications on a single microcontroller. These microcontrollers have as little as 10's of kilobytes of RAM and 100's of kilobytes of flash memory for code. Barbara is writing a library that is used by multiple applications -- and is linked into each application -- so the library is very resource constrained. The library should support asynchronous operation, so that multiple APIs can be used in parallel within each (single-threaded) application. Barbara begins writing the library by trying to write a console interface, which allows byte sequences to be printed to the system console. Here is an example sequence of events for a console print: The interface gives the kernel a callback to call when the print finishes, and gives the kernel the buffer to print. The kernel prints the buffer in the background while the app is free to do other things. The print finishes. The app tells the kernel it is ready for the callback to be invoked, and the kernel invokes the callback. Barbara tries to implement the API using core::future::Future so that the library can be compatible with the async Rust ecosystem. The OS kernel does not expose a Future-based interface, so Barbara has to implement Future by hand rather than using async/await syntax. She starts with a skeleton: /// Passes `buffer` to the kernel, and prints it to the console. Returns a\n/// future that returns `buffer` when the print is complete. The caller must\n/// call kernel_ready_for_callbacks() when it is ready for the future to return. fn print_buffer(buffer: &'static mut [u8]) -> PrintFuture { // TODO: Set the callback // TODO: Tell the kernel to print `buffer`\n} struct PrintFuture; impl core::future::Future for PrintFuture { type Output = &'static mut [u8]; fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { // TODO: Detect when the print is done, retrieve `buffer`, and return // it. }\n} Note: All error handling is omitted to keep things understandable. Barbara begins to implement print_buffer: fn print_buffer(buffer: &'static mut [u8]) -> PrintFuture { kernel_set_print_callback(callback); kernel_start_print(buffer); PrintFuture {}\n} // New! The callback the kernel calls.\nextern fn callback() { // TODO: Wake up the currently-waiting PrintFuture.\n} So far so good. Barbara then works on poll: fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { if kernel_is_print_done() { return Poll::Ready(kernel_get_buffer_back()); } Poll::Pending } Of course, there's something missing here. How does the callback wake the PrintFuture? She needs to store the Waker somewhere! Barbara puts the Waker in a global variable so the callback can find it (this is fine because the app is single threaded and callbacks do NOT interrupt execution the way Unix signals do): static mut PRINT_WAKER: Option = None; extern fn callback() { if let Some(waker) = unsafe { PRINT_WAKER.as_ref() } { waker.wake_by_ref(); }\n} She then modifies poll to set PRINT_WAKER: fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { if kernel_is_print_done() { return Poll::Ready(kernel_get_buffer_back()); } unsafe { PRINT_WAKER = Some(cx.waker()); } Poll::Pending } PRINT_WAKER is stored in .bss, which occupies space in RAM but not flash. It is two words in size. It points to a RawWakerVTable that is provided by the executor. RawWakerVTable's design is a compromise that supports environments both with and without alloc. In no-alloc environments, drop and clone are generally no-ops, and wake/wake_by_ref seem like duplicates. Looking at RawWakerVTable makes Barbara realize that even though Future was designed to work in embedded contexts, it may have too much overhead for her use case. Barbara decides to do some benchmarking. She comes up with a sample application -- an app that blinks a led and responds to button presses -- and implements it twice. One implementation does not use Future at all, the other does. Both implementations have two asynchronous interfaces: a timer interface and a GPIO interface, as well as an application component that uses the interfaces concurrently. In the Future-based app, the application component functions like a future combinator, as it is a Future that is almost always waiting for a timer or GPIO future to finish. To drive the application future, Barbara implements an executor. The executor functions like a background thread. Because alloc is not available, this executor contains a single future. The executor has a spawn function that accepts a future and starts running that future (overwriting the existing future in the executor if one is already present). Once started, the executor runs entirely in kernel callbacks. Barbara identifies several factors that add branching and error handling code to the executor: spawn should be a safe function, because it is called by high-level application code. However, that means it can be called by the future it contains. If handled naively, this would result in dropping the future while it executes. Barbara adds runtime checks to identify this situation. Waker is Sync, so on a multithreaded system, a future could give another thread access to its Waker and the other thread could wake it up. This could happen while the poll is executing, before poll returns Poll::Pending. Therefore, Barbara concludes that if wake is called while a future is being polled then the future should be re-polled, even if the current poll returns Poll::Pending. This requires putting a retry loop into the executor. A kernel callback may call Waker::wake after its future returns Poll::Ready. After poll returns Poll::Ready, the executor should not poll the future again, so Barbara adds code to ignore those wakeups. This duplicates the \"ignore spurious wakeups\" functionality that exists in the future itself. Ultimately, this made the executor logic nontrivial, and it compiled into 96 bytes of code. The executor logic is monomorphized for each future, which allows the compiler to make inlining optimizations, but results in a significant amount of duplicate code. Alternatively, it could be adapted to use function pointers or vtables to avoid the code duplication, but then the compiler definitely cannot inline Future::poll into the kernel callbacks. Barbara publishes an analysis of the relative sizes of the two app implementations, finding a large percentage increase in both code size and RAM usage (note: stack usage was not investigated). Most of the code size increase is from the future combinator code. In the no-Future version of the app, a kernel callback causes the following: The kernel callback calls the application logic's event-handling function for the specific event type. The application handles the event. The call in step 1 is inlined, so the compiled kernel callback consists only of the application's event-handling logic. In the Future-based version of the app, a kernel callback causes the following: The kernel callback updates some global state to indicate the event happened. The kernel callback invokes Waker::wake. Waker::wake calls poll on the application future. The application future has to look at the state saved in step 1 to determine what event happened. The application future handles the event. LLVM is unable to devirtualize the call in step 2, so the optimizer is unable to simplify the above steps. Steps 1-4 only exist in the future-based version of the code, and add over 200 bytes of code (note: Barbara believes this could be reduced to between 100 and 200 bytes at the expense of execution speed). Barbara concludes that Future is not suitable for highly-resource-constrained environments due to the amount of code and RAM required to implement executors and combinators. Barbara redesigns the library she is building to use a different concept for implementing async APIs in Rust that are much lighter weight. She has moved on from Future and is refining her async traits instead. Here are some ways in which these APIs are lighter weight than a Future implementation: After monomorphization, kernel callbacks directly call application code. This allows the application code to be inlined into the kernel callback. The callback invocation is more precise: these APIs don't make spurious wakeups, so application code does not need to handle spurious wakeups. The async traits lack an equivalent of Waker. Instead, all callbacks are expected to be 'static (i.e. they modify global state) and passing pointers around is replaced by static dispatch.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » The story","id":"336","title":"The story"},"337":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » 🤔 Frequently Asked Questions","id":"337","title":"🤔 Frequently Asked Questions"},"338":{"body":"core::future::Future isn't suitable for every asynchronous API in Rust. Future has a lot of capabilities, such as the ability to spawn dynamically-allocated futures, that are unnecessary in embedded systems. These capabilities have a cost, which is unavoidable without backwards-incompatible changes to the trait. We should look at embedded Rust's relationship with Future so we don't fragment the embedded Rust ecosystem. Other embedded crates use Future -- Future certainly has a lot of advantages over lighter-weight alternatives, if you have the space to use it.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » What are the morals of the story?","id":"338","title":"What are the morals of the story?"},"339":{"body":"This story is about someone who is an experienced systems programmer and an experienced Rust developer. All the other characters have \"new to Rust\" or \"new to programming\" as a key characteristic.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » Why did you choose Barbara to tell this story?","id":"339","title":"Why did you choose Barbara to tell this story?"},"34":{"body":"Add a FAQ with some of the other alterantives, or just acknowledging that you made an arbitrary choice there.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » What should I do when I'm trying to be specific but I have to make an arbitrary choice?","id":"34","title":"What should I do when I'm trying to be specific but I have to make an arbitrary choice?"},"340":{"body":"Alan would have found the #![no_std] crate ecosystem lacking async support. He would have moved forward with a Future-based implementation, unaware of its impact on code size and RAM usage. Grace would have handled the issue similarly to Barbara, but may not have tried as hard to use Future. Barbara has been paying attention to Rust long enough to know how significant the Future trait is in the Rust community and ecosystem. Niklaus would really have struggled. If he asked for help, he probably would've gotten conflicting advice from the community.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » How would this story have played out differently for the other characters?","id":"340","title":"How would this story have played out differently for the other characters?"},"341":{"body":"Future has many additional features that are nice-to-have: Future works smoothly in a multithreaded environment. Futures can be Send and/or Sync, and do not need to have interior mutability, which avoids the need for internal locking. Manipulating arbitrary Rust types without locking allows async fn to be efficient. Futures can be spawned and dropped in a dynamic manner: an executor that supports dynamic allocation can manage an arbitrary number of futures at runtime, and futures may easily be dropped to stop their execution. Dropping a future will also drop futures it owns, conveniently providing good cancellation semantics. A future that creates other futures (e.g. an async fn that calls other async fns) can be spawned with only a single memory allocation, whereas callback-based approaches need to allocate for each asynchronous component. Community and ecosystem support. This isn't a feature of Future per se, but the Rust language has special support for Future (async/await) and practically the entire async Rust ecosystem is based on Future. The ability to use existing async crates is a very strong reason to use Future over any alternative async abstraction. However, the code size impact of Future is a deal-breaker, and no number of nice-to-have features can outweigh a deal-breaker. Barbara's traits have every feature she needs . Using Future saves developer time relative to building your own async abstractions. Developers can use the time they saved to minimize code size elsewhere in the project. In some cases, this may result in a net decrease in code size for the same total effort. However, code size reduction efforts have diminishing returns, so projects that expect to optimize code size regardless likely won't find the tradeoff beneficial.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » Future has a lot of features that Barbara's traits don't have -- aren't those worth the cost?","id":"341","title":"Future has a lot of features that Barbara's traits don't have -- aren't those worth the cost?"},"342":{"body":"Future isolates the code that determines a future should wake up (the code that calls Waker::wake) from the code that executes the future (the executor). The only information transferred via Waker::wake is \"try waking up now\" -- any other information has to be stored somewhere. When polled, a future has to run logic to identify how it can make progress -- in many cases this requires answering \"who woke me up?\" -- and retrieve the stored information. Most completion-driven async APIs allow information about the event to be transferred directly to the code that handles the event. According to Barbara's analysis, the code required to determine what event happened was the majority of the size impact of Future.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » Is the code size impact of Future fundamental, or can the design be tweaked in a way that eliminates the tradeoff?","id":"342","title":"Is the code size impact of Future fundamental, or can the design be tweaked in a way that eliminates the tradeoff?"},"343":{"body":"Aaron Turon described futures as zero-cost abstractions . In the linked post, he elaborated on what he meant by zero-cost abstraction, and eliminating their impact on code size was not part of that definition. Since then, the statement that future is a zero-cost abstraction has been repeated many times, mostly without the context that Aaron provided. Rust has many zero-cost abstractions, most of which do not impact code size (assuming optimization is enabled), so it is easy for developers to see \"futures are zero-cost\" and assume that makes them lighter-weight than they are.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » I thought Future was a zero-cost abstraction?","id":"343","title":"I thought Future was a zero-cost abstraction?"},"344":{"body":"The library Barbara is writing only works in Tock OS' userspace environment. This environment is single-threaded: the runtime does not provide a way to spawn another thread, hardware interrupts do not execute in userspace, and there are no interrupt-style callbacks like Unix signals. All kernel callbacks are invoked synchronously, using a method that is functionally equivalent to a function call.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » How does Barbara's code handle thread-safety? Is her executor unsound?","id":"344","title":"How does Barbara's code handle thread-safety? Is her executor unsound?"},"345":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » 😱 Status quo stories: Barbara compares some code (and has a performance problem)","id":"345","title":"😱 Status quo stories: Barbara compares some code (and has a performance problem)"},"346":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » 🚧 Warning: Draft status 🚧","id":"346","title":"🚧 Warning: Draft status 🚧"},"347":{"body":"Barbara is recreating some code that has been written in other languages they have some familiarity with. These include C++, but also GC'd languages like Python. This code collates a large number of requests to network services, with each response containing a large amount of data. To speed this up, Barbara uses buffer_unordered, and writes code like this: let mut queries = futures::stream::iter(...) .map(|query| async move { let d: Data = self.client.request(&query).await?; d }) .buffer_unordered(32); use futures::stream::StreamExt;\nlet results = queries.collect::>().await; Barbara thinks this is similar in function to things she has seen using Python's asyncio.wait , as well as some code her coworkers have written using c++20's coroutines, using this : std::vector> tasks; for (const auto& query : queries) { tasks.push_back( folly::coro::co_invoke([this, &query]() -> folly::coro::Task { co_return co_await client_->co_request(query); } )\n}\nauto results = co_await folly:coro::collectAllWindowed( move(tasks), 32); However, the Rust code performs quite poorly compared to the other impls, appearing to effectively complete the requests serially, despite on the surface looking like effectively identical code. While investigating, Barbara looks at top, and realises that her coworker's C++20 code sometimes results in her 16 core laptop using 1600% CPU; her Rust async code never exceeds 100% CPU usage. She spends time investigating her runtime setup, but Tokio is configured to use enough worker threads to keep all her CPU cores busy. This feels to her like a bug in buffer_unordered or tokio, needing more time to investigate. Barbara goes deep into investigating this, spends time reading how buffer_unordered is implemented, how its underlying FuturesUnordered is implemented, and even thinks about how polling and the tokio runtime she is using works. She evens tries to figure out if the upstream service is doing some sort of queueing. Eventually Barbara starts reading more about c++20 coroutines, looking closer at the folly implementation used above, noticing that is works primarily with tasks , which are not exactly equivalent to rust Future's. Then it strikes her! request is implemented something like this: impl Client { async fn request(&self) -> Result { let bytes = self.inner.network_request().await? Ok(serialization_libary::from_bytes(&bytes)?) }\n} The results from the network service are sometimes (but not always) VERY large, and the BufferedUnordered stream is contained within 1 tokio task. The request future does non-trivial cpu work to deserialize the data. This causes significant slowdowns in wall-time as the the process CAN BE bounded by the time it takes the single thread running the tokio-task to deserialize all the data. This problem hadn't shown up in test cases, where the results from the mocked network service are always small; many common uses of the network service only ever have small results, so it takes a specific production load to trigger this issue, or a large scale test. The solution is to spawn tasks (note this requires 'static futures): let mut queries = futures::stream::iter(...) .map(|query| async move { let d: Data = tokio::spawn( self.client.request(&query)).await??; d }) .buffer_unordered(32); use futures::stream::StreamExt;\nlet results = queries.collect::>().await; Barbara was able to figure this out by reading enough and trying things out, but had that not worked, it would have probably required figuring out how to use perf or some similar tool. Later on, Barbara gets surprised by this code again. It's now being used as part of a system that handles a very high number of requests per second, but sometimes the system stalls under load. She enlists Grace to help debug, and the two of them identify via perf that all the CPU cores are busy running serialization_libary::from_bytes. Barbara revisits this solution, and discovers tokio::task::block_in_place which she uses to wrap the calls to serialization_libary::from_bytes: impl Client { async fn request(&self) -> Result { let bytes = self.inner.network_request().await? Ok(tokio::task::block_in_place(move || serialization_libary::from_bytes(&bytes))?) }\n} This resolves the problem as seen in production, but leads to Niklaus's code review suggesting the use of tokio::task::spawn_blocking inside request, instead of spawn inside buffer_unordered. This discussion is challenging, because the tradeoffs between spawn on a Future including block_in_place and spawn_blocking and then not spawning the containing Future are subtle and tricky to explain. Also, either block_in_place and spawn_blocking are heavyweight and Barbara would prefer to avoid them when the cost of serialization is low, which is usually a runtime-property of the system.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » The story","id":"347","title":"The story"},"348":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » 🤔 Frequently Asked Questions","id":"348","title":"🤔 Frequently Asked Questions"},"349":{"body":"Only in part. It may cause other kinds of contention or blocking on the runtime. As mentioned above, the deserialization work probably needs to be wrapped in something like block_in_place , so that other tasks are not starved on the runtime, or might want to use spawn_blocking . There are some important caveats/details that matter: This is dependent on how the runtime works. block_in_place + tokio::spawn might be better if the caller wants to control concurrency, as spawning is heavyweight when the deserialization work happens to be small. However, as mentioned above, this can be complex to reason about, and in some cases, may be as heavyweight as spawn_blocking spawn_blocking, at least in some executors, cannot be cancelled, a departure from the prototypical cancellation story in async Rust. \"Dependently blocking work\" in the context of async programming is a hard problem to solve generally. https://github.com/async-rs/async-std/pull/631 was an attempt but the details are making runtime's agnostic blocking are extremely complex. The way this problem manifests may be subtle, and it may be specific production load that triggers it. The outlined solutions have tradeoffs that each only make sense for certain kind of workloads. It may be better to expose the io aspect of the request and the deserialization aspect as separate APIs, but that complicates the library's usage, lays the burden of choosing the tradeoff on the callee (which may not be generally possible).","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » Are any of these actually the correct solution?","id":"349","title":"Are any of these actually the correct solution?"},"35":{"body":"It doesn't have to be perfect. Pick the one that seems like the closest fit. If you really feel stuck, though, come talk to us on Zulip about it!","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » None of the characters are a fit for my story.","id":"35","title":"None of the characters are a fit for my story."},"350":{"body":"Producing concurrent, performant code in Rust async is not always trivial. Debugging performance issues can be difficult. Rust's async model, particularly the blocking nature of polling, can be complex to reason about, and in some cases is different from other languages choices in meaningful ways. CPU-bound code can be easily hidden.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » What are the morals of the story?","id":"350","title":"What are the morals of the story?"},"351":{"body":"This is a issue I personally hit while writing code required for production.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » What are the sources for this story?","id":"351","title":"What are the sources for this story?"},"352":{"body":"That's probably the person in the cast that I am most similar to, but Alan and to some extent Grace make sense for the story as well.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » Why did you choose Barbara to tell this story?","id":"352","title":"Why did you choose Barbara to tell this story?"},"353":{"body":"Alan: May have taken longer to figure out. Grace: Likely would have been as interested in the details of how polling works. Niklaus: Depends on their experience.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » How would this story have played out differently for the other characters?","id":"353","title":"How would this story have played out differently for the other characters?"},"354":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » 😱 Status quo stories: Barbara makes their first foray into async","id":"354","title":"😱 Status quo stories: Barbara makes their first foray into async"},"355":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » 🚧 Warning: Draft status 🚧","id":"355","title":"🚧 Warning: Draft status 🚧"},"356":{"body":"It's Barbara's last year at their university and for their master's thesis, they have chosen to create a distributed database. They have chosen to use their favorite language, Rust, because Rust is a suitable language for low latency applications that they have found very pleasant to work in. Their project presents quite a challenge since they have only written some small algorithms in Rust, and it's also their first foray into creating a big distributed system.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » Barbara's first big project in Rust: a journey marred by doubt","id":"356","title":"Barbara's first big project in Rust: a journey marred by doubt"},"357":{"body":"Up until now, Barbara has followed the development of Async from afar by reading the occasional Boats blog post, and celebrating the release announcements with the rest of the happy community. Due to never having worked with async in other languages, and not having had a project suitable for async experimentation, their understanding of async and its ecosystem remained superficial. However, since they have heard that async is suitable for fast networked applications, they decide to try using async for their distributed database. After all, a fast networked application is exactly what they are trying to make. To further solidify the decision of using async, Barbara goes looking for some information and opinions on async in Rust. Doubts created by reading some tweets about how most people should be using threads instead of async for simplicity reasons are quickly washed away by helpful conversations on the Rust discord.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » Deciding to use Async","id":"357","title":"Deciding to use Async"},"358":{"body":"Still enamored with the first edition of the Rust book, they decide to go looking for an updated version, hoping that it will teach them async in the same manner that it taught them so much about the language and design patterns for Rust. Disappointed, they find no mention of async in the book, aside from a note that it exists as a keyword. Not to be deterred, they go looking further, and start looking for similarly great documentation about async. After stumbling upon the async book, their disappointment is briefly replaced with relief as the async book does a good job at solidifying what they have already learned in various blog posts about async, why one would use it and even a bit about how it all works under the hood. They skim over the parts that seem a bit too in-depth for now like pinning, as they're looking to quickly get their hands dirty. Chapter 8: The Async Ecosystem teaches them what they already picked up on through blog posts and contentious tweets: the choice of the runtime has large implications on what libraries they can use.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » Learning about Async","id":"358","title":"Learning about Async"},"359":{"body":"Barbara's dreams to quickly get their hands dirty with async Rust are shattered as they discover that they first need to make a big choice: what executor to use. Having had quite a bit of exposure to the conversations surrounding the incompatible ecosystems, Barbara is perhaps a bit more paranoid about making the wrong choice than the average newcomer. This feels like a big decision to them, as it would influence the libraries they could use and switching to a different ecosystem would be all but impossible after a while. Since they would like to choose what libraries they use before having to choose an executor, Barbara feels like the decision-making is turned on its head. Their paranoia about choosing the right ecosystem is eased after a few days of research, and some more conversations on the Rust subreddit, after which they discover that most of the RPC libraries they might want to use are situated within the most popular Tokio ecosystem anyways. Tokio also has a brief tutorial, which teaches them some basic concepts within Tokio and talks a bit more about async in general.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » The wrong time for big decisions","id":"359","title":"The wrong time for big decisions"},"36":{"body":"The more specific you can get, the better. If you can link to tweets or blog posts, that's ideal. You can also add notes into the conversations folder and link to those. Of course, you should be sure people are ok with that.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » How should I describe the \"evidence\" for my status quo story?","id":"36","title":"How should I describe the \"evidence\" for my status quo story?"},"360":{"body":"Being reasonably confident in their choice of ecosystem, Barbara starts building their distributed system. After a while, they want to introduce another networking library of which the api isn't async. Luckily Barbara picked up on that blocking was not allowed in async (or at least not in any of the currently existing executors), through reading some blog posts about async. More reddit discussions point them towards spawn_blocking in Tokio, and even rayon. But they're none the wiser about how to apply these paradigms in a neat manner. Previously the design patterns learned in other languages, combined with the patterns taught in the book, were usually sufficient to come to reasonably neat designs. But neither their previous experience, nor the async book nor the Tokio tutorial were of much use when trying to neatly incorporate blocking code into their previously fully async project.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » Woes of a newcomer to async","id":"360","title":"Woes of a newcomer to async"},"361":{"body":"To this day the lack of a blessed approach leaves Barbara unsure about the choices they've made so far and misconceptions they might still have, evermore wondering if the original tweets they read about how most people should just stick to threads were right all along.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » Confused ever after","id":"361","title":"Confused ever after"},"362":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » 🤔 Frequently Asked Questions","id":"362","title":"🤔 Frequently Asked Questions"},"363":{"body":"When entering Rust's async world without previous async experience, and no benchmarks for what good async design patters look like, getting started with async can be a bit overwhelming. Other languages which only have a single ecosystem seem to have a much better story for beginners since there's no fear of lock in, or ecosystem fomo about making the wrong choices early on. This lack of documentation on design patterns, and solid guidance about the async ecosystem for unopiniated newcomers is partially made up for by Rust's community which often provides educated opinions on the design and technical choices one should make. Because of this getting started in async favors those who know where to find answers about Rust: blogs, Discord, Reddit, etc.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » What are the morals of the story?","id":"363","title":"What are the morals of the story?"},"364":{"body":"This is based on the author's personal experience","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » What are the sources for their story?","id":"364","title":"What are the sources for their story?"},"365":{"body":"Various blog posts of withoutboats A blog post which spurred a lot of discussion about blocking in async: https://async.rs/blog/stop-worrying-about-blocking-the-new-async-std-runtime/ A nice blog post about blocking in Tokio, which still doesn't have any nice design patterns: https://ryhl.io/blog/async-what-is-blocking/ An example of design patterns being discussed for sync Rust in the book: https://doc.rust-lang.org/book/ch17-03-oo-design-patterns.html#trade-offs-of-the-state-pattern Perhaps I should've read a bit more of Niko's blogs and his async interviews.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » What documentation did the character read during this story?","id":"365","title":"What documentation did the character read during this story?"},"366":{"body":"Like the author of this story, Barbara had previous experience with Rust. Knowing where to find the community also played a significant part in this story. This story could be construed as how Barbara got started with async while starting to maintain some async projects.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » Why did you choose Barbara to tell their story?","id":"366","title":"Why did you choose Barbara to tell their story?"},"367":{"body":"Characters with previous async experience would probably have had a better experience getting started with async in Rust since they might know what design patterns to apply to async code. On the other hand, since Rust's async story is noticeably different from other languages, having async experience in other languages might even be harmful by requiring the user to unlearn certain habits. I don't know if this is actually the case since I don't have any experience with async in other languages. Characters which are less in touch with Rust's community than Barbara might have had a much worse time, since just skimming over the documentation might leave some lost, and unaware of common pitfalls. On the other hand, not having learned a lot about async through blog posts and other materials, might compel someone to read the documentation more thoroughly.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » How would their story have played out differently for the other characters?","id":"367","title":"How would their story have played out differently for the other characters?"},"368":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » 😱 Status quo stories: Barbara needs Async Helpers","id":"368","title":"😱 Status quo stories: Barbara needs Async Helpers"},"369":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » 🚧 Warning: Draft status 🚧","id":"369","title":"🚧 Warning: Draft status 🚧"},"37":{"body":"We want all Async Rust users and their hopes and dreams for what Async Rust should be in the future to be reflected in the async vision doc, so please help us by writing 'shiny future' stories about what you would like async Rust to look like! Remember: we are in a brainstorming period. Please feel free to leave comments in an effort to help someone improve their PRs, but if you would prefer a different approach, you are better off writing your own story. (In fact, you should write your own story even if you like their approach but just have a few alternatives that are worth thinking over.)","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » ❓ How to vision: \"Shiny future\" stories","id":"37","title":"❓ How to vision: \"Shiny future\" stories"},"370":{"body":"Barbara , an experienced Rust user, is prototyping an async Rust service for work. To get things working quickly, she decides to prototype in tokio , since it is unclear which runtime her work will use. She starts adding warp and tokio to her dependencies list. She notices that warp suggests using tokio with the full feature. She's a bit concerned about how this might affect the compile times and also that all of tokio is needed for her little project, but she pushes forward. As she builds out functionality, she's pleased to see tokio provides a bunch of helpers like join! and async versions of the standard library types like channels and mutexes. After completing one endpoint, she moves to a new one which requires streaming http responses to the client. Barbara quickly finds out from tokio docs , that it does not provide a stream type, and so she adds tokio-stream to her dependencies. Moving on she tries to make some functions generic over the web framework underneath, so she tries to abstract off the functionality to a trait. So she writes an async function inside a trait, just like a normal function. trait Client { async fn get();\n} Then she gets a helpful error message. error[E0706]: functions in traits cannot be declared `async` --> src/lib.rs:2:5 |\n2 | async fn get(); | -----^^^^^^^^^^ | | | `async` because of this | = note: `async` trait functions are not currently supported = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait She then realizes that Rust doesn't support async functions in traits yet, so she adds async-trait to her dependencies. Some of her functions are recursive, and she wanted them to be async functions, so she sprinkles some async/.await keywords in those functions. async fn sum(n: usize) -> usize { if n == 0 { 0 } else { n + sum(n - 1).await }\n} Then she gets an error message. error[E0733]: recursion in an `async fn` requires boxing --> src/lib.rs:1:27 |\n1 | async fn sum(n: usize) -> usize { | ^^^^^ recursive `async fn` | = note: a recursive `async fn` must be rewritten to return a boxed `dyn Future` So to make these functions async she starts boxing her futures the hard way, fighting with the compiler. She knows that async keyword is sort of a sugar for impl Future so she tries the following at first. fn sum(n: usize) -> Box> { Box::new(async move { if n == 0 { 0 } else { n + sum(n - 1).await } })\n} The compiler gives the following error. error[E0277]: `dyn Future` cannot be unpinned --> src/main.rs:11:17 |\n11 | n + sum(n - 1).await | ^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `dyn Future` | = note: required because of the requirements on the impl of `Future` for `Box>` = note: required by `poll` She then reads about Unpin and Pin, and finally comes up with a solution. fn sum(n: usize) -> Pin>> { Box::pin(async move { if n == 0 { 0 } else { n + sum(n - 1).await } })\n} The code works! She searches online for better methods and finds out the async-book . She reads about recursion and finds out a cleaner way using the futures crate. use futures::future::{BoxFuture, FutureExt}; fn sum(n: usize) -> BoxFuture<'static, usize> { async move { if n == 0 { 0 } else { n + sum(n - 1).await } }.boxed()\n} She also asks one of her peers for a code review asynchronously, and after awaiting their response, she learns about the async-recursion crate. Then she adds async-recursion to the dependencies. Now she can write the follwing, which seems reasonably clean: #[async_recursion]\nasync fn sum(n: usize) -> usize { if n == 0 { 0 } else { n + sum(n - 1).await }\n} As she is working, she realizes that what she really needs is to write a Stream of data. She starts trying to write her Stream implementation and spends several hours banging her head against her desk in frustration (her challenges are pretty similar to what Alan experienced ). Ultimately she's stuck trying to figure out why her &mut self.foo call is giving her errors: error[E0277]: `R` cannot be unpinned --src/main.rs:52:26 |\n52 | Pin::new(&mut self.reader).poll_read(cx, buf) | ^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `R` | = note: required by `Pin::

    ::new`\nhelp: consider further restricting this bound |\n40 | R: AsyncRead + Unpin, | ^^^^^^^ Fortunately, that weekend, @fasterthanlime publishes a blog post covering the gory details of Pin. Reading that post, she learns about pin-project , which she adds as a dependency. She's able to get her code working, but it's kind of a mess. Feeling quite proud of herself, she shows it to a friend, and they suggest that maybe she ought to try the async-stream crate. Reading that, she realizes she can use this crate to simplify some of her streams, though not all of them fit. \"Finally!\", Barbara says, breathing a sigh of relief. She is done with her prototype, and shows it off at work, but to her dismay, the team decides that they need to use a custom runtime for their use case. They're building an embedded system and it has relatively limited resources. Barbara thinks, \"No problem, it should be easy enough to change runtimes, right?\" So now Barbara starts the journey of replacing tokio with a myriad of off the shelf and custom helpers. She can't use warp so now she has to find an alternative. She also has to find a new channel implementations and there are a few: In futures async-std has one, but it seems to be tied to another runtime so she can't use that. smol has one that is independent. This process of \"figure out which alternative is an option\" is repeated many times. She also tries to use the select! macro from futures but it requires more pinning and workarounds (not to mention a stack overflow or two). But Barbara fights through all of it. In the end, she gets it to work, but she realizes that she has a ton of random dependencies and associated compilation time. She wonders if all that dependencies will have a negative effect on the binary size. She also had to rewrite some bits of functionality on her own.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » The story","id":"370","title":"The story"},"371":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » 🤔 Frequently Asked Questions","id":"371","title":"🤔 Frequently Asked Questions"},"372":{"body":"Functionality is found either in \"framework\"-like crates (e.g., tokio) and spread around many different ecosystem crates. It's sometimes difficult to discover where this functionality lives. Additionally, the trouble of non runtime-agnostic libraries becomes very apparent. Helpers and utilities might have analogues across the ecosystem, but they are different in subtle ways. Some patterns are clean if you know the right utility crate and very painful otherwise.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » What are the morals of the story?","id":"372","title":"What are the morals of the story?"},"373":{"body":"Issue 105","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » What are the sources for this story?","id":"373","title":"What are the sources for this story?"},"374":{"body":"They are functions/macros that helps with certain basic pieces of functionality and features. Like to await on multiple futures concurrently (join! in tokio), or else race the futures and take the result of the one that finishes first.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » What are helper functions/macros?","id":"374","title":"What are helper functions/macros?"},"375":{"body":"Lifetimes would make it a bit more difficult. Although for simple functions it shouldn't be much of a problem. fn concat<'a>(string: &'a mut String, slice: &'a str) -> Pin + 'a>> { Box::pin(async move { if !slice.is_empty() { string.push_str(&slice[0..1]); concat(string, &slice[1..]).await; } })\n}","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » Will there be a difference if lifetimes are involved in async recursion functions?","id":"375","title":"Will there be a difference if lifetimes are involved in async recursion functions?"},"376":{"body":"This particular issue impacts all users of Rust even (and sometimes especially) experienced ones.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » Why did you choose Barbara to tell this story?","id":"376","title":"Why did you choose Barbara to tell this story?"},"377":{"body":"Other characters may not know all their options and hence might have fewer problems as a result.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » How would this story have played out differently for the other characters?","id":"377","title":"How would this story have played out differently for the other characters?"},"378":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » 😱 Status quo stories: Barbara plays with async","id":"378","title":"😱 Status quo stories: Barbara plays with async"},"379":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » 🚧 Warning: Draft status 🚧","id":"379","title":"🚧 Warning: Draft status 🚧"},"38":{"body":"Just want to get started? Here are quick instructions to get you going: To write your own story: Create a PR based on the \"shiny future\" template . Do not add your file to SUMMARY.md -- that will create conflicts, we'll do it manually after merging.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » TL;DR","id":"38","title":"TL;DR"},"380":{"body":"Barbara has been following async rust for a long time, in eager anticipation of writing some project using async. The last time she tried to do anything with futures in rust was more than a year ago (before async functions), and when you had to chain futures together with many calls to then (often leading to inscrutable error messages hundreds of characters long). This was not a pleasant experience for Barbara. After watching the development of rust async/await (by following discussions on /r/rust and the internals forums), she wants to start to play around with writing async code. Before starting on any real project, she starts with a \"playground\" where she can try to write some simple async rust code to see how it feels and how it compares to how async code feels in other languages she knows (like C# and JavaScript). She starts by opening a blank project in VSCode with rust-analyzer . Because she's been following the overall state of rust async, she knows that she needs a runtime, and quickly decides to use tokio, because she knows its quite popular and well documented. After looking the long length of the tokio tutorial , she decides to not read most of it right now, and tries to dive right in to writing code. But she does look at the \" Hello Tokio \" section that shows what feature flags are required by tokio: [dependencies]\ntokio = { version = \"1\", features = [\"full\"] } Poking around the tokio API docs in search of something to play with, she sees a simple future that looks interesting: the sleep future that will wait for a certain duration to elapse before resolving. Borrowing again from the \"Hello Tokio\" tutorial to make sure she has the correct spelling for the tokio macros, she writes up the following code: #[tokio::main]\npub async fn main() { let mut rng = thread_rng(); let t = Uniform::new(100, 5000); let mut futures = Vec::new(); for _ in 0..10 { let delay = rng.sample(t); futures.push(tokio::time::sleep(Duration::from_millis(delay))); } println!(\"Created 10 futures\"); for f in futures { f.await; } println!(\"Done waiting for all futures\");\n} This very first version she wrote compiled on the first try and had no errors when running it. Barbara was pleased about this. However, this example is pretty boring. The program just sits there for a few seconds doing nothing, and giving no hints about what it's actually doing. So for the next iteration, Barbara wants to have a message printed out when each future is resolved. She tries this code at first: let mut futures = Vec::new();\nfor _ in 0..10 { let delay = rng.sample(t); futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| { println!(\"Done!\"); }));\n}\nprintln!(\"Created 10 futures\"); But the compiler gives this error: error[E0277]: `()` is not a future --> src\\main.rs:13:71 |\n13 | futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| { | ^^^^ `()` is not a future | = help: the trait `futures::Future` is not implemented for `()` Even though the error is pointing at the then function, Barbara pretty quickly recognizes the problem -- her closure needs to return a future, but () is not a future (though she wonders \"why not?\"). Looking at the tokio docs is not very helpful. The Future trait isn't even defined in the tokio docs, so she looks at the docs for the Future trait in the rust standard library docs and she sees it only has 5 implementors; one of them is called Ready which looks interesting. Indeed, this struct is a future that will resolve instantly, which is what she wants: for _ in 0..10 { let delay = rng.sample(t); futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| { println!(\"Done!\"); std::future::ready(()) }));\n} This compiles without error, but when Barbara goes to run the code, the output surprises her a little bit: After waiting running the program, nothing happened for about 4 seconds. Then the first \"Done!\" message was printed, followed very quickly by the other 9 messages. Based on the code she wrote, she expected 10 \"Done!\" messages to be printed to the console over the span of about 5 seconds, with roughly a uniform distribution. After running the program few more times, she always observes that while the first view messages are printed after some delay, the last few messages are always printed all at once. Barbara has experience writing async code in JavaScript, and so she thinks for a moment about how this toy code might have looked like if she was using JS: async function main() { const futures = []; for (let idx = 0; idx < 10; idx++) { const delay = 100 + (Math.random() * 4900); const f = new Promise(() => { setTimeout(() => console.log(\"Done!\"), delay) }) futures.push(f); } Promise.all(futures);\n} After imagining this code, Barbara has an \"ah-ha!\" moment, and realizes the problem is likely how she is waiting for the futures in her rust code. In her rust code, she is waiting for the futures one-by-one, but in the JavaScript code she is waiting for all of them simultaneously. So Barbara looks for a way to wait for a Vec of futures. After a bunch of searching in the tokio docs, she finds nothing. The closet thing she finds is a join! macro, but this appears to only work on individually specified futures, not a Vec of futures. Disappointed, she then looks at the future module from the rust standard library, but module is tiny and very clearly doesn't have what she wants. Then Barbara has another \"ah-ha!\" moment and remembers that there's a 3rd-party crate called \" futures \" on crates.io that she's seen mentioned in some /r/rust posts. She checks the docs and finds the join_all function which looks like what she wants: let mut futures = Vec::new();\nfor _ in 0..10 { let delay = rng.sample(t); futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| { println!(\"Done!\"); std::future::ready(()) }));\n}\nprintln!(\"Created 10 futures\"); futures::future::join_all(futures).await;\nprintln!(\"Done\"); It works exactly as expected now! After having written the code, Barbara begins to remember an important detail about rust futures that she once read somewhere: rust futures are lazy, and won't make progress unless you await them. Happy with this success, Barbara continues to expand her toy program by making a few small adjustments: for counter in 0..10 { let delay = rng.sample(t); let delay_future = tokio::time::sleep(Duration::from_millis(delay)); if counter < 9 { futures.push(delay_future.then(|_| { println!(\"Done!\"); std::future::ready(()) })); } else { futures.push(delay_future.then(|_| { println!(\"Done with the last future!\"); std::future::ready(()) })); }\n} This fails to compile: error[E0308]: mismatched types = note: expected closure `[closure@src\\main.rs:16:44: 19:14]` found closure `[closure@src\\main.rs:21:44: 24:14]` = note: no two closures, even if identical, have the same type = help: consider boxing your closure and/or using it as a trait object This error doesn't actually surprise Barbara that much, as she is familiar with the idea of having to box objects sometimes. She does notice the \"consider boxing your closure\" error, but thinks that this is not likely the correct solution. Instead, she thinks that she should box the entire future. She first adds explicit type annotations to the Vec: let mut futures: Vec>> = Vec::new(); She then notices that her IDE (VSCode + rust-analyzer) has a new error on each call to push. The code assist on each error says Store this in the heap by calling 'Box::new'. She is exactly what she wants, and it happy that rust-analyzer perfectly handled this case. Now each future is boxed up, but there is one final error still, this time on the call to join_all(futures).await: error[E0277]: `dyn futures::Future` cannot be unpinned --> src\\main.rs:34:31 |\n34 | futures::future::join_all(futures).await; Barbara has been around rust for long enough to know that there is a Box::pin API, but she doesn't really understand what it does, nor does she have a good intuition about what this API is for. But she is accustomed to just trying things in rust to see if they work. And indeed, after changing Box::new to Box::pin: futures.push(Box::pin(delay_future.then(|_| { println!(\"Done!\"); std::future::ready(())\n}))); and adjusting the type of the Vec: let mut futures: Vec>>> = Vec::new(); the code compiles and runs successfully. But even though the run is working correctly, she wishes she had a better idea why pinning is necessary here and feels a little uneasy having to use something she doesn't yet understand well. As one final task, Barbara wants to try to replace the chained call to then with a async block. She remembers that these were a big deal in a recent release of rust, and that they looked a lot nicer than a long chain of then calls. She doesn't remember the exact syntax for this, but she read a blog post about async rust a few weeks ago, and has a vague idea of how it looks. She tries writing this: futures.push(Box::pin(async || { tokio::time::sleep(Duration::from_millis(delay)).await; println!(\"Done after {}ms\", delay);\n})); The compiler gives an error: error[E0658]: async closures are unstable --> src\\main.rs:14:31 |\n14 | futures.push(Box::pin(async || { | ^^^^^ | = note: see issue #62290 for more information = help: add `#![feature(async_closure)]` to the crate attributes to enable = help: to use an async block, remove the `||`: `async {` Barbara knows that async is stable and using this nightly feature isn't what she wants. So the tries the suggestion made by the compiler and removes the || bars: futures.push(Box::pin(async { tokio::time::sleep(Duration::from_millis(delay)).await; println!(\"Done after {}ms\", delay);\n})); A new error this time: error[E0597]: `delay` does not live long enough\n15 | | tokio::time::sleep(Duration::from_millis(delay)).await; | | ^^^^^ borrowed value does not live long enough This is an error that Barbara is very familiar with. If she was working with a closure, she knows she can use a move-closure (since her delay type is Copy). But she not using a closure (she just tried, but the compiler told her to switch to an async block), but Barbara's experience with rust tells her that it's a very consistent language. Maybe the same keyword used in move closures will work here? She tries it: futures.push(Box::pin(async move { tokio::time::sleep(Duration::from_millis(delay)).await; println!(\"Done after {}ms\", delay);\n})); It works! Satisfied but still thinking about async rust, Barbara takes a break to eat a cookie.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » The story","id":"380","title":"The story"},"381":{"body":"Here are some standard FAQ to get you started. Feel free to add more!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » 🤔 Frequently Asked Questions","id":"381","title":"🤔 Frequently Asked Questions"},"382":{"body":"Barbara has years of rust experience that she brings to bear in her async learning experiences.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » Why did you choose Barbara to tell this story?","id":"382","title":"Why did you choose Barbara to tell this story?"},"383":{"body":"Due to Barbara's long experience with rust, she knows most of the language pretty well (except for things like async, and advanced concepts like pinned objects). She generally trusts the rust compiler , and she's learned over the years that she can learn how to use an unfamiliar library by reading the API docs. As long as she can get the types to line up and the code to compile, things generally work as she expects. But this is not the case with rust async: There can be new syntax to learn (e.g. async blocks) It can be hard to find basic functionality (like futures::future::join_all) It's not always clear how the ecosystem all fits together (what functionality is part of tokio? What is part of the standard library? What is part of other crates like the futures crate?) Sometimes it looks like there multiple ways to do something: What's the difference between futures::future::Future and std::future::Future? What's the difference between tokio::time::Instant and std::time::Instant? What's the difference between std::future::ready and futures::future::ok? Barbara's has a lot to learn. Her usual methods of learning how to use new crates doesn't really work when learning tokio and async. She wonders if she actually should have read the long tokio tutorial before starting. She realizes it will take her a while to build up the necessary foundation of knowledge before she can be proficient in async rust. There were several times where the compiler or the IDE gave helpful error messages and Barbara appreciated these a lot.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » What are the morals of the story?","id":"383","title":"What are the morals of the story?"},"384":{"body":"Personal experiences of the author","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » What are the sources for this story?","id":"384","title":"What are the sources for this story?"},"385":{"body":"Other characters would likely have written all the same code as Barbara, and probably would have run into the same problems. But other characters might have needed quite a bit longer to get to the solution. For example, it was Barbara's experience with move-closures that led her to try adding the move keyword to the async block. And it was her general \"ambient knowledge\" of things that allowed her to remember that things like the futures crate exist. Other characters would have likely needed to resort to an internet search or asking on a rust community.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » How would this story have played out differently for the other characters?","id":"385","title":"How would this story have played out differently for the other characters?"},"386":{"body":"Barbara makes their first steps in async is Barbara in a slightly different universe. Alan started trusting the rust compiler is a similar story about a different character.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » What are other related stories?","id":"386","title":"What are other related stories?"},"387":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » 😱 Status quo stories: Barbara tries async streams","id":"387","title":"😱 Status quo stories: Barbara tries async streams"},"388":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » 🚧 Warning: Draft status 🚧","id":"388","title":"🚧 Warning: Draft status 🚧"},"389":{"body":"Barbara has years of experience in Rust and was looking forward to using some of that experience with the brand-new async functionality. Async/await had been a dream of Rust for so long, and it was finally here! As she began her next side project, she would quickly partner up with other experienced Rust developers. One of these Rust developers, who had more async experience than Barbara, suggested they use 'async streams' as the core abstraction for this project. Barbara trusted the experience of this other developer. Though she didn't yet understand how async streams worked, she was happy to go along with the decision and build her experience over time. Month after month, the side project grew in scope and number of users. Potential contributors would try to contribute, but some would leave because they found the combination of concepts and the additional set of borrowchecker-friendly code patterns difficult to understand and master. Barbara was frustrated to lose potential contributors but kept going. Users also began to discover performance bottlenecks as they pushed the system harder. Barbara, determined to help the users as best she could, pulled her thinking cap tight and started to probe the codebase. In her investigations, she experimented with adding parallelism to the async stream. She knew that if she called .next() twice, that in theory she should have two separate futures. There were a few ways to run multiple futures in parallel, so this seemed like it might pan out to be a useful way of leveraging the existing architecture. Unfortunately, to Barbara's chagrin, async streams do not support this kind of activity. Each .next() must be awaited so that the ownership system allowed her to get the next value in the stream. Effectively, this collapsed the model to being a synchronous iterator with a more modern scent. Barbara was frustrated and started to clarify her understanding of what asynchrony actually meant, looking through the implementations for these abstractions. When she was satisfied, she took a step back and thought for a moment. If optional parallelism was a potential win and the core data processing system actually was going to run synchronously anyway -- despite using async/await extensively in the project -- perhaps it would make more sense to redesign the core abstraction. With that, Barbara set off to experiment with a new engine for her project. The new engine focused on standard iterators and rayon instead of async streams. As a result, the code was much easier for new users, as iterators are well-understood and have good error messages. Just as importantly, the code was noticeably faster than its async counterpart. Barbara benchmarked a variety of cases to be sure, and always found that the new, simpler approach performed better than the async stream original. To help those who followed after her, Barbara sat down to write out her experiences to share with the rest of the world. Perhaps future engineers might learn from the twists and turns her project took.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » The story","id":"389","title":"The story"},"39":{"body":"If you have an idea you'd like to write about, please open a PR using this template and adding a new file into the shiny_future directory . Do not add your file to SUMMARY.md , that will create conflicts. We'll do it after merging.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » How to open a PR","id":"39","title":"How to open a PR"},"390":{"body":"Here are some standard FAQ to get you started. Feel free to add more!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » 🤔 Frequently Asked Questions","id":"390","title":"🤔 Frequently Asked Questions"},"391":{"body":"Easy to get the wrong idea. The current state of documentation does not make the use cases clear, so it's easy to grab this as an abstraction because it's the closest that fits. Async streams are just iterators. Async streams do not offer useful asynchrony in and of themselves. A possible help here might be renaming \"async streams\" to \"async iterators\" to help underscore their use case and help developers more quickly understand their limitations. A single async stream can not be operated on in parallel. They open up asynchrony only during the .next() step and are unable to offer asynchrony between steps (eg by calling .next() twice and operating on the resulting Futures).","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » What are the morals of the story?","id":"391","title":"What are the morals of the story?"},"392":{"body":"Two years of experience with async streams in Nushell. You can watch a recording of the on-going experimentation as well. User stories for the difficulty of using async streams were largely shared with the team on the project discord . We tried a number of different approaches including using the async_stream! macro, removing off the async_stream! macro because of the error message cliff, and variations of the above.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » What are the sources for this story?","id":"392","title":"What are the sources for this story?"},"393":{"body":"Barbara is an experienced engineer who may come to async streams and async/await in general with a partially-incorrect set of baseline understanding. It may take her time to understand and see more clearly where her model was wrong because there are things similar to other experiences she's had. For example, Rust futures differ from C++ futures and do not offer the same style of asynchrony. Terms like \"streams\" sound like they may have more internal functionality, and it would be easy for an experienced developer to trip up with the wrong starting assumption.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » Why did you choose Barbara to tell this story?","id":"393","title":"Why did you choose Barbara to tell this story?"},"394":{"body":"Alan may have come to a similar idea for an architecture, as async/await is popular in languages like JavaScript and C#. Once Alan attempted to use asynchrony between units of work, namely using async streams, this is where Alan may have failed. The amount of Rust one has to know to succeed here is quite high and includes understanding Arc, Pin, Streams, traits/adapters, the borrowchecker and dealing with different types of errors, and more. Grace may have chosen a different core abstraction from the start. She has a good chance of thinking through how she'd like the data processing system to work. It's possible she would have found threads and channels a better fit. This would have had different trade-offs. Niklaus may have also tried to go down the async stream path. The information available is mixed and hype around async/await is too strong. This makes it shine brighter than it should. Without experience with different systems languages to temper the direction, the most likely path would be to experiment with asynchrony and hope that \"underneath the surface it does the right thing.\"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » How would this story have played out differently for the other characters?","id":"394","title":"How would this story have played out differently for the other characters?"},"395":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » 😱 Status quo stories: Barbara trims a stacktrace","id":"395","title":"😱 Status quo stories: Barbara trims a stacktrace"},"396":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » 🚧 Warning: Draft status 🚧","id":"396","title":"🚧 Warning: Draft status 🚧"},"397":{"body":"Barbara is triaging the reported bugs for her SLOW library. For each bug, she tries to quickly see if she can diagnose the basic area of code that is affected so she knows which people to ping to help fix it. She opens a bug report from a user complaining about a panic when too many connections arrive at the same time. The bug report includes a backtrace from the user's code, and it looks like this: thread 'main' panicked at 'something bad happened here', src/main.rs:16:5\nstack backtrace: 0: std::panicking::begin_panic at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:519:12 1: slow_rs::process_one::{{closure}} at ./src/main.rs:16:5 2: as core::future::future::Future>::poll at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19 3: slow_rs::process_many::{{closure}} at ./src/main.rs:10:5 4: as core::future::future::Future>::poll at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19 5: slow_rs::main::{{closure}}::{{closure}} at ./src/main.rs:4:9 6: as core::future::future::Future>::poll at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19 7: slow_rs::main::{{closure}} at ./src/main.rs:3:5 8: as core::future::future::Future>::poll at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19 9: tokio::park::thread::CachedParkThread::block_on::{{closure}} at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/park/thread.rs:263:54 10: tokio::coop::with_budget::{{closure}} at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/coop.rs:106:9 11: std::thread::local::LocalKey::try_with at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:272:16 12: std::thread::local::LocalKey::with at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:248:9 13: tokio::coop::with_budget at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/coop.rs:99:5 14: tokio::coop::budget at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/coop.rs:76:5 15: tokio::park::thread::CachedParkThread::block_on at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/park/thread.rs:263:31 16: tokio::runtime::enter::Enter::block_on at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/runtime/enter.rs:151:13 17: tokio::runtime::thread_pool::ThreadPool::block_on at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/runtime/thread_pool/mod.rs:71:9 18: tokio::runtime::Runtime::block_on at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/runtime/mod.rs:452:43 19: slow_rs::main at ./src/main.rs:1:1 20: core::ops::function::FnOnce::call_once at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5\nnote: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. Barbara finds the text overwhelming. She can't just browse it to figure out what code is affected. Instead, she pops up a new tab with gist.github.com copies the text into that handy text box and starts deleting stuff. To start, she deletes the first few lines until her code appears, then she deletes: the extra lines from calls to poll that are introduced by the async fn machinery; the bits of code that come from tokio that don't affect her; the intermediate wrappers from the standard library pertaining to thread-local variables. She's a bit confused by the ::{closure} lines on her symbols but she learned by now that this is normal for async fn. After some work, she has reduced her stack to this: thread 'main' panicked at 'something bad happened here', src/main.rs:16:5\nstack backtrace: 1: slow_rs::process_one::{{closure}} at ./src/main.rs:16:5 3: slow_rs::process_many::{{closure}} at ./src/main.rs:10:5 5: slow_rs::main::{{closure}}::{{closure}} at ./src/main.rs:4:9 7: slow_rs::main::{{closure}} at ./src/main.rs:3:5 13: 19: slow_rs::main\nnote: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. Based on this, she is able to figure out who to ping about the problem. She pastes her reduced stack trace into the issue pings Alan, who is responsible that module. Alan thanks her for reducing the stack trace and mentions, \"Oh, when I used to work in C#, this is what the stack traces always looked like. I miss those days.\" Fin.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » The story","id":"397","title":"The story"},"398":{"body":"Here are some standard FAQ to get you started. Feel free to add more!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » 🤔 Frequently Asked Questions","id":"398","title":"🤔 Frequently Asked Questions"},"399":{"body":"Rust stack traces -- but async stack traces in particular -- reveal lots of implementation details to the user: Bits of the runtime and intermediate libraries whose source code is likely not of interest to the user (but it might be); Intermediate frames from the stdlib; ::{closure} symbols on async functions and blocks (even though they don't appear to be closures to the user); calls to poll.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » What are the morals of the story?","id":"399","title":"What are the morals of the story?"},"4":{"body":"We hold discussions on the #wg-async-foundations stream in Zulip","breadcrumbs":"👋🏽 Welcome » Zulip","id":"4","title":"Zulip"},"40":{"body":"Shiny future PRs \"retell\" the story from one or more status quo PRs. The story is now taking place 2-3 years in the future, when Async Rust has had the chance to make all sorts of improvements. Shiny future stories are aspirational: we don't have to know exactly how they will be achieved yet! (Of course, it never hurts to have a plan too.) Like status quo stories , each shiny future story is always presented from the POV of a particular character . They should be detailed. Sometimes this will mean you have to make stuff up, like method names or other details -- you can use the FAQ to spell out areas of particular uncertainty.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » Goals of a shiny future PR","id":"40","title":"Goals of a shiny future PR"},"400":{"body":"Sergey Galich reported this problem, among many others.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » What are the sources for this story?","id":"400","title":"What are the sources for this story?"},"401":{"body":"She knows about the desugarings that give rise to symbols like ::{closure}, but she still finds them annoying to deal with in practice.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » Why did you choose Barbara to tell this story?","id":"401","title":"Why did you choose Barbara to tell this story?"},"402":{"body":"Other characters might have wasted a lot of time trying to read through the stack trace in place before editing it. They might not have known how to trim down the stack trace to something that focused on their code, or it might have taken them much longer to do so.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » How would this story have played out differently for the other characters?","id":"402","title":"How would this story have played out differently for the other characters?"},"403":{"body":"Rust's async model does have some advantages, because the complete stack trace is available unless there is an intermediate spawn. Other languages have developed special tools to connect async functions to their callers, however, which gives them a nice experience. For example, Chrome has a UI for enabling stacktraces that cross await points .","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » How does this compare to other languages?","id":"403","title":"How does this compare to other languages?"},"404":{"body":"Because it came in an issue report (or, freqently, as a crash report or email). But also, that isn't necessarily an improvement! Expand below if you would like to see what we mean. (click to see how a backtrace looks in lldb) * thread #1, name = 'foo', stop reason = breakpoint 1.1 * frame #0: 0x0000555555583d24 foo`foo::main::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h617d49d0841ffc0d((null)=closure-0 @ 0x00007fffffffae38, (null)=) at main.rs:11:13 frame #1: 0x0000555555583d09 foo`_$LT$T$u20$as$u20$futures_util..fns..FnOnce1$LT$A$GT$$GT$::call_once::hc559b1f3f708a7b0(self=closure-0 @ 0x00007fffffffae68, arg=) at fns.rs:15:9 frame #2: 0x000055555557f300 foo`_$LT$futures_util..future..future..map..Map$LT$Fut$C$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hebf5b295fcc0837f(self=(pointer = 0x0000555555700e00), cx=0x00007fffffffcf50) at map.rs:57:73 frame #3: 0x00005555555836ac foo`_$LT$futures_util..future..future..Map$LT$Fut$C$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::h482f253651b968e6(self=Pin<&mut futures_util::future::future::Map> @ 0x00007fffffffb268, cx=0x00007fffffffcf50)\nat lib.rs:102:13 frame #4: 0x000055555557995a foo`_$LT$futures_util..future..future..flatten..Flatten$LT$Fut$C$$LT$Fut$u20$as$u20$core..future..future..Future$GT$..Output$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hd62d2a2417c0f2ea(self=(pointer = 0x0000555555700d80), cx=0x00007fffffffcf50) at flatten.rs:48:36 frame #5: 0x00005555555834fc foo`_$LT$futures_util..future..future..Then$LT$Fut1$C$Fut2$C$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hf60f05f9e9d6f307(self=Pin<&mut futures_util::future::future::Then, closure-0>> @ 0x00007fffffffc148, cx=0x00007fffffffcf50) at lib.rs:102:13 frame #6: 0x000055555558474a foo`_$LT$core..pin..Pin$LT$P$GT$$u20$as$u20$core..future..future..Future$GT$::poll::h4dad267b4f10535d(self=Pin<&mut core::pin::Pin>> @ 0x00007fffffffc188, cx=0x00007fffffffcf50) at future.rs:119:9 frame #7: 0x000055555557a693 foo`_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hdb6db40c2b3f2f1b(self=(pointer = 0x00005555557011b0), cx=0x00007fffffffcf50) at maybe_done.rs:95:38 frame #8: 0x0000555555581254 foo`_$LT$futures_util..future..join_all..JoinAll$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::ha2472a9a54f0e504(self=Pin<&mut futures_util::future::join_all::JoinAll>>> @ 0x00007fffffffc388, cx=0x00007fffffffcf50) at join_all.rs:101:16 frame #9: 0x0000555555584095 foo`foo::main::_$u7b$$u7b$closure$u7d$$u7d$::h6459086fc041943f((null)=ResumeTy @ 0x00007fffffffcc40) at main.rs:17:5 frame #10: 0x0000555555580eab foo`_$LT$core..future..from_generator..GenFuture$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$::poll::h272e2b5e808264a2(self=Pin<&mut core::future::from_generator::GenFuture> @ 0x00007fffffffccf8, cx=0x00007fffffffcf50) at mod.rs:80:19 frame #11: 0x00005555555805a0 foo`tokio::park::thread::CachedParkThread::block_on::_$u7b$$u7b$closure$u7d$$u7d$::hbfc61d9f747eef7b at thread.rs:263:54 frame #12: 0x00005555555795cc foo`tokio::coop::with_budget::_$u7b$$u7b$closure$u7d$$u7d$::ha229cfa0c1a2e13f(cell=0x00007ffff7c06712) at coop.rs:106:9 frame #13: 0x00005555555773cc foo`std::thread::local::LocalKey$LT$T$GT$::try_with::h9a2f70c5c8e63288(self=0x00005555556e2a48, f=) at local.rs:272:16 frame #14: 0x0000555555576ead foo`std::thread::local::LocalKey$LT$T$GT$::with::h12eeed0906b94d09(self=0x00005555556e2a48, f=) at local.rs:248:9 frame #15: 0x000055555557fea6 foo`tokio::park::thread::CachedParkThread::block_on::h33b270af584419f1 [inlined] tokio::coop::with_budget::hcd477734d4970ed5(budget=(__0 = core::option::Option @ 0x00007fffffffd040), f=closure-0 @ 0x00007fffffffd048) at coop.rs:99:5 frame #16: 0x000055555557fe73 foo`tokio::park::thread::CachedParkThread::block_on::h33b270af584419f1 [inlined] tokio::coop::budget::h410dced2a7df3ec8(f=closure-0 @ 0x00007fffffffd008) at coop.rs:76 frame #17: 0x000055555557fe0c foo`tokio::park::thread::CachedParkThread::block_on::h33b270af584419f1(self=0x00007fffffffd078, f=) at thread.rs:263 frame #18: 0x0000555555578f76 foo`tokio::runtime::enter::Enter::block_on::h4a9c2602e7b82840(self=0x00007fffffffd0f8, f=) at enter.rs:151:13 frame #19: 0x000055555558482b foo`tokio::runtime::thread_pool::ThreadPool::block_on::h6b211ce19db8989d(self=0x00007fffffffd280, future=(__0 = foo::main::generator-0 @ 0x00007fffffffd200)) at mod.rs:71:9 frame #20: 0x0000555555583324 foo`tokio::runtime::Runtime::block_on::h5f6badd2dffadf55(self=0x00007fffffffd278, future=(__0 = foo::main::generator-0 @ 0x00007fffffffd968)) at mod.rs:452:43 frame #21: 0x0000555555579052 foo`foo::main::h3106d444f509ad81 at main.rs:5:1 frame #22: 0x000055555557b69b foo`core::ops::function::FnOnce::call_once::hba86afc3f8197561((null)=(foo`foo::main::h3106d444f509ad81 at main.rs:6), (null)=) at function.rs:227:5 frame #23: 0x0000555555580efe foo`std::sys_common::backtrace::__rust_begin_short_backtrace::h856d648367895391(f=(foo`foo::main::h3106d444f509ad81 at main.rs:6)) at backtrace.rs:125:18 frame #24: 0x00005555555842f1 foo`std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::h24c58cd1e112136f at rt.rs:66:18 frame #25: 0x0000555555670aca foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] core::ops::function::impls::_$LT$impl$u20$core..ops..function..FnOnce$LT$A$GT$$u20$for$u20$$RF$F$GT$::call_once::hbcc915e668c7ca11 at function.rs:259:13 frame #26: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] std::panicking::try::do_call::h6b0f430d48122ddf at panicking.rs:379 frame #27: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] std::panicking::try::h6ba420e2e21b5afa at panicking.rs:343 frame #28: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] std::panic::catch_unwind::h8366719d1f615eee at panic.rs:431 frame #29: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 at rt.rs:51 frame #30: 0x00005555555842d0 foo`std::rt::lang_start::ha8694bc6fe5182cd(main=(foo`foo::main::h3106d444f509ad81 at main.rs:6), argc=1, argv=0x00007fffffffdc88) at rt.rs:65:5 frame #31: 0x00005555555790ec foo`main + 28 frame #32: 0x00007ffff7c2f09b libc.so.6`__libc_start_main(main=(foo`main), argc=1, argv=0x00007fffffffdc88, init=, fini=, rtld_fini=, stack_end=0x00007fffffffdc78) at libc-start.c:308:16","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » Why doesn't Barbara view this in a debugger?","id":"404","title":"Why doesn't Barbara view this in a debugger?"},"405":{"body":"Yes, this is the reduced backtrace. You don't even want to know what the full one looks like. Don't click it. Don't!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » Doesn't Rust have backtrace trimming support?","id":"405","title":"Doesn't Rust have backtrace trimming support?"},"406":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » 😱 Status quo stories: Barbara wants Async Insights","id":"406","title":"😱 Status quo stories: Barbara wants Async Insights"},"407":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » 🚧 Warning: Draft status 🚧","id":"407","title":"🚧 Warning: Draft status 🚧"},"408":{"body":"Barbara has an initial prototype of a new service she wrote in sync Rust. She then decides, since the service is extremely I/O bound, to port it to async Rust and her benchmarks have led her to believe that performance is being left on the table. She does this by sprinkling async/.await everywhere, picking an executor, and moving dependencies from sync to async. Once she has the program compiling, she thinks \"oh that was easy\". She runs it for the first time and surprisingly she finds out that when hitting an endpoint, nothing happens. Barbara, always prepared, has already added logging to her service and she checks the logs. As she expected, she sees here that the endpoint handler has been invoked but then... nothing. Barbara exclaims, \"Oh no! This was not what I was expecting, but let's dig deeper.\" She checks the code and sees that the endpoint spawns several tasks, but unfortunately those tasks don't have much logging in them. Barbara knows that debugging with a traditional debugger is not very fruitful in async Rust. She does a deep dive into the source code and doesn't find anything. Then she adds much more logging, but to her dismay she finds that a particular task seems stuck, but she has no idea why. She really wishes that there was a way to get more insight into why the task is stuck. These were the thoughts inside her head at that moment: Is it waiting on I/O? Is there a deadlock? Did she miss some sync code that might still be there and messing with the executor? For the I/O question she knows to use some tools on her operating system (lsof). This reveals some open sockets but she's not sure how to act on this. She scans the code for any std lib imports that might be blocking, but doesn't find anything. After hours of crawling through the code, she notices that her task is receiving a message from a bounded async channel. She changes this to be an unbounded channel and then things start working. She wants to know why the code was not working, but unfortunately she has no way to gain insight into this issue. She fears that her task might use too much memory knowing that the channel is unbounded, but she can't really tell. She thinks, \"Anyhow it is working now, let's see if we got some performance gains.\" After thorough benchmarking she finds out that she didn't quite get the performance gain she was expecting. \"Something is not working, as intended\", she thinks.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » The story","id":"408","title":"The story"},"409":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » 🤔 Frequently Asked Questions","id":"409","title":"🤔 Frequently Asked Questions"},"41":{"body":"Every shiny future PR includes a FAQ. This FAQ should always include answers to some standard questions: What status quo story or stories are you retelling? Link to the status quo stories here. If there isn't a story that you're retelling, write it ! What is Alan most excited about in this future? Is he disappointed by anything? Think about Alan's top priority (performance) and the expectations he brings (ease of use, tooling, etc). How do they fare in this future? What is Grace most excited about in this future? Is she disappointed by anything? Think about Grace's top priority (memory safety) and the expectations she brings (still able to use all the tricks she knows and loves). How do they fare in this future? What is Niklaus most excited about in this future? Is he disappointed by anything? Think about Niklaus's top priority (accessibility) and the expectations he brings (strong community that will support him). How do they fare in this future? What is Barbara most excited about in this future? Is she disappointed by anything? Think about Barbara's top priority (productivity, maintenance over time) and the expectations she brings (fits well with Rust). How do they fare in this future? If this is an alternative to another shiny future, which one, and what motivated you to write an alternative? Cite the story. Be specific, but focus on what you like about your version, not what you dislike about the other. If this is not an alternative, you can skip this one. =) What projects benefit the most from this future? Are there any projects that are hindered by this future? There are also some optional questions: What are the incremental steps towards realizing this shiny future? Talk about the actual work we will do. You can link to design docs or even add new ones, as appropriate. You don't have to have the whole path figured out yet! Does realizing this future require cooperation between many projects? For example, if you are describing an interface in libstd that runtimes will have to implement, talk about that. You can feel free to add whatever other FAQs seem appropriate. You should also expect to grow the FAQ in response to questions that come up on the PR.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » The role of the FAQ","id":"41","title":"The role of the FAQ"},"410":{"body":"There are very few ways to get insights into running systems. Tracing is state of the art. console.log #ftw Tracing is a static activity and there's no way to dynamically gain insights. While it's possible to find solutions to these issues, often you don't have insight into if those solutions bring new problems. Debugging process for non-trivial issues is almost guaranteed to be painful and expensive.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » What are the morals of the story?","id":"410","title":"What are the morals of the story?"},"411":{"body":"Issue 75","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » What are the sources for this story?","id":"411","title":"What are the sources for this story?"},"412":{"body":"Custom Events - logging/tracing (Per task?) Memory consumption per task. I/O handles in waiting state per task. Number of tasks and their states over time. Wake and drop specific tasks. Denoised stack traces and/or stack traces that are task aware. Who spawned the task? Worker threads that are blocked from progressing tasks forward. Tasks that are not progressing.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » What are examples of the kinds of things a user might want to have insight into?","id":"412","title":"What are examples of the kinds of things a user might want to have insight into?"},"413":{"body":"Barbara knows what she's doing, but still there is little way to get insights.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » Why did you choose Barbara to tell this story?","id":"413","title":"Why did you choose Barbara to tell this story?"},"414":{"body":"Depending on what languages he was using before, Alan would likely have had experience with a stronger tooling story: The highly debuggable BEAM (a VM), for Erlang. Delve , the debugging tool for Go. Using Visual Studio to debug C#. Debugging async Java using IntelliJ .","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » How would this story have played out differently for the other characters?","id":"414","title":"How would this story have played out differently for the other characters?"},"415":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Barbara wants to use GhostCell-like cell borrowing with futures","id":"415","title":"Barbara wants to use GhostCell-like cell borrowing with futures"},"416":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » 🚧 Warning: Draft status 🚧","id":"416","title":"🚧 Warning: Draft status 🚧"},"417":{"body":"Barbara quite likes using statically-checked cell borrowing. \"Cell\" in Rust terminology refers to types like Cell or RefCell that enable interior mutability, i.e. modifying or mutably borrowing stuff even if you've only got an immutable reference to it. Statically-checked cell borrowing is a technique whereby one object (an \"owner\") acts as a gatekeeper for borrow-access to a set of other objects (\"cells\"). So if you have mutable borrow access to the owner, you can temporarily transfer that mutable borrow access to a cell in order to modify it. This is all checked at compile-time, hence \"statically-checked\". In comparison RefCell does borrow-checking, but it is checked at runtime and it will panic if you make a coding mistake. The advantage of statically-checked borrowing is that it cannot panic at runtime, i.e. all your borrowing bugs show up at compile time. The history goes way back, and the technique has been reinvented at least 2-3 times as far as Barbara is aware. This is implemented in various forms in GhostCell and qcell . Barbara would like to use statically-checked cell borrowing within futures, but there is no way to get the owner borrow through the Future::poll call, i.e. there is no argument or object that the runtime could save the borrow in. Mostly this does not cause a problem, because there are other ways for a runtime to share data, e.g. data can be incorporated into the future when it is created. However in this specific case, for the specific technique of statically-checked cell borrows, we need an active borrow to the owner to be passed down the call stack through all the poll calls. So Barbara is forced to use RefCell instead and be very careful not to cause panics. This seems like a step back. It feels dangerous to use RefCell and to have to manually verify that her cell borrows are panic-free. There are good habits that you can adopt to offset the dangers, of course. If you are very careful to make sure that you call no other method or function which might in turn call code which might attempt to get another borrow on the same cell, then the RefCell::borrow_mut panics can be avoided. However this is easy to overlook, and it is easy to fail to anticipate what indirect calls will be made by a given call, and of course this may change later on due to maintenance and new features. A borrow may stay active longer than expected, so calls which appear safe might actually panic. Sometimes it's necessary to manually drop the borrow to be sure. In addition you'll never know what indirect calls might be made until all the possible code-paths have been explored, either through testing or through running in production. So Barbara prefers to avoid all these problems, and use statically-checked cell borrowing where possible.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » The story","id":"417","title":"The story"},"418":{"body":"In this minimized example of code to interface a stream to code outside of the async/await system, the buffer has to be accessible from both the stream and the outside code, so it is handled as a Rc>>. pub struct StreamPipe { buf: Rc>>, req_more: Rc,\n} impl Stream for StreamPipe { type Item = T; fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> { let mut buf = self.buf.borrow_mut(); if let Some(item) = buf.value.take() { return Poll::Ready(Some(item)); } if buf.end { return Poll::Ready(None); } (self.req_more)(); // Callback to request more data Poll::Pending }\n} Probably req_more() has to schedule some background operation, but if it doesn't and attempts to modify the shared buf immediately then we get a panic, because buf is still borrowed. The real life code could be a lot more complicated, and the required combination of conditions might be harder to hit in testing. With statically-checked borrowing, the borrow would be something like let mut buf = self.buf.rw(cx);, and the req_more call would either have to take the cx as an argument (forcing the previous borrow to end) or would not take cx, meaning that it would always have to defer the access to the buffer to other code, because without the cx there is no possible way to access the buffer.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Example 1: Accessing an object shared outside the runtime","id":"418","title":"Example 1: Accessing an object shared outside the runtime"},"419":{"body":"In this example, the app keeps tallies of various things in a Monitor structure. This might be data in/out, number of errors detected, maybe a hashmap of current links, etc. Since it is accessed from various components, it is kept behind an Rc>. // Dependency: futures-lite = \"1.11.3\"\nuse std::cell::RefCell;\nuse std::rc::Rc; fn main() { let monitor0 = Rc::new(RefCell::new(Monitor { count: 0 })); let monitor1 = monitor0.clone(); let fut0 = async move { let mut borrow = monitor0.borrow_mut(); borrow.count += 1; }; let fut1 = async move { let mut borrow = monitor1.borrow_mut(); borrow.count += 1; fut0.await; }; futures_lite::future::block_on(fut1);\n} struct Monitor { count: usize,\n} The problem is that this panics with a borrowing error because the borrow is still active when the fut0.await executes and attempts another borrow. The solution is to remember to drop the borrow before awaiting. In this example code the bug is obvious, but in real life maybe fut0 only borrows in rare situations, e.g. when an error is detected. Or maybe the future that borrows is several calls away down the callstack. With statically-checked borrowing, there is a slight problem in that currently there is no way to access the poll context from async {} code. But if there was then the borrow would be something like let mut borrow = monitor1.rw(cx);, and since the fut0.await implicitly requires the cx in order to poll, the borrow would be forced to end at that point.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Example 2: Shared monitoring data","id":"419","title":"Example 2: Shared monitoring data"},"42":{"body":"When you opan a status quo PR, people will start to comment on it. These comments should always be constructive. They usually have the form of asking \"in this future, what does NAME do when X happens?\" or asking you to elaborate on other potential problems that might arise. Ideally, you should respond to every comment in one of two ways: Adjust the story with more details or to correct factual errors. Add something to the story's FAQ to explain the confusion. If the question is already covered by a FAQ, you can just refer the commenter to that. The goal is that, at the end of the review process, the status quo story has a lot more details that address the major questions people had.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » The review process","id":"42","title":"The review process"},"420":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Further investigation by Barbara","id":"420","title":"Further investigation by Barbara"},"421":{"body":"Barbara understands that statically-checked cell borrows work by having an owner held by the runtime, and various instances of a cell held by things running on top of the runtime (these cells would typically be behind Rc references). A mutable borrow on the owner is passed down the stack, which enables safe borrows on all the cells, since a mutable borrow on a cell is enabled by temporarily holding onto the mutable borrow of the owner, which is all checked at compile-time. So the mutable owner borrow needs to be passed through the poll call, and Barbara realizes that this would require support from the standard library. Right now a &mut Context<'_> is passed to poll, and so within Context would be the ideal place to hold a borrow on the cell owner. However as far as Barbara can see there are difficulties with all the current implementations: GhostCell (or qcell::LCell) may be the best available solution, because it doesn't have any restrictions on how many runtimes might be running or how they might be nested. But Rust insists that the lifetimes <'id> on methods and types are explicit, so it seems like that would force a change to the signature of poll, which would break the ecosystem. Here Barbara experiments with a working example of a modified Future trait and a future implementation that makes use of LCell: // Requires dependency: qcell = \"0.4\"\nuse qcell::{LCell, LCellOwner};\nuse std::pin::Pin;\nuse std::rc::Rc;\nuse std::task::Poll; struct Context<'id, 'a> { cell_owner: &'a mut LCellOwner<'id>,\n} struct AsyncCell<'id, T>(LCell<'id, T>);\nimpl<'id, T> AsyncCell<'id, T> { pub fn new(value: T) -> Self { Self(LCell::new(value)) } pub fn rw<'a, 'b: 'a>(&'a self, cx: &'a mut Context<'id, 'b>) -> &'a mut T { cx.cell_owner.rw(&self.0) }\n} trait Future<'id> { type Output; fn poll(self: Pin<&mut Self>, cx: &mut Context<'id, '_>) -> Poll;\n} struct MyFuture<'id> { count: Rc>,\n}\nimpl<'id> Future<'id> for MyFuture<'id> { type Output = (); fn poll(self: Pin<&mut Self>, cx: &mut Context<'id, '_>) -> Poll { *self.count.rw(cx) += 1; Poll::Ready(()) }\n} fn main() { LCellOwner::scope(|mut owner| { let mut cx = Context { cell_owner: &mut owner }; let count = Rc::new(AsyncCell::new(0_usize)); let mut fut = Box::pin(MyFuture { count: count.clone() }); let _ = fut.as_mut().poll(&mut cx); assert_eq!(1, *count.rw(&mut cx)); });\n} The other qcell types (QCell, TCell and TLCell) have various restrictions or overheads which might make them unsuitable as a general-purpose solution in the standard library. However they do have the positive feature of not requiring any change in the signature of poll. It looks like they could be added to Context without breaking anything. Here Barbara tries using TLCell, and finds that the signature of poll doesn't need to change: // Requires dependency: qcell = \"0.4\"\nuse qcell::{TLCell, TLCellOwner};\nuse std::pin::Pin;\nuse std::rc::Rc;\nuse std::task::Poll; struct AsyncMarker;\nstruct Context<'a> { cell_owner: &'a mut TLCellOwner,\n} struct AsyncCell(TLCell);\nimpl AsyncCell { pub fn new(value: T) -> Self { Self(TLCell::new(value)) } pub fn rw<'a, 'b: 'a>(&'a self, cx: &'a mut Context<'b>) -> &'a mut T { cx.cell_owner.rw(&self.0) }\n} trait Future { type Output; fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll;\n} struct MyFuture { count: Rc>,\n}\nimpl Future for MyFuture { type Output = (); fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { *self.count.rw(cx) += 1; Poll::Ready(()) }\n} fn main() { let mut owner = TLCellOwner::new(); let mut cx = Context { cell_owner: &mut owner }; let count = Rc::new(AsyncCell::new(0_usize)); let mut fut = Box::pin(MyFuture { count: count.clone() }); let _ = fut.as_mut().poll(&mut cx); assert_eq!(1, *count.rw(&mut cx));\n} (For comparison, TCell only allows one owner per marker type in the whole process. QCell allows many owners, but requires a runtime check to make sure you're using the right owner to access a cell. TLCell allows only one owner per thread per marker type, but also lets cells migrate between threads and be borrowed locally, which the others don't -- see qcell docs .) So the choice is GhostCell/LCell and lifetimes everywhere, or various other cell types that may be too restrictive. Right now Barbara thinks that none of these solutions is likely to be acceptable for the standard library. However still it is a desirable feature, so maybe someone can think of a way around the problems. Or maybe someone has a different perspective on what would be acceptable.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » The mechanism","id":"421","title":"The mechanism"},"422":{"body":"The Stakker runtime makes use of qcell-based statically-checked cell borrowing. It uses this to get zero-cost access to actors, guaranteeing at compile time that no actor can access any other actor's state. It also uses it to allow inter-actor shared state to be accessed safely and zero-cost, without RefCell. (For example within a Stakker actor, you can access the contents of a Share via the actor context cx as follows: share.rw(cx), which blocks borrowing or accessing cx until that borrow on share has been released. Share is effectively a Rc and cx has access to an active borrow on the ShareCellOwner, just as in the long examples above.) Stakker doesn't use GhostCell (LCell) because of the need for <'id> annotations on methods and types. Instead it uses the other three cell types according to how many Stakker instances will be run, either one Stakker instance only, one per thread, or multiple per thread. This is selected by cargo features. Switching implementations like this doesn't seem like an option for the standard library.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Proof of concept","id":"422","title":"Proof of concept"},"423":{"body":"Barbara wonders whether there is any way this can be made to work. For example, could the compiler derive all those <'id> annotations automatically for GhostCell/LCell? Or for multi-threaded runtimes, would qcell::TLCell be acceptable? This allows a single cell-owner in every thread. So it would not allow nested runtimes of the same type. However it does allow borrows to happen at the same time independently in different threads, and it also allows the migration of cells between threads, which is safe because that kind of cell isn't Sync. Or is there some other form of cell-borrowing that could be devised that would work better for this? The interface between cells and Context should be straightforward once a particular cell type is demonstrated to be workable with the poll interface and futures ecosystem. For example copying the API style of Stakker: let rc = Rc::new(AsyncCell::new(1_u32));\n*rc.rw(cx) = 2; So logically you obtain read-write access to a cell by naming the authority by which you claim access, in this case the poll context. In this case it really is naming rather than accessing since the checks are done at compile time and the address that cx represents doesn't actually get passed anywhere or evaluated, once inlining and optimisation is complete.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Way forward","id":"423","title":"Way forward"},"424":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » 🤔 Frequently Asked Questions","id":"424","title":"🤔 Frequently Asked Questions"},"425":{"body":"The main problem is that Barbara has got used to a safer environment and it feels dangerous to go back to RefCell and have to manually verify that her cell borrows are panic-free.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » What are the morals of the story?","id":"425","title":"What are the morals of the story?"},"426":{"body":"The author of Stakker is trying to interface it to async/await and futures.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » What are the sources for this story?","id":"426","title":"What are the sources for this story?"},"427":{"body":"Barbara has enough Rust knowledge to understand the benefits that GhostCell/qcell-like borrowing might bring.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Why did you choose Barbara to tell this story?","id":"427","title":"Why did you choose Barbara to tell this story?"},"428":{"body":"The other characters perhaps wouldn't have heard of statically-checked cell borrows so would be unaware of the possibility of making things safer.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » How would this story have played out differently for the other characters?","id":"428","title":"How would this story have played out differently for the other characters?"},"429":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » 😱 Status quo stories: Grace deploys her service and hits obstacles","id":"429","title":"😱 Status quo stories: Grace deploys her service and hits obstacles"},"43":{"body":"","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » 🤔 Frequently Asked Questions","id":"43","title":"🤔 Frequently Asked Questions"},"430":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » 🚧 Warning: Draft status 🚧","id":"430","title":"🚧 Warning: Draft status 🚧"},"431":{"body":"When examining her service metrics, Grace notices tail latencies in the P99 that exceed their target. She identifies GC in the routing layer as the culprit. Grace follows industry trends and is already aware of Rust and its ecosystem at a high level. She decides to investigate rewriting the routing service in Rust. To meet throughput requirements, Grace has already decided to use a thread-per-core model and minimize cross-thread communication. She explores available ecosystem options and finds no option that gets her exactly what she is looking for out of the box. However, she can use Tokio with minimal configuration to achieve her architecture. A few months of frantic hacking follow. Soon enough, she and her team have a proof of concept working. They run some local stress tests and notice that 5% of requests hang and fail to respond. The client eventually times out. She cannot reproduce this problem when running one-off requests locally. It only shows up when sending above 200 requests-per-second. She realizes that she doesn't have any tooling to give her insight into what's going on. She starts to add lots of logging, attempting to tie log entries to specific connections. Using an operating system tool, she can identify the socket addresses for the hung connections, so she also includes the socket addresses in each log message. She then filters the logs to find entries associated with hung connections. Of course, the logs only tell her what the connection managed to do successfully; they don't tell her why it stopped -- so she keeps going back to add more logging until she can narrow down the exact call that hangs. Eventually, she identifies that the last log message is right before authenticating the request. An existing C library performs authentication, integrated with the routing service using a custom future implementation. She eventually finds a bug in the implementation that resulted in occasional lost wake-ups. She fixes the bug. The service is now working as expected and meeting Grace's performance goals.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » The story","id":"431","title":"The story"},"432":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » 🤔 Frequently Asked Questions","id":"432","title":"🤔 Frequently Asked Questions"},"433":{"body":"When coming from a background of network engineering, users will bring their own design choices around architecture. Examples: seastar and Glommio There is a lack of debugging tools for async. Writing futures by hand is error prone.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » What are the morals of the story?","id":"433","title":"What are the morals of the story?"},"434":{"body":"This is based on the experiences of helping a tokio user to diagnose a bug in their code.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » What are the sources for this story?","id":"434","title":"What are the sources for this story?"},"435":{"body":"The actual user who experienced this problem fit the profile of Grace. The story is focused on the experience of people aiming to use workflows they are familiar with from C in a Rust setting.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » Why did you choose Grace to tell this story?","id":"435","title":"Why did you choose Grace to tell this story?"},"436":{"body":"Alan or Niklaus may well have had a much harder time diagnosing the problem due to not having as much of a background in systems programming. For example, they may not have known about the system tool that allowed them to find the list of dangling connections.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » How would this story have played out differently for the other characters?","id":"436","title":"How would this story have played out differently for the other characters?"},"437":{"body":"Maybe! But in this instance the people this story is based on were using tokio, so that's the one we wrote into the story. (If folks want to expand this answer with details of how to achieve similar goals on other runtimes that would be welcome!)","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » Could Grace have used another runtime to achieve the same objectives?","id":"437","title":"Could Grace have used another runtime to achieve the same objectives?"},"438":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » 😱 Status quo stories: Grace tries new libraries","id":"438","title":"😱 Status quo stories: Grace tries new libraries"},"439":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » 🚧 Warning: Draft status 🚧","id":"439","title":"🚧 Warning: Draft status 🚧"},"44":{"body":"Just open a PR using this template . Do not add your file to SUMMARY.md , that will create conflicts. We'll do it after merging.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » What is the process to propose a shiny future story?","id":"44","title":"What is the process to propose a shiny future story?"},"440":{"body":"When Grace searched crates.io for a library, she found an interesting library that she wants to use. The code examples use a map/reduce style. As Grace is more familiar with C and C++, as a first step she wants to convert them from this style to using loops. Controller::new(root_kind_api, ListParams::default()) .owns(child_kind_api, ListParams::default()) .run(reconcile, error_policy, context) .for_each(|res| async move { match res { Ok(o) => info!(\"reconciled {:?}\", o), Err(e) => warn!(\"reconcile failed: {}\", Report::from(e)), } }) .await; (Example code from taken from https://github.com/clux/kube-rs) So she takes the naive approach to just convert that as follows: let controller = Controller::new(root_kind_api, ListParams::default()) .owns(child_kind_api, ListParams::default()) .run(reconcile, error_policy, context); while let Ok(o) = controller.try_next().await { info!(\"reconciled {:?}\", o),\n} when she compiles her source code she ends up with wall of error messages like the following: $ cargo run Compiling kube-rs-test v0.1.0 (/home/project-gec/src/kube-rs-test)\nerror[E0277]: `from_generator::GenFuture<[static generator@watcher::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api, &'r kube::Api, ListParams, &'s ListParams, watcher::State, impl futures::Future, ()}]>` cannot be unpinned --> src/main.rs:23:41 |\n23 | while let Ok(o) = controller.try_next().await { | ^^^^^^^^ within `futures_util::unfold_state::_::__Origin<'_, (kube::Api, ListParams, watcher::State), impl futures::Future>`, the trait `Unpin` is not implemented for `from_generator::GenFuture<[static generator@watcher::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api, &'r kube::Api, ListParams, &'s ListParams, watcher::State, impl futures::Future, ()}]>` | = note: required because it appears within the type `impl futures::Future` = note: required because it appears within the type `futures_util::unfold_state::_::__Origin<'_, (kube::Api, ListParams, watcher::State), impl futures::Future>` = note: required because of the requirements on the impl of `Unpin` for `futures_util::unfold_state::UnfoldState<(kube::Api, ListParams, watcher::State), impl futures::Future>` = note: required because it appears within the type `futures::stream::unfold::_::__Origin<'_, (kube::Api, ListParams, watcher::State), [closure@watcher::{closure#0}], impl futures::Future>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Unfold<(kube::Api, ListParams, watcher::State), [closure@watcher::{closure#0}], impl futures::Future>` = note: required because it appears within the type `impl std::marker::Send+futures::Stream` = note: required because it appears within the type `futures::stream::try_stream::into_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::IntoStream` = note: required because it appears within the type `futures::stream::stream::map::_::__Origin<'_, futures::stream::IntoStream, futures_util::fns::InspectFn::{closure#0}]>>>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Map, futures_util::fns::InspectFn::{closure#0}]>>>` = note: required because it appears within the type `futures::stream::stream::_::__Origin<'_, futures::stream::IntoStream, futures_util::fns::InspectOkFn<[closure@reflector::{closure#0}]>>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Inspect, futures_util::fns::InspectOkFn<[closure@reflector::{closure#0}]>>` = note: required because it appears within the type `futures::stream::try_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream, [closure@reflector::{closure#0}]>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::InspectOk::{closure#0}]>` = note: required because it appears within the type `impl futures::Stream` error[E0277]: `from_generator::GenFuture<[static generator@watcher::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api, &'r kube::Api, ListParams, &'s ListParams, watcher::State, impl futures::Future, ()}]>` cannot be unpinned --> src/main.rs:23:27 |\n23 | while let Ok(o) = controller.try_next().await { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ within `futures_util::unfold_state::_::__Origin<'_, (kube::Api, ListParams, watcher::State), impl futures::Future>`, the trait `Unpin` is not implemented for `from_generator::GenFuture<[static generator@watcher::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api, &'r kube::Api, ListParams, &'s ListParams, watcher::State, impl futures::Future, ()}]>` | = note: required because it appears within the type `impl futures::Future` = note: required because it appears within the type `futures_util::unfold_state::_::__Origin<'_, (kube::Api, ListParams, watcher::State), impl futures::Future>` = note: required because of the requirements on the impl of `Unpin` for `futures_util::unfold_state::UnfoldState<(kube::Api, ListParams, watcher::State), impl futures::Future>` = note: required because it appears within the type `futures::stream::unfold::_::__Origin<'_, (kube::Api, ListParams, watcher::State), [closure@watcher::{closure#0}], impl futures::Future>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Unfold<(kube::Api, ListParams, watcher::State), [closure@watcher::{closure#0}], impl futures::Future>` = note: required because it appears within the type `impl std::marker::Send+futures::Stream` = note: required because it appears within the type `futures::stream::try_stream::into_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::IntoStream` = note: required because it appears within the type `futures::stream::stream::map::_::__Origin<'_, futures::stream::IntoStream, futures_util::fns::InspectFn::{closure#0}]>>>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Map, futures_util::fns::InspectFn::{closure#0}]>>>` = note: required because it appears within the type `futures::stream::stream::_::__Origin<'_, futures::stream::IntoStream, futures_util::fns::InspectOkFn<[closure@reflector::{closure#0}]>>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Inspect, futures_util::fns::InspectOkFn<[closure@reflector::{closure#0}]>>` = note: required because it appears within the type `futures::stream::try_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream, [closure@reflector::{closure#0}]>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::InspectOk::{closure#0}]>` = note: required because it appears within the type `impl futures::Stream` = note: required because of the requirements on the impl of `futures::Future` for `TryNext<'_, impl futures::Stream>` = note: required by `futures::Future::poll` error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0277`.\nerror: could not compile `kube-rs-test` To learn more, run the command again with --verbose. From her background she has an understanding what could go wrong. So she remembered, that she could box the values to solve the issue with calling .boxed() on the controller. But on the other hand she could see no reason why this while loop should fail when the original .for_each() example just works as expected.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » The story","id":"440","title":"The story"},"441":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » 🤔 Frequently Asked Questions","id":"441","title":"🤔 Frequently Asked Questions"},"442":{"body":"Working with async can give huge errors from fairly common place transforms, and requires knowing some \"not entirely obvious\" workarounds.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » What are the morals of the story?","id":"442","title":"What are the morals of the story?"},"443":{"body":"Personal experience.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » What are the sources for this story?","id":"443","title":"What are the sources for this story?"},"444":{"body":"Reflects the background of the author.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » Why did you choose Grace to tell this story?","id":"444","title":"Why did you choose Grace to tell this story?"},"445":{"body":"Ultimately the only way to know how to solve this problem is to have seen it before and learned how to solve it. The compiler doesn't help and the result is not obvious. So it probably doesn't matter that much which character is used, except that Barbara may be more likely to have seen how to solve it.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » How would this story have played out differently for the other characters?","id":"445","title":"How would this story have played out differently for the other characters?"},"446":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » Status quo: Grace waits for gdb next","id":"446","title":"Status quo: Grace waits for gdb next"},"447":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » 🚧 Warning: Draft status 🚧","id":"447","title":"🚧 Warning: Draft status 🚧"},"448":{"body":"Grace wants to walk through the behavior of a toy program. She first fires up cargo run --verbose to remind herself what the path to the target binary is. Part of the resulting Cargo output is: Running `target/debug/toy` From that, Grace tries running gdb on the printed path. gdb target/debug/toy and then (gdb) start to start the program and set a breakpoint on the main function. Grace hits Ctrl-x a and gets a TUI mode view that includes this: │ 52 } │\n│ 53 │\n│ 54 #[tokio::main] │\n│B+>55 pub(crate) async fn main() -> Result<(), Box> { │\n│ 56 println!(\"Hello, world!\"); │\n│ 57 let record = Box::new(Mutex::new(Record::new())); │\n│ 58 let record = &*Box::leak(record); │\n│ 59 Excitedly Grace types next to continue to the next line of the function. And waits. And the program does not stop anywhere. ... Eventually Grace remembers that #[tokio::main] injects a different main function that isn't the one that she wrote as an async fn, and so the next operation in gdb isn't going to set a breakpoint within Grace's async fn main. So Grace restarts the debugger, and then asks for a breakpoint on the first line of her function: (gdb) start\n(gdb) break 56\n(gdb) continue And now it stops on the line that she expected: │ 53 │\n│ 54 #[tokio::main] │\n│ 55 pub(crate) async fn main() -> Result<(), Box> { │\n│B+>56 println!(\"Hello, world!\"); │\n│ 57 let record = Box::new(Mutex::new(Record::new())); │\n│ 58 let record = &*Box::leak(record); │\n│ 59 │\n│ 60 let (tx, mut rx) = channel(100); │ Grace is now able to use next to walk through the main function. She does notice that the calls to tokio::spawn are skipped over by next, but that's not as much of a surprise to her, since those are indeed function calls that are taking async blocks. She sets breakpoints on the first line of each async block so that the debugger will stop when control reaches them as she steps through the code.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » The story","id":"448","title":"The story"},"449":{"body":"Here are some standard FAQ to get you started. Feel free to add more!","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » 🤔 Frequently Asked Questions","id":"449","title":"🤔 Frequently Asked Questions"},"45":{"body":"Usually you would use the same character from the status quo story you are retelling. If for some reason you chose a different character, add a FAQ to explain why.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » What character should I use for my shiny future story?","id":"45","title":"What character should I use for my shiny future story?"},"450":{"body":"A common usage pattern: hitting next to go to what seems like the next statement, breaks down due to implementation details of #[tokio::main] and async fn. This is one example of where next breaks, in terms of what a user is likely to want . The other common scenario where the behavior of next is non-ideal is higher-order functions, like option.and_then(|t| { ... }, where someone stepping through the code probably wants next to set a temporary breakpoint in the ... of the closure.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » What are the morals of the story?","id":"450","title":"What are the morals of the story?"},"451":{"body":"Personal experience. I haven't acquired the muscle memory to stop using next, even though it breaks down in such cases.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » What are the sources for this story?","id":"451","title":"What are the sources for this story?"},"452":{"body":"I needed someone who, like me, would actually be tempted to use gdb even when println debugging is so popular.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » Why did you choose Grace to tell this story?","id":"452","title":"Why did you choose Grace to tell this story?"},"453":{"body":"* Alan might have used whatever debugger is offered by his IDE, which might have the same problem (via a toolbar button that has the same semantics as `next`); but many people using IDE's to debugger just naturally set breakpoints by hand on the lines in their IDE editor, and thus will not run into this.\n* Most characters would probably have abandoned using gdb much sooner. E.g. Grace may have started out by adding `println` or `tracing` instrumention to the code, rather than trying to open it up in a debugger.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » How would this story have played out differently for the other characters?","id":"453","title":"How would this story have played out differently for the other characters?"},"454":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » 😱 Status quo stories: Grace wants to integrate a C-API","id":"454","title":"😱 Status quo stories: Grace wants to integrate a C-API"},"455":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » 🚧 Warning: Draft status 🚧","id":"455","title":"🚧 Warning: Draft status 🚧"},"456":{"body":"Grace is integrating a camera into an embedded project. Grace has done similar projects before in the past, and has even used this particular hardware before. Fortunately, the camera manufacturer provides a library in C to interface with the driver. Grace knows that Rust provides strong memory safety guarantees, and the library provided by the manufacturer sports an API that is easy to misuse. In particular, ownership concerns are tricky and Grace and her team have often complained in the past that making memory mistakes is very easy and one has to be extremely careful to manage lifetimes. Therefore, for this project, Grace opts to start with Rust as many of the pitfalls of the manufacturer's library can be automatically caught by embedding the lifetimes into a lightweight wrapper over code bridged into Rust with bindgen . Grace's team manages to write a thin Rust wrapper over the manufacturer's library with little complication. This library fortunately offers two interfaces for grabbing frames from the camera: a blocking interface that waits for the next frame, and a non-blocking interface that polls to check if there are any frames currently available and waiting. Grace is tempted to write a callback-based architecture by relying on the blocking interface that waits; however, early the next morning the customer comes back and informs her that they are scaling up the system, and that there will now be 5 cameras instead of 1. She knows from experience that she cannot rely on having 5 threads blocking just for getting camera frames, because the embedded system she is deploying to only has 2 cores total! Her team would be introducing a lot of overhead into the system with the continuous context switching of every thread. Some folks were unsure of Rust's asynchronous capabilities, and with the requirements changing there were some that argued maybe they should stick to the tried and true in pure C. However, Grace eventually convinced them that the benefits of memory safety were still applicable, and that a lot of bugs that have taken weeks to diagnose in the past have already been completely wiped out. The team decided to stick with Rust, and dig deeper into implementing this project in async Rust. Fortunately, Grace notices the similarities between the polling interface in the underlying C library and the Poll type returned by Rust's Future trait. \"Surely,\" she thinks, \"I can asynchronously interleave polls to each camera over a single thread, and process frames as they become available!\" Such a thing would be quite difficult in C while guaranteeing memory safety was maintained. However, Grace's team has already dodged that bullet thanks to writing a thin wrapper in Rust that manages these tricky lifetimes!","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » The story","id":"456","title":"The story"},"457":{"body":"Grace sets out to start writing the pipeline to get frames from the cameras. She realizes that while the polling call that the manufacturer provided in their library is similar in nature to a future, it doesn't quite encompass everything. In C, one might have to set some kind of heartbeat timer for polling. Grace explains to her team that this heartbeat is similar to how the Waker object works in a Future's Context type, in that it is how often the execution environment should re-try the future if the call to poll returns Poll::Pending. A member of Grace's team asks her how she was able to understand all this. After all, Grace had been writing Rust about as long as the rest of her team. The main difference was that she had many more years of systems programming under C and C++ under her belt than they had. Grace responded that for the most part she had just read the documentation for the Future trait, and that she had intuited how async-await de-sugars itself into a regular function that returns a future of some kind. The de-sugaring process was, after all, very similar to how lambda objects in C++ were de-sugared as well. She leaves her teammate with an article she once found online that explained the process in a lot more detail for a problem much harder than they were trying to solve. Something Grace and her team learn to love immediately about Rust is that writing the Future here does not require her team to write their own execution environment. In fact, the future can be entirely written independently of the execution environment. She quickly writes an async method to represent the polling process: /// Gets the next frame from the camera, waiting `retry_after` time until polling again if it fails.\n///\n/// Returns Some(frame) if a frame is found, or None if the camera is disconnected or goes down before a frame is\n/// available.\nasync fn next_frame(camera: &Camera, retry_after: Duration) -> Option { while camera.is_available() { if let Some(frame) = camera.poll() { return Some(frame); } else { task::sleep_for(retry_after).await; } } None\n} The underlying C API doesn't provide any hooks that can be used to wake the Waker object on this future up, so Grace and her team decide that it is probably best if they just choose a sufficiently balanced retry_after period in which to try again. It does feel somewhat unsatisfying, as calling sleep_for feels about as hacky as calling std::this_thread::sleep_for in C++. However, there is no way to directly interoperate with the waker without having a separate thread of execution wake it up, and the underlying C library doesn't have any interface offering a notification for when that should be. In the end, this is the same kind of code that they would write in C, just without having to implement a custom execution loop themselves, so the team decides it is not a total loss.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » The first problem: polls and wake-ups","id":"457","title":"The first problem: polls and wake-ups"},"458":{"body":"Doing this a single time is fine, but an end goal of the project is to be able to stream frames from the camera for unspecified lengths of time. Grace spends some time searching, and realizes that what she actually wants is a Stream of some kind. Stream objects are the asynchronous equivalent of iterators, and her team wants to eventually write something akin to: let frame_stream = stream_from_camera(camera, Duration::from_millis(5)); while let Some(frame) = frame_stream.next().await { // process frames\n} println!(\"Frame stream closed.\"); She scours existing crates, in particular looking for one way to transform the above future into a stream that can be executed many times. The only available option to transform a future into a series of futures is stream::unfold , which seems to do exactly what Grace is looking for. Grace begins by adding a small intermediate type, and then plugging in the remaining holes: struct StreamState { camera: Camera, retry_after: Duration,\n} fn stream_from_camera(camera: Camera, retry_after: Duration) -> Unfold { let initial_state = StreamState { camera, retry_after }; stream::unfold(initial_state, |state| async move { let frame = next_frame(&state.camera, state.retry_after).await (frame, state) })\n} This looks like it mostly hits the mark, but Grace is left with a couple of questions for how to get the remainder of this building: What is the type that fills in the third template parameter in the return? It should be the type of the future that is returned by the async closure passed into stream::unfold, but we don't know the type of a closure! What is the type that fills in the second template parameter of the closure in the return? Grace spends a lot of time trying to figure out how she might find those types! She asks Barbara what the idiomatic way to get around this in Rust would be. Barbara explains again how closures don't have concrete types, and that the only way to do this will be to use the impl keyword. fn stream_from_camera(camera: Camera, retry_after: Duration) -> impl Stream { // same as before\n} While Grace was was on the correct path and now her team is able to write the code they want to, she realizes that sometimes writing the types out explicitly can be very hard. She reflects on what it would have taken to write the type of an equivalent function pointer in C, and slightly laments that Rust cannot express such as clearly.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » The second problem: doing this many times","id":"458","title":"The second problem: doing this many times"},"459":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » 🤔 Frequently Asked Questions","id":"459","title":"🤔 Frequently Asked Questions"},"46":{"body":"Write the status quo story first! What happens when there are multiple \"shiny future\" stories about the same thing? During this brainstorming period, we want to focus on getting as many ideas as we can. Having multiple \"shiny futures\" that address the same problem is a feature, not a bug, as it will let us mix-and-match later to try and find the best overall plan.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » What do I do if there is no status quo story for my shiny future?","id":"46","title":"What do I do if there is no status quo story for my shiny future?"},"460":{"body":"Rust was the correct choice for the team across the board thanks to its memory safety and ownership. The underlying C library was just too complex for any single programmer to be able to maintain in their head all at once while also trying to accomplish other tasks. Evolving requirements meant that the team would have had to either start over in plain C, giving up a lot of the safety they would gain from switching to Rust, or exploring async code in a more rigorous way. The async code is actually much simpler than writing the entire execution loop in C themselves. However, the assumption that you would write the entire execution loop is baked into the underlying library which Grace's team cannot rewrite entirely from scratch. Integrating Rust async code with other languages which might have different mental models can sometimes lead to unidiomatic or unsatisfying code, even if the intent of the code in Rust is clear. Grace eventually discovered that the problem was best modeled as a stream, rather than as a single future. However, converting a future into a stream was not necessarily something that was obvious for someone with a C/C++ background. Closures and related types can be very hard to write in Rust, and if you are used to being very explicit with your types, tricks such as the impl trick above for Streams aren't immediately obvious at first glance.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » What are the morals of the story?","id":"460","title":"What are the morals of the story?"},"461":{"body":"My own personal experience trying to incorporate the Intel RealSense library into Rust.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » What are the sources for this story?","id":"461","title":"What are the sources for this story?"},"462":{"body":"I am a C++ programmer who has written many event / callback based systems for streaming from custom camera hardware. I mirror Grace in that I am used to using other systems languages, and even rely on libraries in those languages as I've moved to Rust. I did not want to give up the memory and lifetime benefits of Rust because of evolving runtime requirements. In particular, C and C++ do not encourage async-style code, and often involve threads heavily. However, some contexts cannot make effective use of threads. In such cases, C and C++ programmers are often oriented towards writing custom execution loops and writing a lot of logic to do so. Grace discovered the benefit of not having to choose an executor upfront, because the async primitives let her express most of the logic without relying on a particular executor's behaviour.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » Why did you choose Grace to tell this story?","id":"462","title":"Why did you choose Grace to tell this story?"},"463":{"body":"Alan would have struggled with understanding the embedded context of the problem, where GC'd languages don't see much use. Niklaus and Barbara may not have approached the problem with the same assimilation biases from C and C++ as Grace. Some of the revelations in the story such as discovering that Grace's team didn't have to write their own execution loop were unexpected benefits when starting down the path of using Rust!","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » How would this story have played out differently for the other characters?","id":"463","title":"How would this story have played out differently for the other characters?"},"464":{"body":"Grace can use any runtime, which was an unexpected benefit of her work!","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » Could Grace have used another runtime to achieve the same objectives?","id":"464","title":"Could Grace have used another runtime to achieve the same objectives?"},"465":{"body":"She saw it in the rustdoc for stream::unfold.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » How did Grace know to use Unfold as the return type in the first place?","id":"465","title":"How did Grace know to use Unfold as the return type in the first place?"},"466":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » 😱 Status quo stories: Niklaus Builds a Hydrodynamics Simulator","id":"466","title":"😱 Status quo stories: Niklaus Builds a Hydrodynamics Simulator"},"467":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » 🚧 Warning: Draft status 🚧","id":"467","title":"🚧 Warning: Draft status 🚧"},"468":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » The story","id":"468","title":"The story"},"469":{"body":"Niklaus is a professor of physics at the University of Rustville. He needed to build a tool to solve hydrodynamics simulations; there is a common method for this that subdivides a region into a grid and computes the solution for each grid patch. All the patches in a grid for a point in time are independent and can be computed in parallel, but they are dependent on neighboring patches in the previously computed frame in time. This is a well known computational model and the patterns for basic parallelization are well established. Niklaus wanted to write a performant tool to compute the solutions to the simulations of his research. He chose Rust because he needed high performance but he also wanted something that could be maintained by his students, who are not professional programmers. Rust's safety guarantees giver him confidence that his results are not going to be corrupted by data races or other programming errors. After implementing the core mathematical formulas, Niklaus began implementing the parallelization architecture. His first attempt to was to emulate a common CFD design pattern: using message passing to communicate between processes that are each assigned a specific patch in the grid. So he assign one thread to each patch and used messages to communicate solution state to dependent patches. With one thread per patch this usually meant that there were 5-10x more threads than CPU cores. This solution worked, but Niklaus had two problems with it. First, it gave him no control over CPU usage so the solution would greedily use all available CPU resources. Second, using messages to communicate solution values between patches did not scale when his team added a new feature (tracer particles) the additional messages caused by this change created so much overhead that parallel processing was no faster than serial. So, Niklaus decided to find a better solution.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » Problem","id":"469","title":"Problem"},"47":{"body":"Detailed is generally better, but only if those details are helpful for understanding the morals of your story. Specific is generally better, since an abstract story doesn't feel as real. What is the \"scope\" of a shiny future story? Can I tell shiny future stories that involve ecosystem projects? All the stories in the vision doc are meant to cover the full \"end to end\" experience of using async Rust. That means that sometimes they will take about things that are really part of projects that are outside of the Rust org. For example, we might write a shiny future that involves how the standard library has published standard traits for core concepts and those concepts have been adopted by libraries throughout the ecosystem. There is a FAQ that asks you to talk about what kinds of coordinate between projects will be required to realize this vision.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » How much detail should I give? How specific should I be?","id":"47","title":"How much detail should I give? How specific should I be?"},"470":{"body":"To address the first problem: Niklaus' new design decoupled the work that needed to be done (solving physics equations for each patch in the grid) from the workers (threads), this would allow him to set the number of threads and not use all the CPU resources. So, he began looking for a tool in Rust that would meet this design pattern. When he read about async and how it allowed the user to define units of work and send those to an executor which would manage the execution of those tasks across a set of workers, he thought he'd found exactly what he needed. He also thought that the .await semantics would give a much better way of coordinating dependencies between patches. Further reading indicated that tokio was the runtime of choice for async in the community and, so, he began building a new CFD solver with async and tokio. After making some progress, Niklaus ran into his firts problem. Niklaus had been under a false impression about what async executors do. He had assumed that a multi-threaded executor could automatically move the execution of an async block to a worker thread. When this turned out to wrong, he went to Stackoverflow and learned that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Niklaus felt that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. Niklaus second problem came as he tried to fully replace the message passing from the first design: sharing data between tasks. He used the async API to coordinate computation of patches so that a patch would only go to a worker when all its dependencies had completed. But he also needed to account for the solution data which was passed in the messages. He setup a shared data structure to track the solutions for each patch now that messages would not be passing that data. Learning how to properly use shared data with async was a new challenge. The initial design: let mut stage_primitive_and_scalar = |index: BlockIndex, state: BlockState, hydro: H, geometry: GridGeometry| { let stage = async move { let p = state.try_to_primitive(&hydro, &geometry)?; let s = state.scalar_mass / &geometry.cell_volumes / p.map(P::lorentz_factor); Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) ) }; stage_map.insert(index, runtime.spawn(stage).map(|f| f.unwrap()).shared()); }; lacked performance because he needed to clone the value for every task. So, Niklaus switched over to using Arc to keep a thread safe RC to the shared data. But this change introduced a lot of .map and .unwrap function calls, making the code much harder to read. He realized that managing the dependency graph was not intuitive when using async for concurrency. As the program matured, a new problem arose: a steep learning curve with error handling. The initial version of his design used panic!s to fail the program if an error was encountered, but the stack traces were almost unreadable. He asked his teammate Grace to migrate over to using the Result idiom for error handling and Grace found a major inconvenience. The Rust type inference inconsistently breaks when propagating Result in async blocks. Grace frequently found that she had to specify the type of the error when creating a result value: Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) ) And she could not figure out why she had to add the ::<_, HydroError> to some of the Result values. Finally, once Niklaus' team began using the new async design for their simulations, they noticed an important issue that impacted productivity: compilation time had now increased to between 30 and 60 seconds. The nature of their work requires frequent changes to code and recompilation and 30-60 seconds is long enough to have a noticeable impact on their quality of life. What he and his team want is for compilation to be 2 to 3 seconds. Niklaus believes that the use of async is a major contributor to the long compilation times. This new solution works, but Niklaus is not satisfied with how complex his code became after the move to async and that compilation time is now 30-60 seconds. The state sharing adding a large amount of cruft with Arc and async is not well suited for using a dependency graph to schedule tasks so implementing this solution created a key component of his program that was difficult to understand and pervasive. Ultimately, his conclusion was that async is not appropriate for parallelizing computational tasks. He will be trying a new design based upon Rayon in the next version of her application.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » Solution Path","id":"470","title":"Solution Path"},"471":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » 🤔 Frequently Asked Questions","id":"471","title":"🤔 Frequently Asked Questions"},"472":{"body":"async looks to be the wrong choice for parallelizing compute bound/computational work There is a lack of guidance to help people solving such problems get started on the right foot Quality of Life issues (compilation time, type inference on Result) can create a drag on users ability to focus on their domain problem","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » What are the morals of the story?","id":"472","title":"What are the morals of the story?"},"473":{"body":"This story is based on the experience of building the kilonova hydrodynamics simulation solver.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » What are the sources for this story?","id":"473","title":"What are the sources for this story?"},"474":{"body":"I chose Niklaus as the primary character in this story because this work was driven by someone who only uses programming for a small part of their work. Grace was chosen as a supporting character because of that persons experience with C/C++ programming and to avoid repeating characters.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » Why did you choose Niklaus and Grace to tell this story?","id":"474","title":"Why did you choose Niklaus and Grace to tell this story?"},"475":{"body":"Alan: there's a good chance he would have already had experience working with either async workflows in another language or doing parallelization of compute bound tasks; and so would already know from experience that async was not the right place to start. Grace: likewise, might already have experience with problems like this and would know what to look for when searching for tools. Barbara: the experience would likely be fairly similar, since the actual subject of this story is quite familiar with Rust by now","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » How would this story have played out differently for the other characters?","id":"475","title":"How would this story have played out differently for the other characters?"},"476":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » 😱 Status quo stories: Niklaus Wants to Share Knowledge","id":"476","title":"😱 Status quo stories: Niklaus Wants to Share Knowledge"},"477":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » 🚧 Warning: Draft status 🚧","id":"477","title":"🚧 Warning: Draft status 🚧"},"478":{"body":"Niklaus, who sometimes goes by the pen name \"Starol Klichols\", has authored some long-form documentation about Rust that people have found helpful. One could even go so far as to call this documentation a \"book\" . Niklaus has typically minimized the use of crates in documentation like this as much as possible. Niklaus has limited time to dedicate to keeping the documentation up to date, and given the speed at which the ecosystem sometimes evolves, it's hard to keep up when crates are involved. Also, Niklaus would like to avoid limiting the readership of the documentation to the users of a particular crate only, and would like to avoid any accusations of favoritism. But Niklaus would really really like to document async to avoid disappointing people like Barbara ! Niklaus was excited about the RFC proposing that block_on be added to the stdlib , because it seemed like that would solve Niklaus' problems. Niklaus would really like to include async in a big update to the documentation. No pressure.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » The story","id":"478","title":"The story"},"479":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » 🤔 Frequently Asked Questions","id":"479","title":"🤔 Frequently Asked Questions"},"48":{"body":"Take your best guess and add a FAQ explaining which details are still up in the air.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » What do I do when I get to details that I don't know yet?","id":"48","title":"What do I do when I get to details that I don't know yet?"},"480":{"body":"Writing documentation to go with the language/stdlib for something that is half in the language/stdlib and half in the ecosystem is hard. This is related to Barbara's story about wanting to get started without needing to pick an executor. There are topics of async that apply no matter what executor you pick, but it's hard to explain those topics without picking an executor to demonstrate with. We all have too much work to do and not enough time.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » What are the morals of the story?","id":"480","title":"What are the morals of the story?"},"481":{"body":"It me and Steve. Surprise! We've wanted to add async to the book for a long time . So far, we use exactly one crate in the book, rand, and a recent update to rand caused readers confusion and caused a bunch of work on our part. Take a look at all the issues linked to this PR . I really really really don't want to use more crates in the book.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » What are the sources for this story?","id":"481","title":"What are the sources for this story?"},"482":{"body":"Niko said I couldn't add new characters.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » Why did you choose Niklaus to tell this story?","id":"482","title":"Why did you choose Niklaus to tell this story?"},"483":{"body":"I happen to know that the next version of Programming Rust, whose authors might be described as different characters, includes async and uses async-std. So it's possible to just pick an executor and add async to the book, but I don't wanna.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » How would this story have played out differently for the other characters?","id":"483","title":"How would this story have played out differently for the other characters?"},"484":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » ✨ Shiny future: Where we want to get to","id":"484","title":"✨ Shiny future: Where we want to get to"},"485":{"body":"We are still in the process of drafting the vision document. The stories you see on this page are examples meant to give a feeling for how a shiny future story looks; you can expect them to change. We encourage you to propose your own by opening a PR -- see the \"How to vision\" page for instructions and details.","breadcrumbs":"🔮 The vision » ✨ Shiny future » 🚧 Under construction! Help needed! 🚧","id":"485","title":"🚧 Under construction! Help needed! 🚧"},"486":{"body":"The \"shiny future\" is here to tell you what we are trying to build over the next 2 to 3 years. That is, it presents our \"best guess\" as to what will look like a few years from now. When describing specific features, it also embeds links to design notes that describe the constraints and general plans around that feature. 🧐 You may also enjoy reading the blog post announcing the brainstorming effort.","breadcrumbs":"🔮 The vision » ✨ Shiny future » What it this","id":"486","title":"What it this"},"487":{"body":"You'll notice that the ideas in this document are maximalist and ambitious . They stake out an opinionated position on how the ergonomics of Async I/O should feel. This position may not, in truth, be attainable, and for sure there will be changes along the way. Sometimes the realities of how computers actually work may prevent us from doing all that we'd like to. That's ok. This is a dream and a goal. We fully expect that the designs and stories described in this document will change as we work towards realizing them. When there are areas of particular uncertainty, we use the Frequently Asked Questions and the design docs to call them out.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Think big -- too big, if you have to","id":"487","title":"Think big -- too big, if you have to"},"488":{"body":"We haven't written these yet!","breadcrumbs":"🔮 The vision » ✨ Shiny future » Where are the stories?","id":"488","title":"Where are the stories?"},"489":{"body":"This is a template for adding new \"shiny future\" stories. To propose a new shiny future PR, do the following: Create a new file in the shiny_future directory named something like Alan_loves_foo.md or Grace_does_bar_and_its_great.md, and start from the raw source from this template . You can replace all the italicized stuff. :) Do not add a link to your story to the SUMMARY.md file; we'll do it after merging, otherwise there will be too many conflicts. For more detailed instructions, see the How To Vision: Shiny Future page!","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » ✨ Shiny future stories: template","id":"489","title":"✨ Shiny future stories: template"},"49":{"body":"You don't have to know how your idea will work yet. We will eventually have to figure out the precise designs, but at this point we're more interested in talking about the experience we aim to create. That said, if you do have plans for how to achieve your shiny future, you can also include [design docs] in the PR, or add FAQ that specify what you have in mind (and perhaps what you have to figure out still).","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » Do we have to know exactly how we will achieve the \"shiny future\"?","id":"49","title":"Do we have to know exactly how we will achieve the \"shiny future\"?"},"490":{"body":"This is a draft \"shiny future\" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong . At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story !","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » 🚧 Warning: Draft status 🚧","id":"490","title":"🚧 Warning: Draft status 🚧"},"491":{"body":"Write your story here! Feel free to add subsections, citations, links, code examples, whatever you think is best.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » The story","id":"491","title":"The story"},"492":{"body":"NB: These are generic FAQs. Feel free to customize them to your story or to add more.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » 🤔 Frequently Asked Questions","id":"492","title":"🤔 Frequently Asked Questions"},"493":{"body":"Link to status quo stories if they exist. If not, that's ok, we'll help find them.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » What status quo stories are you retelling?","id":"493","title":"What status quo stories are you retelling?"},"494":{"body":"Summarize the main attributes of the design you were trying to convey.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » What are the key attributes of this shiny future?","id":"494","title":"What are the key attributes of this shiny future?"},"495":{"body":"Thing about Rust's core \"value propositions\": performance, safety and correctness, productivity. Which benefit the most relative to today?","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » What is the \"most shiny\" about this future?","id":"495","title":"What is the \"most shiny\" about this future?"},"496":{"body":"Thing about Rust's core \"value propositions\": performance, safety and correctness, productivity. Are any of them negatively impacted? Are there specific application areas that are impacted negatively? You might find the sample projects helpful in this regard, or perhaps looking at the goals of each character .","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » What are some of the potential pitfalls about this future?","id":"496","title":"What are some of the potential pitfalls about this future?"},"497":{"body":"The act of writing shiny future stories can uncover things we didn't expect to find. Did you have any new and exciting ideas as you were writing? Realize some complications that you didn't foresee?","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » Did anything surprise you when writing this story? Did the story go any place unexpected?","id":"497","title":"Did anything surprise you when writing this story? Did the story go any place unexpected?"},"498":{"body":"Often when writing stories, we think about various possibilities. Sketch out some of the turning points here -- maybe someone will want to turn them into a full story! Alternatively, if this is a variation on an existing story, link back to it here.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written?","id":"498","title":"What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written?"},"499":{"body":"Often the 'shiny future' stories involve technical problems that we don't really know how to solve yet. If you see such problems, list them here!","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » What are some of the things we'll have to figure out to realize this future? What projects besides Rust itself are involved, if any? (Optional)","id":"499","title":"What are some of the things we'll have to figure out to realize this future? What projects besides Rust itself are involved, if any? (Optional)"},"5":{"body":"Licensed under either of Apache License, Version 2.0 ( LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) MIT license ( LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.","breadcrumbs":"👋🏽 Welcome » License","id":"5","title":"License"},"50":{"body":"Add it to the FAQ!","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » What do I do if somebody leaves a comment about how my idea will work and I don't know the answer?","id":"50","title":"What do I do if somebody leaves a comment about how my idea will work and I don't know the answer?"},"500":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » ✨ Shiny future stories: Alan switches runtimes","id":"500","title":"✨ Shiny future stories: Alan switches runtimes"},"501":{"body":"This is a draft \"shiny future\" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong . At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story !","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » 🚧 Warning: Draft status 🚧","id":"501","title":"🚧 Warning: Draft status 🚧"},"502":{"body":"Since his early adventures with Async I/O went so well, Alan has been looking for a way to learn more. He finds a job working in Rust. One of the projects he works on is DistriData . Looking at their code, he sees an annotation he has never seen before: #[humboldt::main]\nasync fn main() -> Result<(), Box> { let result = std::async_thread::spawn(async move { do_something() });\n} He asks Barbara, one of his coworkers, \"What is this humboldt::main annotation? What's humboldt?\" She answers by explaining to him that Rust's support for async I/O is actually based around an underlying runtime. \"Rust gives you a pretty decent runtime by default,\" she says, \"but it's not tuned for our workloads. We wrote our own runtime, which we call humboldt.\" Alan asks, \"What happens with the various std APIs? For example, I see we are calling std::async_thread::spawn -- when I used that before, it spawned tasks into the default runtime. What happens now?\" Barbara explains that the \"async\" APIs in std generally execute relative to the current runtime that is in use. \"When you call std::async_thread::spawn, it will spawn a task onto the current runtime. It's the same with the routines in std::async_io and so forth. The humboldt::main annotation actually just creates a synchronous main function that initializes the humboldt runtime and launches the first future. When you just write an async fn main without any annotation, the compiler synthesizes the same main function with the default runtime.\"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » The story","id":"502","title":"The story"},"503":{"body":"Alan sees that some of the networking code that is being used in their application is creating network connections using humboldt APIs: use humboldt::network; He asks Barbara, \"Why don't we use the std::async_io APIs for that?\" She explains that Humboldt makes use of some custom kernel extensions that, naturally enough, aren't part of the std library. \"TCP is for rubes,\" she says, \"we are using TTCP -- Turbo TCP.\" Her mind wanders briefly to Turbo Pascal and she has a brief moment of yearning for the days when computers had a \"Turbo\" button that changed them from 8 MHz to 12 MHz. She snaps back into the present day. \"Anyway, the std::async_io APIs just call into humboldt's APIs via various traits. But we can code directly against humboldt when we want to access the extra capabilities it offers. That does make it harder to change to another runtime later, though.\"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » Learning more about Humboldt","id":"503","title":"Learning more about Humboldt"},"504":{"body":"Later on, Alan is working on a visualizer front-end that integrates with DistriData to give more details about their workloads. To do it, he needs to integrate with Cocoa APIs and he wants to run certain tasks on Grand Central Dispatch . He approaches Barbara and asks, \"If everything is running on humboldt, is there a way for me to run some things on another event loop? How does that work?\" Barbara explains, \"That's easy. You just have to use the gcd wrapper crate -- you can find it on crates.io. It implements the runtime traits for gcd and it has a spawn method. Once you spawn your task onto gcd, everything you run within gcd will be running in that context.\" Alan says, \"And so, if I want to get things running on humboldt again, I spawn a task back on humboldt?\" \"Exactly,\" says Barbara. \"Humboldt has a global event loop, so you can do that by just doing humboldt::spawn. You can also just use the humboldt::io APIs directly. They will always use the Humboldt I/O threads, rather than using the current runtime.\" Alan winds up with some code that looks like this: async fn do_something_on_humboldt() { gcd::spawn(async move { let foo = do_something_on_gcd(); let bar = humboldt::spawn(async move { do_a_little_bit_of_stuff_on_humboldt(); }); combine(foo.await, bar.await); });\n}","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » Integrating into other event loops","id":"504","title":"Integrating into other event loops"},"505":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » 🤔 Frequently Asked Questions","id":"505","title":"🤔 Frequently Asked Questions"},"506":{"body":"Good question! I'm not entirely sure! I have to go looking and think about it. Maybe we'll have to write some more.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What status quo story or stories are you retelling?","id":"506","title":"What status quo story or stories are you retelling?"},"507":{"body":"There is some way to seamlessly change to a different default runtime to use for async fn main. There is no global runtime, just the current runtime. When you are using this different runtime, you can write code that is hard-coded to it and which exposes additional capabilities. You can integrate multiple runtimes relatively easily, and the std APIs work with whichever is the current runtime.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What are the key points you were trying to convey with this status quo story?","id":"507","title":"What are the key points you were trying to convey with this status quo story?"},"508":{"body":"I was imagining that we would add fields to the Context<'_> struct that is supplied to each async fn when it runs. Users don't have direct access to this struct, but the compiler does. If the std APIs return futures, they would gain access to it that way as well. If not, we'd have to create some other mechanism.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » How do you imagine the std APIs and so forth know the current runtime?","id":"508","title":"How do you imagine the std APIs and so forth know the current runtime?"},"509":{"body":"That feels like a portability question. See the (yet to be written) sequel story, \"Alan runs some things on WebAssembly\". =)","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What happens for runtimes that don't support all the features that std supports?","id":"509","title":"What happens for runtimes that don't support all the features that std supports?"},"51":{"body":"Glad you asked! The vision document is a living document, and we intend to revisit it regularly. This is important because it turns out that predicting the future is hard. We fully expect that some aspects of the \"shiny future\" stories we write are going to be wrong, sometimes very wrong. We will be regularly returning to the vision document to check how things are going and adjust our trajectory appropriately.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » What if we write a \"shiny future\" story but it turns out to be impossible to implement?","id":"51","title":"What if we write a \"shiny future\" story but it turns out to be impossible to implement?"},"510":{"body":"Alan is excited about how easy it is to get async programs up and running, and he finds that they perform pretty well once he does so, so he's happy.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What is Alan most excited about in this future? Is he disappointed by anything?","id":"510","title":"What is Alan most excited about in this future? Is he disappointed by anything?"},"511":{"body":"Grace is concerned with memory safety and being able to deploy her tricks she knows from other languages. Memory safety works fine here. In terms of tricks she knows and loves, she's happy that she can easily switch to another runtime. The default runtime is good and works well for most things, but for the [DistriData] project, they really need something tailored just for them. She is also happy she can use the extended APIs offered by humboldt.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What is Grace most excited about in this future? Is she disappointed by anything?","id":"511","title":"What is Grace most excited about in this future? Is she disappointed by anything?"},"512":{"body":"Niklaus finds it async Rust quite accessible, for the same reasons cited as in \"Alan's Trust in the Rust Compiler is Rewarded\" .","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What is Niklaus most excited about in this future? Is he disappointed by anything?","id":"512","title":"What is Niklaus most excited about in this future? Is he disappointed by anything?"},"513":{"body":"Depending on the technical details, Barbara may be a bit disappointed by the details of how std interfaces with the runtimes, as that may introduce some amount of overhead. This may not matter in practice, but it could also lead to library authors avoiding the std APIs in favor of writing generics or other mechanisms that are \"zero overhead\".","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What is Barbara most excited about in this future? Is she disappointed by anything?","id":"513","title":"What is Barbara most excited about in this future? Is she disappointed by anything?"},"514":{"body":"Projects like DistriData really benefit from being able to customize their runtime.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What projects benefit the most from this future?","id":"514","title":"What projects benefit the most from this future?"},"515":{"body":"We have to pay careful attention to embedded projects like MonsterMesh . Some of the most obvious ways to implement this future would lean on dyn types and perhaps boxing, and that would rule out some embedded projects. Embedded runtimes like embassy are also the most different in their overall design and they would have the hardest time fitting into the std APIs (of course, many embedded projects are already no-std, but many of them make use of some subset of the std capabilities through the facade). In general, traits and generic functions in std could lead to larger code size, as well.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » Are there any projects that are hindered by this future?","id":"515","title":"Are there any projects that are hindered by this future?"},"516":{"body":"There are a few steps required to realize this future: We have to determine the core mechanism that is used for std types to interface with the current scheduler. Is it based on dynamic dispatch? Delayed linking? Some other tricks we have yet to invent? Depending on the details, language changes may be required. We have to hammer out the set of traits or other interfaces used to define the parts of a runtime (see below for some of the considerations). We can start with easier cases and proceed to more difficult ones, however.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What are the incremental steps towards realizing this shiny future?","id":"516","title":"What are the incremental steps towards realizing this shiny future?"},"517":{"body":"Yes. We will need to collaborate to define traits that std can use to interface with each runtime, and the runtimes will need to implement those traits. This is going to be non-trivial, because we want to preserve the ability for independent runtimes to experiment, while also preserving the ability to \"max and match\" and re-use components. For example, it'd probably be useful to have a bunch of shared I/O infrastructure, or to have utility crates for locks, for running threadpools, and the like. On the other hand, tokio takes advantage of the fact that it owns the I/O types and the locks and the scheduler to do some nifty tricks and we would want to ensure that remains an option.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » Does realizing this future require cooperation between many projects?","id":"517","title":"Does realizing this future require cooperation between many projects?"},"518":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » ✨ Shiny future stories: Alan's trust in the compiler is rewarded","id":"518","title":"✨ Shiny future stories: Alan's trust in the compiler is rewarded"},"519":{"body":"This is a draft \"shiny future\" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong . At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story !","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » 🚧 Warning: Draft status 🚧","id":"519","title":"🚧 Warning: Draft status 🚧"},"52":{"body":"Figuring out the future is tricky business. We all know the internet is not always a friendly place. We want this discussion to be different.","breadcrumbs":"🔮 The vision » ❓How to vision » Commenting » ❓ How to vision: Constructive comments","id":"52","title":"❓ How to vision: Constructive comments"},"520":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » The story","id":"520","title":"The story"},"521":{"body":"Alan has a lot of experience in C#, but in the meantime has created some successful projects in Rust. He has dealt with his fair share of race conditions/thread safety issues during runtime in C#, but is now starting to trust that if his Rust code compiles, he won't have those annoying runtime problems to deal with. This allows him to try to squeeze his programs for as much performance as he wants, because the compiler will stop him when he tries things that could result in runtime problems. After seeing the performance and the lack of runtime problems, he starts to trust the compiler more and more with each project finished. He knows what he can do with external libraries, he does not need to fear concurrency issues if the library cannot be used from multiple threads, because the compiler would tell him. His trust in the compiler solidifies further the more he codes in Rust.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » Trust the compiler","id":"521","title":"Trust the compiler"},"522":{"body":"Alan now starts with his first async project. He opens up the Rust book to the \"Async I/O\" chapter and it guides him to writing his first program. He starts by writing some synchronous code to write to the file system: use std::fs::File; fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\")?; file.write_all(b\"Hello, world!\")?; Ok(())\n} Next, he adapts that to run in an async fashion. He starts by converting main into async fn main: use std::fs::File; async fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\")?; file.write_all(b\"Hello, world!\")?; Ok(())\n} The code compiles, but he gets a warning: warning: using a blocking API within an async function --> src/main.rs:4:25\n1 | use std::fs::File; | ------------- try changing to `std::async_io::fs::File` | ...\n4 | let mut file: u32 = File::create(\"a.txt\")?; | ^^^^^^^^^^^^ blocking functions should not be used in async fn\nhelp: try importing the async version of this type --> src/main.rs:1\n1 | use std::async_fs::File; \"Oh, right,\" he says, \"I am supposed to use the async variants of the APIs.\" He applies the suggested fix in his IDE, and now his code looks like: use std::async_fs::File; async fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\")?; file.write_all(b\"Hello, world!\")?; Ok(())\n} His IDE recompiles instantaneously and he now sees two little squiggles, one under each ?. Clicking on the errors, he sees: error: missing await --> src/main.rs:4:25\n4 | let mut file: u32 = File::create(\"a.txt\")?; | ^ returns a future, which requires an await\nhelp: try adding an await --> src/main.rs:1\n4 | let mut file: u32 = File::create(\"a.txt\").await?; He again applies the suggested fix, and his code now shows: use std::async_fs::File; async fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\").await?; file.write_all(b\"Hello, world!\").await?; Ok(())\n} Happily, it compiles, and when he runs it, everything works as expected. \"Cool,\" he thinks, \"this async stuff is pretty easy!\"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » The first async project","id":"522","title":"The first async project"},"523":{"body":"Next, Alan decides to experiment with some simple web requests. This isn't part of the standard library, but the fetch_rs package is listed in the Rust book. He runs cargo add fetch_rs to add it to his Cargo.toml and then writes: use std::async_fs::File;\nuse fetch_rs; async fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\")?; file.write_all(b\"Hello, world!\")?; let body = fetch_rs::get(\"https://www.rust-lang.org\") .await? .text() .await?; println!(\"{}\", body); Ok(())\n} This feels pretty easy!","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » Making some web requests","id":"523","title":"Making some web requests"},"524":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » 🤔 Frequently Asked Questions","id":"524","title":"🤔 Frequently Asked Questions"},"525":{"body":"Alan started trusting the Rust compiler, but then async Barbara makes their first foray into async","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What status quo story or stories are you retelling?","id":"525","title":"What status quo story or stories are you retelling?"},"526":{"body":"Getting started with async should be as automated as possible: change main to an async fn; use the APIs found in modules like std::async_foo, which should map as closely as possible to their non-async equivalents. You should get some sort of default runtime that is decent Lints should guide you in using async: identifying blocking functions identifying missing await You should be able to grab libraries from the ecosystem and they should integrate with the default runtime without fuss","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What are the key points you were trying to convey with this status quo story?","id":"526","title":"What are the key points you were trying to convey with this status quo story?"},"527":{"body":"This particular story doesn't talk about what happens when the default runtime isn't suitable. But you may want to read its sequel, \"Alan Switches Runtimes\" .","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » Is there a \"one size fits all\" runtime in this future?","id":"527","title":"Is there a \"one size fits all\" runtime in this future?"},"528":{"body":"Alan is excited about how easy it is to get async programs up and running. He also finds the performance is good. He's good.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What is Alan most excited about in this future? Is he disappointed by anything?","id":"528","title":"What is Alan most excited about in this future? Is he disappointed by anything?"},"529":{"body":"Grace is happy because she is getting strong safety guarantees and isn't getting surprising runtime panics when composing libraries. The question of whether she's able to use the tricks she knows and loves is a good one, though. The default scheduler may not optimize for maximum performance -- this is something to explore in future stories. The \"Alan Switches Runtimes\" , for example, talks more about the ability to change runtimes.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What is Grace most excited about in this future? Is she disappointed by anything?","id":"529","title":"What is Grace most excited about in this future? Is she disappointed by anything?"},"53":{"body":"Writing a \"status quo\" or \"shiny future\" story is an act of bravery and vulnerability. In the status quo, we are asking people to talk about the things that they or others found hard, to admit that they had trouble figuring something out. In the case of the shiny future, we're asking people to put out half-baked ideas so that we can find the seeds that will grow into something amazing. It doesn't take much to make that go wrong.","breadcrumbs":"🔮 The vision » ❓How to vision » Commenting » Be respectful and supportive","id":"53","title":"Be respectful and supportive"},"530":{"body":"Niklaus is quite happy. Async Rust is fairly familiar and usable for him. Further, the standard library includes \"just enough\" infrastructure to enable a vibrant crates-io ecosystem without centralizing everything.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What is Niklaus most excited about in this future? Is he disappointed by anything?","id":"530","title":"What is Niklaus most excited about in this future? Is he disappointed by anything?"},"531":{"body":"Barbara quite likes that the std APIs for sync and sync fit together, and that there is a consistent naming scheme across them. She likes that there is a flourishing ecosystem of async crates that she can choose from.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What is Barbara most excited about in this future? Is she disappointed by anything?","id":"531","title":"What is Barbara most excited about in this future? Is she disappointed by anything?"},"532":{"body":"A number of projects benefit: Projects like YouBuy are able to get up and going faster. Libraries like SLOW become easier because they can target the std APIs and there is a defined plan for porting across runtimes.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What projects benefit the most from this future?","id":"532","title":"What projects benefit the most from this future?"},"533":{"body":"It depends on the details of how we integrate other runtimes. If we wound up with a future where most libraries are \"hard-coded\" to a single default runtime, this could very well hinder any number of projects, but nobody wants that.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » Are there any projects that are hindered by this future?","id":"533","title":"Are there any projects that are hindered by this future?"},"534":{"body":"This question can't really be answered in isolation, because so much depends on the story for how we integrate with other runtimes. I don't think we can accept a future where is literally a single runtime that everyone has to use, but I wanted to pull out the question of \"non-default runtimes\" (as well as more details about the default) to other stories.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What are the incremental steps towards realizing this shiny future?","id":"534","title":"What are the incremental steps towards realizing this shiny future?"},"535":{"body":"Yes. For external libraries like fetch_rs to interoperate they will want to use the std APIs (and probably traits).","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » Does realizing this future require cooperation between many projects?","id":"535","title":"Does realizing this future require cooperation between many projects?"},"536":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » ✨ Shiny future stories: Barbara makes a wish","id":"536","title":"✨ Shiny future stories: Barbara makes a wish"},"537":{"body":"This is a draft \"shiny future\" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong . At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story !","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » 🚧 Warning: Draft status 🚧","id":"537","title":"🚧 Warning: Draft status 🚧"},"538":{"body":"Barbara has an initial prototype of a new service she wrote in sync Rust. She then decides, since the service is extremely I/O bound, to port it to async Rust and her benchmarks have led her to believe that performance is being left on the table. She does this by sprinkling async/.await everywhere, picking an executor, and moving dependencies from sync to async. Once she has the program compiling, she thinks \"oh that was easy\". She runs it for the first time and surprisingly she finds out that when hitting an endpoint, nothing happens. Barbara, always prepared, has already added logging to her service and she checks the logs. As she expected, she sees here that the endpoint handler has been invoked but then... nothing. Barbara exclaims, \"Oh no! This was not what I was expecting, but let's dig deeper.\" She checks the code and sees that the endpoint spawns several tasks, but unfortunately those tasks don't have much logging in them. Barbara now remembers hearing something about a wish4-async-insight crate, which has gotten some buzz on her Rust-related social media channels. She decides to give that a shot. She adds the crate as a dependency to her Cargo.toml, renaming it to just insight to make it easier to reference in her code, and then initializes it in her main async function. async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { insight::init(); // new code ...\n} Barbara rebuilds and runs her program again. She doesn't see anything different in the terminal output for the program itself though, and the behavior is the same as before: hitting an endpoint, nothing happens. She double-checks the readme for the wish4-async-insight crate, and realizes that she needs to connect other programs to her service to observe the insights being gathered. Barbara decides that she wants to customize the port that insight is listening on before she starts her experiments with those programs. async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { insight::init(listen_port => 8080); // new code, leveraging keyword arguments feature added in 2024 ...\n} While her code rebuilds, Barbara investigates what programs she might use to connect to the insight crate. One such program, consolation, can run in the terminal. Barbara is currently just deploying her service locally on her development box, so she opts to try that out and see what it tells her. % rustup install wish4-consolation\n...\n% consolation --port 8080 This brings up a terminal window that looks similar to the Unix top program, except that instead of a list of OS processes, this offers a list of tasks, with each task having a type, ID, and status history (i.e. percentage of time spent in running, ready to poll, or blocked). Barbara skims the output in the list, and sees that one task is listed as currently blocked. Barbara taps the arrow-keys and sees that this causes a cursor to highlight different tasks in the list. She highlights the blocked task and hits the Enter key. This causes the terminal to switch to a Task view, describing more details about that task and its status. The Task view here says that the task is blocked, references a file and line number, and also includes the line from the source code, which says chan.send(value).await. The blocked task also lists the resources that the task is waiting on: prototype_channel, and next to that there is text on a dark red background: \"waiting on channel capacity.\" Again, Barbara taps the arrow-keys and sees that she can select the line for the resource. Barbara notices that this whole time, at the bottom of the terminal, there was a line that says \"For help, hit ? key\"; she taps question mark. This brings up a help message in a scrollable subwindow explaining the task view in general as well as link to online documentation. The help message notes that the user can follow the chain: One can go from the blocked task to the resource it's waiting on, and from that resource to a list of tasks responsible for freeing up the resource. Barbara hits the Escape key to close the help window. The highlight is still on the line that says \"prototype_channel: waiting on channel capacity\"; Barbara hits Enter, and this brings up a list with just one task on it: The channel reader task. Barbara realizes what this is saying: The channel resource is blocking the sender because it is full, and the only way that can be resolved is if the channel reader manages to receive some inputs from the channel. Barbara opens the help window again, and brings up the link to the online documentation. There, she sees discussion of resource starvation and the specific case of a bounded channel being filled up before its receiver makes progress. The main responses outlined there are 1. decrease the send rate, 2. increase the receive rate, or 3. increase the channel's internal capacity, noting the extreme approach of changing to an unbounded channel (with the caveat that this risks resource exhaustion). Barbara skims the task view for the channel reader, since she wants to determine why it is not making progress. However, she is eager to see if her service as a whole is workable apart from this issue, so she also adopts the quick fix of swapping in an unbounded channel. Barbara is betting that if this works, she can use the data from wish4-async-insight about the channel sizes to put a bounded channel with an appropriate size in later. Barbara happily moves along to some initial performance analysis of her \"working\" code, eager to see what other things wish4-async-insight will reveal during her explorations.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » The story","id":"538","title":"The story"},"539":{"body":"The original status quo story just said that Barbara's problem was resolved (sort of) by switching to an unbounded channel. I, much like Barbara, could not tell why this resolved her problem. In particular, I could not tell whether there was an outright deadlock due to a cycle in the task-resource dependency chain that, or if there something more subtle happening. In the story above, I assumed it was the second case: something subtle. Here's an important alternate history though, for the first case of a cycle. Its ... the same story, right up to when Barbara first runs consolation: % rustup install wish4-consolation\n...\n% consolation --port 8080 This brings up a terminal window that looks similar to the Unix top program, except that instead of a list of OS processes, this offers a list of tasks, and shows their status (i.e. running, ready to poll, or blocked), as well as some metrics about how long the tasks spend in each state. At the top of the screen, Barbara sees highlighted warning: \"deadlock cycle was detected. hit P for more info.\" Barbara types capital P. The terminal switches to \"problem view,\" which shows The task types, ID, and attributes for each type. The resources being awaited on The location / backtrace of the await. A link to a documentation page expanding on the issue. The screen also says \"hit D to generate a graphviz .dot file to disk describing the cycle.\" Barbara hits D and stares at the resulting graph, which shows a single circle (labelled \"task\"), and an arc to a box (labelled \"prototype_channel\"), and an arc from that box back to the circle. The arc from the circle to the box is labelled send: waiting on channel capacity, and the arc from the box to the circle is labelled \"sole consumer (mpsc channel)\". graph TD task -- send: waiting on channel capacity --> prototype_channel prototype_channel -- \"sole receiver (mpsc channel)\" --> task task((task)) Barbara suddenly realizes her mistake: She had constructed a single task that was sometimes enqueuing work (by sending messages on the channel), and sometimes dequeuing work, but she had not put any controls into place to ensure that the dequeuing (via recv) would get prioritized as the channel filled up. Barbara reflects on the matter: she knows that she could swap in an unbounded channel to resolve this, but she thinks that she would be better off thinking a bit more about her system design, to see if she can figure out a way to supply back-pressure so that the send rate will go down as the channel fills up.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » Alternate History","id":"539","title":"Alternate History"},"54":{"body":"“Most people do not listen with the intent to understand; they listen with the intent to reply.” -- Stephen Covey The golden rule is that when you leave a comment, you are looking to understand or improve the story. For status quo stories, remember that these are true stories about people's experiences -- they can't be wrong (though they could be inaccurate). It may be that somebody tries for days to solve a problem that would've been easy if they had just known to call a particular method. That story is not wrong, it's an opportunity to write a shiny future story in which you explain how they would've learned about that method, or perhaps about how that method would become unnecessary. For shiny future stories, even if you don't like the idea, you should ask comments with the goal of better understanding what the author likes about it. Understanding that may give you an idea for how to get those same benefits in a way that you are happier with. It's also valid to encourage the author to elaborate on the impact their story will have on different characters.","breadcrumbs":"🔮 The vision » ❓How to vision » Commenting » Comment to understand or improve, not to negate or dissuade","id":"54","title":"Comment to understand or improve, not to negate or dissuade"},"540":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » 🤔 Frequently Asked Questions","id":"540","title":"🤔 Frequently Asked Questions"},"541":{"body":"Barbara wants Async Insights","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What status quo story or stories are you retelling?","id":"541","title":"What status quo story or stories are you retelling?"},"542":{"body":"Alan is happy to see a tool that gives one a view into the internals of the async executor. Alan is not so thrilled about using the consolation terminal interface; but luckily there are other options, namely IDE/editor plugins as well as a web-browser based client, that offer even richer functionality, such as renderings of the task/resource dependency graph.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What is Alan most excited about in this future? Is he disappointed by anything?","id":"542","title":"What is Alan most excited about in this future? Is he disappointed by anything?"},"543":{"body":"Grace is happy to see a tool, but wonders whether it could have been integrated into gdb. Grace is not so thrilled to learn that this tool is not going to try to provide specific insight into performance issues that arise solely from computational overheads in her own code. (The readme for wish4-async-insight says on this matter \"for that, use perf,\" which Grace finds unsatisfying.)","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What is Grace most excited about in this future? Is she disappointed by anything?","id":"543","title":"What is Grace most excited about in this future? Is she disappointed by anything?"},"544":{"body":"Niklaus is happy to learn that the wish4-async-insight is supported by both async-std and tokio, since he relies on friends in both communities to help him learn more about Async Rust. Niklaus is happy about the tool's core presentation oriented around abstractions he understands (tasks and resources). Niklaus is also happy about the integrated help. However, Niklaus is a little nervous about some of the details in the output that he doesn't understand.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What is Niklaus most excited about in this future? Is he disappointed by anything?","id":"544","title":"What is Niklaus most excited about in this future? Is he disappointed by anything?"},"545":{"body":"Barbara is thrilled with how this tool has given her insight into the innards of the async executor she is using. She is disappointed to learn that not every async executor supports the wish4-async-insight crate. The crate works by monitoring state changes within the executor, instrumented via the tracing crate. Not every async-executor is instrumented in a fashion compatible with wish4-async-insight.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What is Barbara most excited about in this future? Is she disappointed by anything?","id":"545","title":"What is Barbara most excited about in this future? Is she disappointed by anything?"},"546":{"body":"Any async codebase that can hook into the wish4-async-insight crate and supply its data via a network port during development would benefit from this. So, I suspect any codebase that uses a sufficiently popular (i.e. appropriately instrumented) async executor will benefit. The main exception I can imagine right now is MonsterMesh : its resource constraints and #![no_std] environment are almost certainly incompatible with the needs of the wish4-async-insight crate.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What projects benefit the most from this future?","id":"546","title":"What projects benefit the most from this future?"},"547":{"body":"The only \"hindrance\" is that the there is an expectation that the async-executor be instrumented appropriately to feed its data to the wish4-async-insight crate once it is initialized.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » Are there any projects that are hindered by this future?","id":"547","title":"Are there any projects that are hindered by this future?"},"548":{"body":"Get tracing crate to 1.0 so that async executors can rely on it. Prototype an insight console atop a concrete async executor (e.g. tokio) Develop a shared protocol atop tracing that compatible async executors will use to provide the insightful data.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What are the incremental steps towards realizing this shiny future? (Optional)","id":"548","title":"What are the incremental steps towards realizing this shiny future? (Optional)"},"549":{"body":"Yes. Yes it does. At the very least, as mentioned among the \"incremental steps\", we will need a common protocol that the async executors use to communicate their internal state.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » Does realizing this future require cooperation between many projects? (Optional)","id":"549","title":"Does realizing this future require cooperation between many projects? (Optional)"},"55":{"body":"Remember, opening your own PR is free (In fact, we're giving an award for being \"most prolific\"). If you find that you had a really different experience than a status quo story, or you have a different idea for a shiny future, consider just writing your own PR instead of commenting negatively on someone else's. The goal of the brainstorming phase is to put a lot of alternatives, so that we can look for opportunities to combine them and make something with the best of both.","breadcrumbs":"🔮 The vision » ❓How to vision » Commenting » You might just want to write your own story","id":"55","title":"You might just want to write your own story"},"550":{"body":"This page describes the current plans for 2021. It is updated on a monthly basis.","breadcrumbs":"🔮 The vision » 📅 Roadmap for 2021 » 📅 The roadmap: what we're doing in 2021","id":"550","title":"📅 The roadmap: what we're doing in 2021"},"551":{"body":"We're not really ready to work on this section yet. We're still focused on writing out the status quo . What you see here are really just placeholders to give you the idea of what this section might look like.","breadcrumbs":"🔮 The vision » 📅 Roadmap for 2021 » 🛑 Not time for this yet 🛑","id":"551","title":"🛑 Not time for this yet 🛑"},"552":{"body":"Emoji Meaning 🥬 \"Healthy\" -- on track with the plan as described in the doc ✏️ \"Planning\" -- Still figuring out the plan 🤒 \"Worried\" -- things are looking a bit tricky, plans aren't working out 🏖️ \"On vacation\" -- taking a break right now ⚰️ We gave up on this idea =)","breadcrumbs":"🔮 The vision » 📅 Roadmap for 2021 » Key","id":"552","title":"Key"},"553":{"body":"Plan Owner Status Last updated Async functions in traits nikomatsakis 🥬 2021-02","breadcrumbs":"🔮 The vision » 📅 Roadmap for 2021 » Roadmap items","id":"553","title":"Roadmap items"},"554":{"body":"","breadcrumbs":"🔍 Triage meetings » 🔍 Triage meetings","id":"554","title":"🔍 Triage meetings"},"555":{"body":"The weekly triage meeting is held on Zulip at 13:00 US Eastern time on Fridays ( google calendar event for meeting ).","breadcrumbs":"🔍 Triage meetings » When, where","id":"555","title":"When, where"},"556":{"body":"If you're interested in fixing bugs, there is no need to wait for the triage meeting. Take a look at the mentored async-await bugs that have no assignee . Every mentored bug should have a few comments. If you see one you like, you can add the @rustbot claim comment into the bug and start working on it! Feel to reach out to the mentor on Zulip to ask questions.","breadcrumbs":"🔍 Triage meetings » So you want to fix a bug?","id":"556","title":"So you want to fix a bug?"},"557":{"body":"The project board tracks various bugs and other work items for the async foundation group. It is used to drive the triage process.","breadcrumbs":"🔍 Triage meetings » Project board","id":"557","title":"Project board"},"558":{"body":"In our weekly triage meetings, we take new issues assigned A-async-await and categorize them. The process is: Review the project board , from right to left: Look at what got Done , and celebrate! :tada: Review In progress issues to check we are making progress and there is a clear path to finishing (otherwise, move to the appropriate column) Review Blocked issues to see if there is anything we can do to unblock Review Claimed issues to see if they are in progress, and if the assigned person still intends to work on it Review To do issues and assign to anyone who wants to work on something Review uncategorized issues Mark P-low, P-medium, or P-high Add P-high and assigned E-needs-mentor issues to the project board Mark AsyncAwait-triaged If there's still a shortage of To do issues, review the list of P-medium or P-low issues for candidates","breadcrumbs":"🔍 Triage meetings » Triage process","id":"558","title":"Triage process"},"559":{"body":"If an issue is a good candidate for mentoring, mark E-needs-mentor and try to find a mentor. Mentors assigned to issues should write up mentoring instructions. Often, this is just a couple lines pointing to the relevant code. Mentorship doesn't require intimate knowledge of the compiler, just some familiarity and a willingness to look around for the right code. After writing instructions, mentors should un-assign themselves, add E-mentor, and remove E-needs-mentor. On the project board, if a mentor is assigned to an issue, it should go to the Claimed column until mentoring instructions are provided. After that, it should go to To do until someone has volunteered to work on it.","breadcrumbs":"🔍 Triage meetings » Mentoring","id":"559","title":"Mentoring"},"56":{"body":"Here are some examples of good questions for \"status quo\" stories: Tell me more about this step. What led NAME to do X? What do you think OTHER_NAME would have done here? Can you be more specific about this point? What library did they use?","breadcrumbs":"🔮 The vision » ❓How to vision » Commenting » Good questions for status quo stories","id":"56","title":"Good questions for status quo stories"},"560":{"body":"The design documents (or \"design docs\", more commonly) describe potential designs. These docs vary greatly in terms of their readiness to be implemented: Early on, they describe a vague idea for a future. Often this takes the shape of capturing constraints on the solution, rather than the solution itself. When a feature is getting ready to ship, they can evolve into a full blown RFC, with links to tracking issues or other notes.","breadcrumbs":"🔬 Design docs » 🔬 Design documents","id":"560","title":"🔬 Design documents"},"561":{"body":"In the early stages, design docs are meant to capture interesting bits of \"async design space\". They are often updated to capture the results of a fruitful conversation or thread which uncovered contraints or challenges in solving a particular problem. They will capture a combination of the following: use cases; interesting aspects to the design; alternatives; interactions with other features.","breadcrumbs":"🔬 Design docs » Early stage design docs","id":"561","title":"Early stage design docs"},"562":{"body":"As a design progresses, the doc should get more and more complete, until it becomes something akin to an RFC. (Often, at that point, we will expand the design document into a directory, adding an actual RFC draft and other contents; those things can live in this repo or elsewhere, depending.) Once we decide to put a design doc onto the roadmap, it will also contain links to tracking issues or other places to track the status.","breadcrumbs":"🔬 Design docs » Late stage design docs","id":"562","title":"Late stage design docs"},"563":{"body":"","breadcrumbs":"🔬 Design docs » ⚠️ Yield-safe lint » ⚠️ Yield-safe lint","id":"563","title":"⚠️ Yield-safe lint"},"564":{"body":"Some types should not be held across a \"yield\" bound. A typical example is a MutexGuard: async fn example(x: &Lock) { let data = x.lock().unwrap(); something().await; *data += 1;\n} async fn something() { } In practice, a lot of these issues are avoided because MutexGuard is not Send, but single-thread runtimes hit these issues.","breadcrumbs":"🔬 Design docs » ⚠️ Yield-safe lint » Use-case","id":"564","title":"Use-case"},"565":{"body":"MutexGuard for mutexes, read-write locks Guards for ref-cells Things that might use these types internally and wish to bubble it up","breadcrumbs":"🔬 Design docs » ⚠️ Yield-safe lint » Types where this would apply","id":"565","title":"Types where this would apply"},"566":{"body":"The #[must_use] lint on types, we would want their design to work very closely. Non-async-friendly functions like sleep or task::block_on.","breadcrumbs":"🔬 Design docs » ⚠️ Yield-safe lint » Precedent and related questions","id":"566","title":"Precedent and related questions"},"567":{"body":"Current definition","breadcrumbs":"🔬 Design docs » ☔ Stream trait » ☔ Stream trait","id":"567","title":"☔ Stream trait"},"568":{"body":"pub trait Stream { type Item; fn poll_next( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll>; #[inline] fn size_hint(&self) -> (usize, Option) { (0, None) }\n}","breadcrumbs":"🔬 Design docs » ☔ Stream trait » Trait definition","id":"568","title":"Trait definition"},"569":{"body":"","breadcrumbs":"🔬 Design docs » ☔ Stream trait » Concerns","id":"569","title":"Concerns"},"57":{"body":"Here are some examples of good questions for \"shiny future\" stories: How does NAME do X in this future? It seems like this would interfere with X, which is important for application A. How would NAME handle that case in this future? You should not be afraid to raise technical concerns -- we need to have a robust technical discussion! But do so in a way that leaves room to find an answer that satisfies both of you.","breadcrumbs":"🔮 The vision » ❓How to vision » Commenting » Good questions for shiny future stories","id":"57","title":"Good questions for shiny future stories"},"570":{"body":"You have to think about Pin if you implement this trait. Combinators can be more difficult. One solution: generator syntax .","breadcrumbs":"🔬 Design docs » ☔ Stream trait » Poll-based design","id":"570","title":"Poll-based design"},"571":{"body":"Sometimes streams need to reuse internal storage ( Discussion ).","breadcrumbs":"🔬 Design docs » ☔ Stream trait » Attached streams are commonly desired","id":"571","title":"Attached streams are commonly desired"},"572":{"body":"Currently the combinations are stored in the StreamExt module. In some cases, this is because of the lack of async closures support. Also serves as a \"semver barrier\". Also no-std compatibility. One question: what combinators (if any) to include when stabilizing? e.g., poll_next_unpin can make working with pin easier, albeit at a loss of generality folks who are new to pinning could use this method, and it can help us to guide the diagnostics by suggesting that they Box::pin","breadcrumbs":"🔬 Design docs » ☔ Stream trait » Combinators","id":"572","title":"Combinators"},"573":{"body":"It would be useful to be able to write a function to return an iterator or (in the async context) a generator The basic shape might be (modulo bikeshedding) gen fn that contains yield Some question marks: How general of a mechanism do we want? Just target iterators and streams, or shoot for something more general? Some of the question marks that arise if you go beyond iterators and streams: Return values that are not unit Have yield return a value that is passed by the caller of next (\"resume args\")","breadcrumbs":"🔬 Design docs » ⚡ Generator syntax » ⚡ Generator syntax","id":"573","title":"⚡ Generator syntax"},"574":{"body":"","breadcrumbs":"🔬 Design docs » 📝 AsyncRead, AsyncWrite traits » 📝 AsyncRead, AsyncWrite traits","id":"574","title":"📝 AsyncRead, AsyncWrite traits"},"575":{"body":"Why async fn in traits are hard","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » 🧬 Async fn in traits","id":"575","title":"🧬 Async fn in traits"},"576":{"body":"trait Foo { // Currently disallowed: async fn bar();\n}","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » General goal","id":"576","title":"General goal"},"577":{"body":"","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » Concerns","id":"577","title":"Concerns"},"578":{"body":"If you wanted to name the future that results from calling bar (or whatever), you can't. Also true for functions fn bar() -> impl Trait.","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » How to name the resulting future","id":"578","title":"How to name the resulting future"},"579":{"body":"Relevant thread async fn foo() {} // desugars to\nfn foo() -> impl Future { } // resulting type is Send if it can be // alternative desugaring we chose not to adopt would require Send\nfn foo() -> impl Future + Send { } If I want to constrain the future I get back from a method, it is difficult to do without a name: trait Service { async fn request(&self);\n} fn parallel_service()\nwhere S::Future: Send,\n{ ...\n} Should this be solved at the impl trait layer Or should we specialize something for async functions Would be nice, if there are many, associated types, to have some shorthand","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » Requiring Send on futures","id":"579","title":"Requiring Send on futures"},"58":{"body":"At the end of the brainstorming period , we'll also vote on various awards to give to the status quo and shiny future PRs that were submitted.","breadcrumbs":"🔮 The vision » ❓How to vision » Awards » ❓ How to vision: Awards","id":"58","title":"❓ How to vision: Awards"},"580":{"body":"trait Service { type Future: Future; fn request(&self, ...) -> Self::Future;\n} impl Service for MyService { type Future = impl Future; fn request(&self) -> Self::Future { async move { .. } }\n} Dependent on impl Trait, see lang-team repo","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » Example use case: the Service","id":"580","title":"Example use case: the Service"},"581":{"body":"trait MyMethod { async fn foo(&self);\n}","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » Example use case: capturing lifetimes of arguments","id":"581","title":"Example use case: capturing lifetimes of arguments"},"582":{"body":"","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » 🤔 Frequently Asked Questions","id":"582","title":"🤔 Frequently Asked Questions"},"583":{"body":"(Explain your key points here)","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » What do people say about this to their friends on twitter?","id":"583","title":"What do people say about this to their friends on twitter?"},"584":{"body":"Description of various challenges with async mutexes","breadcrumbs":"🔬 Design docs » 🔒 Mutex (future-aware) » 🔒 Mutex (future-aware)","id":"584","title":"🔒 Mutex (future-aware)"},"585":{"body":"","breadcrumbs":"🔬 Design docs » 📺 Async aware channels » 📺 Async aware channels","id":"585","title":"📺 Async aware channels"},"586":{"body":"","breadcrumbs":"🔬 Design docs » 📦 Async closures » 📦 Async closures","id":"586","title":"📦 Async closures"},"587":{"body":"","breadcrumbs":"🔬 Design docs » 🤝 Join combinator » 🤝 Join combinator","id":"587","title":"🤝 Join combinator"},"588":{"body":"","breadcrumbs":"🔬 Design docs » 🤷‍♀️ Select combinator » 🤷‍♀️ Select combinator","id":"588","title":"🤷‍♀️ Select combinator"},"589":{"body":"","breadcrumbs":"🔬 Design docs » 🚰 Sink trait » 🚰 Sink trait","id":"589","title":"🚰 Sink trait"},"59":{"body":"These are the award categories: Most humorous story Most creative story Most supportive -- who left the most helpful comments? Most prolific -- who wrote the most stories? Most unexpected -- which status quo story (or shiny future) took you by surprise? Most painful \"status quo\" story Most ambitious \"shiny future\" story Most extensive FAQ However, if you have an idea for another award category, we are happy to take suggestions. One rule: the awards can't be negative (e.g., no \"most unrealistic\"), and they can't be about which thing is \"best\". That would work against the brainstorming spirit.","breadcrumbs":"🔮 The vision » ❓How to vision » Awards » Award categories","id":"59","title":"Award categories"},"590":{"body":"","breadcrumbs":"🔬 Design docs » 🎇 Async main » 🎇 Async main","id":"590","title":"🎇 Async main"},"591":{"body":"","breadcrumbs":"🔬 Design docs » 🎇 Async main » What is it?","id":"591","title":"What is it?"},"592":{"body":"","breadcrumbs":"🔬 Design docs » 🎇 Async main » Motivation","id":"592","title":"Motivation"},"593":{"body":"","breadcrumbs":"🔬 Design docs » 🎇 Async main » Frequently Asked Questions","id":"593","title":"Frequently Asked Questions"},"594":{"body":"","breadcrumbs":"🔬 Design docs » 🗑️ Async drop » 🗑️ Async drop","id":"594","title":"🗑️ Async drop"},"595":{"body":"","breadcrumbs":"🔬 Design docs » 🗑️ Async drop » ♻️ Async lifecycle » ♻️ Async lifecycle","id":"595","title":"♻️ Async lifecycle"},"596":{"body":"Notes on io_uring","breadcrumbs":"🔬 Design docs » ⏳ Completion-based futures » ⏳ Completion-based futures","id":"596","title":"⏳ Completion-based futures"},"597":{"body":"This section contains notes and summaries from conversations that we have had with people are using Rust and async and describing their experiences. These conversations and links are used as \"evidence\" when building the \"status quo\" section .","breadcrumbs":"💬 Conversations » 💬 Conversations","id":"597","title":"💬 Conversations"},"598":{"body":"This section is not meant to be an \"exhaustive list\" of all sources. That would be impossible. Many conversations are short, not recorded, and hard to summaize. Others are subject to NDA. We certainly don't require that all claims in the status quo section are backed by evidence found here. Still, it's useful to have a place to dump notes and things for future reference.","breadcrumbs":"💬 Conversations » Not exhaustive nor mandatory","id":"598","title":"Not exhaustive nor mandatory"},"599":{"body":"Notes taken from the thread in response to Niko's tweet . Enzo A default event loop. \"choosing your own event loop\" takes time, then you have to understand the differences between each event loop etc. Standard way of doing for await (variable of iterable) would be nice. Standard promise combinators. creepy_owlet https://github.com/dtantsur/rust-osauth/blob/master/src/sync.rs async trait -- https://twitter.com/jcsp_tweets/status/1359820431151267843 \"I thought async was built-in\"? nasty compiler errors ownership puzzle blog post rubdos blog post describes integrating two event loops mentions desire for runtime independent libraries qt provides a mechanism to integrate one's own event loop llvm bug generates invalid arm7 assembly alexmiberry kotlin/scala code, blocked by absence of async trait helpful blog post jamesmcm note that join and Result play poorly together async-std version tokio version has some wild \"double question marks\" -- I guess that spawn must be adding a layer of Result? the post mentions rayon but this isn't really a case where one ought to use rayon -- still, Rayon's APIs here are SO much nicer :) rust aws and lambda issue requiring async drop fasterthanlime -- this post is amazing the discussion on Send bounds and the ways to debug it is great bridging different runtimes using GATs first server app, great thread with problems \"I wasn't expecting that it will be easy but after Go and Node.js development it felt extremely hard to start off anything with Rust.\" \"felt like I have to re-learn everything from scratch: structuring project and modules, dependency injection, managing the DB and of course dealing with concurrency\" common thread: poor docs, though only somewhat in async libraries I had enums in the DB and it was a bit more complex to map them to my custom Rust enums but I succeeded with the help of a couple of blog posts – and not with Diesel documentation I used Rusoto for dealing with AWS services. It's also pretty straightforward and high quality package – but again the documentation was sooo poor. implaustin wrote a very nice post but it felt more like a \"look how well this worked\" post than one with actionable feedback \"Async has worked well so far. My top wishlist items are Sink and Stream traits in std. It's quite difficult to abstract over types that asynchronously produce or consume values.\" \"AsyncRead/AsyncWrite work fine for files, tcp streams, etc. But once you are past I/O and want to pass around structs, Sink and Stream are needed. One example of fragmentation is that Tokio channels used to implement the futures Sink/Stream traits, but no longer do in 1.0.\" \"I usually use Sink/Stream to abstract over different async channel types. Sometimes to hide the details of external dependencies from a task (e.g. where is this data going?). And sometimes to write common utility methods.\" \"One thing I can think of: there are still a lot of popular libraries that don't have async support (or are just getting there). Rocket, Criterion, Crossterm's execute, etc.\" EchoRior : \"I've written a bit of rust before, but rust is my first introduction to Async. My main gripes are that it's hard to figure our what the \"blessed\" way of doing async is. I'd love to see async included in the book, but I understand that async is still evolving too much for that.\" \"Adding to the confusion: theres multiple executors, and they have a bit of lock in. Async libraries being dependent on which executor version I use is also confusing for newcomers. In other langs, it seems like one just uses everything from the stdlib and everything is compatible\" \"That kind of gave me a lot of hesitation/fomo in the beginning, because it felt like I had to make some big choices around my tech stack that I felt I would be stuck with later. I ended up chatting about this in the discord & researching for multiple days before getting started.\" \"Also, due to there not being a \"blessed\" approach, I don't know if I'm working with some misconceptions around async in rust, and will end up discovering I will need to redo large parts of what I wrote.\"","breadcrumbs":"💬 Conversations » 🐦 2021-02-12 Twitter thread » 🐦 2021-02-12 Twitter thread","id":"599","title":"🐦 2021-02-12 Twitter thread"},"6":{"body":"Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.","breadcrumbs":"👋🏽 Welcome » Contribution","id":"6","title":"Contribution"},"60":{"body":"At the end of the brainstorming period , we're going to have a voting session to select which PRs and people win the awards. The winners will be featured in a blog post. 🏆","breadcrumbs":"🔮 The vision » ❓How to vision » Awards » Voting","id":"60","title":"Voting"},"600":{"body":"Thanks to everyone who helped forming the future of Rust async.","breadcrumbs":"❤️ Acknowledgments » ❤️ Acknowledgments","id":"600","title":"❤️ Acknowledgments"},"601":{"body":"Thanks to everyone who helped writing Stories by participating in one of the Async Rust writing sessions. todo","breadcrumbs":"❤️ Acknowledgments » ✍️ Participating in an writing session","id":"601","title":"✍️ Participating in an writing session"},"602":{"body":"Thanks to everyone who discussed about stories, shiny future and new features. Ar37-rs broccolihighkicks cortopy eminence evan-brass farnz FreddieGilbraith geropl guswynn jbr jlkiri jonathandturner jzrake laurieontech LucioFranco nikomatsakis o0Ignition0o pickfire pnkfelix rgreinho rhmoller rylev sticnarf Stupremee uazu urhein vladinator1000 wesleywiser wraithan y21 yoshuawuyts zeenix","breadcrumbs":"❤️ Acknowledgments » 💬 Discussing about stories","id":"602","title":"💬 Discussing about stories"},"603":{"body":"Thanks to everyone who opened a Pull Request and wrote a story, shiny future or improved the organization of the repository. alsuren bIgBV cortopy cryptoquick Darksonn doc-jones ehuss eminence emmanuelantony2000 erichgess Frederik-Baetens Gottox guswynn JakubKoralewski jonathandturner jrvanwhy kmeisthax MidasLamb nellshamrell nikomatsakis o0Ignition0o pnkfelix rylev seanmonstar sticnarf Stupremee taiki-e ThatGeoGuy tmandry wesleywiser","breadcrumbs":"❤️ Acknowledgments » ✨ Directly contributing","id":"603","title":"✨ Directly contributing"},"61":{"body":"Status Owner ⚠️ Draft ⚠️ nikomatsakis Draft status. These tenets are a first draft. nikomatsakis plans to incorporate feedback and revise them before they are finalized. The design tenets describe the key principles that drive our work on async. Hopefully, we are able to achieve and honor all of them all of the time. Sometimes, though, they come into conflict, and we have to pick -- in that case, we prefer the tenet earlier in the list. Minimal overhead. Rust Async I/O performance should compare favourably with any other language. In the extreme case, it should be possible to use async/await without any required allocation, although this is unlikely to be a common case in production systems. Easy to get started, but able to do anything you want. We should make it simple to write Async I/O code and get things that work reasonably well, but it should be possible for people to obtain fine-grained control as needed. Async is like sync, but with blocking points clearly identified. At the highest level, writing a simple program using asynchronous I/O in Rust should be analogous to writing one that uses synchronous I/O, except that one adds async in front of function declarations and adds .await after each call. We should aim for analogous design between synchronous and asynchronous equivalents. Similarly, streams should be like asynchronous iterators. One should be able to use the same sort of combinators with streams and to iterate over them in analogous ways. No one true runtime. We need to be able to hook into existing runtimes in different environments, from embedded environments to runtimes like node.js. Specialized systems need specialized runtimes. Library ecosystem is key. We want to have a strong ecosystem of async crates, utilities, and frameworks. This will require mechanisms to write libraries/utilities/frameworks that are generic and interoperable across runtimes.","breadcrumbs":"🔮 The vision » ✏️ Design tenets for async » ✏️ Design tenets for async","id":"61","title":"✏️ Design tenets for async"},"62":{"body":"\"Stress tests\" are important use cases that tend to \"stretch\" the design. When we are contemplating changes, it's important to look over the stress tests and make sure that they all still work: Single-threaded executors: Some systems tie each task to a single thread; such tasks should be able to access data that is not Send or Sync, and the executor for those tasks should be able to be fully optimized to avoid atomic accesses, etc. Multi-threaded executors: Many systems migrate tasks between threads transparently, and that should be supported as well, though tasks will be required to be Send. \"Bring your own runtime\": The Rust language itself should not require that you start threads, use epoll, or do any other particular thing. Zero allocation, single task: Embedded systems might want to be able to have a single task that is polled to completion and which does no allocation whatsoever. Multiple runtimes in one process: Sometimes people have to combine systems, each of which come with their own event loop. We should avoid assuming there is one global event loop in the system. Non-Rust based runtimes: Sometimes people want to integrate into event loops from other, non-Rust-based systems. WebAssembly in the browser: We want to integrate with WebAssembly.","breadcrumbs":"🔮 The vision » ✏️ Design tenets for async » Stress tests","id":"62","title":"Stress tests"},"63":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » 🙋‍♀️ Cast of characters","id":"63","title":"🙋‍♀️ Cast of characters"},"64":{"body":"We've created four characters that we use to guide our thinking. These characters are the protagonists of our status quo and shiny future stories, and they help us to think about the different kinds of priorities and expectations that people bring to Async Rust. Having names and personalities also makes the stories more fun and approachable.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » What is this?","id":"64","title":"What is this?"},"65":{"body":"Alan : the experienced \"GC'd language\" developer, new to Rust Top priority : performance -- that's what he is not getting from current GC'd language Expectations : absence of memory safety bugs (he gets that now from his GC), strong ecosystem, great tooling Grace : the systems programming expert, new to Rust Top priority : memory safety -- that's what she is not getting from C/C++ Expectations : able to do all the things she's used to from C/C++ Niklaus : new programmer from an unconventional background Top priority : accessibility -- he's learning a lot of new things at once Expectations : community -- the community enabled him to have early success, and he is excited to have it support him and him grow more Barbara : the experienced Rust developer Top priority : overall productivity and long-term maintenance -- she loves Rust, and wants to see it extended to new areas; she has an existing code base to maintain Expectations : elegance and craftsmanship, fits well with Rust","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » The characters","id":"65","title":"The characters"},"66":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » 🤔 Frequently Asked Questions","id":"66","title":"🤔 Frequently Asked Questions"},"67":{"body":"Famous programming language designers and theorists. Alan Turing , Grace Hopper , Niklaus Wirth , and Barbara Liskov .","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Where do the names come from?","id":"67","title":"Where do the names come from?"},"68":{"body":"Come to Zulip and talk to us about it! Maybe they need to be adjusted!","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » I don't see myself in these characters. What should I do?","id":"68","title":"I don't see myself in these characters. What should I do?"},"69":{"body":"Yeah, me too.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » I see myself in more than one of these characters!","id":"69","title":"I see myself in more than one of these characters!"},"7":{"body":"","breadcrumbs":"🔮 The vision » 🔮 The vision","id":"7","title":"🔮 The vision"},"70":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » 🙋‍♀️ Cast of characters","id":"70","title":"🙋‍♀️ Cast of characters"},"71":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » Alan: the experienced \"GC'd language\" developer, new to Rust","id":"71","title":"Alan: the experienced \"GC'd language\" developer, new to Rust"},"72":{"body":"Alan has been programming for years. He has built systems in Ruby on Rails, node.js, and used Django too. Lately he's been learning Rust and he is tinkering with integrating Rust into some of his projects to get better performance and reliability. He's also building some projects entirely in Rust.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » Variant A: Dynamic languages","id":"72","title":"Variant A: Dynamic languages"},"73":{"body":"Alan works at a Java shop. They run a number of network services built in Java, along with some that use Kotlin or Scala. He's very familiar with the Java ecosystem and the tooling that the JVM offers. He's also sometimes had to tweak his code to work around garbage collector latencies or to reduce overall memory usage. He's curious to try porting some systems to Rust to see how it works.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » Variant B: Java","id":"73","title":"Variant B: Java"},"74":{"body":"Alan is developing networking programs in Kotlin. He loves Kotlin for its expressive syntax and clean integration with Java. Still, he sometimes encounters problems running his services due to garbage collection latencies or overall memory usage. He's heard that Rust can be fun to use too, and is curious to try it out.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » Variant C: Kotlin","id":"74","title":"Variant C: Kotlin"},"75":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » 🤔 Frequently Asked Questions","id":"75","title":"🤔 Frequently Asked Questions"},"76":{"body":"The promise of better performance and memory usage than the languages he's been using. Rust's safety guarantees are important too; he's considered using C++ in the past but always judged the maintenance burden would be too high.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » What does Alan want most from Async Rust?","id":"76","title":"What does Alan want most from Async Rust?"},"77":{"body":"A focus on ease of use, a strong ecosystem, and great tooling.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » What expectations does Alan bring from his current environment?","id":"77","title":"What expectations does Alan bring from his current environment?"},"78":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Grace » 🙋‍♀️ Cast of characters","id":"78","title":"🙋‍♀️ Cast of characters"},"79":{"body":"Grace has been writing C and C++ for a number of years. She's accustomed to hacking lots of low-level details to coax the most performance she can from her code. She's also experienced her share of epic debugging sessions resulting from memory errors in C. She's intrigued by Rust: she likes the idea of getting the same control and performance she gets from C but with the productivity benefits she gets from memory safety. She's currently experimenting with introducing Rust into some of the systems she works on, and she's considering Rust for a few greenfield projects as well.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Grace » Grace: the systems programming expert, new to Rust","id":"79","title":"Grace: the systems programming expert, new to Rust"},"8":{"body":"We believe Rust can become one of the most popular choices for building distributed systems, ranging from embedded devices to foundational cloud services. Whatever they're using it for, we want all developers to love using Async Rust. For that to happen, we need to move Async Rust beyond the \"MVP\" state it's in today and make it accessible to everyone. This document is a collaborative effort to build a shared vision for Async Rust. Our goal is to engage the entire community in a collective act of the imagination: how can we make the end-to-end experience of using Async I/O not only a pragmatic choice, but a joyful one?","breadcrumbs":"🔮 The vision » What is this","id":"8","title":"What is this"},"80":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Grace » 🤔 Frequently Asked Questions","id":"80","title":"🤔 Frequently Asked Questions"},"81":{"body":"Grace is most interested in memory safety. She is comfortable with C and C++ but she's also aware of the maintenance burden that arises from the lack of memory safety.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Grace » What does Grace want most from Async Rust?","id":"81","title":"What does Grace want most from Async Rust?"},"82":{"body":"Grace expects to be able to get the same performance she used to get from C or C++. Grace is accustomed to various bits of low-level tooling, such as gdb or perf. It's nice if Rust works reasonably well with those tools, but she'd be happy to have access to better alternatives if they were available. She's happy using cargo instead of make, for example.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Grace » What expectations does Grace bring from her current environment?","id":"82","title":"What expectations does Grace bring from her current environment?"},"83":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Niklaus » 🙋‍♀️ Cast of characters","id":"83","title":"🙋‍♀️ Cast of characters"},"84":{"body":"He's always been interested in programming but doesn't have experience with it. He's been working as a tech writer and decided to dip his toe in by opening PRs to improve the documentation for one of the libraries he was playing with. The feedback was positive so he fixed a small bug. He's now considering getting involved in a deeper way.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Niklaus » Niklaus: new programmer from an unconventional background","id":"84","title":"Niklaus: new programmer from an unconventional background"},"85":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Niklaus » 🤔 Frequently Asked Questions","id":"85","title":"🤔 Frequently Asked Questions"},"86":{"body":"Niklaus values accessibility. He's learning a lot of new things at once and it can be overwhelming.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Niklaus » What does Niklaus want most from Async Rust?","id":"86","title":"What does Niklaus want most from Async Rust?"},"87":{"body":"Niklaus expects a strong and supportive community. The Rust community enabled him to have early success, and he is excited to have it support him and for it to help him grow more.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Niklaus » What expectations does Niklaus bring from his current environment?","id":"87","title":"What expectations does Niklaus bring from his current environment?"},"88":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Barbara » 🙋‍♀️ Cast of characters","id":"88","title":"🙋‍♀️ Cast of characters"},"89":{"body":"Barbara has been using Rust since the 0.1 release. She remembers some of the crazy syntax in Ye Olde Rust of Yore and secretly still misses the alt keyword (don't tell anyone). Lately she's maintaining various projects in the async space.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Barbara » Barbara: the experienced Rust developer","id":"89","title":"Barbara: the experienced Rust developer"},"9":{"body":"The \"vision document\" starts with a cast of characters . Each character is tied to a particular Rust value (e.g., performance, productivity, etc) determined by their background; this background also informs the expectations they bring when using Rust. Grace , for example, wants to keep the same level of performance she currently get with C, but with the productivity benefits of memory safety. Alan , meanwhile, is hoping Rust will give him higher performance without losing the safety and ergonomics that he enjoys with garbage collected languages. For each character, we write \"status quo\" stories that describe the challenges they face as they try to achieve their goals (and typically fail in dramatic fashion!), These stories are not fiction. They are an amalgamation of the real experiences of people using Async Rust, as reported to us by interviews, blog posts, and tweets. Writing these stories helps us gauge the cumulative impact of the various papercuts and challenges that one encounters when using Async Rust. The ultimate goal of the vision doc, of course, is not just to tell us where we are now, but where we are going and how we will get there. For this, we include \"shiny future\" stories that tell us how those same characters will fare in a few years time, when we've had a chance to improve the Async Rust experience.","breadcrumbs":"🔮 The vision » Where we are and where we are going","id":"9","title":"Where we are and where we are going"},"90":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Barbara » 🤔 Frequently Asked Questions","id":"90","title":"🤔 Frequently Asked Questions"},"91":{"body":"She is using Rust for its feeling of productivity, and she expects Async Rust to continue in that tradition. She maintains several existing projects, so stability is important to her.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Barbara » What does Barbara want most from Async Rust?","id":"91","title":"What does Barbara want most from Async Rust?"},"92":{"body":"She wants a design that feels like the rest of Rust. She loves Rust and she expects Async Rust to share its overall values.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Barbara » What expectations does Barbara bring from her current environment?","id":"92","title":"What expectations does Barbara bring from her current environment?"},"93":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » ⚡ Projects","id":"93","title":"⚡ Projects"},"94":{"body":"This section describes various sample projects that are referenced in our stories. Each project is meant to represent some domain that we are targeting.","breadcrumbs":"🔮 The vision » ⚡ Projects » What is this?","id":"94","title":"What is this?"},"95":{"body":"See the sidebar for the full list.","breadcrumbs":"🔮 The vision » ⚡ Projects » List of projects","id":"95","title":"List of projects"},"96":{"body":"Don't despair! This is just a list of fun projects that we've needed for stories. If you'd like to add a project for your story, feel free to do so! Note though that you may find that some existing project has the same basic characteristics as your project, in which case it's probably better to reuse the existing project.","breadcrumbs":"🔮 The vision » ⚡ Projects » Don't find a project like yours here?","id":"96","title":"Don't find a project like yours here?"},"97":{"body":"This is a template for adding new projects. See the instructions for more details on how to add new project!","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » ⚡ Projects: NAME (DOMAIN)","id":"97","title":"⚡ Projects: NAME (DOMAIN)"},"98":{"body":"This is a sample project for use within the various \"status quo\" or \"shiny future\" stories.","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » What is this?","id":"98","title":"What is this?"},"99":{"body":"Give a fun description of the project here! Include whatever details are needed.","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » Description","id":"99","title":"Description"}},"length":604,"save":true},"fields":["title","body","breadcrumbs"],"index":{"body":{"root":{"0":{".":{".":{"1":{"0":{"df":1,"docs":{"380":{"tf":2.23606797749979}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{"df":2,"docs":{"199":{"tf":1.4142135623730951},"89":{"tf":1.0}}},"4":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"7":{".":{"1":{"1":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"3":{"1":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"6":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"df":3,"docs":{"15":{"tf":1.0},"553":{"tf":1.0},"599":{"tf":1.0}}},"3":{"df":1,"docs":{"365":{"tf":1.0}}},"4":{"df":3,"docs":{"14":{"tf":2.0},"15":{"tf":1.0},"16":{"tf":1.0}}},"df":8,"docs":{"217":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":3.1622776601683795},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":3.1622776601683795},"419":{"tf":1.0},"568":{"tf":1.0}},"x":{"0":{"0":{"0":{"0":{"5":{"5":{"5":{"5":{"5":{"5":{"5":{"7":{"6":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"7":{"3":{"c":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"8":{"df":0,"docs":{},"f":{"7":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"9":{"0":{"5":{"2":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"5":{"c":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"5":{"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"d":{"3":{"b":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"2":{"df":0,"docs":{},"f":{"7":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"6":{"9":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"5":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"9":{"c":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"b":{"0":{"b":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{"b":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"9":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"2":{"2":{"df":0,"docs":{},"f":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"3":{"0":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"0":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"7":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"a":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"8":{"0":{"5":{"a":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"a":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"1":{"2":{"5":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"4":{"a":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"0":{"9":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"3":{"2":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"df":0,"docs":{},"f":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"6":{"a":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"d":{"0":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"2":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"0":{"9":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"d":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"7":{"4":{"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"8":{"2":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"a":{"d":{"9":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"b":{"8":{"d":{"a":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"4":{"7":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"8":{"7":{"b":{"b":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"8":{"d":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"2":{"2":{"9":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"0":{"b":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"6":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"9":{"9":{"0":{"9":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"6":{"4":{"a":{"8":{"2":{"df":0,"docs":{},"f":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"f":{"7":{"d":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"7":{"0":{"a":{"c":{"3":{"df":1,"docs":{"404":{"tf":2.0}}},"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"0":{"0":{"d":{"8":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"0":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"1":{"1":{"b":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"7":{"c":{"2":{"df":0,"docs":{},"f":{"0":{"9":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"d":{"5":{"df":0,"docs":{},"e":{"5":{"8":{"a":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"e":{"3":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"6":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"b":{"2":{"6":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"1":{"4":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"8":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"8":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"4":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"d":{"0":{"0":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"4":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"0":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"6":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"7":{"c":{"3":{"b":{"5":{"c":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"1":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":2.449489742783178}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},".":{"0":{"df":2,"docs":{"548":{"tf":1.0},"599":{"tf":1.0}}},"1":{"1":{".":{"3":{"df":1,"docs":{"419":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"404":{"tf":1.0}}},"3":{".":{"0":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"6":{":":{"9":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"6":{":":{"5":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"9":{":":{"5":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"6":{"3":{":":{"3":{"1":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"5":{"4":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{"1":{":":{"1":{"3":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"5":{"2":{":":{"4":{"3":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"7":{"1":{":":{"9":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{".":{"0":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"6":{"2":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"3":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"6":{"1":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"3":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"7":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"8":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"/":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"_":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"4":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"8":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"2":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"7":{"9":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"2":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"9":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"5":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"2":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"9":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{".":{"0":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"2":{"9":{":":{"2":{"1":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"x":{"df":3,"docs":{"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0}}}},"0":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"0":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":5,"docs":{"138":{"tf":1.0},"196":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0}}},"4":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"5":{"df":1,"docs":{"373":{"tf":1.0}}},"df":4,"docs":{"284":{"tf":1.4142135623730951},"380":{"tf":2.23606797749979},"397":{"tf":1.0},"404":{"tf":1.0}},"x":{"df":1,"docs":{"469":{"tf":1.0}}}},"1":{"df":5,"docs":{"284":{"tf":1.0},"307":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"2":{"9":{"df":1,"docs":{"268":{"tf":1.0}}},"df":5,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"503":{"tf":1.0},"599":{"tf":1.0}}},"3":{",":{"1":{"0":{",":{"1":{"6":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"0":{"0":{"df":1,"docs":{"555":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.0}}},"4":{"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"5":{"0":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"6":{"0":{"0":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}},"df":4,"docs":{"284":{"tf":1.0},"347":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"7":{"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"8":{"9":{"df":1,"docs":{"268":{"tf":1.0}}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"9":{":":{"1":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.0}}},"c":{"df":1,"docs":{"211":{"tf":1.0}}},"df":20,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"234":{"tf":1.0},"284":{"tf":1.4142135623730951},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.4142135623730951},"418":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":1.4142135623730951},"456":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":1.0},"564":{"tf":1.0}},"e":{"c":{"c":{"6":{"2":{"9":{"9":{"d":{"b":{"9":{"df":0,"docs":{},"e":{"c":{"8":{"2":{"3":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":3,"docs":{"268":{"tf":1.0},"284":{"tf":4.123105625617661},"397":{"tf":2.8284271247461903}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"182":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"2":{".":{"0":{"df":2,"docs":{"5":{"tf":1.4142135623730951},"6":{"tf":1.0}}},"df":0,"docs":{}},"/":{"3":{"/":{"6":{"df":1,"docs":{"235":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"0":{"0":{"df":2,"docs":{"336":{"tf":1.4142135623730951},"431":{"tf":1.0}}},"2":{"0":{"df":1,"docs":{"230":{"tf":1.0}}},"1":{"df":6,"docs":{"14":{"tf":2.0},"15":{"tf":1.0},"16":{"tf":1.0},"550":{"tf":1.4142135623730951},"553":{"tf":1.0},"599":{"tf":1.0}}},"4":{"df":1,"docs":{"538":{"tf":1.0}}},"df":0,"docs":{}},"df":5,"docs":{"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"1":{"df":2,"docs":{"196":{"tf":1.0},"404":{"tf":1.0}}},"2":{"df":2,"docs":{"310":{"tf":1.0},"404":{"tf":1.0}}},"3":{"df":2,"docs":{"404":{"tf":1.0},"440":{"tf":1.4142135623730951}}},"4":{":":{"1":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"404":{"tf":1.0}}},"5":{"df":1,"docs":{"404":{"tf":1.0}}},"6":{"df":1,"docs":{"404":{"tf":1.0}}},"7":{"7":{"0":{"a":{"3":{"0":{"d":{"9":{"df":0,"docs":{},"f":{"2":{"5":{"9":{"6":{"6":{"6":{"df":0,"docs":{},"f":{"b":{"4":{"7":{"0":{"d":{"6":{"df":0,"docs":{},"f":{"1":{"1":{"c":{"df":0,"docs":{},"f":{"1":{"8":{"5":{"1":{"df":0,"docs":{},"e":{"b":{"b":{"2":{"d":{"5":{"7":{"9":{"a":{"1":{"4":{"8":{"0":{"a":{"8":{"1":{"7":{"3":{"d":{"3":{"8":{"5":{"5":{"5":{"7":{"2":{"7":{"4":{"8":{"3":{"8":{"5":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"196":{"tf":1.0},"404":{"tf":1.0}}},"8":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":17,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"284":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"423":{"tf":1.0},"440":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"486":{"tf":1.0},"538":{"tf":1.0}}},"3":{"0":{"df":5,"docs":{"14":{"tf":2.0},"16":{"tf":1.0},"284":{"tf":1.0},"404":{"tf":1.0},"470":{"tf":1.7320508075688772}}},"1":{"df":1,"docs":{"404":{"tf":1.0}}},"2":{"df":2,"docs":{"347":{"tf":1.0},"404":{"tf":1.0}}},"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":9,"docs":{"284":{"tf":1.0},"328":{"tf":1.0},"397":{"tf":1.4142135623730951},"40":{"tf":1.0},"404":{"tf":1.0},"417":{"tf":1.0},"470":{"tf":1.0},"486":{"tf":1.0},"538":{"tf":1.0}},"r":{"d":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}}},"4":{"0":{"df":1,"docs":{"370":{"tf":1.0}}},"3":{"1":{"2":{"2":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"0":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":7,"docs":{"284":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"522":{"tf":1.7320508075688772}},"g":{"b":{"df":1,"docs":{"245":{"tf":1.0}}},"df":0,"docs":{}}},"5":{"0":{"0":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"k":{"b":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}}},"2":{"df":2,"docs":{"370":{"tf":1.0},"448":{"tf":1.0}}},"3":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"4":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"5":{"df":1,"docs":{"448":{"tf":1.0}}},"6":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"7":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"8":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"9":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"df":8,"docs":{"211":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"404":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.4142135623730951},"469":{"tf":1.0}}},"6":{"0":{"df":2,"docs":{"448":{"tf":1.0},"470":{"tf":1.7320508075688772}}},"2":{"2":{"9":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}},"s":{"df":1,"docs":{"221":{"tf":1.0}}}},"7":{"5":{"df":1,"docs":{"411":{"tf":1.0}}},"6":{"df":1,"docs":{"287":{"tf":1.0}}},"8":{"6":{"df":1,"docs":{"268":{"tf":1.0}}},"7":{"df":1,"docs":{"268":{"tf":1.0}}},"8":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"9":{"7":{"0":{"9":{"0":{"8":{"9":{"2":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.0}}},"8":{"0":{"8":{"0":{"df":2,"docs":{"538":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"df":1,"docs":{"292":{"tf":1.0}}},"df":6,"docs":{"209":{"tf":1.0},"284":{"tf":1.0},"358":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"503":{"tf":1.0}}},"9":{"6":{"df":1,"docs":{"336":{"tf":1.0}}},"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.4142135623730951},"397":{"tf":1.0},"404":{"tf":1.0}}},"_":{"df":7,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"328":{"tf":1.4142135623730951},"380":{"tf":2.0},"418":{"tf":1.0},"421":{"tf":2.0},"470":{"tf":1.0}}},"a":{".":{"c":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"(":{"b":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},">":{"(":{"&":{"'":{"a":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"343":{"tf":1.4142135623730951}}}}}},"b":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"453":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":7,"docs":{"217":{"tf":1.0},"292":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"472":{"tf":1.0},"517":{"tf":1.4142135623730951},"529":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.0}}}},"v":{"df":12,"docs":{"121":{"tf":1.0},"226":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.4142135623730951},"392":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"539":{"tf":1.0},"6":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"599":{"tf":1.0},"65":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":1,"docs":{"181":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":20,"docs":{"110":{"tf":1.4142135623730951},"112":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.4142135623730951},"203":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"27":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"33":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":2.23606797749979},"370":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"394":{"tf":1.0},"47":{"tf":1.0},"544":{"tf":1.0},"599":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"(":{"a":{"d":{"d":{"df":0,"docs":{},"r":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":8,"docs":{"15":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"258":{"tf":1.0},"336":{"tf":1.0},"421":{"tf":1.4142135623730951},"423":{"tf":1.0},"534":{"tf":1.0}}}},"s":{"df":0,"docs":{},"s":{"df":21,"docs":{"156":{"tf":1.0},"211":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"336":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.7320508075688772},"418":{"tf":2.0},"419":{"tf":1.4142135623730951},"421":{"tf":1.0},"422":{"tf":2.449489742783178},"423":{"tf":1.7320508075688772},"503":{"tf":1.0},"508":{"tf":1.4142135623730951},"512":{"tf":1.0},"62":{"tf":1.4142135623730951},"65":{"tf":1.0},"8":{"tf":1.0},"82":{"tf":1.0},"86":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"278":{"tf":1.0},"460":{"tf":1.0}}}}}}}},"r":{"d":{"df":2,"docs":{"342":{"tf":1.0},"422":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"218":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"478":{"tf":1.0}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":6,"docs":{"178":{"tf":1.0},"191":{"tf":1.0},"237":{"tf":1.0},"380":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0}}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":11,"docs":{"153":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"40":{"tf":1.0},"431":{"tf":1.0},"437":{"tf":1.4142135623730951},"464":{"tf":1.0},"49":{"tf":1.4142135623730951},"61":{"tf":1.0},"9":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"g":{"df":2,"docs":{"34":{"tf":1.0},"600":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"q":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.7320508075688772}}}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"328":{"tf":1.7320508075688772},"451":{"tf":1.0}}}}}},"t":{"df":6,"docs":{"217":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.0},"497":{"tf":1.0},"53":{"tf":1.0},"8":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"125":{"tf":1.0},"276":{"tf":1.0},"599":{"tf":1.0}}}},"v":{"df":8,"docs":{"12":{"tf":1.0},"15":{"tf":1.0},"177":{"tf":1.0},"389":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"419":{"tf":1.0},"422":{"tf":1.0}}},"x":{"df":4,"docs":{"192":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"237":{"tf":1.4142135623730951}}}},"o":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"422":{"tf":1.0}}},"df":2,"docs":{"177":{"tf":1.4142135623730951},"422":{"tf":2.23606797749979}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":70,"docs":{"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"178":{"tf":1.4142135623730951},"182":{"tf":1.0},"186":{"tf":1.0},"188":{"tf":1.0},"194":{"tf":1.0},"200":{"tf":1.0},"208":{"tf":1.0},"211":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"237":{"tf":1.0},"243":{"tf":1.0},"246":{"tf":1.0},"254":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.4142135623730951},"306":{"tf":1.0},"318":{"tf":1.0},"321":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"349":{"tf":1.0},"355":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":1.4142135623730951},"396":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"423":{"tf":1.0},"430":{"tf":1.0},"435":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"452":{"tf":1.0},"455":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"467":{"tf":1.0},"475":{"tf":1.0},"477":{"tf":1.0},"487":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"502":{"tf":1.4142135623730951},"519":{"tf":1.0},"537":{"tf":1.0},"562":{"tf":1.0}}}},"df":0,"docs":{}}}},"d":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":5,"docs":{"147":{"tf":1.0},"249":{"tf":1.0},"319":{"tf":1.7320508075688772},"336":{"tf":1.0},"522":{"tf":1.0}}}}},"d":{"df":87,"docs":{"156":{"tf":1.0},"157":{"tf":1.0},"158":{"tf":1.0},"159":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"178":{"tf":1.7320508075688772},"186":{"tf":1.0},"194":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.4142135623730951},"208":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":2.23606797749979},"211":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.7320508075688772},"220":{"tf":1.0},"221":{"tf":1.4142135623730951},"24":{"tf":1.0},"258":{"tf":1.0},"26":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"310":{"tf":1.0},"315":{"tf":1.0},"329":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":2.0},"34":{"tf":1.0},"346":{"tf":1.0},"36":{"tf":1.0},"369":{"tf":1.0},"370":{"tf":2.0},"379":{"tf":1.0},"38":{"tf":1.0},"380":{"tf":1.4142135623730951},"381":{"tf":1.0},"39":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.4142135623730951},"416":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.4142135623730951},"44":{"tf":1.0},"447":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"48":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"50":{"tf":1.0},"501":{"tf":1.0},"508":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.4142135623730951},"537":{"tf":1.0},"538":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0},"61":{"tf":1.4142135623730951},"96":{"tf":1.0},"97":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":12,"docs":{"16":{"tf":1.0},"191":{"tf":1.0},"221":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.4142135623730951},"341":{"tf":1.0},"389":{"tf":1.0},"417":{"tf":1.0},"469":{"tf":1.0},"507":{"tf":1.0},"6":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"372":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":8,"docs":{"155":{"tf":1.0},"16":{"tf":1.0},"29":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.0},"431":{"tf":1.4142135623730951},"46":{"tf":1.0},"470":{"tf":1.0}}}}}}},"df":27,"docs":{"157":{"tf":1.0},"16":{"tf":1.0},"177":{"tf":1.0},"199":{"tf":1.0},"21":{"tf":1.0},"214":{"tf":1.0},"221":{"tf":1.0},"26":{"tf":1.0},"286":{"tf":1.0},"328":{"tf":1.4142135623730951},"370":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.0},"39":{"tf":1.0},"408":{"tf":1.0},"421":{"tf":1.0},"453":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"478":{"tf":1.0},"489":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.4142135623730951},"562":{"tf":1.0},"599":{"tf":1.4142135623730951},"97":{"tf":1.0}},"j":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":35,"docs":{"15":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"199":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.4142135623730951},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"42":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"51":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"68":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"53":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":7,"docs":{"179":{"tf":1.0},"209":{"tf":1.0},"302":{"tf":1.0},"417":{"tf":1.0},"47":{"tf":1.0},"538":{"tf":1.0},"579":{"tf":1.0}}}}},"v":{"a":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"156":{"tf":1.0},"383":{"tf":1.0}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":5,"docs":{"128":{"tf":1.0},"338":{"tf":1.0},"403":{"tf":1.0},"417":{"tf":1.0},"517":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"502":{"tf":1.0}}}}}}},"i":{"c":{"df":4,"docs":{"245":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"340":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"357":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"370":{"tf":1.0},"397":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}},"r":{"a":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"57":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"16":{"tf":1.0},"292":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"g":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":20,"docs":{"199":{"tf":1.0},"200":{"tf":1.7320508075688772},"214":{"tf":1.0},"234":{"tf":1.4142135623730951},"237":{"tf":1.0},"258":{"tf":1.0},"292":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"313":{"tf":1.4142135623730951},"336":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.4142135623730951},"458":{"tf":1.0},"504":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.7320508075688772},"599":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"df":8,"docs":{"125":{"tf":1.0},"16":{"tf":1.0},"246":{"tf":1.0},"272":{"tf":1.4142135623730951},"292":{"tf":1.0},"370":{"tf":1.0},"503":{"tf":1.0},"59":{"tf":1.0}}}}}}},"df":1,"docs":{"199":{"tf":1.0}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"(":{"&":{"[":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"320":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":7,"docs":{"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"320":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":7,"docs":{"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"320":{"tf":1.4142135623730951}}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"276":{"tf":1.0},"349":{"tf":1.0},"372":{"tf":1.0}}}}}},"o":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"209":{"tf":1.0}}}}},"h":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}},"i":{"df":0,"docs":{},"m":{"df":7,"docs":{"10":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":2.0},"16":{"tf":1.0},"435":{"tf":1.0},"49":{"tf":1.0},"61":{"tf":1.0}}},"r":{"df":1,"docs":{"48":{"tf":1.0}}}},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"458":{"tf":1.0},"562":{"tf":1.0}}}}},"l":{"a":{"df":0,"docs":{},"n":{"'":{"df":11,"docs":{"187":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"230":{"tf":1.0},"234":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.7320508075688772},"284":{"tf":1.0},"41":{"tf":1.0},"512":{"tf":1.0},"518":{"tf":1.0}}},"/":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":1,"docs":{"296":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"489":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"157":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":115,"docs":{"156":{"tf":4.123105625617661},"165":{"tf":1.0},"167":{"tf":2.23606797749979},"168":{"tf":1.7320508075688772},"169":{"tf":1.4142135623730951},"171":{"tf":1.0},"173":{"tf":1.4142135623730951},"175":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.7320508075688772},"179":{"tf":1.0},"181":{"tf":1.0},"183":{"tf":1.0},"185":{"tf":1.0},"187":{"tf":1.4142135623730951},"188":{"tf":1.7320508075688772},"189":{"tf":1.4142135623730951},"190":{"tf":1.7320508075688772},"191":{"tf":1.0},"192":{"tf":1.0},"193":{"tf":1.0},"195":{"tf":2.0},"196":{"tf":1.7320508075688772},"197":{"tf":1.0},"198":{"tf":1.7320508075688772},"199":{"tf":2.23606797749979},"200":{"tf":2.0},"201":{"tf":1.0},"205":{"tf":1.7320508075688772},"207":{"tf":1.0},"209":{"tf":5.291502622129181},"213":{"tf":2.0},"214":{"tf":1.0},"215":{"tf":1.0},"217":{"tf":3.872983346207417},"218":{"tf":1.4142135623730951},"219":{"tf":1.0},"221":{"tf":3.605551275463989},"225":{"tf":1.4142135623730951},"226":{"tf":1.0},"227":{"tf":1.0},"230":{"tf":2.23606797749979},"231":{"tf":1.4142135623730951},"232":{"tf":1.7320508075688772},"233":{"tf":1.4142135623730951},"234":{"tf":1.0},"235":{"tf":1.7320508075688772},"237":{"tf":1.7320508075688772},"239":{"tf":1.4142135623730951},"241":{"tf":1.0},"242":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":3.0},"246":{"tf":2.23606797749979},"248":{"tf":1.7320508075688772},"250":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":2.0},"259":{"tf":1.7320508075688772},"263":{"tf":1.4142135623730951},"265":{"tf":1.0},"266":{"tf":1.0},"268":{"tf":4.242640687119285},"272":{"tf":1.4142135623730951},"273":{"tf":1.0},"274":{"tf":1.0},"276":{"tf":3.7416573867739413},"278":{"tf":1.0},"280":{"tf":1.4142135623730951},"282":{"tf":1.0},"284":{"tf":3.7416573867739413},"288":{"tf":1.7320508075688772},"290":{"tf":1.0},"292":{"tf":3.3166247903554},"300":{"tf":3.0},"309":{"tf":1.0},"340":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"370":{"tf":1.0},"386":{"tf":1.0},"394":{"tf":1.7320508075688772},"397":{"tf":1.4142135623730951},"41":{"tf":1.0},"414":{"tf":1.0},"436":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"500":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.7320508075688772},"509":{"tf":1.0},"510":{"tf":1.4142135623730951},"521":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"525":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.4142135623730951},"529":{"tf":1.0},"542":{"tf":1.7320508075688772},"65":{"tf":1.0},"67":{"tf":1.0},"71":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.0},"77":{"tf":1.0},"9":{"tf":1.0}}},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"198":{"tf":1.0}}}}},"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"572":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"df":3,"docs":{"147":{"tf":1.0},"356":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}}}}}},"i":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"292":{"tf":1.0}}}},"c":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"271":{"tf":1.0}}},"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"d":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"271":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"257":{"tf":1.0}}}},"v":{"df":1,"docs":{"268":{"tf":1.0}}}},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":15,"docs":{"122":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.4142135623730951},"209":{"tf":2.23606797749979},"242":{"tf":1.0},"245":{"tf":1.7320508075688772},"246":{"tf":1.0},"248":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"338":{"tf":1.0},"341":{"tf":1.7320508075688772},"61":{"tf":1.0},"62":{"tf":1.4142135623730951}}},"df":0,"docs":{},"w":{"df":22,"docs":{"134":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.7320508075688772},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"342":{"tf":1.0},"360":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"423":{"tf":2.0},"436":{"tf":1.0},"470":{"tf":1.4142135623730951},"521":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":7,"docs":{"154":{"tf":1.4142135623730951},"200":{"tf":1.0},"361":{"tf":1.0},"389":{"tf":1.0},"487":{"tf":1.0},"538":{"tf":1.0},"73":{"tf":1.0}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":27,"docs":{"120":{"tf":1.0},"174":{"tf":1.0},"177":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.0},"205":{"tf":1.0},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"235":{"tf":1.0},"258":{"tf":1.0},"264":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"29":{"tf":1.0},"317":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.4142135623730951},"408":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.4142135623730951},"456":{"tf":1.4142135623730951},"475":{"tf":1.7320508075688772},"498":{"tf":1.0},"515":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"89":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"34":{"tf":1.0}}}}},"df":0,"docs":{},"n":{"df":43,"docs":{"158":{"tf":1.0},"16":{"tf":1.4142135623730951},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"25":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.4142135623730951},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.7320508075688772},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.4142135623730951},"498":{"tf":1.0},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"55":{"tf":1.0},"561":{"tf":1.0},"579":{"tf":1.0},"82":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":8,"docs":{"192":{"tf":1.0},"21":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"3":{"tf":1.0},"311":{"tf":1.0},"375":{"tf":1.0},"61":{"tf":1.0}}}}}}}},"w":{"a":{"df":0,"docs":{},"y":{"df":31,"docs":{"10":{"tf":1.0},"139":{"tf":1.0},"156":{"tf":2.0},"165":{"tf":1.0},"211":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.4142135623730951},"350":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"389":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"418":{"tf":1.0},"42":{"tf":1.0},"504":{"tf":1.0},"52":{"tf":1.0},"538":{"tf":1.0},"76":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"z":{"df":2,"docs":{"53":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"212":{"tf":1.0}}}}}},"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"385":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"487":{"tf":1.0},"59":{"tf":1.0}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":1,"docs":{"130":{"tf":1.0}}}}}}}}}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"'":{"df":2,"docs":{"125":{"tf":1.0},"129":{"tf":1.4142135623730951}}},"df":3,"docs":{"125":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0}}}}}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":7,"docs":{"231":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.0},"394":{"tf":1.0},"470":{"tf":1.0},"513":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"16":{"tf":1.0}}}}},"n":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":2,"docs":{"251":{"tf":1.0},"61":{"tf":1.7320508075688772}},"u":{"df":1,"docs":{"372":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":4,"docs":{"271":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"538":{"tf":1.0}}}},"z":{"df":1,"docs":{"380":{"tf":1.7320508075688772}}}}}},"d":{"/":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"341":{"tf":1.0},"380":{"tf":1.0},"412":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"218":{"tf":1.0}}}},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"156":{"tf":1.0},"298":{"tf":1.0}}}}},"l":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"189":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":6,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"380":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"502":{"tf":2.0}}},"u":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"357":{"tf":1.0},"486":{"tf":1.0}}},"df":0,"docs":{}}},"y":{"df":5,"docs":{"198":{"tf":1.0},"256":{"tf":1.0},"312":{"tf":1.0},"401":{"tf":1.0},"521":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{"df":0,"docs":{},"m":{"df":1,"docs":{"218":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"h":{"df":30,"docs":{"156":{"tf":1.0},"201":{"tf":1.0},"218":{"tf":1.0},"241":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.4142135623730951},"265":{"tf":1.0},"272":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.4142135623730951},"300":{"tf":1.0},"313":{"tf":1.0},"318":{"tf":1.0},"325":{"tf":1.0},"336":{"tf":1.0},"344":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"437":{"tf":1.0},"464":{"tf":1.0},"475":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"511":{"tf":1.0},"59":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":42,"docs":{"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"22":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.4142135623730951},"275":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.4142135623730951},"306":{"tf":1.0},"335":{"tf":1.0},"342":{"tf":1.0},"346":{"tf":1.0},"363":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"437":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"50":{"tf":1.0},"501":{"tf":1.0},"502":{"tf":1.0},"519":{"tf":1.0},"534":{"tf":1.0},"537":{"tf":1.0},"57":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":2,"docs":{"380":{"tf":1.0},"417":{"tf":1.0}}}}},"df":0,"docs":{}}},"y":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"408":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"156":{"tf":1.0},"258":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"558":{"tf":1.0},"89":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":26,"docs":{"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"244":{"tf":1.0},"245":{"tf":1.0},"25":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.4142135623730951},"41":{"tf":2.0},"421":{"tf":1.0},"497":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"558":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"217":{"tf":1.0}}}}},"w":{"a":{"df":0,"docs":{},"y":{"df":4,"docs":{"309":{"tf":1.0},"359":{"tf":1.0},"389":{"tf":1.0},"503":{"tf":1.0}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"125":{"tf":1.0},"209":{"tf":1.0},"423":{"tf":1.0},"448":{"tf":1.0}}}}}}}},"p":{"a":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"5":{"tf":1.4142135623730951},"6":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":40,"docs":{"156":{"tf":1.7320508075688772},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"224":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.0},"294":{"tf":1.4142135623730951},"296":{"tf":1.0},"300":{"tf":1.4142135623730951},"309":{"tf":1.0},"321":{"tf":2.8284271247461903},"323":{"tf":1.4142135623730951},"324":{"tf":1.0},"336":{"tf":2.23606797749979},"338":{"tf":1.0},"342":{"tf":1.0},"349":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"423":{"tf":1.0},"454":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":2.0},"504":{"tf":1.4142135623730951},"507":{"tf":1.0},"508":{"tf":1.4142135623730951},"511":{"tf":1.0},"513":{"tf":1.0},"515":{"tf":1.0},"522":{"tf":1.4142135623730951},"526":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"535":{"tf":1.0},"599":{"tf":1.0}}},"p":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"268":{"tf":1.0},"372":{"tf":1.0}}}},"df":7,"docs":{"188":{"tf":1.0},"189":{"tf":1.4142135623730951},"190":{"tf":1.0},"201":{"tf":1.0},"336":{"tf":2.8284271247461903},"419":{"tf":1.0},"599":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"r":{"df":9,"docs":{"156":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.4142135623730951},"347":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"417":{"tf":1.0},"440":{"tf":4.242640687119285}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"195":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"df":1,"docs":{"192":{"tf":1.0}},"i":{"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":23,"docs":{"110":{"tf":1.7320508075688772},"111":{"tf":1.0},"116":{"tf":1.0},"118":{"tf":1.0},"127":{"tf":1.0},"132":{"tf":1.0},"136":{"tf":2.0},"139":{"tf":1.0},"145":{"tf":1.0},"179":{"tf":1.0},"195":{"tf":1.4142135623730951},"209":{"tf":1.0},"230":{"tf":1.0},"244":{"tf":1.4142135623730951},"284":{"tf":2.0},"336":{"tf":4.123105625617661},"356":{"tf":1.0},"357":{"tf":1.4142135623730951},"456":{"tf":1.0},"470":{"tf":1.0},"496":{"tf":1.0},"503":{"tf":1.0},"57":{"tf":1.0}}},"df":11,"docs":{"156":{"tf":1.0},"183":{"tf":1.0},"237":{"tf":1.0},"307":{"tf":1.0},"312":{"tf":1.0},"32":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"480":{"tf":1.0},"522":{"tf":1.4142135623730951},"565":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":2,"docs":{"110":{"tf":1.0},"383":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"a":{"c":{"df":0,"docs":{},"h":{"df":13,"docs":{"276":{"tf":1.7320508075688772},"292":{"tf":1.0},"341":{"tf":1.0},"361":{"tf":1.0},"37":{"tf":1.4142135623730951},"389":{"tf":1.0},"392":{"tf":1.0},"440":{"tf":1.0},"463":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":12,"docs":{"17":{"tf":1.0},"217":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"3":{"tf":1.0},"41":{"tf":1.4142135623730951},"470":{"tf":1.0},"51":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"558":{"tf":1.0}}}}},"v":{"df":2,"docs":{"16":{"tf":1.0},"17":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"15":{"tf":1.0}}}}}},"r":{"3":{"7":{"df":1,"docs":{"602":{"tf":1.0}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"205":{"tf":1.0},"34":{"tf":1.4142135623730951},"341":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}}},"c":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"<":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"268":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"328":{"tf":1.7320508075688772}}}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"328":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":4,"docs":{"328":{"tf":1.0},"394":{"tf":1.0},"470":{"tf":1.4142135623730951},"539":{"tf":2.0}},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":7,"docs":{"278":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"431":{"tf":1.0},"433":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":6,"docs":{"258":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"487":{"tf":1.0},"496":{"tf":1.0},"65":{"tf":1.0}}},"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":10,"docs":{"217":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"310":{"tf":1.0},"317":{"tf":1.0},"341":{"tf":1.0},"460":{"tf":1.0},"503":{"tf":1.0},"552":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":3,"docs":{"230":{"tf":1.4142135623730951},"231":{"tf":1.0},"232":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"g":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"c":{"=":{"1":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"217":{"tf":1.0},"245":{"tf":1.0},"292":{"tf":1.0},"573":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"0":{")":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{")":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"u":{"df":2,"docs":{"278":{"tf":1.0},"456":{"tf":1.0}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"294":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"538":{"tf":1.0},"581":{"tf":1.0}}}}}}},"v":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"c":{"8":{"8":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"s":{"df":8,"docs":{"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"42":{"tf":1.0},"543":{"tf":1.0},"573":{"tf":1.0},"81":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"252":{"tf":1.0}}}}}},"m":{"7":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"d":{"df":29,"docs":{"112":{"tf":1.0},"130":{"tf":1.0},"153":{"tf":1.0},"200":{"tf":1.0},"205":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"259":{"tf":1.0},"276":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"311":{"tf":1.0},"336":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.7320508075688772},"394":{"tf":1.0},"421":{"tf":1.0},"433":{"tf":1.0},"458":{"tf":1.0},"486":{"tf":1.0},"502":{"tf":1.0},"544":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.7320508075688772},"73":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":3,"docs":{"232":{"tf":1.0},"276":{"tf":1.0},"397":{"tf":1.0}}}},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}}}},"t":{"df":2,"docs":{"209":{"tf":1.0},"410":{"tf":1.0}},"i":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"457":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"358":{"tf":1.0}}},"df":0,"docs":{}},"k":{"df":82,"docs":{"100":{"tf":1.0},"109":{"tf":1.0},"113":{"tf":1.0},"117":{"tf":1.0},"126":{"tf":1.0},"135":{"tf":1.0},"144":{"tf":1.0},"154":{"tf":1.4142135623730951},"160":{"tf":1.0},"169":{"tf":1.0},"170":{"tf":1.0},"178":{"tf":1.0},"180":{"tf":1.0},"192":{"tf":1.0},"198":{"tf":1.0},"200":{"tf":1.0},"202":{"tf":1.0},"209":{"tf":2.0},"210":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"222":{"tf":1.0},"236":{"tf":1.0},"247":{"tf":1.0},"260":{"tf":1.0},"268":{"tf":1.4142135623730951},"269":{"tf":1.0},"27":{"tf":1.0},"277":{"tf":1.0},"284":{"tf":1.0},"285":{"tf":1.0},"293":{"tf":1.0},"30":{"tf":1.0},"300":{"tf":1.7320508075688772},"301":{"tf":1.0},"314":{"tf":1.0},"328":{"tf":1.0},"329":{"tf":1.0},"337":{"tf":1.0},"340":{"tf":1.0},"348":{"tf":1.0},"362":{"tf":1.0},"370":{"tf":1.0},"371":{"tf":1.0},"381":{"tf":1.0},"385":{"tf":1.0},"390":{"tf":1.0},"398":{"tf":1.0},"409":{"tf":1.0},"42":{"tf":1.4142135623730951},"424":{"tf":1.0},"43":{"tf":1.0},"432":{"tf":1.0},"441":{"tf":1.0},"448":{"tf":1.0},"449":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.0},"471":{"tf":1.0},"479":{"tf":1.0},"487":{"tf":1.0},"492":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.0},"505":{"tf":1.0},"51":{"tf":1.0},"524":{"tf":1.0},"53":{"tf":1.4142135623730951},"54":{"tf":1.0},"540":{"tf":1.0},"556":{"tf":1.0},"582":{"tf":1.0},"593":{"tf":1.0},"66":{"tf":1.0},"75":{"tf":1.0},"80":{"tf":1.0},"85":{"tf":1.0},"90":{"tf":1.0}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":6,"docs":{"264":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"349":{"tf":1.4142135623730951},"51":{"tf":1.0},"561":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"40":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"15":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"!":{"(":{"1":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{".":{"0":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":3,"docs":{"469":{"tf":1.4142135623730951},"558":{"tf":2.0},"559":{"tf":1.7320508075688772}},"e":{"df":1,"docs":{"556":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"463":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}},"o":{"c":{"df":0,"docs":{},"i":{"df":4,"docs":{"218":{"tf":1.4142135623730951},"370":{"tf":1.0},"431":{"tf":1.0},"579":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"m":{"df":10,"docs":{"196":{"tf":1.0},"200":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"317":{"tf":1.0},"343":{"tf":1.4142135623730951},"470":{"tf":1.0},"539":{"tf":1.0},"62":{"tf":1.0}},"p":{"df":0,"docs":{},"t":{"df":3,"docs":{"173":{"tf":1.0},"393":{"tf":1.0},"460":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"196":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"n":{"c":{"/":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"370":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":15,"docs":{"195":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.0},"230":{"tf":1.0},"300":{"tf":1.7320508075688772},"332":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.4142135623730951},"418":{"tf":1.0},"426":{"tf":1.0},"61":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":1,"docs":{"370":{"tf":1.0}}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"t":{"d":{":":{":":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"276":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":2,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"df":0,"docs":{},"{":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"276":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"257":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"392":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":2.23606797749979},"211":{"tf":1.0},"221":{"tf":2.23606797749979}}}}},"df":0,"docs":{}}}},"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"558":{"tf":1.0}}}}},"df":0,"docs":{}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{">":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"421":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":235,"docs":{"0":{"tf":1.0},"11":{"tf":2.0},"110":{"tf":1.0},"136":{"tf":1.0},"153":{"tf":1.7320508075688772},"156":{"tf":6.557438524302},"158":{"tf":1.0},"16":{"tf":1.0},"166":{"tf":1.0},"167":{"tf":1.4142135623730951},"169":{"tf":1.0},"173":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"181":{"tf":1.4142135623730951},"186":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"192":{"tf":1.4142135623730951},"194":{"tf":1.0},"195":{"tf":1.4142135623730951},"196":{"tf":2.23606797749979},"197":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951},"203":{"tf":1.4142135623730951},"208":{"tf":1.0},"209":{"tf":3.0},"211":{"tf":2.0},"216":{"tf":1.0},"217":{"tf":3.872983346207417},"218":{"tf":3.0},"219":{"tf":1.0},"220":{"tf":1.0},"221":{"tf":4.123105625617661},"223":{"tf":1.4142135623730951},"224":{"tf":1.4142135623730951},"228":{"tf":1.0},"23":{"tf":1.7320508075688772},"230":{"tf":1.4142135623730951},"233":{"tf":1.0},"237":{"tf":1.4142135623730951},"239":{"tf":1.4142135623730951},"24":{"tf":1.0},"240":{"tf":1.4142135623730951},"241":{"tf":1.0},"243":{"tf":1.0},"244":{"tf":1.0},"25":{"tf":1.0},"253":{"tf":1.0},"254":{"tf":1.0},"257":{"tf":3.0},"258":{"tf":2.0},"259":{"tf":3.4641016151377544},"261":{"tf":2.0},"263":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.0},"267":{"tf":1.0},"268":{"tf":3.1622776601683795},"27":{"tf":1.0},"270":{"tf":1.4142135623730951},"272":{"tf":1.0},"273":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":2.449489742783178},"278":{"tf":1.4142135623730951},"283":{"tf":1.0},"284":{"tf":2.6457513110645907},"288":{"tf":1.0},"289":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":4.242640687119285},"294":{"tf":1.4142135623730951},"299":{"tf":1.0},"3":{"tf":1.4142135623730951},"300":{"tf":3.872983346207417},"305":{"tf":1.0},"306":{"tf":1.0},"307":{"tf":2.449489742783178},"308":{"tf":1.0},"309":{"tf":2.0},"310":{"tf":2.0},"311":{"tf":2.0},"312":{"tf":1.4142135623730951},"313":{"tf":1.4142135623730951},"315":{"tf":2.23606797749979},"320":{"tf":1.0},"321":{"tf":2.23606797749979},"322":{"tf":1.0},"323":{"tf":1.7320508075688772},"324":{"tf":1.4142135623730951},"325":{"tf":1.0},"326":{"tf":1.0},"327":{"tf":1.0},"328":{"tf":1.7320508075688772},"330":{"tf":2.0},"331":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":2.0},"340":{"tf":1.0},"341":{"tf":2.6457513110645907},"342":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":2.23606797749979},"349":{"tf":1.4142135623730951},"350":{"tf":1.4142135623730951},"354":{"tf":1.0},"355":{"tf":1.0},"357":{"tf":3.1622776601683795},"358":{"tf":2.8284271247461903},"359":{"tf":1.4142135623730951},"360":{"tf":2.449489742783178},"363":{"tf":2.449489742783178},"365":{"tf":1.7320508075688772},"366":{"tf":1.4142135623730951},"367":{"tf":2.6457513110645907},"368":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":2.0},"370":{"tf":5.0990195135927845},"375":{"tf":1.0},"378":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":4.242640687119285},"382":{"tf":1.0},"383":{"tf":2.23606797749979},"385":{"tf":1.0},"386":{"tf":1.0},"387":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":3.0},"391":{"tf":2.23606797749979},"392":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.4142135623730951},"396":{"tf":1.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.4142135623730951},"4":{"tf":1.0},"40":{"tf":1.0},"403":{"tf":1.4142135623730951},"406":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":2.0},"414":{"tf":1.0},"416":{"tf":1.0},"419":{"tf":1.7320508075688772},"430":{"tf":1.0},"433":{"tf":1.0},"439":{"tf":1.0},"440":{"tf":1.0},"442":{"tf":1.0},"447":{"tf":1.0},"448":{"tf":2.449489742783178},"450":{"tf":1.0},"455":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.4142135623730951},"460":{"tf":1.7320508075688772},"462":{"tf":1.4142135623730951},"467":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":4.0},"472":{"tf":1.0},"475":{"tf":1.4142135623730951},"477":{"tf":1.0},"478":{"tf":1.4142135623730951},"480":{"tf":1.0},"481":{"tf":1.0},"483":{"tf":1.7320508075688772},"487":{"tf":1.0},"490":{"tf":1.7320508075688772},"501":{"tf":1.7320508075688772},"502":{"tf":2.23606797749979},"504":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"510":{"tf":1.0},"512":{"tf":1.0},"519":{"tf":1.7320508075688772},"522":{"tf":3.605551275463989},"523":{"tf":1.0},"525":{"tf":1.4142135623730951},"526":{"tf":2.0},"528":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"537":{"tf":1.7320508075688772},"538":{"tf":3.0},"541":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.7320508075688772},"545":{"tf":2.23606797749979},"546":{"tf":2.0},"547":{"tf":1.4142135623730951},"548":{"tf":1.7320508075688772},"549":{"tf":1.0},"553":{"tf":1.0},"556":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.0},"561":{"tf":1.0},"564":{"tf":1.4142135623730951},"566":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":1.0},"575":{"tf":1.4142135623730951},"576":{"tf":1.0},"579":{"tf":1.7320508075688772},"580":{"tf":1.0},"581":{"tf":1.0},"584":{"tf":1.0},"585":{"tf":1.0},"586":{"tf":1.0},"590":{"tf":1.0},"594":{"tf":1.0},"595":{"tf":1.0},"597":{"tf":1.0},"599":{"tf":3.872983346207417},"600":{"tf":1.0},"601":{"tf":1.0},"61":{"tf":2.6457513110645907},"64":{"tf":1.0},"76":{"tf":1.0},"8":{"tf":2.0},"81":{"tf":1.0},"86":{"tf":1.0},"89":{"tf":1.0},"9":{"tf":1.7320508075688772},"91":{"tf":1.4142135623730951},"92":{"tf":1.0}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":21,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"218":{"tf":1.4142135623730951},"230":{"tf":1.0},"232":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":2.0},"261":{"tf":1.0},"278":{"tf":1.0},"309":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"341":{"tf":1.0},"370":{"tf":1.0},"456":{"tf":1.4142135623730951},"458":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.7320508075688772}},"i":{"df":4,"docs":{"389":{"tf":1.0},"391":{"tf":1.7320508075688772},"393":{"tf":1.0},"394":{"tf":1.4142135623730951}}}}}}},"i":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":2,"docs":{"370":{"tf":1.0},"574":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"574":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"62":{"tf":1.0}},"i":{"c":{"df":0,"docs":{},"u":{"6":{"4":{"df":1,"docs":{"328":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"p":{"df":2,"docs":{"209":{"tf":1.0},"548":{"tf":1.4142135623730951}}}},"t":{"a":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":1,"docs":{"571":{"tf":1.0}}},"k":{"df":1,"docs":{"125":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"487":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":14,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"213":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"330":{"tf":1.0},"349":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.0},"469":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"200":{"tf":1.0},"340":{"tf":1.0},"515":{"tf":1.0}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":6,"docs":{"209":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"380":{"tf":1.0},"494":{"tf":1.4142135623730951},"539":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"431":{"tf":1.4142135623730951}}}}},"o":{"df":0,"docs":{},"r":{"'":{"df":4,"docs":{"280":{"tf":1.0},"295":{"tf":1.0},"303":{"tf":1.0},"364":{"tf":1.0}}},"df":15,"docs":{"171":{"tf":1.4142135623730951},"192":{"tf":1.0},"199":{"tf":1.0},"238":{"tf":1.0},"252":{"tf":1.0},"262":{"tf":1.0},"366":{"tf":1.0},"384":{"tf":1.0},"423":{"tf":1.0},"426":{"tf":1.0},"444":{"tf":1.0},"478":{"tf":1.0},"483":{"tf":1.0},"513":{"tf":1.0},"54":{"tf":1.4142135623730951}}}}},"o":{"df":1,"docs":{"347":{"tf":1.4142135623730951}},"m":{"a":{"df":0,"docs":{},"t":{"df":4,"docs":{"178":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0}}}},"df":1,"docs":{"526":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":19,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"111":{"tf":1.0},"147":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.0},"209":{"tf":1.0},"284":{"tf":1.4142135623730951},"318":{"tf":1.0},"336":{"tf":1.0},"394":{"tf":1.0},"403":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0},"82":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"359":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"i":{"d":{"df":13,"docs":{"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"252":{"tf":1.0},"272":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.0},"417":{"tf":1.4142135623730951},"474":{"tf":1.0},"478":{"tf":1.7320508075688772},"513":{"tf":1.0},"564":{"tf":1.0},"62":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":35,"docs":{"156":{"tf":2.0},"169":{"tf":1.7320508075688772},"171":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"195":{"tf":1.4142135623730951},"196":{"tf":1.0},"205":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"268":{"tf":2.23606797749979},"271":{"tf":1.0},"292":{"tf":1.7320508075688772},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"315":{"tf":1.0},"320":{"tf":1.0},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"403":{"tf":1.0},"419":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0},"522":{"tf":1.7320508075688772},"523":{"tf":1.4142135623730951},"526":{"tf":1.0},"539":{"tf":1.4142135623730951},"556":{"tf":1.0},"558":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}},"r":{"d":{"df":8,"docs":{"14":{"tf":1.0},"15":{"tf":1.0},"16":{"tf":1.0},"19":{"tf":1.7320508075688772},"55":{"tf":1.0},"58":{"tf":1.4142135623730951},"59":{"tf":2.0},"60":{"tf":1.0}}},"df":8,"docs":{"171":{"tf":1.0},"230":{"tf":1.0},"412":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"584":{"tf":1.0},"585":{"tf":1.0},"81":{"tf":1.0}}},"y":{"df":4,"docs":{"199":{"tf":1.0},"221":{"tf":1.0},"357":{"tf":1.0},"419":{"tf":1.0}}}},"df":1,"docs":{"599":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"223":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"325":{"tf":1.0}}},"df":0,"docs":{}}}}},"b":{"+":{">":{"5":{"5":{"df":1,"docs":{"448":{"tf":1.0}}},"6":{"df":1,"docs":{"448":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"k":{"df":21,"docs":{"209":{"tf":1.0},"218":{"tf":1.0},"237":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.0},"278":{"tf":1.0},"289":{"tf":1.0},"310":{"tf":1.0},"389":{"tf":1.0},"417":{"tf":1.4142135623730951},"425":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.0},"498":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"539":{"tf":1.4142135623730951},"579":{"tf":1.0},"598":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"178":{"tf":1.0},"230":{"tf":1.0}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":21,"docs":{"127":{"tf":1.0},"164":{"tf":1.0},"214":{"tf":1.0},"248":{"tf":1.0},"28":{"tf":1.0},"280":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.4142135623730951},"300":{"tf":1.0},"316":{"tf":1.0},"336":{"tf":1.4142135623730951},"418":{"tf":1.0},"433":{"tf":1.0},"436":{"tf":1.0},"440":{"tf":1.0},"444":{"tf":1.0},"460":{"tf":1.0},"538":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"237":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":5,"docs":{"284":{"tf":1.0},"397":{"tf":2.23606797749979},"404":{"tf":1.0},"405":{"tf":1.4142135623730951},"539":{"tf":1.0}},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"2":{"5":{":":{"1":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"338":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"d":{"df":5,"docs":{"189":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"397":{"tf":1.4142135623730951}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"603":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"e":{"df":2,"docs":{"460":{"tf":1.0},"53":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"116":{"tf":1.0},"457":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"g":{"df":2,"docs":{"217":{"tf":1.0},"370":{"tf":1.0}}}},"r":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"b":{"a":{"df":0,"docs":{},"r":{"a":{"'":{"df":15,"docs":{"209":{"tf":1.0},"300":{"tf":1.0},"318":{"tf":1.0},"341":{"tf":1.4142135623730951},"342":{"tf":1.0},"344":{"tf":1.0},"356":{"tf":1.4142135623730951},"359":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.4142135623730951},"385":{"tf":1.0},"389":{"tf":1.0},"41":{"tf":1.0},"480":{"tf":1.0},"539":{"tf":1.0}}},"df":101,"docs":{"156":{"tf":4.58257569495584},"169":{"tf":1.4142135623730951},"171":{"tf":1.0},"174":{"tf":1.0},"178":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":3.872983346207417},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"221":{"tf":2.449489742783178},"225":{"tf":1.4142135623730951},"226":{"tf":1.0},"240":{"tf":1.0},"245":{"tf":1.7320508075688772},"251":{"tf":1.0},"264":{"tf":1.4142135623730951},"268":{"tf":3.0},"272":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.4142135623730951},"297":{"tf":1.0},"298":{"tf":1.0},"300":{"tf":3.3166247903554},"304":{"tf":1.4142135623730951},"305":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"316":{"tf":1.0},"318":{"tf":1.4142135623730951},"320":{"tf":1.0},"321":{"tf":2.0},"322":{"tf":1.0},"324":{"tf":1.0},"326":{"tf":1.0},"328":{"tf":3.0},"332":{"tf":1.0},"334":{"tf":1.0},"336":{"tf":4.358898943540674},"339":{"tf":1.0},"340":{"tf":1.4142135623730951},"344":{"tf":1.0},"345":{"tf":1.0},"347":{"tf":3.1622776601683795},"352":{"tf":1.0},"354":{"tf":1.0},"357":{"tf":1.4142135623730951},"359":{"tf":1.4142135623730951},"360":{"tf":1.4142135623730951},"361":{"tf":1.0},"366":{"tf":1.7320508075688772},"367":{"tf":1.0},"368":{"tf":1.0},"370":{"tf":2.449489742783178},"376":{"tf":1.0},"378":{"tf":1.0},"380":{"tf":4.242640687119285},"382":{"tf":1.4142135623730951},"383":{"tf":1.0},"385":{"tf":1.0},"386":{"tf":1.4142135623730951},"387":{"tf":1.0},"389":{"tf":3.0},"393":{"tf":1.4142135623730951},"395":{"tf":1.0},"397":{"tf":1.4142135623730951},"401":{"tf":1.0},"404":{"tf":1.0},"406":{"tf":1.0},"408":{"tf":2.0},"41":{"tf":1.0},"413":{"tf":1.4142135623730951},"415":{"tf":1.0},"417":{"tf":2.23606797749979},"420":{"tf":1.0},"421":{"tf":2.449489742783178},"423":{"tf":1.0},"425":{"tf":1.0},"427":{"tf":1.4142135623730951},"445":{"tf":1.0},"458":{"tf":1.4142135623730951},"463":{"tf":1.0},"475":{"tf":1.0},"478":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.7320508075688772},"513":{"tf":1.4142135623730951},"525":{"tf":1.0},"531":{"tf":1.4142135623730951},"536":{"tf":1.0},"538":{"tf":4.358898943540674},"539":{"tf":2.6457513110645907},"541":{"tf":1.0},"545":{"tf":1.4142135623730951},"65":{"tf":1.0},"67":{"tf":1.0},"89":{"tf":1.4142135623730951},"91":{"tf":1.0},"92":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":4,"docs":{"380":{"tf":1.0},"504":{"tf":1.0},"576":{"tf":1.0},"578":{"tf":1.4142135623730951}},"e":{"df":1,"docs":{"232":{"tf":1.0}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"572":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"e":{"df":39,"docs":{"15":{"tf":1.0},"154":{"tf":1.4142135623730951},"162":{"tf":1.0},"17":{"tf":1.0},"173":{"tf":1.0},"18":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"24":{"tf":1.0},"250":{"tf":1.0},"268":{"tf":1.4142135623730951},"28":{"tf":1.0},"294":{"tf":1.4142135623730951},"296":{"tf":1.0},"303":{"tf":1.0},"336":{"tf":2.0},"340":{"tf":1.0},"341":{"tf":1.4142135623730951},"364":{"tf":1.0},"38":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"422":{"tf":1.0},"434":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.0},"473":{"tf":1.0},"502":{"tf":1.0},"516":{"tf":1.0},"542":{"tf":1.0},"570":{"tf":1.0},"596":{"tf":1.0},"62":{"tf":1.4142135623730951},"65":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"393":{"tf":1.0}}}}}},"i":{"c":{"df":13,"docs":{"156":{"tf":2.0},"167":{"tf":1.0},"195":{"tf":1.0},"258":{"tf":1.0},"309":{"tf":1.0},"318":{"tf":1.0},"359":{"tf":1.0},"374":{"tf":1.0},"383":{"tf":1.0},"397":{"tf":1.0},"469":{"tf":1.0},"573":{"tf":1.0},"96":{"tf":1.0}}},"df":1,"docs":{"550":{"tf":1.0}}}}},"df":5,"docs":{"12":{"tf":1.0},"211":{"tf":1.4142135623730951},"217":{"tf":1.0},"421":{"tf":1.7320508075688772},"73":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"414":{"tf":1.0}}},"r":{"df":1,"docs":{"382":{"tf":1.0}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}}}}}}}},"c":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"328":{"tf":1.0},"470":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":12,"docs":{"112":{"tf":1.0},"139":{"tf":1.0},"259":{"tf":1.0},"278":{"tf":1.4142135623730951},"292":{"tf":1.0},"321":{"tf":1.0},"372":{"tf":1.0},"456":{"tf":1.0},"532":{"tf":1.0},"54":{"tf":1.0},"562":{"tf":1.0},"8":{"tf":1.0}}}}},"df":26,"docs":{"127":{"tf":1.0},"130":{"tf":1.0},"189":{"tf":1.0},"209":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"272":{"tf":1.0},"309":{"tf":1.0},"316":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"460":{"tf":1.0},"503":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0},"55":{"tf":1.0},"599":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":32,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"169":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"183":{"tf":1.0},"195":{"tf":1.0},"198":{"tf":1.0},"218":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.0},"359":{"tf":1.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.4142135623730951},"402":{"tf":1.0},"414":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.0},"445":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"502":{"tf":1.4142135623730951},"538":{"tf":1.7320508075688772},"599":{"tf":1.4142135623730951},"61":{"tf":1.0}}}}},"g":{"a":{"df":0,"docs":{},"n":{"df":3,"docs":{"389":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":10,"docs":{"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"235":{"tf":1.0},"284":{"tf":1.7320508075688772},"289":{"tf":1.0},"313":{"tf":1.0},"336":{"tf":1.4142135623730951},"380":{"tf":1.0},"458":{"tf":1.0},"599":{"tf":1.0}},"n":{"df":1,"docs":{"363":{"tf":1.0}}}}}},"h":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"300":{"tf":1.0}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"448":{"tf":1.0},"450":{"tf":1.0},"538":{"tf":1.0}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"462":{"tf":1.0}}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":6,"docs":{"134":{"tf":1.0},"240":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"246":{"tf":1.0}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":5,"docs":{"336":{"tf":1.0},"408":{"tf":1.0},"470":{"tf":1.0},"538":{"tf":1.0},"8":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"w":{"df":2,"docs":{"404":{"tf":1.0},"516":{"tf":1.0}}}},"t":{"df":1,"docs":{"457":{"tf":1.0}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}}}},"df":7,"docs":{"209":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.0},"363":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.4142135623730951},"538":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"341":{"tf":1.0}}}},"df":0,"docs":{},"t":{"df":15,"docs":{"259":{"tf":1.0},"278":{"tf":1.0},"41":{"tf":1.0},"427":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"464":{"tf":1.0},"495":{"tf":1.0},"514":{"tf":1.4142135623730951},"532":{"tf":1.4142135623730951},"54":{"tf":1.0},"546":{"tf":1.7320508075688772},"79":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"499":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":18,"docs":{"110":{"tf":1.0},"156":{"tf":1.4142135623730951},"159":{"tf":1.0},"16":{"tf":1.4142135623730951},"168":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"32":{"tf":1.0},"389":{"tf":1.0},"421":{"tf":1.0},"457":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"48":{"tf":1.0},"486":{"tf":1.0},"491":{"tf":1.0},"55":{"tf":1.0},"59":{"tf":1.0}}}},"t":{"df":1,"docs":{"538":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":33,"docs":{"131":{"tf":1.0},"138":{"tf":1.0},"214":{"tf":1.0},"258":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.4142135623730951},"33":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951},"36":{"tf":1.0},"363":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"423":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.7320508075688772},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"72":{"tf":1.0},"76":{"tf":1.0},"82":{"tf":1.0},"96":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":24,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"278":{"tf":1.0},"311":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"383":{"tf":1.7320508075688772},"391":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.4142135623730951},"456":{"tf":1.0},"469":{"tf":1.4142135623730951},"47":{"tf":1.0},"470":{"tf":1.7320508075688772},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":3,"docs":{"209":{"tf":1.0},"573":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}}}},"i":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"463":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"b":{"df":0,"docs":{},"v":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":10,"docs":{"15":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"315":{"tf":1.0},"356":{"tf":1.4142135623730951},"359":{"tf":1.7320508075688772},"380":{"tf":1.0},"478":{"tf":1.0},"487":{"tf":1.4142135623730951},"599":{"tf":1.0}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"161":{"tf":1.0},"28":{"tf":1.0},"302":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"573":{"tf":1.0}}},"df":0,"docs":{}}}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"139":{"tf":1.0}}}}}}},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"313":{"tf":1.0},"370":{"tf":1.0},"448":{"tf":1.0}}}}},"d":{"(":{"1":{"5":{"0":{"_":{"df":0,"docs":{},"i":{"6":{"4":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"456":{"tf":1.0}}}}}},"df":0,"docs":{}},"t":{"df":28,"docs":{"178":{"tf":1.0},"18":{"tf":1.0},"190":{"tf":1.4142135623730951},"217":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.0},"3":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"358":{"tf":1.4142135623730951},"359":{"tf":1.7320508075688772},"363":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":1.4142135623730951},"375":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.0},"513":{"tf":1.0},"539":{"tf":1.0},"552":{"tf":1.0},"561":{"tf":1.0},"599":{"tf":1.7320508075688772},"82":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"174":{"tf":1.0},"259":{"tf":1.7320508075688772}}}}}}},"l":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"300":{"tf":1.0},"380":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"361":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}}},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":2,"docs":{"347":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"n":{"(":{"d":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"309":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"o":{">":{"(":{"df":0,"docs":{},"f":{"df":1,"docs":{"309":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":11,"docs":{"218":{"tf":1.0},"308":{"tf":1.4142135623730951},"309":{"tf":2.0},"310":{"tf":1.0},"313":{"tf":1.0},"318":{"tf":1.7320508075688772},"320":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.0},"325":{"tf":2.449489742783178},"478":{"tf":1.0}}}}},"df":39,"docs":{"110":{"tf":1.0},"156":{"tf":1.7320508075688772},"189":{"tf":1.0},"190":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":2.23606797749979},"270":{"tf":1.7320508075688772},"271":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.7320508075688772},"300":{"tf":1.0},"309":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"323":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.7320508075688772},"350":{"tf":1.0},"360":{"tf":1.4142135623730951},"365":{"tf":2.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"385":{"tf":1.0},"399":{"tf":1.0},"408":{"tf":1.0},"412":{"tf":1.0},"422":{"tf":1.0},"448":{"tf":1.4142135623730951},"456":{"tf":2.0},"470":{"tf":1.4142135623730951},"522":{"tf":1.4142135623730951},"526":{"tf":1.0},"538":{"tf":2.6457513110645907},"539":{"tf":1.0},"558":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"<":{"c":{"df":1,"docs":{"470":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"df":23,"docs":{"162":{"tf":1.0},"192":{"tf":1.0},"199":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"276":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"319":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.4142135623730951},"36":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"365":{"tf":2.0},"367":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"486":{"tf":1.0},"599":{"tf":2.0},"60":{"tf":1.0},"9":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"258":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"560":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"e":{"df":1,"docs":{"218":{"tf":1.0}}}}},"o":{"a":{"df":0,"docs":{},"r":{"d":{"df":5,"docs":{"245":{"tf":1.0},"460":{"tf":1.0},"557":{"tf":1.4142135623730951},"558":{"tf":1.4142135623730951},"559":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"357":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":5,"docs":{"195":{"tf":1.7320508075688772},"201":{"tf":1.0},"258":{"tf":1.4142135623730951},"292":{"tf":2.8284271247461903},"523":{"tf":1.4142135623730951}}},"y":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"195":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"258":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"232":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"k":{"/":{"0":{"7":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"s":{"/":{"0":{"3":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"_":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":1,"docs":{"271":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":11,"docs":{"268":{"tf":1.0},"358":{"tf":2.0},"360":{"tf":1.4142135623730951},"365":{"tf":1.0},"370":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.7320508075688772},"483":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"599":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"284":{"tf":1.0},"380":{"tf":1.0}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"389":{"tf":1.0},"394":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":17,"docs":{"156":{"tf":1.0},"189":{"tf":1.0},"217":{"tf":3.4641016151377544},"218":{"tf":2.6457513110645907},"294":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.4142135623730951},"415":{"tf":1.0},"417":{"tf":4.358898943540674},"418":{"tf":2.0},"419":{"tf":3.4641016151377544},"421":{"tf":2.8284271247461903},"422":{"tf":2.0},"423":{"tf":1.4142135623730951},"425":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"235":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":17,"docs":{"1":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"209":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"418":{"tf":1.0},"470":{"tf":1.0},"544":{"tf":1.4142135623730951},"55":{"tf":1.0},"57":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"389":{"tf":1.0}}}},"df":0,"docs":{}}}}},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"538":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"d":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"472":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"268":{"tf":1.0}}}}},"df":11,"docs":{"198":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.4142135623730951},"475":{"tf":1.0},"538":{"tf":1.7320508075688772},"564":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"x":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":2,"docs":{"156":{"tf":1.0},"380":{"tf":1.4142135623730951}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":4,"docs":{"156":{"tf":1.0},"221":{"tf":1.0},"370":{"tf":1.0},"375":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}}}}}},"df":5,"docs":{"156":{"tf":1.0},"246":{"tf":1.0},"251":{"tf":1.0},"380":{"tf":1.4142135623730951},"572":{"tf":1.0}}}}}},"df":0,"docs":{}},"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":8,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"292":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"448":{"tf":1.4142135623730951},"502":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"211":{"tf":1.0}}}},"df":16,"docs":{"156":{"tf":1.0},"209":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.4142135623730951},"265":{"tf":1.0},"292":{"tf":1.7320508075688772},"370":{"tf":2.0},"380":{"tf":2.23606797749979},"397":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.4142135623730951},"515":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":2.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"<":{"'":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"y":{"df":1,"docs":{"300":{"tf":1.0}}}},"r":{"a":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"300":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":46,"docs":{"15":{"tf":2.23606797749979},"158":{"tf":1.0},"16":{"tf":2.23606797749979},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"46":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"486":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"55":{"tf":1.0},"58":{"tf":1.0},"59":{"tf":1.0},"60":{"tf":1.0}}}}}}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"200":{"tf":2.0},"276":{"tf":1.0},"336":{"tf":1.0}}}},"d":{"df":1,"docs":{"389":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"602":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"53":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"df":10,"docs":{"171":{"tf":1.0},"223":{"tf":1.0},"328":{"tf":1.7320508075688772},"380":{"tf":1.0},"421":{"tf":1.4142135623730951},"448":{"tf":1.0},"450":{"tf":1.4142135623730951},"451":{"tf":1.0},"470":{"tf":1.0},"552":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"341":{"tf":1.4142135623730951}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"404":{"tf":1.0},"448":{"tf":2.0},"450":{"tf":1.0},"453":{"tf":1.0}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"268":{"tf":1.0},"370":{"tf":1.0}}}}},"df":0,"docs":{}},"i":{"d":{"df":0,"docs":{},"g":{"df":6,"docs":{"156":{"tf":1.4142135623730951},"300":{"tf":1.0},"305":{"tf":1.0},"311":{"tf":1.0},"456":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"359":{"tf":1.0},"503":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"179":{"tf":1.0},"358":{"tf":1.0},"503":{"tf":1.0}}}}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"394":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"g":{"df":16,"docs":{"156":{"tf":1.0},"268":{"tf":1.0},"382":{"tf":1.0},"41":{"tf":2.0},"410":{"tf":1.0},"427":{"tf":1.0},"433":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.0},"62":{"tf":1.0},"64":{"tf":1.0},"77":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"9":{"tf":1.0},"92":{"tf":1.0}}}}},"o":{"a":{"d":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"279":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"258":{"tf":1.0},"261":{"tf":1.0}}}}},"df":0,"docs":{}},"c":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"s":{"df":3,"docs":{"16":{"tf":1.0},"25":{"tf":1.0},"397":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"217":{"tf":1.0},"542":{"tf":1.0},"62":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"336":{"tf":1.0}}}},"t":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}},"u":{"b":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"565":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"418":{"tf":1.0}}},"df":0,"docs":{}}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"418":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":2,"docs":{"370":{"tf":1.0},"418":{"tf":2.23606797749979}},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"347":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"d":{"(":{"3":{"2":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":4,"docs":{"195":{"tf":2.0},"209":{"tf":1.0},"336":{"tf":2.449489742783178},"418":{"tf":1.7320508075688772}},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"g":{"df":26,"docs":{"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"168":{"tf":1.0},"173":{"tf":1.0},"182":{"tf":1.0},"2":{"tf":1.0},"200":{"tf":1.0},"237":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"347":{"tf":1.0},"397":{"tf":2.0},"417":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.4142135623730951},"434":{"tf":1.0},"456":{"tf":1.0},"46":{"tf":1.0},"556":{"tf":2.23606797749979},"557":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.0}}},"i":{"df":0,"docs":{},"l":{"d":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"110":{"tf":1.0}}}},"df":30,"docs":{"11":{"tf":1.0},"110":{"tf":1.4142135623730951},"130":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":2.23606797749979},"195":{"tf":1.0},"221":{"tf":1.0},"240":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"312":{"tf":1.0},"326":{"tf":1.0},"328":{"tf":1.4142135623730951},"330":{"tf":1.4142135623730951},"333":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.4142135623730951},"383":{"tf":1.0},"389":{"tf":1.0},"458":{"tf":1.0},"466":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"473":{"tf":1.0},"486":{"tf":1.0},"597":{"tf":1.0},"72":{"tf":1.0},"8":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"df":17,"docs":{"103":{"tf":1.0},"108":{"tf":1.0},"11":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0},"195":{"tf":1.0},"211":{"tf":1.0},"276":{"tf":1.0},"307":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"323":{"tf":1.0},"599":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"198":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"481":{"tf":1.0},"517":{"tf":1.0}}}},"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":5,"docs":{"171":{"tf":1.0},"191":{"tf":1.0},"349":{"tf":1.0},"76":{"tf":1.0},"81":{"tf":1.0}}}}},"df":0,"docs":{},"n":{"df":1,"docs":{"156":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"df":5,"docs":{"130":{"tf":1.0},"139":{"tf":1.4142135623730951},"292":{"tf":1.0},"347":{"tf":1.4142135623730951},"52":{"tf":1.0}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"188":{"tf":1.0},"336":{"tf":1.0},"453":{"tf":1.0},"503":{"tf":1.0}}}}}},"y":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"z":{"df":0,"docs":{},"z":{"df":1,"docs":{"538":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"328":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"e":{"df":5,"docs":{"195":{"tf":1.0},"209":{"tf":1.4142135623730951},"245":{"tf":1.0},"336":{"tf":2.0},"347":{"tf":1.4142135623730951}}}}}},"c":{"+":{"+":{"2":{"0":{"'":{"df":1,"docs":{"347":{"tf":1.0}}},"df":1,"docs":{"347":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"/":{"c":{"df":4,"docs":{"259":{"tf":1.0},"460":{"tf":1.0},"474":{"tf":1.0},"65":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"156":{"tf":1.0},"165":{"tf":1.0},"167":{"tf":2.0},"168":{"tf":1.0},"169":{"tf":2.23606797749979}}}},"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"189":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"555":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}},"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"c":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":11,"docs":{"292":{"tf":1.0},"294":{"tf":2.0},"296":{"tf":1.0},"300":{"tf":1.0},"324":{"tf":1.0},"336":{"tf":4.795831523312719},"341":{"tf":1.0},"344":{"tf":1.4142135623730951},"418":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":51,"docs":{"150":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":2.23606797749979},"209":{"tf":2.8284271247461903},"217":{"tf":2.6457513110645907},"218":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":2.0},"268":{"tf":1.7320508075688772},"276":{"tf":2.6457513110645907},"284":{"tf":1.0},"300":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.4142135623730951},"320":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":3.4641016151377544},"341":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.8284271247461903},"389":{"tf":1.0},"391":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"417":{"tf":3.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.4142135623730951},"457":{"tf":2.0},"470":{"tf":1.0},"478":{"tf":1.0},"487":{"tf":1.0},"502":{"tf":1.7320508075688772},"503":{"tf":1.0},"54":{"tf":1.0},"578":{"tf":1.0},"61":{"tf":1.0}},"e":{"df":1,"docs":{"349":{"tf":1.0}},"r":{"df":5,"docs":{"217":{"tf":1.0},"336":{"tf":1.0},"349":{"tf":1.0},"403":{"tf":1.0},"573":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"419":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"m":{"df":0,"docs":{},"e":{"df":5,"docs":{"130":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"404":{"tf":1.0},"470":{"tf":1.0}},"r":{"a":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"457":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"457":{"tf":1.0}}}}}},"df":4,"docs":{"456":{"tf":2.449489742783178},"457":{"tf":2.0},"458":{"tf":2.449489742783178},"462":{"tf":1.0}}},"df":0,"docs":{}}}},"n":{"'":{"df":0,"docs":{},"t":{"df":21,"docs":{"156":{"tf":1.4142135623730951},"178":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.4142135623730951},"292":{"tf":1.7320508075688772},"307":{"tf":1.0},"312":{"tf":1.0},"315":{"tf":1.0},"322":{"tf":1.0},"370":{"tf":1.4142135623730951},"397":{"tf":1.0},"408":{"tf":1.0},"534":{"tf":1.0},"54":{"tf":1.0},"578":{"tf":1.0},"59":{"tf":1.4142135623730951}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":6,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"178":{"tf":1.7320508075688772},"181":{"tf":1.0},"341":{"tf":1.0},"349":{"tf":1.4142135623730951}}}}},"d":{"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"245":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"a":{"b":{"df":0,"docs":{},"l":{"df":7,"docs":{"110":{"tf":1.4142135623730951},"292":{"tf":1.0},"338":{"tf":1.4142135623730951},"456":{"tf":1.0},"503":{"tf":1.0},"507":{"tf":1.0},"515":{"tf":1.0}}}},"c":{"df":2,"docs":{"538":{"tf":1.7320508075688772},"539":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":2,"docs":{"15":{"tf":1.0},"389":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"539":{"tf":1.0}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":4,"docs":{"218":{"tf":1.4142135623730951},"560":{"tf":1.0},"561":{"tf":1.7320508075688772},"581":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":11,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.0},"198":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.0},"417":{"tf":1.4142135623730951},"456":{"tf":1.0},"515":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"276":{"tf":1.0}}}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"156":{"tf":1.0},"218":{"tf":1.0},"328":{"tf":1.0},"334":{"tf":1.0}}}}}}}},"g":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":3,"docs":{"221":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.0}}}}}}},"df":6,"docs":{"110":{"tf":1.0},"422":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.4142135623730951},"523":{"tf":1.0},"82":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":40,"docs":{"154":{"tf":1.0},"164":{"tf":1.0},"178":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.7320508075688772},"261":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.4142135623730951},"320":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.4142135623730951},"417":{"tf":1.0},"423":{"tf":1.4142135623730951},"451":{"tf":1.0},"462":{"tf":1.0},"516":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"561":{"tf":1.0},"564":{"tf":1.0},"57":{"tf":1.0},"572":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.7320508075688772},"62":{"tf":1.0},"96":{"tf":1.0}}},"t":{"df":7,"docs":{"352":{"tf":1.0},"63":{"tf":1.0},"70":{"tf":1.0},"78":{"tf":1.0},"83":{"tf":1.0},"88":{"tf":1.0},"9":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"200":{"tf":1.0},"25":{"tf":1.0},"322":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"558":{"tf":1.0}},"i":{"df":3,"docs":{"16":{"tf":1.0},"19":{"tf":1.4142135623730951},"59":{"tf":1.7320508075688772}}}}}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}}},"s":{"df":17,"docs":{"171":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"271":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.0},"349":{"tf":1.0},"417":{"tf":1.4142135623730951},"469":{"tf":1.0},"481":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}},"s":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"349":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":38,"docs":{"12":{"tf":1.0},"127":{"tf":1.0},"156":{"tf":2.8284271247461903},"206":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":2.23606797749979},"214":{"tf":2.0},"245":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.0},"258":{"tf":2.0},"259":{"tf":2.0},"263":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"414":{"tf":1.0},"431":{"tf":1.0},"435":{"tf":1.0},"440":{"tf":1.4142135623730951},"454":{"tf":1.0},"456":{"tf":2.0},"457":{"tf":2.8284271247461903},"458":{"tf":1.0},"460":{"tf":1.7320508075688772},"462":{"tf":2.23606797749979},"463":{"tf":1.4142135623730951},"521":{"tf":1.4142135623730951},"74":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":2.0},"81":{"tf":1.4142135623730951},"82":{"tf":1.4142135623730951},"9":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"r":{"df":2,"docs":{"357":{"tf":1.0},"558":{"tf":1.0}}}},"df":0,"docs":{}},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":2.0}}}}}},"df":8,"docs":{"415":{"tf":1.0},"417":{"tf":3.3166247903554},"421":{"tf":3.0},"422":{"tf":1.4142135623730951},"423":{"tf":2.6457513110645907},"425":{"tf":1.0},"428":{"tf":1.0},"565":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"125":{"tf":1.4142135623730951}}}},"r":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"10":{"tf":1.0},"129":{"tf":1.0},"504":{"tf":1.0},"530":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":12,"docs":{"125":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"259":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"349":{"tf":1.0},"367":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.0},"504":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"338":{"tf":1.0},"546":{"tf":1.0},"598":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"f":{"d":{"df":2,"docs":{"469":{"tf":1.0},"470":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"188":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"h":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"389":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"n":{"df":5,"docs":{"313":{"tf":1.0},"315":{"tf":1.0},"380":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.0}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":51,"docs":{"153":{"tf":1.0},"156":{"tf":1.7320508075688772},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"278":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"317":{"tf":1.0},"321":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"355":{"tf":1.0},"356":{"tf":1.0},"369":{"tf":1.0},"370":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"561":{"tf":1.0},"584":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}}},"n":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"df":5,"docs":{"330":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"475":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":34,"docs":{"11":{"tf":1.0},"152":{"tf":1.0},"171":{"tf":1.0},"18":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.4142135623730951},"233":{"tf":1.0},"257":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"313":{"tf":1.0},"328":{"tf":1.7320508075688772},"338":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.7320508075688772},"456":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"485":{"tf":1.0},"487":{"tf":1.4142135623730951},"503":{"tf":1.4142135623730951},"507":{"tf":1.0},"516":{"tf":1.0},"522":{"tf":1.0},"526":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0},"545":{"tf":1.0},"62":{"tf":1.0}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"'":{"df":1,"docs":{"538":{"tf":1.0}}},"(":{"1":{"0":{"0":{"df":1,"docs":{"448":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"d":{":":{":":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":10,"docs":{"169":{"tf":1.7320508075688772},"276":{"tf":1.0},"279":{"tf":1.0},"370":{"tf":1.4142135623730951},"394":{"tf":1.0},"408":{"tf":1.7320508075688772},"538":{"tf":3.605551275463989},"539":{"tf":3.0},"585":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"268":{"tf":1.0},"358":{"tf":1.0},"522":{"tf":1.0}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":58,"docs":{"153":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"192":{"tf":1.7320508075688772},"206":{"tf":1.4142135623730951},"214":{"tf":1.0},"218":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"251":{"tf":1.0},"264":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"28":{"tf":1.4142135623730951},"281":{"tf":1.0},"289":{"tf":1.4142135623730951},"297":{"tf":1.0},"317":{"tf":1.0},"32":{"tf":2.0},"333":{"tf":1.0},"339":{"tf":1.0},"340":{"tf":1.0},"35":{"tf":1.0},"353":{"tf":1.0},"365":{"tf":1.0},"367":{"tf":1.7320508075688772},"377":{"tf":1.4142135623730951},"380":{"tf":1.0},"385":{"tf":2.0},"386":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"402":{"tf":1.4142135623730951},"414":{"tf":1.0},"428":{"tf":1.4142135623730951},"436":{"tf":1.0},"445":{"tf":1.4142135623730951},"45":{"tf":1.7320508075688772},"453":{"tf":1.4142135623730951},"463":{"tf":1.0},"474":{"tf":1.7320508075688772},"475":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.4142135623730951},"496":{"tf":1.0},"54":{"tf":1.0},"63":{"tf":1.0},"64":{"tf":1.4142135623730951},"65":{"tf":1.0},"68":{"tf":1.0},"69":{"tf":1.0},"70":{"tf":1.0},"78":{"tf":1.0},"83":{"tf":1.0},"88":{"tf":1.0},"9":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"21":{"tf":1.0},"339":{"tf":1.0},"96":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":1,"docs":{"209":{"tf":1.0}}},"m":{"df":1,"docs":{"257":{"tf":1.0}}}},"t":{"df":4,"docs":{"200":{"tf":1.0},"268":{"tf":1.4142135623730951},"271":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"191":{"tf":1.0},"213":{"tf":1.0}}},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}}}}}}}},"c":{"df":0,"docs":{},"k":{"df":19,"docs":{"12":{"tf":1.0},"136":{"tf":1.0},"19":{"tf":1.0},"199":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.4142135623730951},"417":{"tf":3.1622776601683795},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"423":{"tf":1.0},"428":{"tf":1.0},"456":{"tf":1.0},"51":{"tf":1.0},"538":{"tf":1.7320508075688772},"558":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"189":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"i":{"c":{"df":20,"docs":{"155":{"tf":1.0},"156":{"tf":2.0},"237":{"tf":1.0},"250":{"tf":1.4142135623730951},"300":{"tf":1.4142135623730951},"304":{"tf":1.4142135623730951},"34":{"tf":1.4142135623730951},"350":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.4142135623730951},"360":{"tf":1.0},"361":{"tf":1.0},"363":{"tf":1.4142135623730951},"421":{"tf":1.0},"433":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"599":{"tf":1.0},"8":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"s":{"df":42,"docs":{"156":{"tf":1.4142135623730951},"163":{"tf":1.0},"173":{"tf":1.0},"183":{"tf":1.0},"192":{"tf":1.0},"205":{"tf":1.4142135623730951},"213":{"tf":1.0},"218":{"tf":1.0},"225":{"tf":1.0},"239":{"tf":1.0},"250":{"tf":1.0},"263":{"tf":1.0},"272":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"280":{"tf":1.0},"288":{"tf":1.0},"296":{"tf":1.0},"302":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.0},"332":{"tf":1.0},"339":{"tf":1.0},"349":{"tf":1.0},"352":{"tf":1.0},"359":{"tf":1.7320508075688772},"366":{"tf":1.0},"376":{"tf":1.0},"382":{"tf":1.0},"393":{"tf":1.0},"401":{"tf":1.0},"413":{"tf":1.0},"427":{"tf":1.0},"435":{"tf":1.0},"444":{"tf":1.0},"452":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"474":{"tf":1.0},"482":{"tf":1.0},"531":{"tf":1.0},"599":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":6,"docs":{"213":{"tf":1.0},"300":{"tf":1.0},"45":{"tf":1.0},"469":{"tf":1.0},"474":{"tf":1.0},"579":{"tf":1.0}},"n":{"df":5,"docs":{"156":{"tf":1.0},"235":{"tf":1.0},"356":{"tf":1.4142135623730951},"394":{"tf":1.0},"474":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"403":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"l":{"df":2,"docs":{"292":{"tf":1.0},"539":{"tf":2.0}}}},"df":0,"docs":{}},"t":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"159":{"tf":1.0},"491":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"41":{"tf":1.0},"512":{"tf":1.0}}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":5,"docs":{"423":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0},"598":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"389":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"110":{"tf":1.0},"263":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"s":{"df":2,"docs":{"292":{"tf":1.4142135623730951},"294":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"n":{"df":5,"docs":{"178":{"tf":1.4142135623730951},"221":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"74":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"217":{"tf":1.0},"370":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}},"r":{"df":6,"docs":{"156":{"tf":1.0},"246":{"tf":1.4142135623730951},"383":{"tf":1.0},"391":{"tf":1.0},"460":{"tf":1.0},"558":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"380":{"tf":1.0},"393":{"tf":1.0},"458":{"tf":1.0},"61":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"c":{"df":0,"docs":{},"k":{"df":3,"docs":{"404":{"tf":1.0},"405":{"tf":1.0},"522":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"_":{"df":1,"docs":{"347":{"tf":1.0}}},"df":9,"docs":{"187":{"tf":1.0},"230":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"276":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"431":{"tf":1.0},"542":{"tf":1.0}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"221":{"tf":1.4142135623730951}}}}}}}}},"f":{"df":0,"docs":{},"f":{"df":3,"docs":{"156":{"tf":1.0},"261":{"tf":1.0},"392":{"tf":1.0}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"168":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":3,"docs":{"268":{"tf":1.0},"336":{"tf":1.0},"470":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":12,"docs":{"130":{"tf":1.0},"178":{"tf":2.449489742783178},"200":{"tf":1.0},"201":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"276":{"tf":2.23606797749979},"309":{"tf":1.0},"458":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.0},"566":{"tf":1.0}},"r":{"df":2,"docs":{"10":{"tf":1.0},"347":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"35":{"tf":1.0},"391":{"tf":1.0}}}},"t":{"df":1,"docs":{"380":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":19,"docs":{"156":{"tf":1.0},"217":{"tf":2.449489742783178},"218":{"tf":1.4142135623730951},"276":{"tf":1.0},"292":{"tf":1.7320508075688772},"307":{"tf":1.0},"310":{"tf":2.23606797749979},"324":{"tf":1.0},"380":{"tf":3.3166247903554},"385":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.4142135623730951},"401":{"tf":1.0},"404":{"tf":1.4142135623730951},"450":{"tf":1.0},"458":{"tf":2.0},"460":{"tf":1.0},"572":{"tf":1.0},"586":{"tf":1.0}},"e":{"'":{"df":1,"docs":{"217":{"tf":1.0}}},"@":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"r":{"c":{"\\":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"6":{":":{"4":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"1":{":":{"4":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":1,"docs":{"440":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"u":{"d":{"df":4,"docs":{"116":{"tf":1.0},"125":{"tf":1.4142135623730951},"129":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"e":{"df":1,"docs":{"284":{"tf":1.0}}}}},"o":{"_":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"347":{"tf":1.0}}}}}}}}},"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"79":{"tf":1.0}}}},"c":{"df":0,"docs":{},"o":{"a":{"df":3,"docs":{"187":{"tf":1.0},"188":{"tf":1.0},"504":{"tf":1.0}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"e":{"b":{"a":{"df":0,"docs":{},"s":{"df":4,"docs":{"240":{"tf":1.0},"245":{"tf":1.0},"389":{"tf":1.0},"546":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":96,"docs":{"108":{"tf":1.0},"156":{"tf":2.0},"159":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.4142135623730951},"171":{"tf":1.7320508075688772},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"190":{"tf":1.0},"197":{"tf":1.4142135623730951},"198":{"tf":1.0},"200":{"tf":1.4142135623730951},"209":{"tf":4.123105625617661},"211":{"tf":1.7320508075688772},"214":{"tf":1.0},"217":{"tf":2.6457513110645907},"221":{"tf":1.4142135623730951},"239":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":2.0},"251":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"258":{"tf":1.7320508075688772},"259":{"tf":2.0},"261":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":3.0},"270":{"tf":1.7320508075688772},"272":{"tf":1.4142135623730951},"276":{"tf":1.7320508075688772},"284":{"tf":1.4142135623730951},"286":{"tf":1.4142135623730951},"292":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"315":{"tf":1.7320508075688772},"322":{"tf":1.7320508075688772},"323":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":4.0},"340":{"tf":1.0},"341":{"tf":2.23606797749979},"342":{"tf":2.449489742783178},"343":{"tf":1.4142135623730951},"344":{"tf":1.0},"345":{"tf":1.0},"347":{"tf":3.1622776601683795},"350":{"tf":1.4142135623730951},"351":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":4.123105625617661},"383":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.7320508075688772},"397":{"tf":2.23606797749979},"399":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":2.449489742783178},"417":{"tf":1.7320508075688772},"418":{"tf":2.23606797749979},"419":{"tf":1.4142135623730951},"434":{"tf":1.0},"440":{"tf":1.7320508075688772},"448":{"tf":1.0},"450":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":2.23606797749979},"462":{"tf":1.0},"470":{"tf":2.0},"491":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.4142135623730951},"504":{"tf":1.0},"507":{"tf":1.4142135623730951},"515":{"tf":1.0},"521":{"tf":1.4142135623730951},"522":{"tf":2.0},"533":{"tf":1.0},"538":{"tf":2.6457513110645907},"543":{"tf":1.0},"559":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"73":{"tf":1.0},"79":{"tf":1.0}}}},"df":2,"docs":{"268":{"tf":1.0},"276":{"tf":1.0}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"15":{"tf":1.0},"156":{"tf":1.4142135623730951}}}}},"l":{"df":0,"docs":{},"l":{"a":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"15":{"tf":1.0},"517":{"tf":1.0},"8":{"tf":1.0}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"df":1,"docs":{"389":{"tf":1.0}}}},"t":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":2,"docs":{"300":{"tf":1.0},"328":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"15":{"tf":1.4142135623730951},"16":{"tf":1.0},"218":{"tf":1.0},"307":{"tf":1.4142135623730951},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.7320508075688772},"320":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"136":{"tf":1.0},"73":{"tf":1.0}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"218":{"tf":2.23606797749979}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"n":{"df":2,"docs":{"558":{"tf":1.0},"559":{"tf":1.0}}}}}},"m":{"b":{"df":1,"docs":{"248":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":19,"docs":{"110":{"tf":1.0},"156":{"tf":1.4142135623730951},"192":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.0},"336":{"tf":1.7320508075688772},"360":{"tf":1.0},"389":{"tf":1.0},"418":{"tf":1.0},"55":{"tf":1.0},"561":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.7320508075688772},"587":{"tf":1.0},"588":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0}},"e":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":38,"docs":{"125":{"tf":1.0},"177":{"tf":1.0},"189":{"tf":1.4142135623730951},"192":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.4142135623730951},"217":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"248":{"tf":1.0},"25":{"tf":1.0},"268":{"tf":1.4142135623730951},"278":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"300":{"tf":1.4142135623730951},"324":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"41":{"tf":1.0},"433":{"tf":1.0},"456":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"67":{"tf":1.0},"68":{"tf":1.0}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"110":{"tf":1.0},"81":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"284":{"tf":1.4142135623730951},"440":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":19,"docs":{"14":{"tf":1.4142135623730951},"16":{"tf":1.4142135623730951},"17":{"tf":1.0},"178":{"tf":1.0},"196":{"tf":1.0},"24":{"tf":1.0},"25":{"tf":1.4142135623730951},"276":{"tf":1.0},"287":{"tf":1.4142135623730951},"29":{"tf":2.0},"292":{"tf":1.0},"37":{"tf":1.0},"42":{"tf":2.0},"50":{"tf":1.0},"52":{"tf":1.0},"54":{"tf":1.7320508075688772},"55":{"tf":1.0},"556":{"tf":1.4142135623730951},"59":{"tf":1.0}}}},"r":{"c":{"df":2,"docs":{"134":{"tf":1.0},"138":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}},"o":{"df":0,"docs":{},"n":{"df":12,"docs":{"156":{"tf":1.7320508075688772},"199":{"tf":1.0},"270":{"tf":1.0},"296":{"tf":1.4142135623730951},"347":{"tf":1.0},"367":{"tf":1.0},"442":{"tf":1.0},"450":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"549":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"323":{"tf":1.0},"560":{"tf":1.0},"571":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"df":22,"docs":{"108":{"tf":1.0},"11":{"tf":1.4142135623730951},"15":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.7320508075688772},"292":{"tf":1.0},"340":{"tf":1.4142135623730951},"341":{"tf":1.0},"357":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"385":{"tf":1.0},"41":{"tf":1.0},"431":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.0},"544":{"tf":1.0},"549":{"tf":1.0},"65":{"tf":1.4142135623730951},"8":{"tf":1.0},"87":{"tf":1.4142135623730951}}}}},"p":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":4,"docs":{"130":{"tf":1.0},"131":{"tf":1.0},"139":{"tf":1.0},"292":{"tf":1.0}}}},"r":{"df":7,"docs":{"156":{"tf":1.4142135623730951},"209":{"tf":1.0},"345":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"61":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"(":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"417":{"tf":1.0},"421":{"tf":1.0}}}}}}},"t":{"df":7,"docs":{"111":{"tf":1.0},"237":{"tf":1.4142135623730951},"336":{"tf":1.0},"545":{"tf":1.0},"548":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"367":{"tf":1.0}}},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"153":{"tf":1.0}}}},"t":{"df":1,"docs":{"302":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"138":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"l":{"df":60,"docs":{"110":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":2.23606797749979},"168":{"tf":1.0},"190":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.4142135623730951},"200":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":2.23606797749979},"223":{"tf":1.0},"226":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"246":{"tf":1.7320508075688772},"248":{"tf":1.0},"251":{"tf":1.0},"253":{"tf":1.0},"256":{"tf":2.449489742783178},"257":{"tf":1.7320508075688772},"258":{"tf":1.4142135623730951},"261":{"tf":1.4142135623730951},"263":{"tf":1.0},"268":{"tf":2.6457513110645907},"272":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"315":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":2.0},"370":{"tf":2.0},"380":{"tf":2.8284271247461903},"383":{"tf":1.7320508075688772},"386":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.4142135623730951},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"440":{"tf":1.7320508075688772},"445":{"tf":1.0},"470":{"tf":2.0},"472":{"tf":1.0},"502":{"tf":1.0},"508":{"tf":1.0},"512":{"tf":1.0},"518":{"tf":1.0},"521":{"tf":2.449489742783178},"522":{"tf":1.4142135623730951},"525":{"tf":1.0},"538":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":7,"docs":{"168":{"tf":1.0},"196":{"tf":1.0},"201":{"tf":1.0},"246":{"tf":1.0},"257":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":27,"docs":{"116":{"tf":1.0},"12":{"tf":1.0},"139":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.7320508075688772},"181":{"tf":1.0},"268":{"tf":1.0},"273":{"tf":1.0},"284":{"tf":1.0},"312":{"tf":1.0},"318":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"403":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"562":{"tf":1.0},"596":{"tf":1.0},"62":{"tf":1.0}}},"x":{"df":16,"docs":{"156":{"tf":1.4142135623730951},"190":{"tf":1.0},"218":{"tf":1.4142135623730951},"226":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.4142135623730951},"258":{"tf":1.0},"259":{"tf":1.7320508075688772},"278":{"tf":1.7320508075688772},"311":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.4142135623730951},"350":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}}}},"i":{"c":{"df":8,"docs":{"156":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.0},"300":{"tf":1.0},"349":{"tf":1.0},"418":{"tf":1.0},"456":{"tf":1.0},"497":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"n":{"df":12,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0},"237":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"419":{"tf":1.0},"470":{"tf":1.0},"517":{"tf":1.0}}},"s":{"df":2,"docs":{"211":{"tf":1.0},"529":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"147":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"336":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"t":{"df":9,"docs":{"116":{"tf":1.0},"273":{"tf":1.0},"469":{"tf":2.23606797749979},"470":{"tf":1.7320508075688772},"472":{"tf":1.0},"475":{"tf":1.0},"487":{"tf":1.0},"503":{"tf":1.0},"543":{"tf":1.0}}}}}},"n":{"c":{"a":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"375":{"tf":1.0}}}}}},"<":{"'":{"a":{">":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"375":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":14,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"188":{"tf":1.4142135623730951},"197":{"tf":1.0},"245":{"tf":1.0},"288":{"tf":1.0},"332":{"tf":1.0},"336":{"tf":1.0},"359":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.0},"47":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"n":{"df":29,"docs":{"104":{"tf":1.0},"105":{"tf":1.0},"119":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"130":{"tf":1.4142135623730951},"131":{"tf":1.0},"136":{"tf":1.0},"137":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.7320508075688772},"148":{"tf":1.0},"149":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"308":{"tf":1.0},"370":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"511":{"tf":1.0},"569":{"tf":1.0},"57":{"tf":1.0},"577":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"u":{"d":{"df":2,"docs":{"284":{"tf":1.0},"336":{"tf":1.4142135623730951}}},"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":2,"docs":{"458":{"tf":1.0},"548":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":10,"docs":{"156":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"374":{"tf":1.0},"470":{"tf":1.0},"521":{"tf":1.0},"599":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"178":{"tf":1.0},"218":{"tf":1.0},"418":{"tf":1.0},"6":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"171":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":2,"docs":{"256":{"tf":1.0},"521":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"d":{"df":10,"docs":{"110":{"tf":1.0},"221":{"tf":1.0},"237":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"360":{"tf":1.0},"469":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"347":{"tf":1.0},"431":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"m":{"df":3,"docs":{"178":{"tf":1.0},"230":{"tf":1.0},"284":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"157":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"340":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"s":{"df":16,"docs":{"178":{"tf":1.4142135623730951},"200":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"268":{"tf":1.7320508075688772},"278":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"300":{"tf":1.4142135623730951},"309":{"tf":1.0},"328":{"tf":1.0},"361":{"tf":1.0},"397":{"tf":1.0},"42":{"tf":1.0},"481":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"n":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"178":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":3,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"292":{"tf":2.0}},"e":{"c":{"df":0,"docs":{},"t":{"df":9,"docs":{"177":{"tf":2.23606797749979},"178":{"tf":2.449489742783178},"276":{"tf":1.4142135623730951},"397":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":2.0},"436":{"tf":1.0},"503":{"tf":1.0},"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"s":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":4,"docs":{"119":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"125":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":3,"docs":{"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"304":{"tf":1.0}}}},"r":{"df":0,"docs":{},"v":{"df":1,"docs":{"271":{"tf":1.0}}}}},"i":{"d":{"df":13,"docs":{"155":{"tf":1.0},"156":{"tf":1.0},"179":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.4142135623730951},"221":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"498":{"tf":1.0},"55":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"203":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.0},"304":{"tf":1.0},"516":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":5,"docs":{"156":{"tf":1.0},"178":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"531":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"l":{"df":7,"docs":{"217":{"tf":1.0},"336":{"tf":2.0},"380":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.7320508075688772},"542":{"tf":1.0},"548":{"tf":1.0}},"e":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"(":{"\"":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"410":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"284":{"tf":1.0}}}}}}},"df":3,"docs":{"328":{"tf":2.0},"347":{"tf":1.0},"380":{"tf":1.7320508075688772}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"108":{"tf":1.0},"218":{"tf":1.0},"336":{"tf":1.4142135623730951},"579":{"tf":1.0}},"t":{"df":3,"docs":{"486":{"tf":1.0},"546":{"tf":1.0},"560":{"tf":1.0}}}}}},"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":12,"docs":{"12":{"tf":1.0},"136":{"tf":1.0},"152":{"tf":1.0},"195":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"23":{"tf":1.0},"29":{"tf":1.0},"42":{"tf":1.0},"485":{"tf":1.0},"52":{"tf":1.0},"539":{"tf":1.0}}}},"df":1,"docs":{"366":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"284":{"tf":1.0}}}},"m":{"df":4,"docs":{"199":{"tf":1.0},"276":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0}},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"412":{"tf":1.0}}}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":10,"docs":{"112":{"tf":1.0},"154":{"tf":1.4142135623730951},"16":{"tf":1.0},"217":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"347":{"tf":1.7320508075688772},"562":{"tf":1.0},"573":{"tf":1.0},"597":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"116":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":2,"docs":{"302":{"tf":1.0},"62":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"156":{"tf":1.0},"349":{"tf":1.0},"422":{"tf":1.0},"562":{"tf":1.0}},"i":{"df":1,"docs":{"358":{"tf":1.0}}}}},"x":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"&":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"328":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"<":{"'":{"_":{"df":5,"docs":{"217":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":1.7320508075688772},"508":{"tf":1.0},"568":{"tf":1.0}}},"a":{"df":1,"docs":{"421":{"tf":1.0}}},"b":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":2.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"=":{"0":{"df":0,"docs":{},"x":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"a":{"df":0,"docs":{},"f":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":29,"docs":{"197":{"tf":1.0},"200":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"292":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"320":{"tf":1.0},"336":{"tf":2.0},"343":{"tf":1.0},"349":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":2.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"504":{"tf":1.0},"573":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":8,"docs":{"169":{"tf":1.0},"209":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.0},"448":{"tf":1.4142135623730951},"456":{"tf":1.0},"91":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"561":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":8,"docs":{"120":{"tf":1.4142135623730951},"16":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.0},"389":{"tf":1.0},"6":{"tf":1.4142135623730951},"603":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":4,"docs":{"15":{"tf":1.0},"292":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"470":{"tf":1.0}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":12,"docs":{"131":{"tf":1.4142135623730951},"156":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"324":{"tf":1.0},"349":{"tf":1.0},"440":{"tf":1.4142135623730951},"448":{"tf":1.0},"469":{"tf":1.0},"539":{"tf":1.0},"61":{"tf":1.0},"79":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"_":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":3,"docs":{"213":{"tf":1.0},"309":{"tf":1.0},"341":{"tf":1.0}}}},"r":{"df":0,"docs":{},"s":{"df":9,"docs":{"154":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"357":{"tf":1.0},"359":{"tf":1.4142135623730951},"36":{"tf":1.0},"561":{"tf":1.0},"597":{"tf":1.7320508075688772},"598":{"tf":1.0}}},"t":{"df":9,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"324":{"tf":1.0},"440":{"tf":1.4142135623730951},"460":{"tf":1.0},"522":{"tf":1.0}}}},"y":{"df":4,"docs":{"27":{"tf":1.0},"494":{"tf":1.0},"507":{"tf":1.0},"526":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"456":{"tf":1.0}}},"df":0,"docs":{}}}}},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":1,"docs":{"380":{"tf":1.0}}}},"l":{"df":1,"docs":{"522":{"tf":1.0}}},"p":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"6":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"9":{"9":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"41":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0}}}}},"r":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"3":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"i":{"df":10,"docs":{"209":{"tf":1.0},"213":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"380":{"tf":1.0},"397":{"tf":1.0},"423":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"397":{"tf":2.0}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"336":{"tf":1.4142135623730951},"338":{"tf":1.0}},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{">":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"397":{"tf":2.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"404":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{":":{":":{"_":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"a":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"$":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"b":{"c":{"c":{"9":{"1":{"5":{"df":0,"docs":{},"e":{"6":{"6":{"8":{"c":{"7":{"c":{"a":{"1":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"u":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"e":{"d":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":19,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"188":{"tf":1.0},"209":{"tf":1.0},"278":{"tf":1.4142135623730951},"3":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.4142135623730951},"347":{"tf":1.7320508075688772},"389":{"tf":1.7320508075688772},"394":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.4142135623730951},"47":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"516":{"tf":1.0},"544":{"tf":1.0}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":9,"docs":{"156":{"tf":1.0},"29":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.4142135623730951},"42":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"328":{"tf":1.0},"380":{"tf":1.0}}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}}}}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"469":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"df":10,"docs":{"134":{"tf":1.0},"156":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"223":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"343":{"tf":2.449489742783178},"347":{"tf":1.0},"422":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"292":{"tf":1.0},"482":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"t":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":3,"docs":{"268":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":2.449489742783178}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.4142135623730951}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"259":{"tf":1.0},"389":{"tf":1.0}}}}},"df":0,"docs":{}}}}}},"p":{"df":0,"docs":{},"l":{"df":7,"docs":{"11":{"tf":1.0},"183":{"tf":1.0},"195":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0}}}},"r":{"df":0,"docs":{},"s":{"df":11,"docs":{"213":{"tf":1.0},"307":{"tf":1.4142135623730951},"310":{"tf":1.0},"336":{"tf":1.0},"36":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.4142135623730951},"431":{"tf":1.0},"515":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"156":{"tf":1.0},"29":{"tf":1.0},"370":{"tf":1.0},"42":{"tf":1.0},"47":{"tf":1.0}}},"y":{"df":1,"docs":{"54":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":2,"docs":{"347":{"tf":1.0},"502":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"p":{"df":0,"docs":{},"u":{"df":6,"docs":{"127":{"tf":1.0},"331":{"tf":1.0},"347":{"tf":2.23606797749979},"350":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"65":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"404":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"221":{"tf":1.0}}},":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"<":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"268":{"tf":1.7320508075688772}}}}}}}}}},"df":0,"docs":{}}}}}}},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"a":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{":":{":":{"d":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":38,"docs":{"156":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"187":{"tf":1.0},"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"22":{"tf":1.0},"221":{"tf":1.7320508075688772},"246":{"tf":1.0},"257":{"tf":1.0},"276":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"321":{"tf":1.4142135623730951},"324":{"tf":1.0},"325":{"tf":2.449489742783178},"338":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"370":{"tf":2.23606797749979},"372":{"tf":1.7320508075688772},"380":{"tf":1.4142135623730951},"383":{"tf":1.7320508075688772},"385":{"tf":1.0},"458":{"tf":1.0},"478":{"tf":1.7320508075688772},"481":{"tf":1.4142135623730951},"504":{"tf":1.0},"517":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"538":{"tf":2.0},"545":{"tf":1.7320508075688772},"546":{"tf":1.4142135623730951},"547":{"tf":1.0},"548":{"tf":1.0},"6":{"tf":1.0},"61":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":12,"docs":{"103":{"tf":1.0},"112":{"tf":1.4142135623730951},"120":{"tf":1.0},"129":{"tf":1.4142135623730951},"137":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.4142135623730951},"232":{"tf":1.0},"276":{"tf":1.0},"380":{"tf":1.0},"440":{"tf":1.0},"504":{"tf":1.0}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"l":{"df":1,"docs":{"408":{"tf":1.0}}}},"z":{"df":0,"docs":{},"i":{"df":1,"docs":{"89":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":37,"docs":{"110":{"tf":1.4142135623730951},"154":{"tf":1.0},"157":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"188":{"tf":1.0},"21":{"tf":1.0},"221":{"tf":1.4142135623730951},"230":{"tf":1.0},"232":{"tf":1.0},"24":{"tf":1.4142135623730951},"256":{"tf":1.0},"259":{"tf":1.0},"26":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"309":{"tf":1.0},"31":{"tf":1.0},"319":{"tf":1.7320508075688772},"328":{"tf":1.4142135623730951},"341":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"38":{"tf":1.4142135623730951},"39":{"tf":1.0},"417":{"tf":1.0},"44":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"472":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.0},"508":{"tf":1.0},"521":{"tf":1.0},"64":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"59":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"i":{"c":{"df":4,"docs":{"190":{"tf":1.0},"276":{"tf":1.0},"286":{"tf":1.0},"312":{"tf":1.0}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"b":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}}},"df":3,"docs":{"268":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"'":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"259":{"tf":1.0}}}}},"u":{"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"+":{"c":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":1,"docs":{"448":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"248":{"tf":1.0},"431":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":2,"docs":{"153":{"tf":1.0},"9":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"258":{"tf":1.0}}},"u":{"df":3,"docs":{"198":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":35,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"330":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.4142135623730951},"360":{"tf":1.0},"370":{"tf":1.0},"391":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":1.0},"456":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"507":{"tf":1.4142135623730951},"508":{"tf":1.0},"516":{"tf":1.0},"538":{"tf":1.4142135623730951},"550":{"tf":1.0},"567":{"tf":1.0},"572":{"tf":1.0},"576":{"tf":1.0},"65":{"tf":1.0},"77":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"9":{"tf":1.0},"92":{"tf":1.0}}}}}},"s":{"df":1,"docs":{"153":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"538":{"tf":1.0}}}}},"v":{"df":3,"docs":{"188":{"tf":1.0},"268":{"tf":1.0},"470":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":25,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.0},"123":{"tf":1.0},"128":{"tf":1.0},"129":{"tf":1.0},"130":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.4142135623730951},"328":{"tf":1.0},"330":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"412":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"492":{"tf":1.0},"503":{"tf":1.0},"514":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0}}}}}},"t":{"df":3,"docs":{"110":{"tf":1.0},"153":{"tf":1.0},"209":{"tf":1.0}}}},"x":{".":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"0":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"f":{"5":{"0":{"df":1,"docs":{"404":{"tf":2.8284271247461903}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":10,"docs":{"197":{"tf":1.0},"217":{"tf":1.0},"328":{"tf":2.6457513110645907},"336":{"tf":1.7320508075688772},"418":{"tf":1.7320508075688772},"419":{"tf":1.0},"421":{"tf":3.4641016151377544},"422":{"tf":1.7320508075688772},"423":{"tf":1.0},"568":{"tf":1.0}}},"y":{"c":{"df":0,"docs":{},"l":{"df":2,"docs":{"313":{"tf":1.0},"539":{"tf":2.0}}}},"df":0,"docs":{}}},"d":{"a":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"218":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"417":{"tf":1.4142135623730951},"425":{"tf":1.0}}}},"l":{"df":1,"docs":{"436":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"k":{"df":3,"docs":{"199":{"tf":1.0},"284":{"tf":1.0},"538":{"tf":1.0}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"603":{"tf":1.0}}}}}}}},"t":{"a":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"312":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":9,"docs":{"116":{"tf":1.0},"156":{"tf":1.4142135623730951},"175":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"179":{"tf":1.0},"315":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.0}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"127":{"tf":1.0}}}}}},"df":31,"docs":{"125":{"tf":1.4142135623730951},"153":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"168":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":2.449489742783178},"217":{"tf":2.0},"218":{"tf":1.0},"276":{"tf":1.4142135623730951},"307":{"tf":1.7320508075688772},"308":{"tf":1.4142135623730951},"309":{"tf":1.0},"312":{"tf":2.23606797749979},"320":{"tf":1.0},"347":{"tf":2.23606797749979},"370":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"419":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":2.6457513110645907},"538":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"564":{"tf":1.4142135623730951},"599":{"tf":1.0},"62":{"tf":1.0}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":1,"docs":{"209":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"478":{"tf":1.0}}}},"y":{"'":{"df":1,"docs":{"284":{"tf":1.0}}},"df":10,"docs":{"239":{"tf":1.0},"244":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"359":{"tf":1.0},"361":{"tf":1.0},"397":{"tf":1.0},"503":{"tf":1.4142135623730951},"54":{"tf":1.0},"599":{"tf":1.0}}}},"b":{"df":1,"docs":{"599":{"tf":1.4142135623730951}}},"d":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":2.23606797749979}}}}}}}},"df":3,"docs":{"150":{"tf":1.0},"347":{"tf":2.0},"539":{"tf":1.4142135623730951}},"e":{"a":{"d":{"df":1,"docs":{"284":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":8,"docs":{"309":{"tf":1.4142135623730951},"315":{"tf":1.0},"318":{"tf":2.0},"319":{"tf":1.4142135623730951},"323":{"tf":1.0},"325":{"tf":1.0},"408":{"tf":1.0},"539":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":19,"docs":{"189":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"231":{"tf":1.0},"240":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"341":{"tf":1.4142135623730951},"380":{"tf":1.0},"394":{"tf":1.0},"401":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"521":{"tf":1.0},"537":{"tf":1.0},"599":{"tf":1.4142135623730951}},"t":{"df":2,"docs":{"256":{"tf":1.0},"521":{"tf":1.0}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"!":{"(":{"\"":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":16,"docs":{"156":{"tf":1.4142135623730951},"168":{"tf":1.0},"174":{"tf":1.0},"203":{"tf":1.0},"282":{"tf":1.0},"286":{"tf":1.7320508075688772},"309":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.0},"414":{"tf":1.7320508075688772},"433":{"tf":1.0},"452":{"tf":1.0},"599":{"tf":1.0},"79":{"tf":1.0}},"g":{"df":10,"docs":{"171":{"tf":1.0},"284":{"tf":2.6457513110645907},"286":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"309":{"tf":1.0},"404":{"tf":1.0},"408":{"tf":1.0},"414":{"tf":1.0},"448":{"tf":1.4142135623730951},"453":{"tf":1.7320508075688772}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":1,"docs":{"214":{"tf":1.0}}}}}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"270":{"tf":1.0},"273":{"tf":1.0},"502":{"tf":1.0},"526":{"tf":1.0}}}}},"i":{"d":{"df":34,"docs":{"125":{"tf":1.0},"134":{"tf":1.0},"178":{"tf":1.0},"187":{"tf":1.4142135623730951},"189":{"tf":1.0},"209":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"233":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":2.23606797749979},"284":{"tf":1.7320508075688772},"292":{"tf":1.0},"300":{"tf":2.0},"307":{"tf":1.0},"308":{"tf":1.4142135623730951},"309":{"tf":1.4142135623730951},"313":{"tf":1.0},"32":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"357":{"tf":1.4142135623730951},"358":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"408":{"tf":1.0},"431":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.4142135623730951},"469":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.7320508075688772},"562":{"tf":1.0},"84":{"tf":1.0}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"237":{"tf":1.0}}}},"s":{"df":6,"docs":{"248":{"tf":1.0},"302":{"tf":1.4142135623730951},"303":{"tf":1.0},"357":{"tf":1.0},"359":{"tf":1.7320508075688772},"389":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"r":{"df":4,"docs":{"209":{"tf":1.0},"230":{"tf":1.0},"370":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":1,"docs":{"309":{"tf":1.0}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":2,"docs":{"341":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"478":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"457":{"tf":1.7320508075688772}},"e":{"df":0,"docs":{},"p":{"df":7,"docs":{"171":{"tf":1.0},"192":{"tf":1.0},"211":{"tf":1.0},"268":{"tf":1.0},"313":{"tf":1.0},"347":{"tf":1.0},"408":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"408":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.0},"84":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"183":{"tf":1.0}}}}}},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":12,"docs":{"116":{"tf":1.0},"190":{"tf":1.0},"321":{"tf":1.0},"502":{"tf":1.7320508075688772},"507":{"tf":1.0},"511":{"tf":1.0},"526":{"tf":1.4142135623730951},"527":{"tf":1.0},"529":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.4142135623730951},"599":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"246":{"tf":1.0},"292":{"tf":1.0}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":1,"docs":{"418":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"df":8,"docs":{"209":{"tf":1.7320508075688772},"292":{"tf":1.0},"380":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"532":{"tf":1.0},"6":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":5,"docs":{"3":{"tf":1.0},"336":{"tf":1.0},"343":{"tf":1.0},"567":{"tf":1.0},"568":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"300":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"a":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"df":2,"docs":{"380":{"tf":3.605551275463989},"516":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":2,"docs":{"196":{"tf":1.0},"397":{"tf":1.7320508075688772}}}},"t":{"a":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}},"v":{"df":1,"docs":{"414":{"tf":1.0}}}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":3,"docs":{"181":{"tf":1.0},"423":{"tf":1.0},"480":{"tf":1.0}}}}}}}},"n":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"125":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"412":{"tf":1.0}}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"349":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":28,"docs":{"174":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"237":{"tf":2.0},"240":{"tf":1.0},"300":{"tf":1.0},"323":{"tf":1.0},"349":{"tf":1.4142135623730951},"353":{"tf":1.0},"370":{"tf":2.6457513110645907},"380":{"tf":1.0},"408":{"tf":1.0},"414":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"470":{"tf":2.0},"513":{"tf":1.0},"516":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"542":{"tf":1.0},"562":{"tf":1.0},"580":{"tf":1.0},"599":{"tf":1.7320508075688772}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":7,"docs":{"116":{"tf":1.0},"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"429":{"tf":1.0},"456":{"tf":1.0},"511":{"tf":1.0},"538":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"358":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"u":{"df":1,"docs":{"328":{"tf":2.0}},"e":{"df":0,"docs":{},"u":{"df":1,"docs":{"539":{"tf":1.4142135623730951}}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":39,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"218":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"423":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"e":{"(":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":19,"docs":{"182":{"tf":1.0},"233":{"tf":1.0},"25":{"tf":1.0},"343":{"tf":1.0},"36":{"tf":1.0},"41":{"tf":1.0},"483":{"tf":1.0},"486":{"tf":1.4142135623730951},"487":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"550":{"tf":1.0},"552":{"tf":1.0},"560":{"tf":1.4142135623730951},"597":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"9":{"tf":1.0},"94":{"tf":1.0}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":7,"docs":{"108":{"tf":1.0},"116":{"tf":1.0},"125":{"tf":1.0},"134":{"tf":1.0},"143":{"tf":1.0},"584":{"tf":1.0},"99":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"347":{"tf":1.4142135623730951},"349":{"tf":1.7320508075688772}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":31,"docs":{"11":{"tf":1.0},"143":{"tf":1.0},"156":{"tf":2.449489742783178},"278":{"tf":1.0},"3":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.4142135623730951},"363":{"tf":1.7320508075688772},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"41":{"tf":1.0},"433":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":2.8284271247461903},"486":{"tf":1.0},"487":{"tf":1.4142135623730951},"49":{"tf":1.4142135623730951},"494":{"tf":1.0},"515":{"tf":1.0},"539":{"tf":1.0},"560":{"tf":2.0},"561":{"tf":2.0},"562":{"tf":2.0},"566":{"tf":1.0},"570":{"tf":1.0},"61":{"tf":1.7320508075688772},"62":{"tf":1.0},"67":{"tf":1.0},"92":{"tf":1.0}}}},"r":{"df":8,"docs":{"183":{"tf":1.0},"421":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"571":{"tf":1.0},"599":{"tf":1.0}}}},"k":{"df":1,"docs":{"370":{"tf":1.0}}},"p":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"209":{"tf":1.0},"96":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"245":{"tf":1.0}}}},"i":{"df":0,"docs":{},"t":{"df":5,"docs":{"188":{"tf":1.0},"276":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.0},"389":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"178":{"tf":2.23606797749979},"181":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"401":{"tf":1.0},"579":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":38,"docs":{"12":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.0},"19":{"tf":1.0},"200":{"tf":1.0},"218":{"tf":1.0},"225":{"tf":1.0},"27":{"tf":1.4142135623730951},"29":{"tf":1.4142135623730951},"302":{"tf":1.0},"33":{"tf":1.7320508075688772},"349":{"tf":1.0},"353":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"42":{"tf":1.4142135623730951},"437":{"tf":1.0},"450":{"tf":1.0},"457":{"tf":1.0},"47":{"tf":1.7320508075688772},"48":{"tf":1.4142135623730951},"485":{"tf":1.0},"489":{"tf":1.0},"504":{"tf":1.0},"513":{"tf":1.4142135623730951},"516":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"544":{"tf":1.0},"599":{"tf":1.0},"79":{"tf":1.0},"97":{"tf":1.0},"99":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"336":{"tf":1.0},"419":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"358":{"tf":1.0}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":7,"docs":{"276":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.4142135623730951},"389":{"tf":1.0},"516":{"tf":1.0},"538":{"tf":1.0},"9":{"tf":1.0}}}}}}}},"v":{"df":2,"docs":{"284":{"tf":1.0},"289":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":46,"docs":{"110":{"tf":2.0},"116":{"tf":1.0},"120":{"tf":1.0},"127":{"tf":1.0},"131":{"tf":1.0},"136":{"tf":1.4142135623730951},"146":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"189":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":2.23606797749979},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.4142135623730951},"239":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.4142135623730951},"286":{"tf":1.7320508075688772},"287":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.0},"339":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"393":{"tf":1.0},"403":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0},"548":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.4142135623730951},"71":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0},"89":{"tf":1.0}}}}}},"i":{"c":{"df":1,"docs":{"8":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":1,"docs":{"336":{"tf":1.0}}}}},"s":{"df":1,"docs":{"423":{"tf":1.0}}}}}},"i":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":9,"docs":{"171":{"tf":1.0},"209":{"tf":1.0},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"315":{"tf":1.0},"397":{"tf":1.0},"434":{"tf":1.0},"436":{"tf":1.0},"456":{"tf":1.0}},"t":{"df":3,"docs":{"209":{"tf":1.0},"292":{"tf":1.0},"572":{"tf":1.0}}}}}}}},"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":13,"docs":{"199":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.4142135623730951},"234":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"463":{"tf":1.0},"497":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"292":{"tf":1.0},"599":{"tf":1.0}}}}}},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":87,"docs":{"101":{"tf":1.0},"110":{"tf":1.0},"111":{"tf":1.0},"118":{"tf":1.7320508075688772},"127":{"tf":1.4142135623730951},"136":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"156":{"tf":1.4142135623730951},"164":{"tf":1.4142135623730951},"174":{"tf":1.0},"184":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.4142135623730951},"195":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"218":{"tf":1.0},"22":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"251":{"tf":1.0},"258":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.4142135623730951},"273":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.4142135623730951},"281":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"317":{"tf":1.0},"32":{"tf":1.0},"333":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"350":{"tf":1.0},"353":{"tf":1.0},"359":{"tf":1.0},"367":{"tf":1.4142135623730951},"37":{"tf":1.0},"372":{"tf":1.4142135623730951},"375":{"tf":1.0},"377":{"tf":1.0},"383":{"tf":1.7320508075688772},"385":{"tf":1.0},"386":{"tf":1.4142135623730951},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":2.23606797749979},"402":{"tf":1.0},"414":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0},"428":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"448":{"tf":1.0},"45":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0},"470":{"tf":1.0},"475":{"tf":1.0},"483":{"tf":1.4142135623730951},"490":{"tf":1.0},"501":{"tf":1.0},"507":{"tf":1.4142135623730951},"515":{"tf":1.0},"519":{"tf":1.0},"52":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.4142135623730951},"54":{"tf":1.0},"55":{"tf":1.4142135623730951},"599":{"tf":1.7320508075688772},"61":{"tf":1.0},"64":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"138":{"tf":1.0}}}}}}}},"i":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":18,"docs":{"122":{"tf":1.0},"181":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"278":{"tf":1.4142135623730951},"300":{"tf":1.0},"324":{"tf":1.0},"330":{"tf":1.0},"350":{"tf":1.0},"372":{"tf":1.0},"375":{"tf":1.0},"389":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.0},"570":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0}},"i":{"df":3,"docs":{"156":{"tf":1.0},"392":{"tf":1.0},"421":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"g":{"df":7,"docs":{"234":{"tf":1.0},"246":{"tf":1.0},"271":{"tf":1.0},"311":{"tf":1.0},"408":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"341":{"tf":1.0}}}}}}}},"p":{"df":2,"docs":{"261":{"tf":1.0},"84":{"tf":1.0}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"214":{"tf":1.0},"394":{"tf":1.0},"508":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":10,"docs":{"16":{"tf":1.0},"211":{"tf":1.0},"3":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"457":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"603":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":6,"docs":{"157":{"tf":1.0},"21":{"tf":1.0},"26":{"tf":1.0},"39":{"tf":1.0},"489":{"tf":1.0},"562":{"tf":1.0}}}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"358":{"tf":1.0},"359":{"tf":1.0}}}}},"s":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":1,"docs":{"278":{"tf":1.7320508075688772}},"e":{"df":1,"docs":{"27":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"576":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":17,"docs":{"209":{"tf":1.0},"358":{"tf":1.4142135623730951},"380":{"tf":1.0},"41":{"tf":2.0},"478":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.4142135623730951},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.4142135623730951}}}}}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"457":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"d":{"df":4,"docs":{"357":{"tf":1.0},"363":{"tf":1.0},"392":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"278":{"tf":1.0}}}},"df":0,"docs":{}}},"v":{"df":12,"docs":{"179":{"tf":1.0},"245":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.4142135623730951},"347":{"tf":1.0},"359":{"tf":1.4142135623730951},"372":{"tf":1.0},"389":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"599":{"tf":1.0}}}},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":19,"docs":{"156":{"tf":1.0},"172":{"tf":1.0},"209":{"tf":1.0},"212":{"tf":1.0},"221":{"tf":1.0},"25":{"tf":1.4142135623730951},"278":{"tf":1.0},"3":{"tf":1.0},"347":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.4142135623730951},"380":{"tf":1.0},"4":{"tf":1.0},"52":{"tf":1.0},"538":{"tf":1.0},"57":{"tf":1.0},"571":{"tf":1.0},"599":{"tf":1.0},"602":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"k":{"df":1,"docs":{"539":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":1,"docs":{"41":{"tf":1.0}}}}},"m":{"a":{"df":0,"docs":{},"y":{"df":2,"docs":{"370":{"tf":1.0},"408":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"276":{"tf":1.0},"334":{"tf":1.0}}}}}},"p":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":4,"docs":{"223":{"tf":1.0},"336":{"tf":1.0},"504":{"tf":1.0},"516":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"a":{"d":{"df":1,"docs":{"54":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"300":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":1,"docs":{"211":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.0},"211":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":7,"docs":{"116":{"tf":1.0},"125":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.0},"8":{"tf":1.0}}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"'":{"df":1,"docs":{"119":{"tf":1.4142135623730951}}},"df":11,"docs":{"114":{"tf":1.0},"116":{"tf":1.4142135623730951},"118":{"tf":1.0},"119":{"tf":1.0},"120":{"tf":1.0},"122":{"tf":1.0},"209":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":2.0}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.7320508075688772}}}}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":2,"docs":{"380":{"tf":1.0},"408":{"tf":1.0}}}}},"j":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":1,"docs":{"72":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"_":{"a":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"_":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"502":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"g":{"c":{"d":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"178":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"310":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":5,"docs":{"307":{"tf":1.7320508075688772},"308":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.4142135623730951}}}}}},"df":1,"docs":{"307":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"c":{"df":26,"docs":{"12":{"tf":1.0},"15":{"tf":1.0},"17":{"tf":1.0},"178":{"tf":1.0},"181":{"tf":1.0},"23":{"tf":1.0},"246":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"309":{"tf":1.0},"311":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.6457513110645907},"383":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"47":{"tf":1.0},"487":{"tf":1.0},"49":{"tf":1.0},"552":{"tf":1.0},"560":{"tf":1.4142135623730951},"561":{"tf":1.4142135623730951},"562":{"tf":1.7320508075688772},"599":{"tf":1.0},"603":{"tf":1.0},"9":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":37,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"12":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.0},"167":{"tf":1.0},"17":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"18":{"tf":1.4142135623730951},"190":{"tf":1.0},"203":{"tf":1.0},"217":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"246":{"tf":1.0},"268":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"365":{"tf":1.0},"367":{"tf":1.4142135623730951},"380":{"tf":1.0},"391":{"tf":1.0},"457":{"tf":1.0},"478":{"tf":2.6457513110645907},"480":{"tf":1.0},"485":{"tf":1.0},"487":{"tf":1.4142135623730951},"51":{"tf":1.7320508075688772},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"560":{"tf":1.4142135623730951},"562":{"tf":1.0},"599":{"tf":1.4142135623730951},"8":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.0}}}}}}}},"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"456":{"tf":1.0}}}},"df":18,"docs":{"156":{"tf":1.0},"189":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"248":{"tf":1.0},"312":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"331":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.4142135623730951},"413":{"tf":1.0},"458":{"tf":1.4142135623730951},"475":{"tf":1.0},"487":{"tf":1.0},"504":{"tf":1.0},"550":{"tf":1.0},"599":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":43,"docs":{"155":{"tf":1.0},"156":{"tf":2.23606797749979},"165":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.4142135623730951},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"217":{"tf":1.0},"232":{"tf":1.0},"252":{"tf":1.0},"276":{"tf":1.7320508075688772},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.0},"311":{"tf":1.0},"313":{"tf":1.0},"33":{"tf":1.0},"35":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"404":{"tf":1.0},"405":{"tf":1.0},"408":{"tf":1.4142135623730951},"418":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"423":{"tf":1.0},"431":{"tf":1.0},"445":{"tf":1.4142135623730951},"457":{"tf":1.7320508075688772},"47":{"tf":1.0},"527":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"544":{"tf":1.0},"559":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"139":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"472":{"tf":1.0},"94":{"tf":1.0},"97":{"tf":1.0}}}}},"df":0,"docs":{}},"n":{"'":{"df":0,"docs":{},"t":{"df":45,"docs":{"11":{"tf":1.0},"136":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"156":{"tf":1.7320508075688772},"192":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"25":{"tf":1.0},"258":{"tf":1.0},"27":{"tf":1.0},"315":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"367":{"tf":1.4142135623730951},"397":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.0},"405":{"tf":1.7320508075688772},"408":{"tf":1.0},"41":{"tf":1.0},"410":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.4142135623730951},"463":{"tf":1.0},"48":{"tf":1.0},"481":{"tf":1.0},"483":{"tf":1.0},"49":{"tf":1.0},"499":{"tf":1.0},"50":{"tf":1.0},"503":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.4142135623730951},"68":{"tf":1.0},"89":{"tf":1.0},"96":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"e":{"df":18,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"188":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"423":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"558":{"tf":1.0},"56":{"tf":1.0}}}},"t":{"df":1,"docs":{"539":{"tf":1.0}}},"u":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"538":{"tf":1.0},"599":{"tf":1.0}}},"t":{"df":4,"docs":{"268":{"tf":1.0},"278":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":0,"docs":{},"n":{"df":17,"docs":{"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"322":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"457":{"tf":1.0},"463":{"tf":1.0},"539":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"319":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"167":{"tf":1.7320508075688772},"268":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}}}},"r":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":43,"docs":{"15":{"tf":1.4142135623730951},"152":{"tf":1.0},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"17":{"tf":1.4142135623730951},"176":{"tf":1.4142135623730951},"186":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"208":{"tf":1.4142135623730951},"216":{"tf":1.4142135623730951},"220":{"tf":1.4142135623730951},"228":{"tf":1.4142135623730951},"243":{"tf":1.4142135623730951},"254":{"tf":1.4142135623730951},"267":{"tf":1.4142135623730951},"275":{"tf":1.4142135623730951},"283":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"299":{"tf":1.4142135623730951},"306":{"tf":1.4142135623730951},"327":{"tf":1.4142135623730951},"335":{"tf":1.4142135623730951},"346":{"tf":1.4142135623730951},"355":{"tf":1.4142135623730951},"369":{"tf":1.4142135623730951},"379":{"tf":1.4142135623730951},"388":{"tf":1.4142135623730951},"396":{"tf":1.4142135623730951},"407":{"tf":1.4142135623730951},"416":{"tf":1.4142135623730951},"430":{"tf":1.4142135623730951},"439":{"tf":1.4142135623730951},"447":{"tf":1.4142135623730951},"455":{"tf":1.4142135623730951},"467":{"tf":1.4142135623730951},"477":{"tf":1.4142135623730951},"485":{"tf":1.0},"490":{"tf":1.4142135623730951},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"562":{"tf":1.0},"61":{"tf":1.7320508075688772}}}},"g":{"df":1,"docs":{"472":{"tf":1.0}}},"m":{"a":{"df":1,"docs":{"311":{"tf":1.0}},"t":{"df":2,"docs":{"153":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"203":{"tf":1.0}}},"df":0,"docs":{}}}},"w":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"223":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"17":{"tf":1.0},"245":{"tf":1.0},"27":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"300":{"tf":1.0}}},"df":0,"docs":{},"m":{"df":5,"docs":{"188":{"tf":1.0},"359":{"tf":1.0},"37":{"tf":1.0},"389":{"tf":1.0},"487":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"e":{"df":7,"docs":{"10":{"tf":1.0},"189":{"tf":1.0},"192":{"tf":1.0},"309":{"tf":1.0},"336":{"tf":1.0},"557":{"tf":1.0},"61":{"tf":1.0}},"n":{"df":2,"docs":{"342":{"tf":1.0},"474":{"tf":1.0}}},"r":{"df":1,"docs":{"456":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":1.0}}}}}}},"df":13,"docs":{"156":{"tf":1.7320508075688772},"169":{"tf":1.4142135623730951},"175":{"tf":1.0},"178":{"tf":1.7320508075688772},"268":{"tf":2.23606797749979},"270":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"341":{"tf":2.0},"412":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"594":{"tf":1.0},"599":{"tf":1.0}}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":13,"docs":{"156":{"tf":1.0},"214":{"tf":1.0},"218":{"tf":1.0},"336":{"tf":1.0},"357":{"tf":1.0},"383":{"tf":1.0},"417":{"tf":1.0},"436":{"tf":1.0},"440":{"tf":1.0},"450":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0},"74":{"tf":1.0}}},"m":{"df":0,"docs":{},"p":{"df":1,"docs":{"598":{"tf":1.0}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"276":{"tf":1.0}}}},"i":{"c":{"df":3,"docs":{"200":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":2.0}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":6,"docs":{"218":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":2.0},"380":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.7320508075688772}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"(":{"5":{"df":1,"docs":{"458":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":11,"docs":{"15":{"tf":1.0},"16":{"tf":1.0},"230":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.0},"365":{"tf":1.0},"391":{"tf":1.0},"46":{"tf":1.0},"521":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0}}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":1,"docs":{"214":{"tf":1.0}}}}},"df":0,"docs":{}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":6,"docs":{"223":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.4142135623730951},"410":{"tf":1.0},"516":{"tf":1.0},"72":{"tf":1.0}}}},"df":5,"docs":{"292":{"tf":1.0},"328":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":1.0},"515":{"tf":1.0}}}}},"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"g":{"df":15,"docs":{"136":{"tf":1.0},"156":{"tf":1.0},"211":{"tf":1.0},"270":{"tf":1.0},"341":{"tf":1.0},"372":{"tf":1.0},"383":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"453":{"tf":1.0},"548":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}},"0":{"2":{"7":{"7":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"h":{"df":35,"docs":{"153":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.0},"218":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"27":{"tf":1.0},"278":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":2.0},"389":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.4142135623730951},"496":{"tf":1.0},"508":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951},"94":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"380":{"tf":1.0},"538":{"tf":1.4142135623730951}}}}},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":11,"docs":{"136":{"tf":1.0},"156":{"tf":1.0},"192":{"tf":1.0},"270":{"tf":1.0},"363":{"tf":1.0},"456":{"tf":1.0},"502":{"tf":1.0},"560":{"tf":1.0},"561":{"tf":1.4142135623730951},"65":{"tf":1.0},"87":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"276":{"tf":1.0},"61":{"tf":1.0}}}}}}},"s":{"df":3,"docs":{"359":{"tf":1.0},"41":{"tf":1.0},"77":{"tf":1.0}},"i":{"df":26,"docs":{"120":{"tf":1.0},"121":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.4142135623730951},"190":{"tf":1.0},"200":{"tf":1.0},"211":{"tf":1.0},"245":{"tf":1.0},"278":{"tf":1.0},"330":{"tf":1.0},"343":{"tf":1.0},"370":{"tf":1.0},"391":{"tf":1.4142135623730951},"393":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.4142135623730951},"456":{"tf":1.4142135623730951},"504":{"tf":1.0},"510":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"528":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":8,"docs":{"131":{"tf":1.0},"226":{"tf":1.0},"284":{"tf":1.0},"389":{"tf":1.0},"516":{"tf":1.0},"532":{"tf":1.0},"538":{"tf":1.0},"572":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":7,"docs":{"130":{"tf":1.0},"268":{"tf":1.0},"315":{"tf":1.0},"341":{"tf":1.0},"350":{"tf":1.0},"507":{"tf":1.0},"511":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"555":{"tf":1.0}}}}}},"y":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"221":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"380":{"tf":1.0}}}},"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":30,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"231":{"tf":1.4142135623730951},"237":{"tf":1.0},"278":{"tf":1.0},"302":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"340":{"tf":1.4142135623730951},"341":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":2.0},"360":{"tf":1.0},"363":{"tf":1.7320508075688772},"372":{"tf":1.4142135623730951},"383":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0},"431":{"tf":1.4142135623730951},"47":{"tf":1.4142135623730951},"478":{"tf":1.0},"480":{"tf":1.0},"526":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"61":{"tf":1.4142135623730951},"65":{"tf":1.0},"73":{"tf":1.0},"77":{"tf":1.0}}}}}}}}}},"d":{"df":1,"docs":{"309":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":30,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"358":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"402":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"201":{"tf":1.0},"453":{"tf":1.0}}}}}},"u":{"c":{"df":1,"docs":{"363":{"tf":1.0}}},"df":0,"docs":{}}},"df":6,"docs":{"134":{"tf":1.0},"138":{"tf":1.0},"209":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.7320508075688772},"603":{"tf":1.0}},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":7,"docs":{"181":{"tf":1.0},"259":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"389":{"tf":1.0},"422":{"tf":1.0},"462":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"c":{"df":0,"docs":{},"i":{"df":3,"docs":{"156":{"tf":1.4142135623730951},"223":{"tf":1.0},"341":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":4,"docs":{"341":{"tf":1.4142135623730951},"37":{"tf":1.0},"486":{"tf":1.0},"8":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"110":{"tf":1.0}}}}}}}}}}}}},"g":{"df":1,"docs":{"391":{"tf":1.0}}},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"603":{"tf":1.0}}}}}},"l":{"a":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"343":{"tf":1.0},"42":{"tf":1.0},"54":{"tf":1.0}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":1,"docs":{"65":{"tf":1.0}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"307":{"tf":1.0},"310":{"tf":1.0}}}}}}},"i":{"d":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"209":{"tf":1.4142135623730951},"342":{"tf":1.0},"343":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"55":{"tf":1.0}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"211":{"tf":1.0},"252":{"tf":1.0},"341":{"tf":1.0},"562":{"tf":1.0}}}}}}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":2,"docs":{"3":{"tf":1.0},"515":{"tf":1.0}}}}}},"df":3,"docs":{"209":{"tf":1.0},"310":{"tf":1.0},"486":{"tf":1.0}},"e":{"d":{"df":16,"docs":{"106":{"tf":1.0},"110":{"tf":2.449489742783178},"111":{"tf":1.0},"156":{"tf":1.4142135623730951},"321":{"tf":1.0},"322":{"tf":1.0},"334":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":2.0},"370":{"tf":1.0},"456":{"tf":1.7320508075688772},"463":{"tf":1.0},"515":{"tf":2.0},"61":{"tf":1.0},"62":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":1,"docs":{"284":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{"2":{"0":{"0":{"0":{"df":1,"docs":{"603":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"j":{"df":0,"docs":{},"i":{"df":1,"docs":{"552":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":1,"docs":{"231":{"tf":1.0}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"156":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"469":{"tf":1.0}}}}},"n":{"a":{"b":{"df":0,"docs":{},"l":{"df":12,"docs":{"178":{"tf":1.0},"259":{"tf":1.0},"321":{"tf":1.0},"343":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"470":{"tf":1.0},"530":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"358":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"457":{"tf":1.0}}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":13,"docs":{"153":{"tf":1.0},"177":{"tf":1.0},"182":{"tf":1.0},"25":{"tf":1.0},"263":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"318":{"tf":1.0},"321":{"tf":1.0},"470":{"tf":1.0},"74":{"tf":1.0},"9":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"g":{"df":6,"docs":{"15":{"tf":1.0},"152":{"tf":1.0},"268":{"tf":1.0},"462":{"tf":1.0},"485":{"tf":1.0},"54":{"tf":1.0}}}},"df":0,"docs":{}}}}},"d":{"df":25,"docs":{"11":{"tf":1.4142135623730951},"15":{"tf":1.4142135623730951},"156":{"tf":1.0},"16":{"tf":1.0},"218":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"284":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"322":{"tf":1.0},"370":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"47":{"tf":1.4142135623730951},"504":{"tf":1.0},"58":{"tf":1.0},"599":{"tf":1.4142135623730951},"60":{"tf":1.0},"8":{"tf":1.4142135623730951}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"232":{"tf":1.4142135623730951},"370":{"tf":1.0},"408":{"tf":1.7320508075688772},"538":{"tf":2.0}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":1,"docs":{"138":{"tf":1.0}}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"171":{"tf":1.0}}},"df":0,"docs":{}}}},"g":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"27":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":6,"docs":{"138":{"tf":1.0},"212":{"tf":1.0},"231":{"tf":1.0},"389":{"tf":1.7320508075688772},"393":{"tf":1.0},"433":{"tf":1.0}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":3,"docs":{"276":{"tf":1.0},"486":{"tf":1.0},"9":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"195":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":24,"docs":{"156":{"tf":1.0},"173":{"tf":1.0},"178":{"tf":1.0},"189":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"318":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.7320508075688772},"427":{"tf":1.0},"431":{"tf":1.0},"470":{"tf":1.0},"480":{"tf":1.0},"503":{"tf":1.0},"530":{"tf":1.0}}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"u":{"df":1,"docs":{"539":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":4,"docs":{"120":{"tf":1.0},"16":{"tf":1.0},"517":{"tf":1.0},"539":{"tf":1.0}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"156":{"tf":1.0},"240":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{"1":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":2,"docs":{"363":{"tf":1.0},"538":{"tf":1.4142135623730951}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"113":{"tf":1.0},"27":{"tf":1.0}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"r":{"df":15,"docs":{"116":{"tf":1.0},"127":{"tf":1.0},"218":{"tf":1.0},"268":{"tf":1.4142135623730951},"284":{"tf":1.0},"313":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"442":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.7320508075688772},"506":{"tf":1.0},"72":{"tf":1.0},"8":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"257":{"tf":1.0},"284":{"tf":1.0},"431":{"tf":1.4142135623730951}}}}},"u":{"df":0,"docs":{},"m":{"df":4,"docs":{"199":{"tf":1.7320508075688772},"209":{"tf":1.0},"214":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":19,"docs":{"108":{"tf":1.0},"110":{"tf":1.4142135623730951},"146":{"tf":1.0},"156":{"tf":1.0},"218":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.4142135623730951},"286":{"tf":1.0},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"344":{"tf":1.4142135623730951},"425":{"tf":1.0},"457":{"tf":1.7320508075688772},"546":{"tf":1.0},"61":{"tf":1.4142135623730951},"77":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"92":{"tf":1.0}}}}}}},"z":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"f":{"d":{"=":{"3":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"i":{"c":{"df":1,"docs":{"79":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"62":{"tf":1.0}},"l":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"q":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":9,"docs":{"213":{"tf":1.0},"214":{"tf":1.0},"259":{"tf":1.0},"336":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"458":{"tf":1.4142135623730951},"526":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":4,"docs":{"156":{"tf":1.0},"292":{"tf":1.0},"487":{"tf":1.0},"9":{"tf":1.0}}}}}}},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"t":{"'":{"df":1,"docs":{"287":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"414":{"tf":1.0}}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"261":{"tf":1.0}}},"df":0,"docs":{}},"r":{"(":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"_":{"df":1,"docs":{"276":{"tf":1.0}}},"df":3,"docs":{"292":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"440":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"328":{"tf":1.0}}}}}}}}},"df":1,"docs":{"292":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"[":{"df":0,"docs":{},"e":{"0":{"2":{"7":{"7":{"df":6,"docs":{"292":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"0":{"8":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"9":{"7":{"df":2,"docs":{"217":{"tf":1.0},"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"5":{"8":{"df":2,"docs":{"196":{"tf":1.0},"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"0":{"6":{"df":2,"docs":{"209":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}},"3":{"3":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":41,"docs":{"110":{"tf":1.4142135623730951},"196":{"tf":1.7320508075688772},"197":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"226":{"tf":1.0},"244":{"tf":1.0},"258":{"tf":1.4142135623730951},"261":{"tf":1.7320508075688772},"263":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"272":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.7320508075688772},"307":{"tf":1.0},"310":{"tf":1.4142135623730951},"317":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.4142135623730951},"370":{"tf":2.0},"380":{"tf":3.605551275463989},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"394":{"tf":1.0},"419":{"tf":1.7320508075688772},"42":{"tf":1.0},"433":{"tf":1.0},"440":{"tf":2.23606797749979},"442":{"tf":1.0},"448":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":2.0},"522":{"tf":1.4142135623730951},"599":{"tf":1.0},"79":{"tf":1.0}}}}}},"s":{"c":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"538":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":7,"docs":{"112":{"tf":1.0},"136":{"tf":1.0},"221":{"tf":1.4142135623730951},"237":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"376":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}}}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"156":{"tf":1.4142135623730951},"469":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"c":{"df":12,"docs":{"136":{"tf":1.0},"230":{"tf":1.0},"235":{"tf":1.0},"302":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"363":{"tf":1.0},"41":{"tf":1.0},"419":{"tf":1.0},"599":{"tf":1.7320508075688772},"62":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"423":{"tf":1.0}}}},"n":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":50,"docs":{"118":{"tf":1.0},"127":{"tf":1.0},"156":{"tf":1.7320508075688772},"171":{"tf":1.0},"192":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"251":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.4142135623730951},"261":{"tf":1.4142135623730951},"263":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.7320508075688772},"288":{"tf":1.0},"292":{"tf":1.4142135623730951},"297":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"313":{"tf":1.0},"324":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":2.0},"399":{"tf":1.0},"405":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"478":{"tf":1.0},"54":{"tf":1.0},"542":{"tf":1.0}},"t":{"df":13,"docs":{"156":{"tf":1.4142135623730951},"185":{"tf":1.0},"190":{"tf":1.7320508075688772},"191":{"tf":1.0},"192":{"tf":2.23606797749979},"336":{"tf":2.8284271247461903},"342":{"tf":1.7320508075688772},"412":{"tf":1.0},"462":{"tf":1.0},"504":{"tf":1.7320508075688772},"555":{"tf":1.0},"599":{"tf":2.23606797749979},"62":{"tf":1.7320508075688772}},"s":{"=":{"0":{"df":0,"docs":{},"x":{"5":{"5":{"5":{"5":{"5":{"5":{"7":{"1":{"1":{"3":{"4":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"b":{"a":{"4":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":11,"docs":{"195":{"tf":1.0},"200":{"tf":1.0},"245":{"tf":1.0},"300":{"tf":1.0},"347":{"tf":1.0},"431":{"tf":1.7320508075688772},"448":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"49":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"361":{"tf":1.0}}}}},"y":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":2,"docs":{"231":{"tf":1.0},"300":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":9,"docs":{"174":{"tf":1.0},"184":{"tf":1.0},"264":{"tf":1.0},"534":{"tf":1.0},"600":{"tf":1.0},"601":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0},"8":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":12,"docs":{"156":{"tf":1.0},"217":{"tf":1.7320508075688772},"245":{"tf":1.0},"257":{"tf":1.0},"261":{"tf":1.0},"309":{"tf":1.0},"324":{"tf":1.0},"457":{"tf":1.0},"504":{"tf":1.4142135623730951},"522":{"tf":1.0},"530":{"tf":1.0},"599":{"tf":1.7320508075688772}}}},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"156":{"tf":1.0},"408":{"tf":1.0},"421":{"tf":1.0},"538":{"tf":1.0}}}}}}}}},"i":{"d":{"df":5,"docs":{"162":{"tf":1.0},"28":{"tf":1.0},"36":{"tf":1.0},"597":{"tf":1.0},"598":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":6,"docs":{"156":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"478":{"tf":1.0},"560":{"tf":1.0},"599":{"tf":1.0}}}}}},"x":{"a":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"380":{"tf":1.0},"431":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":13,"docs":{"218":{"tf":1.0},"258":{"tf":1.0},"322":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.4142135623730951},"40":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"481":{"tf":1.0},"49":{"tf":1.0},"504":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"431":{"tf":1.0}}}},"p":{"df":0,"docs":{},"l":{"df":48,"docs":{"147":{"tf":1.0},"152":{"tf":1.0},"159":{"tf":1.0},"167":{"tf":1.0},"178":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"237":{"tf":1.0},"257":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"336":{"tf":1.0},"365":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"393":{"tf":1.0},"403":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"418":{"tf":1.4142135623730951},"419":{"tf":1.7320508075688772},"421":{"tf":1.0},"422":{"tf":1.4142135623730951},"423":{"tf":1.4142135623730951},"433":{"tf":1.0},"436":{"tf":1.0},"440":{"tf":1.7320508075688772},"450":{"tf":1.0},"47":{"tf":1.0},"485":{"tf":1.0},"491":{"tf":1.0},"502":{"tf":1.0},"517":{"tf":1.0},"529":{"tf":1.0},"56":{"tf":1.0},"564":{"tf":1.0},"57":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0},"599":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.0}},"e":{"(":{"df":0,"docs":{},"x":{"df":1,"docs":{"564":{"tf":1.0}}}},"df":0,"docs":{},"s":{"/":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"8":{"4":{":":{"1":{"5":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"c":{"df":0,"docs":{},"e":{"df":2,"docs":{"347":{"tf":1.0},"431":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"111":{"tf":1.0}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"t":{"df":8,"docs":{"264":{"tf":1.0},"317":{"tf":1.0},"383":{"tf":1.0},"445":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0},"61":{"tf":1.0}}}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"t":{"df":19,"docs":{"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"41":{"tf":2.0},"478":{"tf":1.0},"497":{"tf":1.0},"510":{"tf":1.4142135623730951},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"528":{"tf":1.4142135623730951},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}},"e":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"448":{"tf":1.0}}}}},"df":0,"docs":{}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":2,"docs":{"408":{"tf":1.0},"538":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":25,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.0},"178":{"tf":1.4142135623730951},"181":{"tf":1.0},"209":{"tf":1.7320508075688772},"211":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.0},"308":{"tf":1.0},"318":{"tf":1.0},"336":{"tf":2.0},"341":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"419":{"tf":1.0},"457":{"tf":2.23606797749979},"458":{"tf":1.0},"460":{"tf":1.4142135623730951},"462":{"tf":1.0},"463":{"tf":1.0},"470":{"tf":2.23606797749979},"502":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"462":{"tf":1.0}}},"df":31,"docs":{"156":{"tf":1.7320508075688772},"209":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.7320508075688772},"258":{"tf":1.4142135623730951},"268":{"tf":1.0},"326":{"tf":1.0},"328":{"tf":2.0},"330":{"tf":2.0},"333":{"tf":1.0},"336":{"tf":3.605551275463989},"341":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"349":{"tf":1.0},"359":{"tf":1.4142135623730951},"360":{"tf":1.0},"408":{"tf":1.4142135623730951},"462":{"tf":1.0},"470":{"tf":2.23606797749979},"480":{"tf":1.7320508075688772},"483":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"545":{"tf":2.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.7320508075688772},"549":{"tf":1.0},"599":{"tf":1.4142135623730951},"62":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}},"h":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"248":{"tf":1.0},"538":{"tf":1.0},"598":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":27,"docs":{"120":{"tf":1.0},"130":{"tf":1.4142135623730951},"14":{"tf":1.4142135623730951},"156":{"tf":1.4142135623730951},"192":{"tf":1.0},"204":{"tf":1.0},"211":{"tf":1.0},"22":{"tf":1.0},"235":{"tf":1.0},"276":{"tf":1.0},"315":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.0},"493":{"tf":1.0},"498":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"91":{"tf":1.0},"96":{"tf":1.4142135623730951}}}}},"p":{"a":{"df":0,"docs":{},"n":{"d":{"df":33,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"396":{"tf":1.0},"404":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"437":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"539":{"tf":1.0},"562":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":39,"docs":{"152":{"tf":1.0},"16":{"tf":1.0},"18":{"tf":1.0},"196":{"tf":1.4142135623730951},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"28":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"317":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"408":{"tf":1.7320508075688772},"41":{"tf":2.23606797749979},"417":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"485":{"tf":1.0},"487":{"tf":1.0},"497":{"tf":1.0},"51":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.4142135623730951},"547":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.0},"65":{"tf":2.0},"77":{"tf":1.0},"82":{"tf":1.4142135623730951},"87":{"tf":1.4142135623730951},"9":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":5,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.0},"410":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":107,"docs":{"11":{"tf":1.4142135623730951},"127":{"tf":1.0},"136":{"tf":1.0},"153":{"tf":1.0},"154":{"tf":1.0},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"173":{"tf":1.0},"174":{"tf":1.0},"176":{"tf":1.4142135623730951},"183":{"tf":1.0},"186":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"205":{"tf":1.0},"208":{"tf":1.4142135623730951},"209":{"tf":1.0},"214":{"tf":1.0},"216":{"tf":1.4142135623730951},"218":{"tf":1.0},"220":{"tf":1.4142135623730951},"228":{"tf":1.0},"23":{"tf":2.0},"235":{"tf":1.0},"238":{"tf":1.0},"24":{"tf":1.0},"243":{"tf":1.0},"249":{"tf":1.0},"25":{"tf":1.4142135623730951},"250":{"tf":1.0},"254":{"tf":1.0},"256":{"tf":1.0},"259":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.4142135623730951},"264":{"tf":1.0},"267":{"tf":1.4142135623730951},"27":{"tf":1.0},"275":{"tf":1.4142135623730951},"278":{"tf":1.0},"283":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"295":{"tf":1.0},"299":{"tf":1.4142135623730951},"303":{"tf":1.0},"306":{"tf":1.4142135623730951},"316":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.0},"327":{"tf":1.0},"331":{"tf":1.0},"333":{"tf":1.0},"335":{"tf":1.4142135623730951},"346":{"tf":1.4142135623730951},"353":{"tf":1.0},"355":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":2.0},"369":{"tf":1.4142135623730951},"379":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"382":{"tf":1.4142135623730951},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":2.8284271247461903},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.4142135623730951},"396":{"tf":1.4142135623730951},"403":{"tf":1.0},"407":{"tf":1.4142135623730951},"414":{"tf":1.0},"416":{"tf":1.4142135623730951},"421":{"tf":1.0},"430":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"439":{"tf":1.0},"443":{"tf":1.0},"447":{"tf":1.4142135623730951},"451":{"tf":1.0},"455":{"tf":1.0},"456":{"tf":1.0},"461":{"tf":1.0},"467":{"tf":1.4142135623730951},"47":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":1.0},"475":{"tf":2.0},"477":{"tf":1.4142135623730951},"49":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"597":{"tf":1.0},"79":{"tf":1.0},"8":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"n":{"c":{"df":16,"docs":{"221":{"tf":1.0},"272":{"tf":1.0},"289":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.4142135623730951},"339":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"376":{"tf":1.0},"389":{"tf":1.0},"393":{"tf":1.4142135623730951},"435":{"tf":1.0},"65":{"tf":1.4142135623730951},"71":{"tf":1.0},"79":{"tf":1.0},"89":{"tf":1.0}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"196":{"tf":1.4142135623730951},"209":{"tf":1.0},"357":{"tf":1.0},"392":{"tf":1.0}}}}}}},"t":{"df":7,"docs":{"127":{"tf":1.0},"153":{"tf":1.0},"209":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"245":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"218":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":23,"docs":{"178":{"tf":1.4142135623730951},"198":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.7320508075688772},"217":{"tf":1.0},"218":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"347":{"tf":1.0},"42":{"tf":1.0},"440":{"tf":1.0},"45":{"tf":1.0},"457":{"tf":1.4142135623730951},"458":{"tf":1.0},"48":{"tf":1.0},"480":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"583":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":6,"docs":{"211":{"tf":1.0},"250":{"tf":1.0},"252":{"tf":1.0},"380":{"tf":1.0},"421":{"tf":1.0},"460":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":6,"docs":{"178":{"tf":1.0},"199":{"tf":1.0},"268":{"tf":1.4142135623730951},"458":{"tf":1.0},"470":{"tf":1.0},"6":{"tf":1.0}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":8,"docs":{"11":{"tf":1.0},"268":{"tf":1.0},"330":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"460":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"s":{"df":4,"docs":{"300":{"tf":2.0},"336":{"tf":1.0},"349":{"tf":1.0},"507":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"359":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":8,"docs":{"136":{"tf":1.0},"211":{"tf":1.0},"231":{"tf":1.0},"292":{"tf":2.0},"458":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.0},"74":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":7,"docs":{"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"218":{"tf":1.0},"292":{"tf":1.4142135623730951},"330":{"tf":1.0},"511":{"tf":1.0},"65":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":5,"docs":{"177":{"tf":1.0},"3":{"tf":1.0},"389":{"tf":1.0},"503":{"tf":1.0},"59":{"tf":1.0}}},"t":{"df":1,"docs":{"352":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"df":8,"docs":{"185":{"tf":1.0},"240":{"tf":1.0},"256":{"tf":1.0},"3":{"tf":1.0},"336":{"tf":1.4142135623730951},"521":{"tf":1.0},"535":{"tf":1.0},"599":{"tf":1.0}}}}},"r":{"a":{"df":5,"docs":{"178":{"tf":1.0},"246":{"tf":1.0},"259":{"tf":1.0},"397":{"tf":1.0},"503":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":11,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"130":{"tf":1.0},"179":{"tf":1.0},"268":{"tf":1.0},"349":{"tf":1.0},"408":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0}}}}}}},"y":{"df":1,"docs":{"25":{"tf":1.0}}}},"f":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{")":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"a":{"c":{"a":{"d":{"df":1,"docs":{"515":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":40,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"237":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"9":{"tf":1.0}}},"t":{"df":9,"docs":{"137":{"tf":1.0},"237":{"tf":1.0},"268":{"tf":1.4142135623730951},"300":{"tf":1.0},"321":{"tf":1.0},"37":{"tf":1.0},"457":{"tf":1.0},"517":{"tf":1.0},"55":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"261":{"tf":1.0},"302":{"tf":1.0},"336":{"tf":1.0}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"16":{"tf":1.0},"29":{"tf":1.0},"42":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":9,"docs":{"153":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.4142135623730951},"457":{"tf":1.0},"470":{"tf":1.0},"9":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"127":{"tf":1.0}}}}},"r":{"df":3,"docs":{"18":{"tf":1.0},"256":{"tf":1.0},"521":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":8,"docs":{"171":{"tf":1.0},"177":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"317":{"tf":1.0},"442":{"tf":1.0},"475":{"tf":1.0},"530":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"l":{"df":3,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"289":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"214":{"tf":1.0}}}}},"s":{"df":1,"docs":{"470":{"tf":1.0}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"r":{"df":13,"docs":{"120":{"tf":1.0},"264":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"317":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.4142135623730951},"435":{"tf":1.0},"440":{"tf":1.0},"475":{"tf":1.0},"530":{"tf":1.0},"559":{"tf":1.0},"73":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"df":1,"docs":{"67":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"143":{"tf":1.0}}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"q":{"df":52,"docs":{"158":{"tf":1.0},"16":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"22":{"tf":1.4142135623730951},"220":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":2.23606797749979},"283":{"tf":1.0},"29":{"tf":1.4142135623730951},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"309":{"tf":1.0},"32":{"tf":1.0},"329":{"tf":1.0},"335":{"tf":1.0},"34":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"40":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":2.23606797749979},"416":{"tf":1.0},"42":{"tf":1.4142135623730951},"447":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.0},"467":{"tf":1.0},"47":{"tf":1.0},"477":{"tf":1.0},"48":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"492":{"tf":1.0},"50":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"59":{"tf":1.0}}},"r":{"df":13,"docs":{"111":{"tf":1.0},"197":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.0},"217":{"tf":1.0},"336":{"tf":1.0},"361":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.0},"599":{"tf":1.0}},"e":{"df":2,"docs":{"41":{"tf":2.0},"9":{"tf":1.0}}},"n":{"df":0,"docs":{},"z":{"df":1,"docs":{"602":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":5,"docs":{"153":{"tf":1.0},"201":{"tf":1.0},"522":{"tf":1.0},"545":{"tf":1.0},"9":{"tf":1.0}}}}}},"t":{"df":6,"docs":{"119":{"tf":1.0},"121":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"231":{"tf":1.0},"357":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"178":{"tf":1.0},"389":{"tf":1.0},"469":{"tf":1.0},"532":{"tf":1.0}},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":2,"docs":{"370":{"tf":1.0},"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":1,"docs":{"231":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":4,"docs":{"131":{"tf":1.0},"245":{"tf":1.0},"363":{"tf":1.0},"513":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"167":{"tf":1.0},"356":{"tf":1.0},"478":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"61":{"tf":1.0}}}}}}},"df":4,"docs":{"217":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"292":{"tf":2.6457513110645907},"380":{"tf":1.4142135623730951}},"e":{"a":{"df":0,"docs":{},"r":{"df":7,"docs":{"235":{"tf":1.0},"237":{"tf":1.0},"256":{"tf":1.0},"300":{"tf":1.0},"363":{"tf":1.0},"408":{"tf":1.0},"521":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":30,"docs":{"138":{"tf":1.0},"16":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.0},"230":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"239":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.0},"300":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"341":{"tf":2.23606797749979},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.7320508075688772},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"46":{"tf":1.0},"469":{"tf":1.0},"486":{"tf":1.4142135623730951},"509":{"tf":1.0},"538":{"tf":1.0},"560":{"tf":1.0},"561":{"tf":1.0},"60":{"tf":1.0},"602":{"tf":1.0}},"e":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"_":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"d":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":7,"docs":{"15":{"tf":1.0},"17":{"tf":1.0},"209":{"tf":1.0},"24":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"547":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":71,"docs":{"152":{"tf":1.0},"156":{"tf":1.0},"158":{"tf":1.0},"159":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"17":{"tf":1.0},"176":{"tf":1.0},"178":{"tf":1.4142135623730951},"186":{"tf":1.0},"187":{"tf":1.0},"189":{"tf":1.4142135623730951},"194":{"tf":1.0},"197":{"tf":1.0},"2":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"221":{"tf":1.0},"261":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.7320508075688772},"28":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"306":{"tf":1.0},"329":{"tf":1.0},"33":{"tf":1.0},"331":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"35":{"tf":1.0},"359":{"tf":1.4142135623730951},"369":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.7320508075688772},"381":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0},"447":{"tf":1.0},"449":{"tf":1.0},"457":{"tf":1.4142135623730951},"467":{"tf":1.0},"47":{"tf":1.0},"477":{"tf":1.0},"485":{"tf":1.0},"487":{"tf":1.0},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"501":{"tf":1.0},"509":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.0},"537":{"tf":1.0},"556":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.0},"96":{"tf":1.0}}}},"l":{"df":0,"docs":{},"t":{"df":5,"docs":{"218":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":2.23606797749979}}}},"t":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"(":{"&":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"df":2,"docs":{"523":{"tf":1.7320508075688772},"535":{"tf":1.0}},"s":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"523":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":3,"docs":{"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"312":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":24,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"195":{"tf":1.0},"209":{"tf":1.0},"232":{"tf":1.0},"259":{"tf":1.4142135623730951},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"359":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.23606797749979},"389":{"tf":1.0},"397":{"tf":1.0},"410":{"tf":1.0},"431":{"tf":1.0},"486":{"tf":1.0},"516":{"tf":1.0},"556":{"tf":1.0},"79":{"tf":1.0},"9":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"284":{"tf":1.0},"377":{"tf":1.0}}}}}},"i":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"154":{"tf":1.0},"23":{"tf":1.0},"9":{"tf":1.0}}}}}}},"d":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"294":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":3,"docs":{"296":{"tf":1.0},"328":{"tf":1.0},"508":{"tf":1.0}}},"df":0,"docs":{}},"r":{"c":{"df":1,"docs":{"138":{"tf":1.0}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"110":{"tf":1.0},"370":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"r":{"df":22,"docs":{"178":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.4142135623730951},"251":{"tf":1.0},"268":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"317":{"tf":1.0},"347":{"tf":1.7320508075688772},"353":{"tf":1.0},"370":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"41":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"49":{"tf":1.4142135623730951},"499":{"tf":1.0},"52":{"tf":1.0},"53":{"tf":1.0},"539":{"tf":1.0},"552":{"tf":1.0},"599":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"199":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"196":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"_":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"195":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"b":{"\"":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":4,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},":":{":":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"(":{"\"":{"a":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"\"":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"522":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"522":{"tf":2.23606797749979},"523":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":23,"docs":{"157":{"tf":1.4142135623730951},"16":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.4142135623730951},"199":{"tf":1.7320508075688772},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"21":{"tf":1.4142135623730951},"24":{"tf":1.0},"257":{"tf":2.0},"258":{"tf":1.0},"26":{"tf":1.4142135623730951},"279":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.4142135623730951},"44":{"tf":1.0},"489":{"tf":1.4142135623730951},"522":{"tf":2.8284271247461903},"523":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0}}},"l":{"df":3,"docs":{"458":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.4142135623730951}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"|":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"312":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"312":{"tf":2.0},"431":{"tf":1.0}}}}}},"n":{"a":{"df":0,"docs":{},"l":{"df":9,"docs":{"15":{"tf":1.0},"197":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"389":{"tf":1.0},"470":{"tf":1.0},"61":{"tf":1.0}}}},"d":{"df":63,"docs":{"140":{"tf":1.0},"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"175":{"tf":1.0},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"190":{"tf":1.4142135623730951},"199":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":2.0},"246":{"tf":1.0},"248":{"tf":1.0},"25":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"261":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"276":{"tf":2.0},"278":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"370":{"tf":2.23606797749979},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"397":{"tf":1.0},"401":{"tf":1.0},"408":{"tf":2.23606797749979},"410":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.7320508075688772},"436":{"tf":1.0},"458":{"tf":1.0},"46":{"tf":1.0},"469":{"tf":1.0},"493":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"510":{"tf":1.0},"512":{"tf":1.0},"528":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"543":{"tf":1.0},"55":{"tf":1.0},"559":{"tf":1.0},"57":{"tf":1.0},"96":{"tf":1.4142135623730951}}},"df":1,"docs":{"397":{"tf":1.0}},"e":{"df":10,"docs":{"137":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.7320508075688772},"268":{"tf":1.0},"309":{"tf":1.0},"336":{"tf":1.0},"458":{"tf":1.0},"511":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}},"i":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":14,"docs":{"189":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"374":{"tf":1.0},"521":{"tf":1.0},"558":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"309":{"tf":1.0},"448":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":46,"docs":{"136":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"187":{"tf":1.4142135623730951},"188":{"tf":1.0},"189":{"tf":1.0},"196":{"tf":1.4142135623730951},"198":{"tf":1.0},"232":{"tf":1.4142135623730951},"233":{"tf":1.4142135623730951},"246":{"tf":1.0},"251":{"tf":1.0},"257":{"tf":1.4142135623730951},"259":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"300":{"tf":1.0},"312":{"tf":1.0},"328":{"tf":1.7320508075688772},"354":{"tf":1.0},"356":{"tf":1.4142135623730951},"358":{"tf":1.0},"359":{"tf":1.0},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":2.449489742783178},"386":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.7320508075688772},"457":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"465":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"502":{"tf":1.0},"522":{"tf":1.7320508075688772},"525":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951},"61":{"tf":1.0}}}},"t":{"df":1,"docs":{"470":{"tf":1.0}}}},"t":{"df":14,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"35":{"tf":1.4142135623730951},"370":{"tf":1.0},"383":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"435":{"tf":1.0},"515":{"tf":1.0},"527":{"tf":1.0},"531":{"tf":1.0},"65":{"tf":1.0}}},"x":{"df":16,"docs":{"155":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.0},"174":{"tf":1.0},"2":{"tf":1.0},"234":{"tf":1.0},"237":{"tf":1.4142135623730951},"246":{"tf":1.0},"261":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.0},"431":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":1.0},"556":{"tf":1.4142135623730951},"84":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"g":{"df":4,"docs":{"178":{"tf":1.0},"244":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.0}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"209":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"110":{"tf":1.0},"336":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"8":{":":{"3":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"116":{"tf":1.0},"129":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"531":{"tf":1.0}}}}}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":1,"docs":{"177":{"tf":1.0}}}}}}}},"n":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":59,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.4142135623730951},"196":{"tf":1.7320508075688772},"197":{"tf":1.4142135623730951},"199":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.7320508075688772},"217":{"tf":2.8284271247461903},"221":{"tf":2.23606797749979},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.4142135623730951},"292":{"tf":3.7416573867739413},"307":{"tf":2.23606797749979},"308":{"tf":1.7320508075688772},"309":{"tf":2.0},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"313":{"tf":1.0},"320":{"tf":1.4142135623730951},"328":{"tf":2.449489742783178},"336":{"tf":2.6457513110645907},"341":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"370":{"tf":3.3166247903554},"375":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"418":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":3.1622776601683795},"448":{"tf":2.0},"450":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"522":{"tf":2.449489742783178},"523":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.4142135623730951},"564":{"tf":1.4142135623730951},"568":{"tf":1.4142135623730951},"573":{"tf":1.0},"575":{"tf":1.4142135623730951},"576":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":2.23606797749979},"580":{"tf":1.4142135623730951},"581":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"(":{"&":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"s":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"c":{"df":0,"docs":{},"u":{"df":8,"docs":{"110":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.0},"16":{"tf":1.0},"41":{"tf":1.0},"46":{"tf":1.0},"472":{"tf":1.0},"77":{"tf":1.0}},"s":{"df":6,"docs":{"203":{"tf":1.0},"3":{"tf":1.4142135623730951},"389":{"tf":1.0},"402":{"tf":1.0},"435":{"tf":1.0},"551":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"36":{"tf":1.0}}}}},"df":0,"docs":{},"k":{"df":7,"docs":{"153":{"tf":1.0},"16":{"tf":1.0},"19":{"tf":1.0},"25":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.0},"572":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}},"o":{"df":0,"docs":{},"w":{"df":21,"docs":{"156":{"tf":1.0},"157":{"tf":1.0},"177":{"tf":1.0},"195":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"22":{"tf":1.0},"221":{"tf":1.7320508075688772},"230":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"357":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":2.23606797749979},"389":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"489":{"tf":1.0},"538":{"tf":1.0},"561":{"tf":1.0}}}},"w":{"df":1,"docs":{"370":{"tf":1.0}}},"y":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{":":{":":{"c":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"(":{"[":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"<":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"m":{"df":0,"docs":{},"o":{"df":1,"docs":{"363":{"tf":1.0}}}},"o":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"581":{"tf":1.0}}}}}}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"`":{"_":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{".":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"2":{"7":{"2":{"df":0,"docs":{},"e":{"2":{"b":{"5":{"df":0,"docs":{},"e":{"8":{"0":{"8":{"2":{"6":{"4":{"a":{"2":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"p":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"4":{"d":{"a":{"d":{"2":{"6":{"7":{"b":{"4":{"df":0,"docs":{},"f":{"1":{"0":{"5":{"3":{"5":{"d":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"c":{"$":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{".":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"d":{"6":{"2":{"d":{"2":{"a":{"2":{"4":{"1":{"7":{"c":{"0":{"df":0,"docs":{},"f":{"2":{"df":0,"docs":{},"e":{"a":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"p":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"4":{"8":{"2":{"df":0,"docs":{},"f":{"2":{"5":{"3":{"6":{"5":{"1":{"b":{"9":{"6":{"8":{"df":0,"docs":{},"e":{"6":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},".":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"f":{"5":{"b":{"2":{"9":{"5":{"df":0,"docs":{},"f":{"c":{"c":{"0":{"8":{"3":{"7":{"df":0,"docs":{},"f":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"1":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"2":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"df":0,"docs":{},"f":{"6":{"0":{"df":0,"docs":{},"f":{"0":{"5":{"df":0,"docs":{},"f":{"9":{"df":0,"docs":{},"e":{"9":{"d":{"6":{"df":0,"docs":{},"f":{"3":{"0":{"7":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{".":{".":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"a":{"2":{"4":{"7":{"2":{"a":{"9":{"a":{"5":{"4":{"df":0,"docs":{},"f":{"0":{"df":0,"docs":{},"e":{"5":{"0":{"4":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"m":{"a":{"df":0,"docs":{},"y":{"b":{"df":0,"docs":{},"e":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"y":{"b":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"d":{"b":{"6":{"d":{"b":{"4":{"0":{"c":{"2":{"b":{"3":{"df":0,"docs":{},"f":{"2":{"df":0,"docs":{},"f":{"1":{"b":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"t":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"1":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"a":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"c":{"5":{"5":{"9":{"b":{"1":{"df":0,"docs":{},"f":{"3":{"df":0,"docs":{},"f":{"7":{"0":{"8":{"a":{"7":{"b":{"0":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"b":{"a":{"8":{"6":{"a":{"df":0,"docs":{},"f":{"c":{"3":{"df":0,"docs":{},"f":{"8":{"1":{"9":{"7":{"5":{"6":{"1":{"(":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"6":{"1":{"7":{"d":{"4":{"9":{"d":{"0":{"8":{"4":{"1":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"0":{"d":{"(":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"6":{"4":{"5":{"9":{"0":{"8":{"6":{"df":0,"docs":{},"f":{"c":{"0":{"4":{"1":{"9":{"4":{"3":{"df":0,"docs":{},"f":{"(":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"d":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"2":{"4":{"c":{"5":{"8":{"c":{"d":{"1":{"df":0,"docs":{},"e":{"1":{"1":{"2":{"1":{"3":{"6":{"df":0,"docs":{},"f":{"df":1,"docs":{"404":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"a":{"8":{"6":{"9":{"4":{"b":{"c":{"6":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"5":{"1":{"8":{"2":{"c":{"d":{"(":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"9":{"6":{"5":{"c":{"2":{"8":{"c":{"9":{"c":{"df":0,"docs":{},"e":{"0":{"6":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"7":{"3":{"df":1,"docs":{"404":{"tf":2.23606797749979}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"_":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{":":{":":{"_":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"8":{"5":{"6":{"d":{"6":{"4":{"8":{"3":{"6":{"7":{"8":{"9":{"5":{"3":{"9":{"1":{"(":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{":":{":":{"df":0,"docs":{},"h":{"9":{"a":{"2":{"df":0,"docs":{},"f":{"7":{"0":{"c":{"5":{"c":{"8":{"df":0,"docs":{},"e":{"6":{"3":{"2":{"8":{"8":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"5":{"5":{"5":{"5":{"5":{"5":{"6":{"df":0,"docs":{},"e":{"2":{"a":{"4":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{":":{":":{"df":0,"docs":{},"h":{"1":{"2":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"d":{"0":{"9":{"0":{"6":{"b":{"9":{"4":{"d":{"0":{"9":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"5":{"5":{"5":{"5":{"5":{"5":{"6":{"df":0,"docs":{},"e":{"2":{"a":{"4":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"_":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"a":{"2":{"2":{"9":{"c":{"df":0,"docs":{},"f":{"a":{"0":{"c":{"1":{"a":{"2":{"df":0,"docs":{},"e":{"1":{"3":{"df":0,"docs":{},"f":{"(":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"7":{"c":{"0":{"6":{"7":{"1":{"2":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"b":{"df":0,"docs":{},"f":{"c":{"6":{"1":{"d":{"9":{"df":0,"docs":{},"f":{"7":{"4":{"7":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"7":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"3":{"3":{"b":{"2":{"7":{"0":{"a":{"df":0,"docs":{},"f":{"5":{"8":{"4":{"4":{"1":{"9":{"df":0,"docs":{},"f":{"1":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"0":{"7":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"4":{"a":{"9":{"c":{"2":{"6":{"0":{"2":{"df":0,"docs":{},"e":{"7":{"b":{"8":{"2":{"8":{"4":{"0":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"0":{"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"5":{"df":0,"docs":{},"f":{"6":{"b":{"a":{"d":{"d":{"2":{"d":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"a":{"d":{"df":0,"docs":{},"f":{"5":{"5":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"2":{"7":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"6":{"b":{"2":{"1":{"1":{"c":{"df":0,"docs":{},"e":{"1":{"9":{"d":{"b":{"8":{"9":{"8":{"9":{"d":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"2":{"8":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":4,"docs":{"404":{"tf":1.0},"504":{"tf":1.0},"576":{"tf":1.0},"579":{"tf":1.7320508075688772}},"t":{"df":1,"docs":{"472":{"tf":1.0}},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"156":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"111":{"tf":1.0}}}}}}}}},"r":{"<":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":1,"docs":{"440":{"tf":2.0}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"e":{"a":{"c":{"df":0,"docs":{},"h":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"r":{"df":1,"docs":{"440":{"tf":1.0}}}}},"df":1,"docs":{"440":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"a":{"df":0,"docs":{},"y":{"df":4,"docs":{"156":{"tf":1.0},"354":{"tf":1.0},"356":{"tf":1.0},"525":{"tf":1.0}}}},"c":{"df":10,"docs":{"136":{"tf":1.0},"218":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.0},"300":{"tf":1.0},"330":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":2,"docs":{"156":{"tf":1.0},"211":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"497":{"tf":1.0}}}},"v":{"df":2,"docs":{"200":{"tf":1.0},"284":{"tf":1.0}}}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"156":{"tf":1.0}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"292":{"tf":1.0}}}}}}}},"k":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}},"m":{"df":8,"docs":{"209":{"tf":1.0},"218":{"tf":1.0},"237":{"tf":1.0},"417":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.0},"478":{"tf":1.0},"600":{"tf":1.0}},"u":{"df":0,"docs":{},"l":{"a":{"df":1,"docs":{"469":{"tf":1.0}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":3,"docs":{"3":{"tf":1.0},"502":{"tf":1.0},"508":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"df":2,"docs":{"370":{"tf":1.0},"456":{"tf":1.7320508075688772}}}}},"u":{"df":0,"docs":{},"m":{"df":4,"docs":{"11":{"tf":1.0},"178":{"tf":1.4142135623730951},"292":{"tf":1.0},"380":{"tf":1.0}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":8,"docs":{"179":{"tf":1.0},"221":{"tf":1.0},"276":{"tf":1.0},"340":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"412":{"tf":1.0},"423":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"n":{"d":{"a":{"df":0,"docs":{},"t":{"df":10,"docs":{"0":{"tf":1.0},"116":{"tf":1.0},"16":{"tf":1.0},"24":{"tf":1.0},"25":{"tf":1.0},"3":{"tf":1.0},"383":{"tf":1.0},"4":{"tf":1.0},"557":{"tf":1.0},"8":{"tf":1.0}}}},"df":23,"docs":{"1":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.0},"16":{"tf":1.4142135623730951},"196":{"tf":1.0},"246":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"276":{"tf":1.0},"328":{"tf":1.4142135623730951},"340":{"tf":1.0},"356":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.4142135623730951},"394":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.4142135623730951},"470":{"tf":1.7320508075688772},"478":{"tf":1.0},"526":{"tf":1.0},"53":{"tf":1.0},"598":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":2,"docs":{"231":{"tf":1.0},"64":{"tf":1.0}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"156":{"tf":1.0},"258":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"209":{"tf":1.7320508075688772},"278":{"tf":1.4142135623730951},"338":{"tf":1.0},"599":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"458":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":9,"docs":{"201":{"tf":1.0},"284":{"tf":1.4142135623730951},"313":{"tf":1.0},"399":{"tf":1.0},"404":{"tf":5.744562646538029},"456":{"tf":2.23606797749979},"457":{"tf":2.0},"458":{"tf":2.23606797749979},"469":{"tf":1.0}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":16,"docs":{"110":{"tf":1.0},"111":{"tf":1.0},"131":{"tf":1.0},"137":{"tf":1.0},"156":{"tf":1.0},"187":{"tf":1.0},"189":{"tf":1.0},"192":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.4142135623730951},"290":{"tf":1.0},"292":{"tf":3.0},"296":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"61":{"tf":1.0}}}}}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"431":{"tf":1.0}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"237":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"d":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":48,"docs":{"110":{"tf":1.0},"158":{"tf":1.0},"159":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"2":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"329":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0},"447":{"tf":1.0},"449":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0},"55":{"tf":1.0},"96":{"tf":1.0}}},"q":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":55,"docs":{"100":{"tf":1.0},"109":{"tf":1.0},"117":{"tf":1.0},"126":{"tf":1.0},"135":{"tf":1.0},"144":{"tf":1.0},"154":{"tf":1.4142135623730951},"160":{"tf":1.0},"170":{"tf":1.0},"180":{"tf":1.0},"192":{"tf":1.0},"202":{"tf":1.0},"210":{"tf":1.0},"218":{"tf":1.0},"222":{"tf":1.0},"236":{"tf":1.0},"247":{"tf":1.0},"260":{"tf":1.0},"269":{"tf":1.0},"277":{"tf":1.0},"285":{"tf":1.0},"293":{"tf":1.0},"30":{"tf":1.0},"301":{"tf":1.0},"314":{"tf":1.0},"329":{"tf":1.0},"337":{"tf":1.0},"348":{"tf":1.0},"362":{"tf":1.0},"371":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"398":{"tf":1.0},"409":{"tf":1.0},"424":{"tf":1.0},"43":{"tf":1.0},"432":{"tf":1.0},"441":{"tf":1.0},"449":{"tf":1.0},"459":{"tf":1.0},"470":{"tf":1.4142135623730951},"471":{"tf":1.0},"479":{"tf":1.0},"487":{"tf":1.0},"492":{"tf":1.0},"505":{"tf":1.0},"524":{"tf":1.0},"540":{"tf":1.0},"582":{"tf":1.0},"593":{"tf":1.0},"66":{"tf":1.0},"75":{"tf":1.0},"80":{"tf":1.0},"85":{"tf":1.0},"90":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"178":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"191":{"tf":1.0}}}}}}}}}}},"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"555":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":5,"docs":{"168":{"tf":1.4142135623730951},"276":{"tf":1.0},"370":{"tf":1.0},"544":{"tf":1.0},"583":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"389":{"tf":1.0},"52":{"tf":1.0},"566":{"tf":1.0}}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"m":{"<":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"<":{"[":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"307":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"310":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"504":{"tf":1.0},"61":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"408":{"tf":1.0},"561":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":8,"docs":{"136":{"tf":1.0},"178":{"tf":1.0},"213":{"tf":1.0},"276":{"tf":1.4142135623730951},"309":{"tf":1.0},"310":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"w":{"df":1,"docs":{"410":{"tf":1.0}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":12,"docs":{"110":{"tf":1.4142135623730951},"128":{"tf":1.4142135623730951},"156":{"tf":1.4142135623730951},"230":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"405":{"tf":1.0},"47":{"tf":1.0},"498":{"tf":1.0},"538":{"tf":1.0},"560":{"tf":1.0},"95":{"tf":1.0}},"i":{"df":12,"docs":{"195":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"270":{"tf":1.0},"324":{"tf":1.0},"360":{"tf":1.0},"470":{"tf":1.0},"487":{"tf":1.0},"51":{"tf":1.0},"62":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"217":{"tf":1.0}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"2":{"7":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"9":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":56,"docs":{"156":{"tf":1.4142135623730951},"167":{"tf":1.0},"169":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":1.7320508075688772},"209":{"tf":2.0},"214":{"tf":1.0},"217":{"tf":3.1622776601683795},"218":{"tf":2.449489742783178},"221":{"tf":1.4142135623730951},"245":{"tf":1.4142135623730951},"257":{"tf":1.7320508075688772},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":3.0},"300":{"tf":1.0},"307":{"tf":2.0},"308":{"tf":1.0},"309":{"tf":1.7320508075688772},"311":{"tf":1.4142135623730951},"320":{"tf":1.4142135623730951},"324":{"tf":1.7320508075688772},"336":{"tf":2.6457513110645907},"344":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":3.605551275463989},"372":{"tf":1.4142135623730951},"374":{"tf":1.0},"375":{"tf":1.4142135623730951},"380":{"tf":2.0},"383":{"tf":1.4142135623730951},"389":{"tf":1.0},"393":{"tf":1.0},"399":{"tf":1.0},"403":{"tf":1.0},"417":{"tf":1.0},"448":{"tf":2.449489742783178},"450":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"515":{"tf":1.0},"522":{"tf":1.4142135623730951},"526":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"553":{"tf":1.0},"566":{"tf":1.0},"573":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"61":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"374":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"d":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"319":{"tf":1.0},"342":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":7,"docs":{"190":{"tf":1.0},"268":{"tf":1.0},"498":{"tf":1.0},"64":{"tf":1.0},"74":{"tf":1.0},"96":{"tf":1.0},"99":{"tf":1.0}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":14,"docs":{"111":{"tf":1.0},"112":{"tf":1.0},"211":{"tf":1.0},"256":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.0},"420":{"tf":1.0},"470":{"tf":1.0},"521":{"tf":1.0},"530":{"tf":1.0}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"526":{"tf":1.0}}}},"t":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"(":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"0":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"419":{"tf":1.4142135623730951}}},"1":{"df":1,"docs":{"419":{"tf":1.0}}},">":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"292":{"tf":3.1622776601683795},"421":{"tf":1.4142135623730951}},"u":{"df":0,"docs":{},"r":{"df":147,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"147":{"tf":1.0},"15":{"tf":1.7320508075688772},"156":{"tf":2.8284271247461903},"16":{"tf":1.7320508075688772},"167":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":1.0},"171":{"tf":2.449489742783178},"18":{"tf":1.0},"188":{"tf":1.0},"19":{"tf":1.0},"199":{"tf":2.6457513110645907},"204":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.0},"217":{"tf":2.6457513110645907},"218":{"tf":2.8284271247461903},"221":{"tf":2.0},"246":{"tf":2.449489742783178},"252":{"tf":1.7320508075688772},"258":{"tf":1.0},"268":{"tf":2.449489742783178},"271":{"tf":1.0},"278":{"tf":1.4142135623730951},"284":{"tf":2.0},"292":{"tf":2.23606797749979},"294":{"tf":1.0},"307":{"tf":1.7320508075688772},"308":{"tf":1.0},"310":{"tf":1.0},"312":{"tf":1.0},"318":{"tf":1.4142135623730951},"320":{"tf":1.0},"322":{"tf":1.0},"325":{"tf":1.4142135623730951},"328":{"tf":3.0},"331":{"tf":1.4142135623730951},"334":{"tf":1.0},"336":{"tf":5.830951894845301},"338":{"tf":2.23606797749979},"340":{"tf":1.7320508075688772},"341":{"tf":4.123105625617661},"342":{"tf":2.449489742783178},"343":{"tf":2.0},"347":{"tf":2.0},"37":{"tf":1.7320508075688772},"370":{"tf":2.6457513110645907},"374":{"tf":1.4142135623730951},"38":{"tf":1.0},"380":{"tf":5.916079783099616},"383":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"40":{"tf":2.23606797749979},"41":{"tf":3.7416573867739413},"415":{"tf":1.0},"417":{"tf":1.4142135623730951},"419":{"tf":1.4142135623730951},"42":{"tf":1.0},"421":{"tf":2.0},"423":{"tf":1.0},"426":{"tf":1.0},"431":{"tf":1.0},"433":{"tf":1.0},"44":{"tf":1.0},"45":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":2.6457513110645907},"458":{"tf":2.0},"46":{"tf":1.7320508075688772},"460":{"tf":1.4142135623730951},"47":{"tf":1.7320508075688772},"484":{"tf":1.0},"485":{"tf":1.0},"486":{"tf":1.0},"489":{"tf":2.0},"49":{"tf":1.4142135623730951},"490":{"tf":1.4142135623730951},"494":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"499":{"tf":1.4142135623730951},"500":{"tf":1.0},"501":{"tf":1.4142135623730951},"502":{"tf":1.0},"508":{"tf":1.0},"51":{"tf":1.7320508075688772},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.4142135623730951},"516":{"tf":1.4142135623730951},"517":{"tf":1.0},"518":{"tf":1.0},"519":{"tf":1.4142135623730951},"52":{"tf":1.0},"522":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.4142135623730951},"53":{"tf":1.4142135623730951},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.4142135623730951},"534":{"tf":1.4142135623730951},"535":{"tf":1.0},"536":{"tf":1.0},"537":{"tf":1.4142135623730951},"54":{"tf":1.4142135623730951},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"55":{"tf":1.0},"560":{"tf":1.0},"57":{"tf":2.0},"578":{"tf":1.4142135623730951},"579":{"tf":1.7320508075688772},"58":{"tf":1.0},"580":{"tf":1.4142135623730951},"584":{"tf":1.0},"59":{"tf":1.4142135623730951},"596":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.0},"600":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}},"e":{"'":{"df":2,"docs":{"347":{"tf":1.0},"457":{"tf":1.0}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"1":{"9":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":3,"docs":{"284":{"tf":1.0},"336":{"tf":1.0},"417":{"tf":1.0}}}}}},"df":0,"docs":{}},"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":11,"docs":{"199":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"309":{"tf":1.0},"328":{"tf":1.7320508075688772},"370":{"tf":2.23606797749979},"375":{"tf":1.0},"380":{"tf":1.4142135623730951},"579":{"tf":1.0},"580":{"tf":1.4142135623730951}}}}}}}}},"=":{"(":{"_":{"_":{"0":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":1.0}}}}},"s":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"(":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"380":{"tf":2.0}}},"df":0,"docs":{}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"_":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"_":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"df":1,"docs":{"380":{"tf":1.0}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"(":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{")":{")":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"_":{"df":1,"docs":{"380":{"tf":2.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"185":{"tf":1.0},"189":{"tf":1.0}}}},"df":0,"docs":{}}}}}},":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"d":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"308":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"310":{"tf":1.7320508075688772},"380":{"tf":1.0},"440":{"tf":4.123105625617661}},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"383":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"383":{"tf":1.0}},"l":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"383":{"tf":1.0}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.0}}}}},"{":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"370":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"311":{"tf":1.4142135623730951},"312":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":2.449489742783178}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"<":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"440":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}}},"{":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"1":{"df":1,"docs":{"419":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"[":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"@":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"[":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"@":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"e":{"d":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"<":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}}}}}}}}}}},"g":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":8,"docs":{"217":{"tf":1.0},"218":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"408":{"tf":1.7320508075688772},"410":{"tf":1.0},"460":{"tf":1.0},"508":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"182":{"tf":1.0},"400":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"b":{"a":{"df":0,"docs":{},"g":{"df":4,"docs":{"136":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"df":1,"docs":{"599":{"tf":1.0}},"e":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":1,"docs":{"417":{"tf":1.0}}}}}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"172":{"tf":1.0},"209":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"538":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"153":{"tf":1.0},"9":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":5,"docs":{"246":{"tf":1.0},"383":{"tf":1.0},"469":{"tf":1.0},"552":{"tf":1.0},"599":{"tf":1.0}}}}},"c":{"'":{"d":{"df":6,"docs":{"241":{"tf":1.0},"265":{"tf":1.0},"347":{"tf":1.0},"463":{"tf":1.0},"65":{"tf":1.4142135623730951},"71":{"tf":1.0}}},"df":0,"docs":{}},"_":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"a":{"df":1,"docs":{"218":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"c":{"df":1,"docs":{"214":{"tf":1.4142135623730951}}},"d":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"504":{"tf":2.0}}},"df":5,"docs":{"209":{"tf":1.0},"218":{"tf":2.23606797749979},"239":{"tf":1.0},"431":{"tf":1.0},"65":{"tf":1.0}},"e":{"d":{"df":3,"docs":{"127":{"tf":1.0},"248":{"tf":1.0},"250":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"d":{"b":{"df":9,"docs":{"156":{"tf":1.0},"284":{"tf":2.6457513110645907},"289":{"tf":1.0},"446":{"tf":1.0},"448":{"tf":2.6457513110645907},"452":{"tf":1.0},"453":{"tf":1.0},"543":{"tf":1.0},"82":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"c":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"n":{"df":1,"docs":{"573":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"@":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":0,"docs":{},"}":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":1,"docs":{"440":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":36,"docs":{"114":{"tf":1.0},"119":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.4142135623730951},"201":{"tf":1.0},"211":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"27":{"tf":1.0},"319":{"tf":1.0},"321":{"tf":1.0},"33":{"tf":1.4142135623730951},"336":{"tf":1.0},"349":{"tf":1.4142135623730951},"359":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.4142135623730951},"385":{"tf":1.0},"393":{"tf":1.0},"421":{"tf":1.0},"47":{"tf":1.4142135623730951},"486":{"tf":1.0},"492":{"tf":1.0},"502":{"tf":1.0},"513":{"tf":1.0},"515":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":2.0},"576":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}},"y":{".":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"470":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"169":{"tf":1.0}},"e":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"167":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}}}},"df":34,"docs":{"129":{"tf":1.0},"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"168":{"tf":1.0},"2":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"245":{"tf":1.0},"246":{"tf":1.0},"251":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"307":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.4142135623730951},"328":{"tf":1.0},"347":{"tf":1.0},"363":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":1.7320508075688772},"431":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"46":{"tf":1.0},"522":{"tf":1.0},"526":{"tf":1.0},"529":{"tf":1.4142135623730951},"560":{"tf":1.0},"599":{"tf":1.4142135623730951},"65":{"tf":1.7320508075688772},"79":{"tf":1.7320508075688772},"84":{"tf":1.0}}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":5,"docs":{"156":{"tf":1.4142135623730951},"415":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0}},"l":{"/":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"421":{"tf":1.0},"423":{"tf":1.0}}}}},"df":0,"docs":{}},"q":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"427":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":1,"docs":{"178":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{"df":1,"docs":{"172":{"tf":1.0}}},"df":0,"docs":{}}}},"v":{"df":0,"docs":{},"e":{"df":40,"docs":{"152":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"179":{"tf":1.0},"19":{"tf":1.0},"191":{"tf":1.4142135623730951},"196":{"tf":1.0},"201":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"261":{"tf":1.0},"27":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"322":{"tf":1.0},"33":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.7320508075688772},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"401":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":1.0},"442":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.0},"485":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"542":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.0},"58":{"tf":1.0},"9":{"tf":1.0},"99":{"tf":1.0}},"n":{"df":7,"docs":{"10":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"276":{"tf":1.0},"417":{"tf":1.0},"478":{"tf":1.0},"545":{"tf":1.0}}},"r":{"df":1,"docs":{"469":{"tf":1.0}}}}}},"l":{"a":{"d":{"df":2,"docs":{"113":{"tf":1.0},"51":{"tf":1.0}}},"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"217":{"tf":1.0},"460":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"b":{"a":{"df":0,"docs":{},"l":{"df":7,"docs":{"209":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"336":{"tf":1.7320508075688772},"504":{"tf":1.0},"507":{"tf":1.0},"62":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"433":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"u":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"8":{"0":{":":{"1":{"9":{"df":1,"docs":{"397":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"2":{"7":{":":{"5":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"5":{"1":{"9":{":":{"1":{"2":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"4":{"8":{":":{"9":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"2":{":":{"1":{"6":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"a":{"df":0,"docs":{},"l":{"df":19,"docs":{"11":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.0},"27":{"tf":1.4142135623730951},"276":{"tf":1.0},"29":{"tf":1.4142135623730951},"3":{"tf":1.0},"40":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"437":{"tf":1.0},"458":{"tf":1.0},"487":{"tf":1.0},"496":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"576":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"b":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{}},"df":46,"docs":{"127":{"tf":1.0},"139":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"18":{"tf":1.4142135623730951},"187":{"tf":1.7320508075688772},"203":{"tf":1.0},"209":{"tf":1.7320508075688772},"221":{"tf":1.0},"226":{"tf":1.0},"24":{"tf":1.0},"250":{"tf":1.0},"270":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.4142135623730951},"309":{"tf":1.0},"358":{"tf":1.4142135623730951},"38":{"tf":1.0},"389":{"tf":1.7320508075688772},"392":{"tf":1.0},"394":{"tf":1.0},"414":{"tf":1.0},"425":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"497":{"tf":1.0},"506":{"tf":1.0},"51":{"tf":1.4142135623730951},"517":{"tf":1.0},"53":{"tf":1.0},"532":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0},"559":{"tf":1.4142135623730951},"573":{"tf":1.0},"599":{"tf":1.4142135623730951},"60":{"tf":1.0},"9":{"tf":1.4142135623730951}},"e":{"df":15,"docs":{"112":{"tf":1.0},"130":{"tf":1.0},"140":{"tf":1.0},"169":{"tf":1.0},"221":{"tf":1.0},"245":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.0},"417":{"tf":1.0},"457":{"tf":1.0},"478":{"tf":1.0}}},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":2,"docs":{"230":{"tf":1.0},"231":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"54":{"tf":1.0}}}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"e":{"df":2,"docs":{"221":{"tf":1.0},"309":{"tf":1.0}}}},"o":{"d":{"df":32,"docs":{"110":{"tf":1.0},"190":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"225":{"tf":1.0},"231":{"tf":1.0},"235":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"271":{"tf":1.0},"309":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"475":{"tf":1.0},"506":{"tf":1.0},"511":{"tf":1.0},"528":{"tf":1.4142135623730951},"529":{"tf":1.0},"559":{"tf":1.0},"56":{"tf":1.4142135623730951},"57":{"tf":1.4142135623730951}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":3,"docs":{"257":{"tf":1.0},"284":{"tf":1.4142135623730951},"555":{"tf":1.0}}}},"k":{"df":1,"docs":{"156":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"370":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"a":{"df":1,"docs":{"240":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":6,"docs":{"153":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"340":{"tf":1.0},"538":{"tf":1.0}}}},"o":{"df":0,"docs":{},"x":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}},"r":{"a":{"b":{"df":3,"docs":{"391":{"tf":1.0},"456":{"tf":1.0},"526":{"tf":1.0}}},"c":{"df":0,"docs":{},"e":{"'":{"df":7,"docs":{"41":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0}}},"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"b":{"a":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"157":{"tf":1.0}}},"df":0,"docs":{}}},"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"489":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":49,"docs":{"156":{"tf":2.6457513110645907},"192":{"tf":1.0},"206":{"tf":1.0},"214":{"tf":1.7320508075688772},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"226":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"429":{"tf":1.0},"431":{"tf":1.7320508075688772},"435":{"tf":1.4142135623730951},"437":{"tf":1.0},"438":{"tf":1.0},"440":{"tf":1.4142135623730951},"444":{"tf":1.0},"446":{"tf":1.0},"448":{"tf":2.6457513110645907},"452":{"tf":1.0},"453":{"tf":1.0},"454":{"tf":1.0},"456":{"tf":2.8284271247461903},"457":{"tf":2.449489742783178},"458":{"tf":2.449489742783178},"460":{"tf":1.0},"462":{"tf":1.7320508075688772},"463":{"tf":1.0},"464":{"tf":1.4142135623730951},"465":{"tf":1.0},"470":{"tf":1.7320508075688772},"474":{"tf":1.4142135623730951},"475":{"tf":1.0},"511":{"tf":1.4142135623730951},"529":{"tf":1.4142135623730951},"543":{"tf":2.0},"65":{"tf":1.0},"67":{"tf":1.0},"79":{"tf":1.4142135623730951},"81":{"tf":1.4142135623730951},"82":{"tf":1.7320508075688772},"9":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"111":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"61":{"tf":1.0}}}},"n":{"d":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"h":{"df":4,"docs":{"12":{"tf":1.0},"470":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"542":{"tf":1.0}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"z":{"df":1,"docs":{"539":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"p":{"df":3,"docs":{"246":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":13,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"209":{"tf":1.0},"211":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.0},"257":{"tf":1.0},"259":{"tf":1.0},"311":{"tf":1.0},"358":{"tf":1.0},"599":{"tf":1.4142135623730951},"65":{"tf":1.0},"77":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":5,"docs":{"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"560":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"469":{"tf":1.0}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"79":{"tf":1.0}}},"df":0,"docs":{}}}}}},"t":{"df":1,"docs":{"258":{"tf":1.0}}}},"w":{"df":1,"docs":{"389":{"tf":1.0}}}},"i":{"d":{"df":2,"docs":{"469":{"tf":2.0},"470":{"tf":1.0}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"599":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":7,"docs":{"1":{"tf":1.0},"12":{"tf":1.0},"15":{"tf":1.0},"16":{"tf":1.4142135623730951},"3":{"tf":1.4142135623730951},"470":{"tf":1.0},"557":{"tf":1.0}}}},"w":{"df":8,"docs":{"134":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"28":{"tf":1.0},"41":{"tf":1.0},"53":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}}}},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"199":{"tf":1.0}}}},"df":0,"docs":{}}}},"t":{";":{"b":{"df":1,"docs":{"12":{"tf":1.0}}},"c":{"df":1,"docs":{"12":{"tf":1.0}}},"d":{"df":1,"docs":{"12":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":1,"docs":{"539":{"tf":1.4142135623730951}}},"u":{"a":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":8,"docs":{"198":{"tf":1.0},"328":{"tf":1.4142135623730951},"410":{"tf":1.0},"422":{"tf":1.0},"456":{"tf":1.4142135623730951},"469":{"tf":1.0},"529":{"tf":1.0},"76":{"tf":1.0}}}}}},"d":{"df":4,"docs":{"268":{"tf":2.0},"270":{"tf":1.0},"272":{"tf":1.0},"565":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":4,"docs":{"209":{"tf":1.0},"48":{"tf":1.0},"486":{"tf":1.0},"599":{"tf":1.0}}}}},"i":{"d":{"a":{"df":0,"docs":{},"n":{"c":{"df":4,"docs":{"156":{"tf":1.0},"203":{"tf":1.0},"363":{"tf":1.0},"472":{"tf":1.0}}},"df":0,"docs":{}}},"df":4,"docs":{"522":{"tf":1.0},"526":{"tf":1.0},"572":{"tf":1.0},"64":{"tf":1.0}}},"df":1,"docs":{"192":{"tf":1.0}}},"r":{"df":0,"docs":{},"u":{"df":1,"docs":{"259":{"tf":1.0}}}},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}}},"h":{"a":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"367":{"tf":1.0},"417":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"431":{"tf":1.0},"79":{"tf":1.0}},"i":{"df":1,"docs":{"457":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{}}},"df":1,"docs":{"380":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"f":{"df":4,"docs":{"200":{"tf":1.0},"300":{"tf":1.0},"480":{"tf":1.4142135623730951},"53":{"tf":1.0}}},"v":{"df":1,"docs":{"276":{"tf":1.0}}}},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"516":{"tf":1.0}}}}}},"n":{"d":{"df":12,"docs":{"188":{"tf":1.0},"235":{"tf":1.0},"250":{"tf":1.0},"272":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"367":{"tf":1.4142135623730951},"433":{"tf":1.0},"440":{"tf":1.0},"453":{"tf":1.0},"517":{"tf":1.0}},"i":{"df":1,"docs":{"397":{"tf":1.0}}},"l":{"df":18,"docs":{"110":{"tf":1.0},"125":{"tf":1.0},"156":{"tf":1.4142135623730951},"175":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.4142135623730951},"309":{"tf":1.4142135623730951},"320":{"tf":1.0},"336":{"tf":2.8284271247461903},"340":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"412":{"tf":1.0},"418":{"tf":1.0},"470":{"tf":1.4142135623730951},"57":{"tf":1.0}},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"268":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}},".":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"d":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":2,"docs":{"309":{"tf":1.0},"320":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},":":{":":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"320":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"292":{"tf":1.0}}},"(":{"df":0,"docs":{},"s":{")":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},".":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":5,"docs":{"232":{"tf":1.4142135623730951},"268":{"tf":2.0},"292":{"tf":3.4641016151377544},"408":{"tf":1.0},"538":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":2.6457513110645907}}}}}}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.449489742783178}}}}}}}}}}}},"df":0,"docs":{},"g":{"df":7,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"189":{"tf":1.0},"200":{"tf":1.0},"282":{"tf":1.0},"284":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":28,"docs":{"140":{"tf":1.0},"156":{"tf":1.0},"165":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.0},"178":{"tf":1.0},"217":{"tf":1.0},"234":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"309":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"408":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.0},"46":{"tf":1.0},"483":{"tf":1.0},"502":{"tf":1.4142135623730951},"509":{"tf":1.0},"527":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"8":{"tf":1.0}}}},"i":{"df":27,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"188":{"tf":1.0},"21":{"tf":1.0},"214":{"tf":1.0},"221":{"tf":1.4142135623730951},"232":{"tf":1.0},"234":{"tf":1.0},"246":{"tf":1.0},"257":{"tf":1.4142135623730951},"259":{"tf":1.7320508075688772},"268":{"tf":1.7320508075688772},"311":{"tf":1.0},"315":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.4142135623730951},"389":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.4142135623730951},"529":{"tf":1.0},"530":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.7320508075688772},"59":{"tf":1.0},"82":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"54":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"522":{"tf":1.0},"538":{"tf":1.0}}}}}}},"r":{"d":{"df":29,"docs":{"110":{"tf":1.4142135623730951},"136":{"tf":1.0},"156":{"tf":3.0},"171":{"tf":1.0},"175":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"248":{"tf":1.0},"251":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"340":{"tf":1.0},"349":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.4142135623730951},"507":{"tf":1.0},"51":{"tf":1.0},"53":{"tf":1.0},"533":{"tf":1.0},"575":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":10,"docs":{"156":{"tf":1.0},"195":{"tf":1.0},"251":{"tf":1.0},"278":{"tf":1.0},"389":{"tf":1.0},"418":{"tf":1.0},"436":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.4142135623730951},"503":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"515":{"tf":1.0}}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":6,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"344":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"df":2,"docs":{"278":{"tf":1.0},"367":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"17":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":1,"docs":{"419":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"200":{"tf":1.0},"284":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":3,"docs":{"156":{"tf":1.4142135623730951},"193":{"tf":1.0},"258":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":29,"docs":{"110":{"tf":1.0},"112":{"tf":1.0},"116":{"tf":1.0},"129":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"178":{"tf":1.0},"190":{"tf":1.0},"225":{"tf":1.0},"231":{"tf":1.0},"237":{"tf":1.0},"245":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"289":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"357":{"tf":1.4142135623730951},"359":{"tf":1.4142135623730951},"367":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"421":{"tf":1.0},"436":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.4142135623730951},"46":{"tf":1.0},"462":{"tf":1.0},"538":{"tf":1.0},"64":{"tf":1.0}},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"451":{"tf":1.0},"488":{"tf":1.0}}}},"df":0,"docs":{}}}},"z":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"319":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":2,"docs":{"292":{"tf":1.4142135623730951},"470":{"tf":1.0}},"e":{"'":{"d":{"df":1,"docs":{"470":{"tf":1.0}}},"df":19,"docs":{"178":{"tf":1.4142135623730951},"195":{"tf":1.0},"196":{"tf":1.0},"198":{"tf":1.0},"221":{"tf":1.0},"230":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.7320508075688772},"284":{"tf":1.7320508075688772},"300":{"tf":1.0},"510":{"tf":1.0},"528":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.4142135623730951},"73":{"tf":1.7320508075688772},"74":{"tf":1.0},"76":{"tf":1.4142135623730951},"84":{"tf":1.7320508075688772},"86":{"tf":1.0}},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"209":{"tf":1.0},"268":{"tf":1.4142135623730951}}}}},"a":{"d":{"df":4,"docs":{"359":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.0},"460":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"552":{"tf":1.0}}}}}},"p":{"df":6,"docs":{"136":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"250":{"tf":1.0},"251":{"tf":1.4142135623730951},"380":{"tf":1.0}}},"r":{"d":{"df":7,"docs":{"217":{"tf":1.0},"284":{"tf":1.0},"287":{"tf":1.0},"307":{"tf":1.0},"357":{"tf":1.0},"428":{"tf":1.0},"74":{"tf":1.0}}},"df":3,"docs":{"245":{"tf":1.0},"268":{"tf":1.0},"538":{"tf":1.0}},"t":{"b":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"457":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"t":{"df":2,"docs":{"276":{"tf":1.0},"278":{"tf":1.0}}},"v":{"df":0,"docs":{},"i":{"df":1,"docs":{"189":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"462":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"347":{"tf":1.0},"349":{"tf":1.4142135623730951}}}}}}}}}}},"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"258":{"tf":1.0}}},"df":0,"docs":{}},"l":{"d":{"df":4,"docs":{"268":{"tf":2.0},"421":{"tf":1.4142135623730951},"555":{"tf":1.0},"564":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}},"p":{"df":59,"docs":{"110":{"tf":1.0},"12":{"tf":1.4142135623730951},"14":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.4142135623730951},"16":{"tf":1.0},"168":{"tf":1.4142135623730951},"178":{"tf":1.7320508075688772},"181":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"23":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.7320508075688772},"268":{"tf":1.0},"284":{"tf":2.0},"286":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.4142135623730951},"33":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"37":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"374":{"tf":1.0},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"389":{"tf":1.4142135623730951},"391":{"tf":1.7320508075688772},"397":{"tf":1.0},"434":{"tf":1.0},"445":{"tf":1.0},"47":{"tf":1.0},"472":{"tf":1.0},"478":{"tf":1.0},"485":{"tf":1.0},"493":{"tf":1.0},"496":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":2.23606797749979},"544":{"tf":1.4142135623730951},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.4142135623730951},"600":{"tf":1.0},"601":{"tf":1.0},"64":{"tf":1.0},"87":{"tf":1.0},"9":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"156":{"tf":2.449489742783178},"292":{"tf":1.4142135623730951},"368":{"tf":1.0},"370":{"tf":1.4142135623730951},"372":{"tf":1.0},"374":{"tf":1.0}}}}}},"n":{"c":{"df":5,"docs":{"217":{"tf":1.0},"318":{"tf":1.0},"322":{"tf":1.0},"377":{"tf":1.0},"417":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":1,"docs":{"245":{"tf":1.0}},"e":{"'":{"df":1,"docs":{"539":{"tf":1.0}}},"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"271":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":51,"docs":{"10":{"tf":1.0},"122":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"159":{"tf":1.0},"16":{"tf":1.4142135623730951},"160":{"tf":1.0},"169":{"tf":1.0},"190":{"tf":1.0},"2":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"24":{"tf":1.0},"249":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"322":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"329":{"tf":1.0},"336":{"tf":1.7320508075688772},"38":{"tf":1.0},"380":{"tf":1.4142135623730951},"381":{"tf":1.0},"389":{"tf":1.0},"390":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.4142135623730951},"398":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.4142135623730951},"449":{"tf":1.0},"457":{"tf":1.0},"486":{"tf":1.0},"491":{"tf":1.0},"498":{"tf":1.4142135623730951},"499":{"tf":1.0},"511":{"tf":1.0},"538":{"tf":1.4142135623730951},"551":{"tf":1.0},"56":{"tf":1.4142135623730951},"57":{"tf":1.0},"583":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.0},"96":{"tf":1.0},"99":{"tf":1.0}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":4,"docs":{"300":{"tf":1.4142135623730951},"328":{"tf":1.0},"370":{"tf":1.0},"448":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"300":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"321":{"tf":1.0}}}}}}}},"i":{"c":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"125":{"tf":1.0}}}}},"df":0,"docs":{}},"d":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"350":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"230":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":12,"docs":{"131":{"tf":1.0},"134":{"tf":1.0},"137":{"tf":1.0},"143":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"394":{"tf":1.0},"431":{"tf":1.0},"469":{"tf":1.0},"558":{"tf":1.4142135623730951},"599":{"tf":1.0},"76":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"119":{"tf":1.0},"156":{"tf":1.0},"214":{"tf":1.0},"292":{"tf":1.0},"450":{"tf":1.0},"9":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"61":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"125":{"tf":1.0},"129":{"tf":1.7320508075688772},"336":{"tf":1.0},"414":{"tf":1.0}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":4,"docs":{"164":{"tf":1.0},"28":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0}}}}}}}}},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"268":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0}}}}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"41":{"tf":1.0},"515":{"tf":1.0},"533":{"tf":1.4142135623730951},"547":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"547":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"df":4,"docs":{"168":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.0},"380":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"417":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951}}}}}}},"t":{"df":15,"docs":{"209":{"tf":1.0},"214":{"tf":1.0},"244":{"tf":1.0},"25":{"tf":1.0},"321":{"tf":1.0},"351":{"tf":1.0},"408":{"tf":1.0},"418":{"tf":1.0},"429":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":2.449489742783178},"539":{"tf":1.7320508075688772},"564":{"tf":1.0}}}},"m":{"df":0,"docs":{},"m":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}},"o":{"b":{"b":{"df":0,"docs":{},"i":{"df":1,"docs":{"213":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"l":{"d":{"df":8,"docs":{"209":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"237":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":1.0},"4":{"tf":1.0},"421":{"tf":1.4142135623730951}}},"df":0,"docs":{},"e":{"df":3,"docs":{"258":{"tf":1.0},"300":{"tf":1.0},"458":{"tf":1.0}}},"i":{"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"230":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"/":{"a":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"n":{"/":{".":{"c":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":2,"docs":{"268":{"tf":1.0},"284":{"tf":4.358898943540674}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{".":{"c":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"246":{"tf":1.0}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"61":{"tf":1.0}}}}},"o":{"d":{"df":1,"docs":{"358":{"tf":1.0}}},"df":0,"docs":{},"k":{"df":3,"docs":{"457":{"tf":1.0},"546":{"tf":1.0},"61":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"df":10,"docs":{"140":{"tf":1.0},"188":{"tf":1.0},"196":{"tf":1.4142135623730951},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"358":{"tf":1.0},"37":{"tf":1.0},"394":{"tf":1.0},"9":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"199":{"tf":1.0},"61":{"tf":1.0}}}}}}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"67":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"df":5,"docs":{"168":{"tf":1.0},"200":{"tf":1.0},"300":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{":":{"/":{"/":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"w":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{".":{"a":{"df":0,"docs":{},"p":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"221":{"tf":2.23606797749979}}}}}}}},"df":17,"docs":{"156":{"tf":1.4142135623730951},"167":{"tf":1.0},"169":{"tf":1.7320508075688772},"195":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.4142135623730951},"231":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.7320508075688772},"292":{"tf":1.7320508075688772},"298":{"tf":1.0},"300":{"tf":3.1622776601683795},"302":{"tf":1.7320508075688772},"303":{"tf":1.0},"370":{"tf":1.0}},"s":{":":{"/":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"365":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"279":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"o":{"c":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"365":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"349":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"/":{"b":{"9":{"df":0,"docs":{},"f":{"c":{"c":{"d":{"df":0,"docs":{},"e":{"0":{"0":{"df":0,"docs":{},"e":{"7":{"3":{"5":{"6":{"a":{"5":{"df":0,"docs":{},"e":{"3":{"3":{"6":{"6":{"6":{"5":{"a":{"7":{"df":0,"docs":{},"e":{"4":{"8":{"2":{"d":{"4":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"4":{"3":{"9":{"d":{"7":{"1":{"4":{"/":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"c":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"c":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"#":{"df":0,"docs":{},"l":{"1":{"2":{"1":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"2":{"6":{"9":{"1":{"b":{"a":{"b":{"9":{"2":{"8":{"2":{"3":{"a":{"8":{"5":{"9":{"5":{"d":{"1":{"d":{"4":{"5":{"6":{"df":0,"docs":{},"e":{"d":{"5":{"df":0,"docs":{},"f":{"a":{"9":{"6":{"8":{"3":{"6":{"4":{"1":{"d":{"7":{"6":{"#":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"279":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"d":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":1,"docs":{"279":{"tf":1.7320508075688772}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"196":{"tf":1.0},"380":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":0,"docs":{},"v":{"/":{"df":0,"docs":{},"y":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":1,"docs":{"331":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"365":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"/":{"1":{"3":{"7":{"0":{"1":{"4":{"3":{"0":{"2":{"2":{"8":{"0":{"1":{"8":{"4":{"6":{"2":{"7":{"5":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"5":{"7":{"2":{"6":{"0":{"5":{"6":{"7":{"3":{"8":{"8":{"1":{"7":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{},"j":{"c":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"/":{"1":{"3":{"5":{"9":{"8":{"2":{"0":{"4":{"3":{"1":{"1":{"5":{"1":{"2":{"6":{"7":{"8":{"4":{"3":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":2,"docs":{"302":{"tf":1.0},"442":{"tf":1.0}}}},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"'":{"df":1,"docs":{"503":{"tf":1.0}}},":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"504":{"tf":1.0}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"502":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"503":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"504":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":4,"docs":{"502":{"tf":1.7320508075688772},"503":{"tf":2.0},"504":{"tf":2.23606797749979},"511":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"15":{"tf":1.0},"59":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"217":{"tf":1.0},"284":{"tf":1.0}}}},"d":{"df":0,"docs":{},"r":{"df":2,"docs":{"139":{"tf":1.0},"380":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":1,"docs":{"431":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"40":{"tf":1.0}}}}},"y":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":4,"docs":{"156":{"tf":1.4142135623730951},"466":{"tf":1.0},"469":{"tf":1.0},"473":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":1,"docs":{"470":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.7320508075688772}}}}}}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}}}}}},"i":{"'":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{},"m":{"df":5,"docs":{"281":{"tf":1.0},"296":{"tf":1.0},"34":{"tf":1.0},"506":{"tf":1.0},"599":{"tf":1.0}}},"v":{"df":4,"docs":{"198":{"tf":1.0},"287":{"tf":1.0},"462":{"tf":1.0},"599":{"tf":1.0}}}},".":{"df":7,"docs":{"154":{"tf":1.0},"272":{"tf":1.0},"336":{"tf":1.0},"417":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0}}},"/":{"df":0,"docs":{},"o":{"df":17,"docs":{"209":{"tf":1.0},"218":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"3":{"tf":1.0},"331":{"tf":1.0},"408":{"tf":1.7320508075688772},"412":{"tf":1.0},"487":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"517":{"tf":1.4142135623730951},"522":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":2.0},"8":{"tf":1.0}}}},"6":{"4":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":0,"docs":{}},"d":{"df":12,"docs":{"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"453":{"tf":1.4142135623730951},"522":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0}},"e":{"'":{"df":1,"docs":{"453":{"tf":1.0}}},"/":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"542":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"a":{"df":26,"docs":{"157":{"tf":1.4142135623730951},"16":{"tf":1.7320508075688772},"24":{"tf":1.7320508075688772},"25":{"tf":1.4142135623730951},"26":{"tf":1.0},"268":{"tf":1.4142135623730951},"3":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.7320508075688772},"39":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.0},"46":{"tf":1.0},"487":{"tf":1.0},"49":{"tf":1.0},"497":{"tf":1.0},"50":{"tf":1.0},"53":{"tf":1.0},"54":{"tf":1.4142135623730951},"55":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"560":{"tf":1.0},"59":{"tf":1.0},"79":{"tf":1.0}},"l":{"df":11,"docs":{"138":{"tf":1.0},"146":{"tf":1.0},"16":{"tf":1.0},"162":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"29":{"tf":1.0},"36":{"tf":1.0},"42":{"tf":1.0},"421":{"tf":1.0},"450":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"276":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":9,"docs":{"209":{"tf":1.7320508075688772},"213":{"tf":1.0},"284":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.0},"347":{"tf":1.0},"431":{"tf":1.7320508075688772},"526":{"tf":1.4142135623730951},"61":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}},"df":1,"docs":{"470":{"tf":1.0}}}}},"l":{"df":2,"docs":{"10":{"tf":1.0},"328":{"tf":1.7320508075688772}}},"x":{"df":1,"docs":{"380":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"190":{"tf":1.0},"199":{"tf":1.0},"336":{"tf":1.4142135623730951}}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"259":{"tf":1.4142135623730951}}}},"m":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"189":{"tf":1.0},"217":{"tf":2.23606797749979}},"i":{"df":0,"docs":{},"n":{"df":5,"docs":{"259":{"tf":1.4142135623730951},"380":{"tf":1.0},"508":{"tf":1.4142135623730951},"546":{"tf":1.0},"8":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"df":8,"docs":{"169":{"tf":1.0},"209":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"309":{"tf":1.0},"418":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"328":{"tf":1.0},"417":{"tf":1.0}}}}},"p":{"a":{"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"153":{"tf":1.0},"32":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.4142135623730951},"343":{"tf":1.4142135623730951},"376":{"tf":1.0},"470":{"tf":1.4142135623730951},"496":{"tf":1.4142135623730951},"54":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"127":{"tf":1.0},"196":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951}}}},"l":{"<":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.0}}},"t":{"df":2,"docs":{"418":{"tf":1.0},"421":{"tf":1.0}}}},"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"df":24,"docs":{"189":{"tf":1.0},"190":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":1.0},"204":{"tf":1.0},"221":{"tf":1.0},"268":{"tf":1.7320508075688772},"292":{"tf":1.7320508075688772},"294":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":2.23606797749979},"336":{"tf":1.0},"347":{"tf":1.7320508075688772},"370":{"tf":1.4142135623730951},"421":{"tf":1.0},"440":{"tf":7.0710678118654755},"458":{"tf":1.4142135623730951},"460":{"tf":1.0},"538":{"tf":1.4142135623730951},"578":{"tf":1.0},"579":{"tf":1.7320508075688772},"580":{"tf":1.7320508075688772}},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":52,"docs":{"141":{"tf":1.0},"143":{"tf":1.0},"156":{"tf":1.4142135623730951},"167":{"tf":1.4142135623730951},"190":{"tf":1.4142135623730951},"192":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.4142135623730951},"201":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"221":{"tf":2.6457513110645907},"223":{"tf":1.0},"224":{"tf":1.0},"276":{"tf":2.23606797749979},"278":{"tf":1.0},"292":{"tf":1.7320508075688772},"3":{"tf":1.0},"300":{"tf":2.23606797749979},"302":{"tf":1.0},"303":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":3.3166247903554},"340":{"tf":1.0},"347":{"tf":2.0},"370":{"tf":2.0},"380":{"tf":1.0},"389":{"tf":1.0},"399":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"450":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"504":{"tf":1.0},"51":{"tf":1.0},"515":{"tf":1.0},"517":{"tf":1.0},"560":{"tf":1.0},"570":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}}},"i":{"c":{"df":1,"docs":{"358":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"268":{"tf":1.0},"292":{"tf":1.0},"419":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"188":{"tf":1.0},"389":{"tf":1.0}}}}}}},"df":21,"docs":{"110":{"tf":1.0},"120":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"129":{"tf":1.0},"199":{"tf":1.0},"21":{"tf":1.0},"211":{"tf":1.0},"261":{"tf":1.0},"278":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.0},"470":{"tf":1.0},"51":{"tf":1.0},"522":{"tf":1.0},"539":{"tf":1.0},"57":{"tf":1.0},"62":{"tf":1.4142135623730951},"76":{"tf":1.0},"91":{"tf":1.0}}}},"s":{"df":1,"docs":{"218":{"tf":1.0}},"s":{"df":8,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"294":{"tf":1.0},"324":{"tf":1.0},"359":{"tf":1.0},"470":{"tf":1.0},"51":{"tf":1.0},"598":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"v":{"df":14,"docs":{"14":{"tf":1.0},"16":{"tf":1.4142135623730951},"17":{"tf":1.0},"181":{"tf":1.0},"209":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"37":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"54":{"tf":1.4142135623730951},"603":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.0}}}}}}},"n":{"/":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"a":{"c":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"16":{"tf":1.0}}}},"df":0,"docs":{}},"df":25,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"54":{"tf":1.0}}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"156":{"tf":1.0}}}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":21,"docs":{"156":{"tf":1.0},"213":{"tf":1.0},"22":{"tf":1.0},"261":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"392":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"41":{"tf":1.4142135623730951},"431":{"tf":1.0},"448":{"tf":1.0},"478":{"tf":1.0},"483":{"tf":1.0},"49":{"tf":1.0},"530":{"tf":1.0},"538":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0},"99":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":1,"docs":{"6":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"268":{"tf":1.0}},"p":{"a":{"df":0,"docs":{},"t":{"df":7,"docs":{"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"338":{"tf":1.0},"359":{"tf":1.0},"546":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":4,"docs":{"360":{"tf":1.0},"417":{"tf":1.0},"461":{"tf":1.0},"61":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"393":{"tf":1.0}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":6,"docs":{"223":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.4142135623730951},"470":{"tf":1.0},"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"41":{"tf":1.0},"516":{"tf":1.0},"534":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0}}}}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"e":{"df":3,"docs":{"235":{"tf":1.0},"380":{"tf":1.4142135623730951},"448":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":8,"docs":{"146":{"tf":1.0},"325":{"tf":1.0},"370":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.0},"517":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}}},"x":{"df":1,"docs":{"470":{"tf":1.0}}}},"i":{"c":{"df":3,"docs":{"155":{"tf":1.0},"336":{"tf":1.0},"470":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"245":{"tf":1.0},"417":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"v":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"u":{"df":4,"docs":{"199":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"116":{"tf":1.0},"431":{"tf":1.0}}}}}}}},"df":1,"docs":{"140":{"tf":1.0}},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"470":{"tf":1.0},"472":{"tf":1.0}}}},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"359":{"tf":1.0}}},"df":0,"docs":{}}}}},"o":{"!":{"(":{"\"":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.7320508075688772},"539":{"tf":1.0}},"r":{"df":0,"docs":{},"m":{"df":12,"docs":{"178":{"tf":1.0},"196":{"tf":1.0},"261":{"tf":1.0},"309":{"tf":1.0},"328":{"tf":1.0},"342":{"tf":2.0},"357":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"440":{"tf":1.0},"456":{"tf":1.0},"9":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":6,"docs":{"114":{"tf":1.0},"123":{"tf":1.0},"127":{"tf":2.0},"130":{"tf":1.0},"517":{"tf":1.0},"530":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"110":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"t":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"188":{"tf":1.0}}}}}},"df":7,"docs":{"217":{"tf":1.0},"328":{"tf":1.4142135623730951},"408":{"tf":1.0},"470":{"tf":1.4142135623730951},"502":{"tf":1.0},"538":{"tf":1.7320508075688772},"547":{"tf":1.0}}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"448":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"336":{"tf":2.0},"404":{"tf":2.449489742783178},"423":{"tf":1.0},"568":{"tf":1.0}}}}},"n":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"545":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"538":{"tf":1.0}}}}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"d":{"df":10,"docs":{"217":{"tf":1.0},"292":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"320":{"tf":1.0},"325":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"408":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}}}},"df":1,"docs":{"538":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":18,"docs":{"156":{"tf":1.0},"211":{"tf":1.4142135623730951},"271":{"tf":1.0},"309":{"tf":1.0},"406":{"tf":1.0},"408":{"tf":1.4142135623730951},"410":{"tf":1.7320508075688772},"412":{"tf":1.0},"413":{"tf":1.0},"431":{"tf":1.0},"538":{"tf":2.8284271247461903},"541":{"tf":1.0},"543":{"tf":1.4142135623730951},"544":{"tf":1.0},"545":{"tf":1.7320508075688772},"546":{"tf":1.4142135623730951},"547":{"tf":1.0},"548":{"tf":1.4142135623730951}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"268":{"tf":1.0},"284":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"110":{"tf":1.0}}}}},"t":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"245":{"tf":1.0},"284":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}}},"n":{"c":{"df":5,"docs":{"211":{"tf":1.0},"318":{"tf":1.7320508075688772},"421":{"tf":1.0},"422":{"tf":1.4142135623730951},"437":{"tf":1.0}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"522":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"380":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":26,"docs":{"110":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.0},"201":{"tf":1.0},"203":{"tf":1.0},"217":{"tf":1.0},"246":{"tf":1.0},"259":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"312":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":1.0},"422":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"55":{"tf":1.0},"82":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"152":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.4142135623730951},"169":{"tf":1.0},"2":{"tf":1.0},"24":{"tf":1.0},"38":{"tf":1.0},"485":{"tf":1.0},"489":{"tf":1.0},"559":{"tf":1.7320508075688772},"97":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":8,"docs":{"178":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"453":{"tf":1.0},"545":{"tf":1.4142135623730951},"546":{"tf":1.0},"547":{"tf":1.0}}}}}}}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"288":{"tf":1.0}}},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"294":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":22,"docs":{"110":{"tf":1.0},"156":{"tf":2.23606797749979},"192":{"tf":1.4142135623730951},"211":{"tf":1.0},"268":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"431":{"tf":1.0},"454":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"504":{"tf":1.7320508075688772},"507":{"tf":1.0},"526":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"599":{"tf":1.4142135623730951},"62":{"tf":1.4142135623730951},"72":{"tf":1.0},"74":{"tf":1.0}}}},"l":{"df":1,"docs":{"461":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"j":{"df":1,"docs":{"414":{"tf":1.0}}}}}},"n":{"d":{"df":3,"docs":{"408":{"tf":1.0},"51":{"tf":1.0},"558":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":2,"docs":{"110":{"tf":1.0},"331":{"tf":1.0}}},"t":{"df":2,"docs":{"460":{"tf":1.0},"54":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"11":{"tf":1.0},"6":{"tf":1.0}}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"177":{"tf":1.0},"257":{"tf":1.0},"296":{"tf":1.0},"561":{"tf":1.0}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"470":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"422":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":11,"docs":{"2":{"tf":1.0},"276":{"tf":1.0},"353":{"tf":1.0},"380":{"tf":1.4142135623730951},"399":{"tf":1.0},"440":{"tf":1.0},"49":{"tf":1.0},"556":{"tf":1.0},"561":{"tf":1.4142135623730951},"81":{"tf":1.0},"84":{"tf":1.0}}}}},"f":{"a":{"c":{"df":16,"docs":{"112":{"tf":1.0},"209":{"tf":1.7320508075688772},"231":{"tf":1.0},"300":{"tf":2.23606797749979},"315":{"tf":1.0},"336":{"tf":2.6457513110645907},"41":{"tf":1.0},"418":{"tf":1.0},"423":{"tf":1.4142135623730951},"426":{"tf":1.0},"456":{"tf":2.449489742783178},"457":{"tf":1.0},"513":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.0},"542":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"57":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"341":{"tf":1.0},"417":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"v":{"df":1,"docs":{"456":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":6,"docs":{"276":{"tf":1.0},"307":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.4142135623730951},"403":{"tf":1.0},"458":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":14,"docs":{"129":{"tf":1.0},"190":{"tf":1.0},"198":{"tf":1.0},"224":{"tf":1.0},"268":{"tf":1.0},"323":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"393":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"549":{"tf":1.0},"565":{"tf":1.0},"571":{"tf":1.0}},"e":{"df":0,"docs":{},"t":{"df":3,"docs":{"127":{"tf":1.0},"385":{"tf":1.0},"52":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"278":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"156":{"tf":1.0},"278":{"tf":1.0},"457":{"tf":1.0},"535":{"tf":1.0},"61":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":3,"docs":{"110":{"tf":1.0},"336":{"tf":1.0},"344":{"tf":1.4142135623730951}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"313":{"tf":1.0}}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":2,"docs":{"365":{"tf":1.0},"9":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"v":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"559":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}}}}}}}},"r":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"237":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":1,"docs":{"79":{"tf":1.0}}}}},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":9,"docs":{"2":{"tf":1.0},"218":{"tf":1.0},"308":{"tf":1.0},"360":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"513":{"tf":1.0},"79":{"tf":1.0}},"t":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"268":{"tf":1.4142135623730951},"380":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"171":{"tf":1.0},"218":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"516":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}},"y":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":9,"docs":{"134":{"tf":1.0},"209":{"tf":1.4142135623730951},"213":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":2.0},"389":{"tf":1.0},"420":{"tf":1.0},"431":{"tf":1.0},"538":{"tf":1.0}}}}}}},"o":{"c":{"df":1,"docs":{"336":{"tf":1.0}}},"df":0,"docs":{},"k":{"df":8,"docs":{"156":{"tf":1.0},"178":{"tf":1.0},"286":{"tf":1.0},"320":{"tf":1.0},"336":{"tf":1.7320508075688772},"344":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}},"l":{"df":0,"docs":{},"v":{"df":13,"docs":{"11":{"tf":1.0},"156":{"tf":1.0},"18":{"tf":1.0},"2":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"300":{"tf":1.0},"375":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"478":{"tf":1.0},"499":{"tf":1.4142135623730951},"84":{"tf":1.0}}}}}}},"o":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"596":{"tf":1.0}}}}},"df":5,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"325":{"tf":1.0},"349":{"tf":1.0},"530":{"tf":1.0}}},"r":{"c":{"df":1,"docs":{"187":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":25,"docs":{"137":{"tf":1.0},"156":{"tf":1.0},"199":{"tf":1.4142135623730951},"221":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"304":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"312":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.4142135623730951},"404":{"tf":1.0},"41":{"tf":1.0},"423":{"tf":1.0},"448":{"tf":1.4142135623730951},"523":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"342":{"tf":1.0},"534":{"tf":1.0}}}},"s":{"df":0,"docs":{},"u":{"df":56,"docs":{"130":{"tf":1.0},"140":{"tf":1.0},"157":{"tf":1.4142135623730951},"16":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"192":{"tf":1.7320508075688772},"196":{"tf":1.4142135623730951},"211":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.4142135623730951},"226":{"tf":1.0},"234":{"tf":1.0},"24":{"tf":1.4142135623730951},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"25":{"tf":1.7320508075688772},"252":{"tf":1.0},"256":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"271":{"tf":1.7320508075688772},"272":{"tf":1.4142135623730951},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":2.23606797749979},"286":{"tf":1.7320508075688772},"288":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.4142135623730951},"340":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"373":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.4142135623730951},"411":{"tf":1.0},"440":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"481":{"tf":1.0},"521":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0},"558":{"tf":3.0},"559":{"tf":1.7320508075688772},"560":{"tf":1.0},"562":{"tf":1.0},"564":{"tf":1.4142135623730951},"599":{"tf":1.0}}}}},"t":{"'":{"d":{"df":2,"docs":{"196":{"tf":1.0},"517":{"tf":1.0}}},"df":56,"docs":{"116":{"tf":1.0},"118":{"tf":1.0},"120":{"tf":1.0},"122":{"tf":1.0},"125":{"tf":1.0},"128":{"tf":1.0},"140":{"tf":1.0},"150":{"tf":1.0},"156":{"tf":2.6457513110645907},"181":{"tf":1.0},"198":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"217":{"tf":2.8284271247461903},"218":{"tf":2.6457513110645907},"225":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.0},"252":{"tf":1.7320508075688772},"258":{"tf":1.0},"259":{"tf":1.4142135623730951},"261":{"tf":1.0},"265":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.7320508075688772},"292":{"tf":1.0},"310":{"tf":1.4142135623730951},"312":{"tf":1.0},"321":{"tf":1.0},"324":{"tf":1.0},"347":{"tf":1.0},"356":{"tf":1.4142135623730951},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"391":{"tf":1.4142135623730951},"394":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"483":{"tf":1.0},"502":{"tf":1.4142135623730951},"538":{"tf":1.0},"54":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":1.7320508075688772},"62":{"tf":1.0},"8":{"tf":1.0},"82":{"tf":1.0},"96":{"tf":1.0}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.0}}}}},"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"157":{"tf":1.0},"489":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":9,"docs":{"196":{"tf":1.4142135623730951},"197":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"418":{"tf":1.0},"553":{"tf":1.0},"557":{"tf":1.0},"568":{"tf":1.0},"599":{"tf":1.0}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"324":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":19,"docs":{"110":{"tf":1.0},"156":{"tf":1.7320508075688772},"207":{"tf":1.0},"307":{"tf":1.7320508075688772},"308":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.7320508075688772},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"313":{"tf":1.4142135623730951},"315":{"tf":1.0},"322":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.4142135623730951},"458":{"tf":1.0},"573":{"tf":1.7320508075688772},"599":{"tf":1.0},"61":{"tf":1.4142135623730951}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":16,"docs":{"155":{"tf":1.0},"156":{"tf":1.7320508075688772},"187":{"tf":1.0},"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"218":{"tf":1.4142135623730951},"312":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.0},"457":{"tf":1.0},"499":{"tf":1.0},"538":{"tf":1.0},"560":{"tf":1.0},"62":{"tf":1.0}}}}}}}},"j":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"m":{"df":1,"docs":{"153":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"m":{"c":{"df":0,"docs":{},"m":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"198":{"tf":1.0}}}}}},"v":{"a":{"df":7,"docs":{"127":{"tf":1.0},"209":{"tf":2.8284271247461903},"213":{"tf":1.7320508075688772},"214":{"tf":1.0},"414":{"tf":1.0},"73":{"tf":2.0},"74":{"tf":1.0}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":10,"docs":{"196":{"tf":1.0},"205":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.7320508075688772},"232":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.7320508075688772},"394":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"r":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"602":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}},"o":{"b":{"df":4,"docs":{"221":{"tf":1.0},"268":{"tf":1.0},"358":{"tf":1.0},"502":{"tf":1.0}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"311":{"tf":1.4142135623730951},"380":{"tf":1.0}},"l":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"1":{":":{"1":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":8,"docs":{"268":{"tf":1.0},"292":{"tf":1.0},"312":{"tf":1.0},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.0},"587":{"tf":1.0},"599":{"tf":1.0}}}},"n":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"603":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":4,"docs":{"136":{"tf":1.0},"268":{"tf":1.0},"356":{"tf":1.0},"370":{"tf":1.0}}}}}}},"y":{"df":2,"docs":{"276":{"tf":1.0},"8":{"tf":1.0}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"213":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"s":{"df":2,"docs":{"280":{"tf":1.0},"380":{"tf":1.0}}},"u":{"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"76":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":2,"docs":{"217":{"tf":1.0},"245":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"m":{"df":1,"docs":{"73":{"tf":1.0}}}},"z":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"602":{"tf":1.0}}}}},"df":0,"docs":{}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":42,"docs":{"134":{"tf":1.4142135623730951},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"199":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"216":{"tf":1.0},"218":{"tf":1.0},"220":{"tf":1.0},"240":{"tf":1.0},"258":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.4142135623730951},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"9":{"tf":1.0}}}},"p":{"df":0,"docs":{},"t":{"df":4,"docs":{"127":{"tf":1.0},"320":{"tf":1.0},"389":{"tf":1.0},"419":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"(":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"(":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":3,"docs":{"336":{"tf":4.47213595499958},"344":{"tf":1.0},"503":{"tf":1.0}}}}}},"y":{"df":13,"docs":{"154":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"268":{"tf":1.7320508075688772},"339":{"tf":1.0},"470":{"tf":1.0},"494":{"tf":1.0},"507":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":2.23606797749979},"552":{"tf":1.0},"583":{"tf":1.0},"61":{"tf":1.4142135623730951}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":8,"docs":{"196":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.0},"385":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":1.0},"89":{"tf":1.0}}},"df":0,"docs":{}}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"167":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"a":{"df":1,"docs":{"473":{"tf":1.0}}},"df":0,"docs":{}}}}}},"n":{"d":{"df":18,"docs":{"156":{"tf":1.4142135623730951},"200":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"264":{"tf":1.0},"330":{"tf":1.0},"349":{"tf":1.4142135623730951},"370":{"tf":1.0},"389":{"tf":1.0},"412":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"47":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"478":{"tf":1.0}}}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":3,"docs":{"218":{"tf":1.0},"246":{"tf":1.0},"389":{"tf":1.0}}}},"o":{"df":0,"docs":{},"w":{"df":71,"docs":{"118":{"tf":1.0},"130":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"171":{"tf":1.0},"181":{"tf":1.0},"188":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.4142135623730951},"230":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"246":{"tf":1.4142135623730951},"25":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.4142135623730951},"304":{"tf":1.0},"319":{"tf":1.0},"321":{"tf":1.0},"340":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.4142135623730951},"370":{"tf":1.0},"372":{"tf":1.0},"377":{"tf":1.0},"380":{"tf":2.449489742783178},"383":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"401":{"tf":1.0},"405":{"tf":1.0},"408":{"tf":2.0},"41":{"tf":1.0},"413":{"tf":1.0},"417":{"tf":1.0},"442":{"tf":1.0},"445":{"tf":1.0},"456":{"tf":1.4142135623730951},"458":{"tf":1.0},"465":{"tf":1.0},"475":{"tf":1.4142135623730951},"48":{"tf":1.0},"483":{"tf":1.0},"49":{"tf":1.4142135623730951},"499":{"tf":1.0},"50":{"tf":1.0},"508":{"tf":1.0},"511":{"tf":1.4142135623730951},"52":{"tf":1.0},"521":{"tf":1.0},"529":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"g":{"df":13,"docs":{"153":{"tf":1.0},"156":{"tf":1.0},"192":{"tf":1.0},"196":{"tf":1.0},"232":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"330":{"tf":1.0},"383":{"tf":1.0},"385":{"tf":1.0},"427":{"tf":1.0},"476":{"tf":1.0},"559":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"271":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":7,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"276":{"tf":1.0},"402":{"tf":1.0},"436":{"tf":1.0},"469":{"tf":1.0},"54":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"/":{"df":0,"docs":{},"s":{"c":{"a":{"df":0,"docs":{},"l":{"a":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"73":{"tf":1.0},"74":{"tf":1.7320508075688772}}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"249":{"tf":1.0}}}}}}}}},"u":{"b":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":3.7416573867739413}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"440":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"l":{"a":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"539":{"tf":2.0}}}}},"c":{"df":0,"docs":{},"k":{"df":16,"docs":{"156":{"tf":1.4142135623730951},"181":{"tf":1.0},"211":{"tf":1.0},"231":{"tf":1.0},"256":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"361":{"tf":1.0},"363":{"tf":1.0},"433":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"521":{"tf":1.0},"572":{"tf":1.0},"81":{"tf":1.0}}}},"df":0,"docs":{},"m":{"b":{"d":{"a":{"df":2,"docs":{"457":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}}},"n":{"d":{"df":1,"docs":{"156":{"tf":1.0}}},"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"271":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"/":{"c":{"df":0,"docs":{},"h":{"1":{"7":{"df":1,"docs":{"365":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":7,"docs":{"258":{"tf":1.0},"284":{"tf":1.0},"305":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"322":{"tf":1.0},"523":{"tf":1.0}}}}}},"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"#":{"7":{"0":{"2":{"6":{"3":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"4":{"3":{"1":{"2":{"2":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"7":{"4":{"7":{"8":{"df":1,"docs":{"271":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"2":{"2":{"9":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":3,"docs":{"17":{"tf":1.0},"580":{"tf":1.0},"599":{"tf":1.0}},"u":{"a":{"df":0,"docs":{},"g":{"df":55,"docs":{"110":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.7320508075688772},"156":{"tf":1.7320508075688772},"173":{"tf":1.0},"183":{"tf":1.0},"192":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"223":{"tf":1.0},"230":{"tf":2.0},"239":{"tf":1.4142135623730951},"241":{"tf":1.4142135623730951},"248":{"tf":1.0},"250":{"tf":1.4142135623730951},"251":{"tf":1.0},"261":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"272":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.4142135623730951},"3":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"316":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.4142135623730951},"350":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"367":{"tf":1.7320508075688772},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"394":{"tf":1.4142135623730951},"403":{"tf":1.4142135623730951},"414":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"475":{"tf":1.0},"511":{"tf":1.0},"516":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.4142135623730951},"67":{"tf":1.0},"71":{"tf":1.0},"72":{"tf":1.0},"76":{"tf":1.0},"9":{"tf":1.0}},"e":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"df":1,"docs":{"480":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":3,"docs":{"309":{"tf":1.4142135623730951},"318":{"tf":1.4142135623730951},"347":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"g":{"df":17,"docs":{"116":{"tf":1.0},"127":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0},"156":{"tf":1.0},"209":{"tf":2.0},"211":{"tf":1.0},"214":{"tf":1.0},"245":{"tf":1.4142135623730951},"252":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":2.0},"358":{"tf":1.0},"392":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"209":{"tf":1.0},"245":{"tf":1.0},"515":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"_":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":7,"docs":{"217":{"tf":1.7320508075688772},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"356":{"tf":1.0},"380":{"tf":1.7320508075688772},"431":{"tf":1.0},"553":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":3,"docs":{"562":{"tf":1.0},"72":{"tf":1.0},"89":{"tf":1.0}},"n":{"c":{"df":6,"docs":{"143":{"tf":1.0},"284":{"tf":1.0},"356":{"tf":1.0},"431":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":17,"docs":{"16":{"tf":1.0},"171":{"tf":1.0},"201":{"tf":1.0},"221":{"tf":1.0},"237":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"312":{"tf":1.0},"313":{"tf":1.0},"347":{"tf":1.0},"417":{"tf":1.0},"46":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":5,"docs":{"116":{"tf":1.0},"233":{"tf":1.0},"237":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"h":{"df":4,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"284":{"tf":1.0},"502":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}},"y":{"df":2,"docs":{"10":{"tf":1.0},"349":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"431":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0}}}}},"z":{"df":0,"docs":{},"i":{"df":1,"docs":{"380":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"421":{"tf":1.0},"422":{"tf":1.0}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":19,"docs":{"1":{"tf":1.4142135623730951},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"17":{"tf":1.4142135623730951},"183":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.4142135623730951},"270":{"tf":1.0},"278":{"tf":1.0},"319":{"tf":1.4142135623730951},"323":{"tf":1.0},"325":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"460":{"tf":1.0},"513":{"tf":1.0},"515":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":3,"docs":{"211":{"tf":1.0},"240":{"tf":1.0},"515":{"tf":1.0}}},"r":{"df":0,"docs":{},"n":{"df":40,"docs":{"136":{"tf":1.0},"153":{"tf":1.0},"18":{"tf":1.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"195":{"tf":1.4142135623730951},"199":{"tf":1.0},"221":{"tf":1.0},"240":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.0},"358":{"tf":1.4142135623730951},"360":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.4142135623730951},"382":{"tf":1.0},"383":{"tf":2.449489742783178},"389":{"tf":1.0},"397":{"tf":1.0},"440":{"tf":1.0},"445":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.7320508075688772},"502":{"tf":1.0},"503":{"tf":1.0},"54":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.4142135623730951},"545":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.0},"86":{"tf":1.0}}}},"v":{"df":10,"docs":{"25":{"tf":1.0},"278":{"tf":1.0},"361":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"389":{"tf":1.0},"457":{"tf":1.0},"50":{"tf":1.0},"54":{"tf":1.0},"57":{"tf":1.0}}}},"d":{"df":5,"docs":{"336":{"tf":1.0},"385":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0},"56":{"tf":1.0}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":8,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"302":{"tf":1.0},"408":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":1.0},"558":{"tf":1.0},"59":{"tf":1.0}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"380":{"tf":1.0},"458":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"s":{"df":7,"docs":{"138":{"tf":1.0},"196":{"tf":1.0},"209":{"tf":1.0},"304":{"tf":1.0},"319":{"tf":1.0},"333":{"tf":1.4142135623730951},"367":{"tf":1.0}}}},"t":{"'":{"df":4,"docs":{"200":{"tf":1.0},"300":{"tf":1.0},"408":{"tf":1.4142135623730951},"538":{"tf":1.0}}},"df":3,"docs":{"178":{"tf":1.0},"214":{"tf":1.0},"421":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":12,"docs":{"119":{"tf":1.0},"131":{"tf":1.0},"134":{"tf":1.0},"137":{"tf":1.7320508075688772},"156":{"tf":1.4142135623730951},"190":{"tf":1.0},"336":{"tf":1.0},"431":{"tf":1.0},"61":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.0}}},"r":{"a":{"df":0,"docs":{},"g":{"df":3,"docs":{"211":{"tf":1.0},"389":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"2":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"c":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{".":{"6":{"`":{"_":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"c":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":1,"docs":{"404":{"tf":1.0}}},"df":3,"docs":{"17":{"tf":1.0},"171":{"tf":1.0},"408":{"tf":1.0}},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":60,"docs":{"127":{"tf":1.0},"145":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":2.449489742783178},"179":{"tf":1.0},"218":{"tf":1.4142135623730951},"221":{"tf":2.23606797749979},"230":{"tf":1.0},"231":{"tf":1.0},"235":{"tf":1.4142135623730951},"240":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"261":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"300":{"tf":3.0},"302":{"tf":2.0},"303":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.4142135623730951},"336":{"tf":2.449489742783178},"344":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.7320508075688772},"360":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"399":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"431":{"tf":1.0},"438":{"tf":1.0},"440":{"tf":1.4142135623730951},"456":{"tf":2.449489742783178},"457":{"tf":1.4142135623730951},"460":{"tf":1.4142135623730951},"461":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"503":{"tf":1.0},"513":{"tf":1.0},"521":{"tf":1.4142135623730951},"523":{"tf":1.0},"526":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"535":{"tf":1.0},"56":{"tf":1.0},"599":{"tf":2.0},"61":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"61":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}}}},"y":{"'":{"df":2,"docs":{"268":{"tf":1.0},"349":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"d":{"df":1,"docs":{"41":{"tf":1.0}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":2,"docs":{"5":{"tf":2.449489742783178},"6":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"y":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"595":{"tf":1.0}}}},"df":0,"docs":{}}},"df":39,"docs":{"122":{"tf":1.0},"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":10,"docs":{"217":{"tf":2.8284271247461903},"218":{"tf":3.0},"221":{"tf":1.4142135623730951},"259":{"tf":1.0},"292":{"tf":2.0},"375":{"tf":1.4142135623730951},"421":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"462":{"tf":1.0},"581":{"tf":1.0}}}}}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"343":{"tf":1.0}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}}}}}}}}},"k":{"df":0,"docs":{},"e":{"df":4,"docs":{"417":{"tf":1.0},"531":{"tf":1.4142135623730951},"54":{"tf":1.0},"79":{"tf":1.0}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"475":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":8,"docs":{"189":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"370":{"tf":1.0},"391":{"tf":1.0},"478":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"e":{"df":10,"docs":{"168":{"tf":1.0},"217":{"tf":1.0},"232":{"tf":1.0},"284":{"tf":1.0},"383":{"tf":1.0},"397":{"tf":1.7320508075688772},"448":{"tf":2.0},"453":{"tf":1.0},"538":{"tf":2.23606797749979},"559":{"tf":1.0}}},"k":{"df":27,"docs":{"143":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.0},"159":{"tf":1.0},"162":{"tf":1.0},"196":{"tf":1.0},"245":{"tf":1.0},"276":{"tf":1.0},"28":{"tf":1.0},"336":{"tf":1.0},"343":{"tf":1.0},"36":{"tf":1.4142135623730951},"41":{"tf":1.4142135623730951},"419":{"tf":1.0},"481":{"tf":1.0},"486":{"tf":1.0},"489":{"tf":1.0},"491":{"tf":1.0},"493":{"tf":1.0},"498":{"tf":1.0},"516":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"560":{"tf":1.0},"562":{"tf":1.0},"597":{"tf":1.0}}},"t":{"df":4,"docs":{"171":{"tf":1.0},"526":{"tf":1.0},"563":{"tf":1.0},"566":{"tf":1.0}}},"u":{"df":0,"docs":{},"x":{"df":3,"docs":{"209":{"tf":1.0},"245":{"tf":1.0},"397":{"tf":2.8284271247461903}}}}},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"67":{"tf":1.0}}}}},"t":{"df":13,"docs":{"217":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"370":{"tf":1.0},"436":{"tf":1.0},"499":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":2.8284271247461903},"539":{"tf":1.4142135623730951},"558":{"tf":1.0},"598":{"tf":1.0},"61":{"tf":1.0},"95":{"tf":1.4142135623730951},"96":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"538":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"p":{"a":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"440":{"tf":4.242640687119285}},"s":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"325":{"tf":1.0},"419":{"tf":1.0}},"r":{"df":1,"docs":{"534":{"tf":1.0}}}},"t":{"df":0,"docs":{},"l":{"df":11,"docs":{"129":{"tf":1.0},"153":{"tf":1.0},"201":{"tf":1.0},"221":{"tf":1.4142135623730951},"336":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"413":{"tf":1.0},"456":{"tf":1.0},"522":{"tf":1.0},"544":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":8,"docs":{"156":{"tf":1.4142135623730951},"18":{"tf":1.4142135623730951},"217":{"tf":1.0},"284":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"51":{"tf":1.0},"562":{"tf":1.0}}}}},"l":{"d":{"b":{"df":2,"docs":{"289":{"tf":1.0},"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"v":{"df":0,"docs":{},"m":{"df":2,"docs":{"336":{"tf":1.0},"599":{"tf":1.0}}}}},"o":{"a":{"d":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"217":{"tf":1.7320508075688772}},"e":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"217":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":5,"docs":{"217":{"tf":1.7320508075688772},"268":{"tf":1.0},"307":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}},"c":{"a":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"4":{"8":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"2":{":":{"1":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":9,"docs":{"209":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"397":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.4142135623730951},"538":{"tf":1.0}}},"t":{"df":1,"docs":{"539":{"tf":1.0}}}},"df":0,"docs":{},"k":{"<":{"df":0,"docs":{},"u":{"3":{"2":{"df":1,"docs":{"564":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":12,"docs":{"156":{"tf":2.0},"266":{"tf":1.0},"268":{"tf":3.3166247903554},"270":{"tf":1.0},"272":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"341":{"tf":1.4142135623730951},"363":{"tf":1.0},"517":{"tf":1.4142135623730951},"565":{"tf":1.0},"599":{"tf":1.0}}}},"df":1,"docs":{"246":{"tf":1.0}},"g":{"!":{"(":{"\"":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"178":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"!":{"(":{"\"":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"{":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":7,"docs":{"178":{"tf":1.7320508075688772},"217":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"408":{"tf":2.0},"431":{"tf":2.6457513110645907},"538":{"tf":1.7320508075688772}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":1,"docs":{"412":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"i":{"c":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":9,"docs":{"112":{"tf":1.0},"139":{"tf":1.0},"200":{"tf":1.0},"232":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.0},"423":{"tf":1.0},"462":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"g":{"df":19,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"203":{"tf":1.0},"217":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"340":{"tf":1.0},"380":{"tf":2.6457513110645907},"383":{"tf":1.7320508075688772},"389":{"tf":1.0},"422":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.4142135623730951},"478":{"tf":1.0},"481":{"tf":1.0},"539":{"tf":1.0},"65":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"268":{"tf":1.0},"353":{"tf":1.0},"385":{"tf":1.0},"402":{"tf":1.0},"417":{"tf":1.0},"599":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"k":{"df":60,"docs":{"125":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.4142135623730951},"168":{"tf":1.0},"169":{"tf":1.0},"190":{"tf":2.0},"197":{"tf":1.0},"2":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":2.449489742783178},"217":{"tf":2.0},"224":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.4142135623730951},"25":{"tf":1.0},"268":{"tf":2.0},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"300":{"tf":1.0},"32":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"347":{"tf":1.7320508075688772},"357":{"tf":1.0},"358":{"tf":2.0},"363":{"tf":1.0},"37":{"tf":1.0},"380":{"tf":3.4641016151377544},"383":{"tf":1.0},"389":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"404":{"tf":1.0},"405":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.7320508075688772},"470":{"tf":1.0},"472":{"tf":1.0},"475":{"tf":1.0},"481":{"tf":1.0},"485":{"tf":1.0},"486":{"tf":1.0},"496":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"506":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0},"62":{"tf":1.0}}},"p":{"df":15,"docs":{"156":{"tf":1.7320508075688772},"185":{"tf":1.0},"190":{"tf":1.7320508075688772},"192":{"tf":2.0},"200":{"tf":2.0},"328":{"tf":2.0},"336":{"tf":1.0},"440":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.4142135623730951},"462":{"tf":1.0},"463":{"tf":1.0},"504":{"tf":1.7320508075688772},"599":{"tf":2.23606797749979},"62":{"tf":1.7320508075688772}}},"s":{"df":1,"docs":{"11":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"389":{"tf":1.0},"9":{"tf":1.0}}},"s":{"df":2,"docs":{"457":{"tf":1.0},"572":{"tf":1.0}}},"t":{"df":6,"docs":{"156":{"tf":1.0},"215":{"tf":1.0},"226":{"tf":1.0},"273":{"tf":1.0},"367":{"tf":1.0},"431":{"tf":1.0}}}},"t":{"df":40,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"264":{"tf":1.0},"268":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"313":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"338":{"tf":1.4142135623730951},"341":{"tf":1.0},"365":{"tf":1.0},"367":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.4142135623730951},"399":{"tf":1.0},"402":{"tf":1.0},"418":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.0},"521":{"tf":1.0},"55":{"tf":1.0},"564":{"tf":1.0},"599":{"tf":1.4142135623730951},"65":{"tf":1.0},"79":{"tf":1.0},"86":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":10,"docs":{"230":{"tf":1.0},"41":{"tf":1.0},"457":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0},"92":{"tf":1.0}}}},"w":{"df":9,"docs":{"108":{"tf":1.0},"134":{"tf":1.0},"143":{"tf":1.0},"190":{"tf":1.0},"347":{"tf":1.0},"356":{"tf":1.0},"558":{"tf":1.4142135623730951},"79":{"tf":1.0},"82":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"156":{"tf":1.0},"319":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"408":{"tf":1.0}}}}},"u":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"271":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"k":{"df":2,"docs":{"174":{"tf":1.0},"244":{"tf":1.0}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"328":{"tf":1.0},"360":{"tf":1.0},"542":{"tf":1.0}}}}}}},"df":0,"docs":{}},"w":{"df":0,"docs":{},"p":{"df":1,"docs":{"284":{"tf":1.0}}}}},"m":{"a":{"c":{"df":1,"docs":{"187":{"tf":1.0}},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":6,"docs":{"197":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":2.0},"318":{"tf":1.7320508075688772}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"397":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"o":{"df":5,"docs":{"246":{"tf":1.7320508075688772},"252":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"392":{"tf":1.4142135623730951}}}}},"d":{"df":0,"docs":{},"e":{"df":13,"docs":{"169":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"235":{"tf":1.0},"246":{"tf":1.0},"268":{"tf":1.4142135623730951},"336":{"tf":1.0},"34":{"tf":1.0},"361":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"417":{"tf":1.4142135623730951},"423":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"1":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{":":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"df":1,"docs":{"404":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":31,"docs":{"177":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"233":{"tf":1.0},"244":{"tf":1.4142135623730951},"257":{"tf":2.0},"258":{"tf":1.7320508075688772},"284":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":2.23606797749979},"311":{"tf":1.0},"313":{"tf":1.0},"320":{"tf":1.0},"380":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":1.4142135623730951},"425":{"tf":1.0},"448":{"tf":2.449489742783178},"457":{"tf":1.0},"494":{"tf":1.0},"502":{"tf":2.0},"507":{"tf":1.0},"522":{"tf":2.449489742783178},"523":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.4142135623730951},"546":{"tf":1.0},"590":{"tf":1.0},"599":{"tf":1.0}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":10,"docs":{"121":{"tf":1.0},"276":{"tf":2.0},"328":{"tf":1.0},"366":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"469":{"tf":1.0},"65":{"tf":1.0},"89":{"tf":1.0},"91":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":5,"docs":{"41":{"tf":1.0},"417":{"tf":1.0},"65":{"tf":1.0},"76":{"tf":1.0},"81":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":7,"docs":{"161":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"29":{"tf":1.0},"342":{"tf":1.0},"42":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}},"k":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"190":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}},"df":109,"docs":{"101":{"tf":1.0},"110":{"tf":1.4142135623730951},"118":{"tf":1.0},"122":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"145":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":2.6457513110645907},"158":{"tf":1.0},"16":{"tf":1.0},"166":{"tf":1.0},"167":{"tf":1.0},"173":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"186":{"tf":1.0},"188":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.4142135623730951},"216":{"tf":1.0},"217":{"tf":1.0},"22":{"tf":1.4142135623730951},"220":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"23":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"267":{"tf":1.0},"268":{"tf":1.7320508075688772},"275":{"tf":1.0},"278":{"tf":1.7320508075688772},"283":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.7320508075688772},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"303":{"tf":1.0},"304":{"tf":1.0},"306":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.0},"322":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.4142135623730951},"335":{"tf":1.0},"336":{"tf":1.7320508075688772},"34":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"346":{"tf":1.0},"349":{"tf":1.4142135623730951},"352":{"tf":1.0},"354":{"tf":1.0},"357":{"tf":1.0},"359":{"tf":1.7320508075688772},"363":{"tf":1.4142135623730951},"369":{"tf":1.0},"370":{"tf":1.4142135623730951},"375":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.7320508075688772},"386":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"396":{"tf":1.0},"40":{"tf":1.4142135623730951},"407":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.4142135623730951},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"428":{"tf":1.0},"447":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":2.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"503":{"tf":1.4142135623730951},"515":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.0},"525":{"tf":1.0},"53":{"tf":1.0},"536":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.7320508075688772},"55":{"tf":1.0},"558":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"64":{"tf":1.0},"8":{"tf":1.4142135623730951},"82":{"tf":1.0}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":1,"docs":{"209":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"n":{"a":{"df":0,"docs":{},"g":{"df":17,"docs":{"136":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"288":{"tf":1.0},"292":{"tf":1.0},"341":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.7320508075688772},"470":{"tf":1.4142135623730951},"538":{"tf":1.0},"599":{"tf":1.0}}}},"d":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"598":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"259":{"tf":1.7320508075688772}},"i":{"df":49,"docs":{"110":{"tf":1.0},"118":{"tf":1.7320508075688772},"120":{"tf":1.0},"130":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.7320508075688772},"138":{"tf":1.0},"146":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.7320508075688772},"157":{"tf":1.0},"16":{"tf":1.0},"171":{"tf":1.0},"211":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.4142135623730951},"325":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"400":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"46":{"tf":1.0},"462":{"tf":1.0},"489":{"tf":1.0},"515":{"tf":1.4142135623730951},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0},"579":{"tf":1.0},"598":{"tf":1.0},"62":{"tf":1.0}},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"349":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"341":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"341":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0}}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":11,"docs":{"196":{"tf":1.0},"199":{"tf":1.0},"221":{"tf":1.4142135623730951},"24":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"26":{"tf":1.0},"284":{"tf":1.0},"38":{"tf":1.0},"417":{"tf":1.4142135623730951},"425":{"tf":1.0}}}},"df":0,"docs":{},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"456":{"tf":1.4142135623730951},"457":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"456":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"p":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":7,"docs":{"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"320":{"tf":1.0}}}}}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"5":{"7":{":":{"7":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"c":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":8,"docs":{"110":{"tf":1.0},"188":{"tf":1.0},"289":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"470":{"tf":1.0},"526":{"tf":1.0},"599":{"tf":1.0}}},"r":{"df":1,"docs":{"356":{"tf":1.0}},"k":{"df":9,"docs":{"268":{"tf":1.0},"292":{"tf":1.0},"316":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":1.0},"558":{"tf":1.4142135623730951},"559":{"tf":1.0},"573":{"tf":1.4142135623730951},"599":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"356":{"tf":1.0}}},"df":1,"docs":{"389":{"tf":1.0}}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":11,"docs":{"110":{"tf":1.0},"16":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":2.23606797749979},"211":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":2.0},"328":{"tf":2.0},"440":{"tf":1.0},"46":{"tf":1.0},"517":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"367":{"tf":1.0}}}}},"h":{".":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"469":{"tf":1.0}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":8,"docs":{"217":{"tf":1.0},"237":{"tf":1.0},"349":{"tf":1.0},"445":{"tf":1.0},"480":{"tf":1.0},"513":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"213":{"tf":1.0},"230":{"tf":1.0},"470":{"tf":1.0}}}}},"x":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":2,"docs":{"315":{"tf":1.0},"517":{"tf":1.0}},"e":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"=":{"1":{"0":{"2":{"4":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"487":{"tf":1.0}}}}}}},"df":1,"docs":{"319":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"529":{"tf":1.0}}}}}}},"y":{"b":{"df":19,"docs":{"128":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"311":{"tf":1.0},"32":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"419":{"tf":1.7320508075688772},"421":{"tf":1.4142135623730951},"437":{"tf":1.0},"456":{"tf":1.0},"498":{"tf":1.0},"506":{"tf":1.0},"68":{"tf":1.0}},"e":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"9":{"5":{":":{"3":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"n":{"df":20,"docs":{"127":{"tf":1.0},"129":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":2.23606797749979},"169":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"197":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"240":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"418":{"tf":1.0},"47":{"tf":1.0},"552":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"350":{"tf":1.0}}}}},"t":{"df":52,"docs":{"118":{"tf":1.0},"128":{"tf":1.0},"152":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"18":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"259":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"343":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"460":{"tf":1.0},"467":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"485":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"561":{"tf":1.0},"598":{"tf":1.0},"94":{"tf":1.0}},"i":{"df":0,"docs":{},"m":{"df":4,"docs":{"18":{"tf":1.0},"209":{"tf":1.0},"256":{"tf":1.0},"521":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"276":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"211":{"tf":1.0},"268":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":9,"docs":{"156":{"tf":1.0},"259":{"tf":1.4142135623730951},"421":{"tf":1.0},"508":{"tf":1.0},"513":{"tf":1.0},"516":{"tf":1.0},"573":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"i":{"a":{"df":2,"docs":{"276":{"tf":1.0},"538":{"tf":1.0}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"558":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":8,"docs":{"2":{"tf":1.4142135623730951},"211":{"tf":1.0},"431":{"tf":1.4142135623730951},"470":{"tf":1.0},"554":{"tf":1.0},"555":{"tf":1.4142135623730951},"556":{"tf":1.0},"558":{"tf":1.0}}}},"m":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"16":{"tf":1.4142135623730951},"276":{"tf":1.0},"457":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.7320508075688772}}},"y":{"'":{"df":1,"docs":{"209":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":26,"docs":{"110":{"tf":1.0},"122":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"195":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":2.449489742783178},"213":{"tf":1.0},"218":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"451":{"tf":1.0},"456":{"tf":2.0},"460":{"tf":1.0},"462":{"tf":1.0},"511":{"tf":1.4142135623730951},"65":{"tf":1.4142135623730951},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.4142135623730951},"81":{"tf":1.4142135623730951},"9":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"189":{"tf":1.0},"211":{"tf":1.0},"460":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":11,"docs":{"221":{"tf":1.4142135623730951},"231":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"349":{"tf":1.4142135623730951},"358":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"549":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"556":{"tf":1.7320508075688772},"558":{"tf":1.0},"559":{"tf":3.3166247903554}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"559":{"tf":1.0}}}}}}}}},"u":{"df":1,"docs":{"188":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"300":{"tf":1.0}}},"g":{"df":12,"docs":{"157":{"tf":1.0},"16":{"tf":2.23606797749979},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"16":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"108":{"tf":1.0}}},"s":{"a":{"df":0,"docs":{},"g":{"df":22,"docs":{"177":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"276":{"tf":2.23606797749979},"370":{"tf":1.4142135623730951},"380":{"tf":2.6457513110645907},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"408":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"469":{"tf":2.0},"470":{"tf":1.7320508075688772},"538":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":2,"docs":{"370":{"tf":1.0},"408":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"218":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"d":{"df":24,"docs":{"178":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951},"209":{"tf":2.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"276":{"tf":2.0},"284":{"tf":1.0},"309":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"344":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.0},"504":{"tf":1.0},"54":{"tf":1.7320508075688772},"572":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"431":{"tf":1.0},"539":{"tf":1.0}}},"df":0,"docs":{}}}}},"h":{"df":0,"docs":{},"z":{"df":1,"docs":{"503":{"tf":1.4142135623730951}}}},"i":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":3,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"336":{"tf":1.4142135623730951}}}}}}}}},"df":1,"docs":{"116":{"tf":1.0}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}}}}}}}},"d":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"m":{"b":{"df":1,"docs":{"603":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":3,"docs":{"231":{"tf":1.0},"232":{"tf":1.0},"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":9,"docs":{"227":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0},"470":{"tf":1.0},"62":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"134":{"tf":1.0},"139":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"j":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"292":{"tf":2.0}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"n":{"d":{"df":32,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"503":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":6,"docs":{"156":{"tf":1.4142135623730951},"341":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.4142135623730951},"478":{"tf":1.0},"61":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"127":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"268":{"tf":1.0},"284":{"tf":1.0}}}}},"o":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"462":{"tf":1.0}}}}}},"s":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"261":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":2,"docs":{"361":{"tf":1.0},"599":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"m":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"s":{"df":8,"docs":{"169":{"tf":1.0},"203":{"tf":1.0},"336":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"522":{"tf":1.0},"526":{"tf":1.0},"89":{"tf":1.0}}},"t":{"a":{"df":0,"docs":{},"k":{"df":4,"docs":{"199":{"tf":1.0},"417":{"tf":1.0},"456":{"tf":1.0},"539":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"200":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"s":{"df":1,"docs":{"456":{"tf":1.0}}}}},"t":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}},"x":{"df":11,"docs":{"134":{"tf":1.0},"143":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"217":{"tf":1.0},"261":{"tf":1.0},"315":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"394":{"tf":1.0},"46":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"188":{"tf":1.0},"347":{"tf":1.0}}}},"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"5":{"2":{":":{"4":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"1":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"8":{"0":{":":{"1":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"448":{"tf":1.0}},"l":{"df":9,"docs":{"156":{"tf":1.0},"211":{"tf":1.7320508075688772},"350":{"tf":1.0},"389":{"tf":1.0},"393":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":1.0},"460":{"tf":1.4142135623730951},"469":{"tf":1.0}}},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"389":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":6,"docs":{"217":{"tf":1.0},"286":{"tf":1.0},"336":{"tf":1.4142135623730951},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"421":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":5,"docs":{"380":{"tf":1.4142135623730951},"397":{"tf":1.0},"526":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":1,"docs":{"573":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":6,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"380":{"tf":1.7320508075688772},"389":{"tf":1.0},"408":{"tf":1.0},"503":{"tf":1.0}}}}}},"n":{"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"246":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"0":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":1,"docs":{"419":{"tf":1.0}}},"1":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"419":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":1,"docs":{"419":{"tf":1.0}}},"df":5,"docs":{"121":{"tf":1.0},"125":{"tf":1.4142135623730951},"130":{"tf":1.4142135623730951},"419":{"tf":1.7320508075688772},"545":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":7,"docs":{"106":{"tf":1.0},"108":{"tf":1.0},"110":{"tf":1.0},"111":{"tf":1.4142135623730951},"112":{"tf":1.4142135623730951},"515":{"tf":1.0},"546":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":5,"docs":{"235":{"tf":1.0},"259":{"tf":1.0},"292":{"tf":1.0},"389":{"tf":1.4142135623730951},"431":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"550":{"tf":1.0}}}}}}},"r":{"a":{"df":0,"docs":{},"l":{"df":38,"docs":{"154":{"tf":1.0},"161":{"tf":1.0},"171":{"tf":1.0},"181":{"tf":1.0},"192":{"tf":1.0},"203":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"223":{"tf":1.0},"237":{"tf":1.0},"248":{"tf":1.0},"261":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"286":{"tf":1.0},"294":{"tf":1.0},"302":{"tf":1.0},"315":{"tf":1.0},"32":{"tf":1.0},"33":{"tf":1.0},"330":{"tf":1.0},"338":{"tf":1.0},"350":{"tf":1.0},"363":{"tf":1.0},"372":{"tf":1.0},"383":{"tf":1.0},"391":{"tf":1.0},"399":{"tf":1.0},"410":{"tf":1.0},"425":{"tf":1.0},"433":{"tf":1.0},"442":{"tf":1.0},"450":{"tf":1.0},"460":{"tf":1.0},"47":{"tf":1.0},"472":{"tf":1.0},"480":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":102,"docs":{"112":{"tf":1.0},"12":{"tf":1.0},"129":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.4142135623730951},"160":{"tf":1.0},"171":{"tf":1.0},"179":{"tf":1.4142135623730951},"188":{"tf":1.0},"19":{"tf":1.0},"192":{"tf":1.0},"196":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.4142135623730951},"200":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"223":{"tf":1.0},"226":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.7320508075688772},"258":{"tf":1.0},"268":{"tf":2.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.4142135623730951},"280":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":2.0},"300":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":2.23606797749979},"310":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"329":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.4142135623730951},"359":{"tf":1.7320508075688772},"36":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":1.7320508075688772},"381":{"tf":1.0},"389":{"tf":1.7320508075688772},"390":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"394":{"tf":1.0},"398":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.4142135623730951},"418":{"tf":1.4142135623730951},"42":{"tf":1.4142135623730951},"431":{"tf":1.0},"440":{"tf":1.7320508075688772},"445":{"tf":1.0},"449":{"tf":1.0},"457":{"tf":1.4142135623730951},"460":{"tf":1.0},"469":{"tf":1.0},"481":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"492":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"506":{"tf":1.0},"516":{"tf":1.0},"521":{"tf":1.7320508075688772},"529":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.7320508075688772},"544":{"tf":1.0},"56":{"tf":1.4142135623730951},"560":{"tf":1.0},"562":{"tf":1.4142135623730951},"570":{"tf":1.0},"573":{"tf":1.0},"599":{"tf":1.4142135623730951},"64":{"tf":1.0},"65":{"tf":1.0},"69":{"tf":1.0},"87":{"tf":1.0},"97":{"tf":1.0}},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"310":{"tf":1.0}}}}},"n":{"df":1,"docs":{"456":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":7,"docs":{"129":{"tf":1.0},"211":{"tf":1.0},"250":{"tf":1.0},"331":{"tf":1.0},"343":{"tf":1.0},"417":{"tf":1.0},"458":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":3,"docs":{"204":{"tf":1.0},"41":{"tf":1.0},"592":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"217":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}}}},"v":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":34,"docs":{"10":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":2.0},"211":{"tf":1.0},"214":{"tf":1.0},"221":{"tf":1.0},"268":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.7320508075688772},"292":{"tf":1.4142135623730951},"310":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":2.23606797749979},"375":{"tf":1.0},"380":{"tf":1.7320508075688772},"385":{"tf":1.4142135623730951},"408":{"tf":1.0},"419":{"tf":1.4142135623730951},"440":{"tf":1.0},"458":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.7320508075688772},"502":{"tf":1.0},"504":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"558":{"tf":1.0},"580":{"tf":1.0},"8":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"s":{"c":{"df":1,"docs":{"539":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"s":{"df":1,"docs":{"380":{"tf":1.7320508075688772}},"g":{"df":1,"docs":{"276":{"tf":1.7320508075688772}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":52,"docs":{"103":{"tf":1.0},"112":{"tf":1.4142135623730951},"120":{"tf":1.0},"129":{"tf":1.4142135623730951},"136":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":1.0},"195":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"211":{"tf":1.0},"214":{"tf":1.0},"226":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"33":{"tf":1.0},"336":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"367":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.7320508075688772},"436":{"tf":1.4142135623730951},"445":{"tf":1.0},"448":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.4142135623730951},"478":{"tf":1.0},"480":{"tf":1.0},"521":{"tf":1.0},"53":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"319":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"318":{"tf":1.4142135623730951}}}}},"df":3,"docs":{"423":{"tf":1.0},"470":{"tf":1.0},"62":{"tf":1.0}},"p":{"df":0,"docs":{},"l":{"df":22,"docs":{"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"200":{"tf":1.4142135623730951},"23":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.4142135623730951},"284":{"tf":1.0},"32":{"tf":1.0},"328":{"tf":1.7320508075688772},"336":{"tf":1.7320508075688772},"374":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"422":{"tf":1.0},"46":{"tf":1.4142135623730951},"507":{"tf":1.0},"521":{"tf":1.0},"599":{"tf":1.4142135623730951},"62":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":2,"docs":{"336":{"tf":1.0},"341":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"n":{"d":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"302":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"451":{"tf":1.0}}}},"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"566":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":4,"docs":{"328":{"tf":1.0},"341":{"tf":1.0},"417":{"tf":2.0},"421":{"tf":2.0}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"270":{"tf":1.0}}}},"df":26,"docs":{"156":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":1.7320508075688772},"217":{"tf":2.6457513110645907},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":2.6457513110645907},"312":{"tf":1.0},"328":{"tf":2.23606797749979},"336":{"tf":2.6457513110645907},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":2.449489742783178},"418":{"tf":1.7320508075688772},"419":{"tf":1.7320508075688772},"421":{"tf":4.242640687119285},"448":{"tf":1.0},"470":{"tf":1.0},"522":{"tf":2.6457513110645907},"523":{"tf":1.0},"568":{"tf":1.0}},"e":{"df":0,"docs":{},"x":{"df":7,"docs":{"268":{"tf":2.8284271247461903},"270":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.4142135623730951},"370":{"tf":1.0},"565":{"tf":1.0},"584":{"tf":1.4142135623730951}},"g":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"r":{"d":{"df":3,"docs":{"270":{"tf":1.0},"564":{"tf":1.4142135623730951},"565":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"v":{"df":0,"docs":{},"p":{"df":1,"docs":{"8":{"tf":1.0}}}},"y":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"421":{"tf":1.4142135623730951}},"e":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"581":{"tf":1.0}}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"i":{"a":{"d":{"df":2,"docs":{"231":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"68":{"tf":1.0},"69":{"tf":1.0}}}},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"580":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"n":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"292":{"tf":1.0}}},"i":{"df":0,"docs":{},"v":{"df":2,"docs":{"336":{"tf":1.0},"440":{"tf":1.0}}}},"m":{"df":0,"docs":{},"e":{"df":21,"docs":{"113":{"tf":1.0},"157":{"tf":1.0},"163":{"tf":1.0},"258":{"tf":1.0},"28":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.4142135623730951},"478":{"tf":1.0},"489":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"56":{"tf":1.0},"57":{"tf":1.4142135623730951},"578":{"tf":1.4142135623730951},"579":{"tf":1.0},"64":{"tf":1.0},"67":{"tf":1.0},"97":{"tf":1.0}}}},"r":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"153":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"431":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"599":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":4,"docs":{"116":{"tf":1.0},"211":{"tf":1.4142135623730951},"230":{"tf":1.0},"231":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":7,"docs":{"195":{"tf":1.0},"218":{"tf":1.0},"350":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0},"503":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":1,"docs":{"209":{"tf":1.0}}}}}},"b":{"df":1,"docs":{"492":{"tf":1.0}}},"d":{"a":{"df":1,"docs":{"598":{"tf":1.0}}},"df":0,"docs":{}},"df":1,"docs":{"370":{"tf":3.3166247903554}},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"276":{"tf":1.0}}}}},"t":{"df":1,"docs":{"360":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"360":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":5,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"417":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"218":{"tf":1.0},"273":{"tf":1.0},"404":{"tf":1.0},"460":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"d":{"df":84,"docs":{"110":{"tf":1.4142135623730951},"112":{"tf":1.0},"118":{"tf":1.0},"119":{"tf":1.0},"12":{"tf":1.0},"121":{"tf":1.4142135623730951},"122":{"tf":1.0},"125":{"tf":1.0},"130":{"tf":1.4142135623730951},"139":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":3.1622776601683795},"177":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.4142135623730951},"199":{"tf":2.0},"2":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.4142135623730951},"217":{"tf":2.23606797749979},"218":{"tf":1.0},"219":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.4142135623730951},"230":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.4142135623730951},"265":{"tf":1.0},"266":{"tf":1.0},"268":{"tf":1.4142135623730951},"270":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"300":{"tf":2.449489742783178},"307":{"tf":1.0},"309":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.4142135623730951},"330":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"341":{"tf":2.0},"347":{"tf":1.0},"349":{"tf":1.0},"359":{"tf":1.0},"368":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"452":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":2.0},"480":{"tf":1.0},"485":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"504":{"tf":1.0},"511":{"tf":1.0},"517":{"tf":1.4142135623730951},"519":{"tf":1.0},"521":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0},"549":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.4142135623730951},"57":{"tf":1.0},"571":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.7320508075688772},"68":{"tf":1.0},"8":{"tf":1.0},"96":{"tf":1.0},"99":{"tf":1.0}},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"g":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"29":{"tf":1.0},"54":{"tf":1.0}}}},"df":5,"docs":{"259":{"tf":1.0},"370":{"tf":1.0},"496":{"tf":1.4142135623730951},"55":{"tf":1.0},"59":{"tf":1.0}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"469":{"tf":1.0}}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":2,"docs":{"313":{"tf":1.0},"544":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"156":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0}}}},"t":{"df":3,"docs":{"190":{"tf":1.0},"284":{"tf":1.0},"341":{"tf":1.0}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":14,"docs":{"116":{"tf":1.0},"125":{"tf":1.7320508075688772},"127":{"tf":2.0},"128":{"tf":1.0},"138":{"tf":1.0},"140":{"tf":1.0},"347":{"tf":2.0},"357":{"tf":1.4142135623730951},"360":{"tf":1.0},"433":{"tf":1.0},"503":{"tf":1.4142135623730951},"546":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":13,"docs":{"168":{"tf":1.0},"178":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.0},"502":{"tf":1.0}}}}},"w":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":6,"docs":{"278":{"tf":1.0},"303":{"tf":1.0},"359":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"599":{"tf":1.0}}}}},"df":56,"docs":{"14":{"tf":1.4142135623730951},"143":{"tf":1.0},"156":{"tf":1.4142135623730951},"157":{"tf":1.7320508075688772},"16":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"189":{"tf":1.0},"196":{"tf":1.0},"200":{"tf":1.0},"21":{"tf":2.0},"218":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"231":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.4142135623730951},"258":{"tf":1.7320508075688772},"26":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.4142135623730951},"300":{"tf":1.4142135623730951},"309":{"tf":1.7320508075688772},"316":{"tf":1.0},"319":{"tf":1.7320508075688772},"331":{"tf":1.0},"332":{"tf":1.0},"336":{"tf":1.0},"339":{"tf":1.4142135623730951},"365":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"383":{"tf":1.4142135623730951},"389":{"tf":2.23606797749979},"39":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.0},"438":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":2.6457513110645907},"482":{"tf":1.0},"489":{"tf":1.7320508075688772},"497":{"tf":1.0},"538":{"tf":1.7320508075688772},"558":{"tf":1.0},"572":{"tf":1.0},"602":{"tf":1.0},"65":{"tf":2.23606797749979},"71":{"tf":1.0},"79":{"tf":1.0},"84":{"tf":1.0},"86":{"tf":1.0},"97":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"237":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"268":{"tf":1.0}}}}},"x":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{".":{"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":1,"docs":{"458":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":1,"docs":{"457":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":23,"docs":{"139":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.4142135623730951},"200":{"tf":1.0},"211":{"tf":1.0},"259":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":2.0},"391":{"tf":1.4142135623730951},"446":{"tf":1.0},"448":{"tf":2.23606797749979},"450":{"tf":2.23606797749979},"451":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"470":{"tf":1.0},"483":{"tf":1.0},"486":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.0},"573":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"e":{"df":9,"docs":{"130":{"tf":1.0},"231":{"tf":1.0},"307":{"tf":1.0},"341":{"tf":1.4142135623730951},"365":{"tf":1.4142135623730951},"403":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.4142135623730951},"82":{"tf":1.0}},"r":{"df":2,"docs":{"380":{"tf":1.0},"599":{"tf":1.0}}}},"h":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"517":{"tf":1.0}}}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"245":{"tf":1.0},"380":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"u":{"df":28,"docs":{"156":{"tf":1.7320508075688772},"214":{"tf":1.0},"218":{"tf":1.0},"226":{"tf":1.4142135623730951},"240":{"tf":1.0},"251":{"tf":1.0},"273":{"tf":1.0},"340":{"tf":1.0},"353":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"436":{"tf":1.0},"463":{"tf":1.0},"466":{"tf":1.0},"469":{"tf":2.23606797749979},"470":{"tf":3.0},"474":{"tf":1.4142135623730951},"476":{"tf":1.0},"478":{"tf":2.8284271247461903},"482":{"tf":1.0},"512":{"tf":1.4142135623730951},"530":{"tf":1.4142135623730951},"544":{"tf":2.23606797749979},"65":{"tf":1.0},"67":{"tf":1.0},"84":{"tf":1.0},"86":{"tf":1.4142135623730951},"87":{"tf":1.4142135623730951}},"s":{"'":{"df":2,"docs":{"347":{"tf":1.0},"41":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"o":{"'":{"df":2,"docs":{"365":{"tf":1.0},"599":{"tf":1.0}}},"df":1,"docs":{"482":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":7,"docs":{"1":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"553":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0},"61":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":5,"docs":{"108":{"tf":1.0},"111":{"tf":1.0},"221":{"tf":1.7320508075688772},"340":{"tf":1.0},"546":{"tf":1.0}}},"df":0,"docs":{}}}},"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"533":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"j":{"df":4,"docs":{"189":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"72":{"tf":1.0}}}},"df":5,"docs":{"108":{"tf":1.0},"111":{"tf":1.0},"127":{"tf":1.0},"134":{"tf":1.0},"217":{"tf":2.23606797749979}},"j":{"df":2,"docs":{"231":{"tf":1.0},"280":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"199":{"tf":1.0}}}},"n":{"df":14,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.7320508075688772},"221":{"tf":1.0},"347":{"tf":1.0},"372":{"tf":1.0},"410":{"tf":1.0},"450":{"tf":1.0},"456":{"tf":1.0},"517":{"tf":1.0},"526":{"tf":1.0},"534":{"tf":1.0},"566":{"tf":1.0},"62":{"tf":1.4142135623730951}},"e":{"df":10,"docs":{"138":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"245":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"360":{"tf":1.0},"421":{"tf":1.0},"457":{"tf":1.4142135623730951},"568":{"tf":1.0}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"310":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":1,"docs":{"336":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"171":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":27,"docs":{"154":{"tf":1.0},"156":{"tf":1.4142135623730951},"18":{"tf":1.0},"196":{"tf":1.0},"209":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"292":{"tf":1.4142135623730951},"311":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"358":{"tf":1.0},"36":{"tf":1.0},"370":{"tf":2.449489742783178},"380":{"tf":1.7320508075688772},"397":{"tf":1.4142135623730951},"440":{"tf":5.656854249492381},"486":{"tf":1.0},"538":{"tf":1.4142135623730951},"560":{"tf":1.0},"596":{"tf":1.0},"597":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.4142135623730951},"96":{"tf":1.0}}},"h":{"df":4,"docs":{"217":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"408":{"tf":1.4142135623730951},"538":{"tf":1.7320508075688772}}},"i":{"c":{"df":21,"docs":{"167":{"tf":1.0},"168":{"tf":1.4142135623730951},"169":{"tf":1.0},"198":{"tf":1.4142135623730951},"199":{"tf":1.0},"257":{"tf":1.0},"268":{"tf":1.4142135623730951},"292":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"389":{"tf":1.0},"408":{"tf":1.0},"431":{"tf":1.4142135623730951},"448":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.4142135623730951},"487":{"tf":1.0},"538":{"tf":1.0}}},"df":0,"docs":{},"f":{"df":1,"docs":{"457":{"tf":1.0}},"i":{"df":1,"docs":{"328":{"tf":2.23606797749979}}}}}},"w":{"df":46,"docs":{"116":{"tf":1.0},"134":{"tf":1.0},"14":{"tf":1.7320508075688772},"155":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.7320508075688772},"233":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":2.0},"258":{"tf":1.7320508075688772},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.4142135623730951},"328":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":1.7320508075688772},"397":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.0},"421":{"tf":1.4142135623730951},"431":{"tf":1.0},"448":{"tf":1.4142135623730951},"456":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":2.0},"475":{"tf":1.0},"486":{"tf":1.0},"502":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":2.0},"538":{"tf":1.0},"546":{"tf":1.0},"552":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.0}}}},"p":{"df":0,"docs":{},"m":{"df":1,"docs":{"231":{"tf":1.0}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":2.23606797749979}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":18,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"234":{"tf":1.0},"276":{"tf":1.0},"307":{"tf":1.0},"319":{"tf":1.0},"341":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"389":{"tf":1.0},"392":{"tf":1.0},"412":{"tf":1.0},"419":{"tf":1.0},"470":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"538":{"tf":1.0},"73":{"tf":1.0},"79":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"392":{"tf":1.0}}}}}}}},"o":{"0":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"0":{"df":0,"docs":{},"o":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":13,"docs":{"198":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.0},"252":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"417":{"tf":1.7320508075688772},"418":{"tf":1.0},"437":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"464":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":5,"docs":{"178":{"tf":1.0},"188":{"tf":1.0},"319":{"tf":1.0},"380":{"tf":1.0},"538":{"tf":1.0}}}}},"t":{"a":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"429":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"423":{"tf":1.0},"61":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":8,"docs":{"156":{"tf":1.4142135623730951},"218":{"tf":1.0},"276":{"tf":1.0},"419":{"tf":1.0},"442":{"tf":1.0},"445":{"tf":1.0},"460":{"tf":1.4142135623730951},"515":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}}}}}},"c":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"357":{"tf":1.0},"431":{"tf":1.0}}}}}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"336":{"tf":1.0}}}},"r":{"df":5,"docs":{"156":{"tf":1.0},"164":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"28":{"tf":1.0}}}}},"df":0,"docs":{}},"d":{"d":{"df":2,"docs":{"200":{"tf":1.0},"217":{"tf":1.0}}},"df":0,"docs":{}},"df":2,"docs":{"309":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"f":{"df":2,"docs":{"365":{"tf":1.0},"394":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":19,"docs":{"125":{"tf":1.0},"129":{"tf":1.0},"276":{"tf":1.0},"3":{"tf":1.0},"309":{"tf":1.0},"315":{"tf":1.0},"321":{"tf":2.0},"325":{"tf":2.449489742783178},"391":{"tf":1.4142135623730951},"393":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"503":{"tf":1.0},"511":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"542":{"tf":1.0},"73":{"tf":1.0}}}},"i":{"c":{"df":0,"docs":{},"i":{"df":2,"docs":{"230":{"tf":1.0},"284":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"417":{"tf":1.0}}}}}}},"h":{"df":7,"docs":{"199":{"tf":1.0},"217":{"tf":1.0},"300":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.4142135623730951},"522":{"tf":1.0},"538":{"tf":1.4142135623730951}}},"k":{"(":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}},"df":0,"docs":{}}}},"_":{"df":2,"docs":{"276":{"tf":1.0},"328":{"tf":1.7320508075688772}}},"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":1,"docs":{"196":{"tf":1.4142135623730951}}}}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.0}}}}},"o":{"df":1,"docs":{"440":{"tf":2.0}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"r":{"df":1,"docs":{"292":{"tf":1.0}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":2.0}}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"z":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"(":{"&":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{".":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"196":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},":":{":":{"<":{"_":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"y":{"df":2,"docs":{"217":{"tf":1.0},"328":{"tf":1.0}}}},"df":14,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"231":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"312":{"tf":1.0},"321":{"tf":1.0},"36":{"tf":1.0},"487":{"tf":1.0},"493":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}},"l":{"d":{"df":4,"docs":{"168":{"tf":1.4142135623730951},"217":{"tf":1.0},"268":{"tf":1.0},"89":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"237":{"tf":1.0}}}}},"df":0,"docs":{}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"218":{"tf":1.0},"336":{"tf":1.0},"397":{"tf":1.4142135623730951}}}}},"n":{"c":{"df":28,"docs":{"15":{"tf":1.0},"156":{"tf":2.23606797749979},"167":{"tf":1.0},"169":{"tf":1.0},"188":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"32":{"tf":1.0},"321":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.4142135623730951},"394":{"tf":1.0},"408":{"tf":1.0},"423":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"504":{"tf":1.0},"510":{"tf":1.0},"538":{"tf":1.0},"547":{"tf":1.0},"562":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"86":{"tf":1.0}}},"df":83,"docs":{"11":{"tf":1.0},"112":{"tf":1.0},"118":{"tf":1.0},"130":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"167":{"tf":1.0},"177":{"tf":1.0},"187":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"213":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.7320508075688772},"221":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.4142135623730951},"244":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"252":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":2.449489742783178},"278":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"309":{"tf":1.0},"313":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.4142135623730951},"35":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":2.23606797749979},"374":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":2.23606797749979},"389":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"405":{"tf":1.0},"41":{"tf":1.7320508075688772},"417":{"tf":1.0},"42":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"431":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.4142135623730951},"478":{"tf":1.0},"481":{"tf":1.0},"502":{"tf":1.4142135623730951},"516":{"tf":1.0},"522":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":2.0},"542":{"tf":1.0},"556":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":2.23606797749979},"601":{"tf":1.0},"61":{"tf":2.0},"62":{"tf":1.4142135623730951},"69":{"tf":1.0},"8":{"tf":1.4142135623730951},"84":{"tf":1.0},"9":{"tf":1.0}},"e":{"'":{"df":2,"docs":{"211":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"370":{"tf":1.0},"457":{"tf":1.0},"538":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"o":{"df":5,"docs":{"217":{"tf":1.0},"421":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"562":{"tf":1.0}}}}},"o":{"df":1,"docs":{"365":{"tf":1.0}},"p":{"df":1,"docs":{"200":{"tf":1.0}}}},"p":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"42":{"tf":1.0}}},"q":{"df":0,"docs":{},"u":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":1,"docs":{"336":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":66,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"116":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"143":{"tf":1.0},"147":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.4142135623730951},"158":{"tf":1.0},"16":{"tf":2.0},"166":{"tf":1.0},"17":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.4142135623730951},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"21":{"tf":1.4142135623730951},"216":{"tf":1.0},"220":{"tf":1.0},"24":{"tf":1.4142135623730951},"25":{"tf":1.7320508075688772},"257":{"tf":1.0},"26":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.4142135623730951},"283":{"tf":1.0},"284":{"tf":1.4142135623730951},"29":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"39":{"tf":1.4142135623730951},"391":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"416":{"tf":1.0},"44":{"tf":1.0},"447":{"tf":1.0},"453":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"485":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"522":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0},"55":{"tf":1.0},"603":{"tf":1.0},"84":{"tf":1.0}}},"r":{"df":23,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.4142135623730951},"143":{"tf":1.0},"156":{"tf":1.0},"178":{"tf":1.4142135623730951},"181":{"tf":1.0},"209":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"261":{"tf":1.0},"268":{"tf":1.0},"292":{"tf":1.4142135623730951},"309":{"tf":1.0},"312":{"tf":1.0},"336":{"tf":1.0},"391":{"tf":1.4142135623730951},"408":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"278":{"tf":1.4142135623730951},"357":{"tf":1.0},"363":{"tf":1.0},"487":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":2,"docs":{"54":{"tf":1.0},"55":{"tf":1.0}}}}}},"s":{"df":1,"docs":{"276":{"tf":1.0}}}}},"t":{"df":2,"docs":{"456":{"tf":1.0},"538":{"tf":1.0}},"i":{"df":0,"docs":{},"m":{"df":6,"docs":{"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"343":{"tf":1.0},"529":{"tf":1.0},"62":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"423":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{".":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"t":{"df":1,"docs":{"450":{"tf":1.0}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"457":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"568":{"tf":1.0}}}},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}}},"df":21,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.4142135623730951},"231":{"tf":1.4142135623730951},"239":{"tf":1.0},"245":{"tf":1.4142135623730951},"25":{"tf":1.0},"321":{"tf":1.0},"370":{"tf":1.0},"377":{"tf":1.0},"389":{"tf":1.0},"41":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"458":{"tf":1.0},"499":{"tf":1.0},"5":{"tf":1.0},"517":{"tf":1.0},"542":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0}}}}}}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":14,"docs":{"136":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"450":{"tf":1.0}}}}},"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"n":{"df":5,"docs":{"10":{"tf":1.0},"218":{"tf":1.0},"276":{"tf":1.0},"3":{"tf":1.0},"603":{"tf":1.0}}}},"df":1,"docs":{"47":{"tf":1.0}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"11":{"tf":1.0},"462":{"tf":1.0},"544":{"tf":1.0}}}}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":15,"docs":{"134":{"tf":1.0},"199":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"218":{"tf":1.4142135623730951},"246":{"tf":1.0},"276":{"tf":1.0},"279":{"tf":1.0},"280":{"tf":1.0},"320":{"tf":1.0},"361":{"tf":1.0},"389":{"tf":1.0},"440":{"tf":1.0},"539":{"tf":1.0}}}}}},"m":{"df":1,"docs":{"235":{"tf":1.0}}}},"s":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"/":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":6,"docs":{"190":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"344":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"192":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"56":{"tf":1.0}}}},"df":0,"docs":{}}},"df":18,"docs":{"101":{"tf":1.0},"110":{"tf":1.0},"118":{"tf":1.0},"127":{"tf":1.4142135623730951},"136":{"tf":1.0},"145":{"tf":1.0},"147":{"tf":1.0},"155":{"tf":1.0},"157":{"tf":1.0},"22":{"tf":1.0},"23":{"tf":1.0},"25":{"tf":1.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"400":{"tf":1.0},"421":{"tf":1.0},"53":{"tf":1.0},"598":{"tf":1.0}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":6,"docs":{"157":{"tf":1.0},"217":{"tf":1.0},"372":{"tf":1.0},"489":{"tf":1.0},"558":{"tf":1.0},"6":{"tf":1.0}}}}}}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"370":{"tf":1.0},"599":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":1,"docs":{"10":{"tf":1.0}}}}}}},"t":{"df":98,"docs":{"10":{"tf":1.0},"12":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"157":{"tf":1.0},"164":{"tf":1.4142135623730951},"174":{"tf":1.4142135623730951},"178":{"tf":1.0},"184":{"tf":1.4142135623730951},"19":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.4142135623730951},"195":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"226":{"tf":1.0},"230":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.4142135623730951},"245":{"tf":2.23606797749979},"246":{"tf":1.0},"251":{"tf":1.4142135623730951},"258":{"tf":1.0},"264":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"271":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.0},"28":{"tf":1.4142135623730951},"281":{"tf":1.0},"284":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":2.0},"297":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"317":{"tf":1.7320508075688772},"32":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":2.0},"353":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":2.449489742783178},"377":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.4142135623730951},"394":{"tf":1.0},"397":{"tf":1.4142135623730951},"40":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.4142135623730951},"41":{"tf":1.0},"414":{"tf":1.0},"428":{"tf":1.0},"431":{"tf":1.4142135623730951},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"463":{"tf":1.0},"470":{"tf":1.4142135623730951},"475":{"tf":1.0},"483":{"tf":1.0},"487":{"tf":1.4142135623730951},"49":{"tf":1.4142135623730951},"498":{"tf":1.0},"499":{"tf":1.0},"51":{"tf":1.4142135623730951},"515":{"tf":1.0},"516":{"tf":1.0},"52":{"tf":1.0},"53":{"tf":1.4142135623730951},"534":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.4142135623730951},"556":{"tf":1.0},"74":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"300":{"tf":1.0},"349":{"tf":1.0},"538":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":9,"docs":{"209":{"tf":1.0},"217":{"tf":1.0},"244":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"421":{"tf":2.0},"448":{"tf":1.0},"538":{"tf":1.4142135623730951},"544":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"539":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":5,"docs":{"110":{"tf":1.0},"199":{"tf":1.0},"226":{"tf":1.0},"418":{"tf":1.7320508075688772},"47":{"tf":1.0}}},"df":0,"docs":{}},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"16":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":1,"docs":{"341":{"tf":1.0}}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"l":{"df":11,"docs":{"11":{"tf":1.0},"16":{"tf":1.0},"214":{"tf":1.0},"319":{"tf":1.0},"380":{"tf":1.0},"46":{"tf":1.0},"515":{"tf":1.0},"65":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"92":{"tf":1.0}}}},"df":39,"docs":{"143":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.7320508075688772},"188":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"245":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"298":{"tf":1.0},"300":{"tf":1.4142135623730951},"307":{"tf":1.0},"310":{"tf":1.0},"318":{"tf":1.4142135623730951},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"358":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.7320508075688772},"460":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"486":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0}},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":3,"docs":{"244":{"tf":1.4142135623730951},"245":{"tf":1.0},"370":{"tf":1.0}}}}}},"h":{"df":0,"docs":{},"e":{"a":{"d":{"df":11,"docs":{"209":{"tf":1.7320508075688772},"211":{"tf":1.4142135623730951},"259":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.0},"421":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0},"513":{"tf":1.4142135623730951},"543":{"tf":1.0},"61":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"278":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"308":{"tf":1.0}}},"o":{"a":{"d":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"417":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"190":{"tf":1.0}}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"m":{"df":4,"docs":{"231":{"tf":1.0},"363":{"tf":1.0},"397":{"tf":1.0},"86":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"336":{"tf":1.0}}}}}}}}},"w":{"df":0,"docs":{},"n":{"df":4,"docs":{"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"341":{"tf":1.0},"517":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"417":{"tf":2.0},"421":{"tf":3.605551275463989},"423":{"tf":1.0},"553":{"tf":1.0},"61":{"tf":1.0}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":6,"docs":{"156":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"389":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"599":{"tf":1.0}}}}}}}},"s":{"(":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"_":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"p":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"z":{"_":{"df":0,"docs":{},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"9":{"9":{"df":1,"docs":{"431":{"tf":1.0}}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"231":{"tf":1.0}}},"k":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"523":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"143":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":10,"docs":{"12":{"tf":1.0},"152":{"tf":1.4142135623730951},"157":{"tf":1.0},"177":{"tf":1.0},"19":{"tf":1.0},"198":{"tf":1.4142135623730951},"485":{"tf":1.4142135623730951},"489":{"tf":1.0},"539":{"tf":1.0},"550":{"tf":1.0}}}},"i":{"d":{"df":1,"docs":{"200":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":7,"docs":{"221":{"tf":1.0},"233":{"tf":1.0},"286":{"tf":1.0},"315":{"tf":1.0},"372":{"tf":1.0},"410":{"tf":1.0},"59":{"tf":1.0}}},"r":{"df":1,"docs":{"300":{"tf":1.0}}}},"n":{"df":1,"docs":{"389":{"tf":1.0}},"i":{"c":{"!":{"df":1,"docs":{"470":{"tf":1.0}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"3":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":14,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"234":{"tf":1.0},"309":{"tf":1.4142135623730951},"321":{"tf":1.4142135623730951},"323":{"tf":1.0},"325":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":2.449489742783178},"418":{"tf":1.0},"419":{"tf":1.0},"425":{"tf":1.0},"529":{"tf":1.0}},"k":{"df":4,"docs":{"233":{"tf":1.0},"258":{"tf":1.0},"309":{"tf":1.0},"397":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"3":{"4":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"7":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":1,"docs":{"153":{"tf":1.0}}}}},"r":{"a":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"m":{"df":1,"docs":{"360":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"<":{"df":1,"docs":{"579":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":8,"docs":{"156":{"tf":1.0},"336":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"469":{"tf":2.0},"470":{"tf":2.0},"472":{"tf":1.0},"475":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":6,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":2.0},"218":{"tf":2.8284271247461903},"458":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"a":{"df":1,"docs":{"359":{"tf":1.0}}},"d":{"df":1,"docs":{"359":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"s":{"df":1,"docs":{"217":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"235":{"tf":1.0}}}}},"t":{"df":64,"docs":{"116":{"tf":1.0},"12":{"tf":1.0},"134":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"195":{"tf":1.0},"204":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"245":{"tf":1.0},"252":{"tf":1.0},"254":{"tf":1.0},"259":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"343":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"355":{"tf":1.0},"358":{"tf":1.0},"366":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"383":{"tf":1.7320508075688772},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"448":{"tf":1.0},"455":{"tf":1.0},"457":{"tf":1.0},"467":{"tf":1.0},"47":{"tf":1.0},"474":{"tf":1.0},"477":{"tf":1.0},"481":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"503":{"tf":1.0},"516":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.0},"537":{"tf":1.0},"599":{"tf":1.0}},"i":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"363":{"tf":1.0},"393":{"tf":1.0}}}},"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":2,"docs":{"278":{"tf":1.4142135623730951},"601":{"tf":1.4142135623730951}}}},"l":{"df":1,"docs":{"469":{"tf":1.0}}},"u":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":22,"docs":{"156":{"tf":1.4142135623730951},"18":{"tf":1.0},"221":{"tf":1.0},"248":{"tf":1.0},"27":{"tf":1.0},"300":{"tf":1.0},"376":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"408":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.4142135623730951},"458":{"tf":1.0},"462":{"tf":1.4142135623730951},"478":{"tf":1.0},"487":{"tf":1.0},"527":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"561":{"tf":1.0},"62":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":1,"docs":{"221":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":7,"docs":{"110":{"tf":1.0},"143":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"286":{"tf":1.0},"315":{"tf":1.0},"350":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":2,"docs":{"221":{"tf":1.0},"380":{"tf":1.0}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"389":{"tf":1.0}}}}}}},"s":{"c":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":15,"docs":{"200":{"tf":1.0},"217":{"tf":2.23606797749979},"218":{"tf":1.0},"244":{"tf":1.0},"246":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.7320508075688772},"423":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.7320508075688772},"573":{"tf":1.0},"599":{"tf":1.0}}},"t":{"df":7,"docs":{"276":{"tf":1.0},"284":{"tf":1.0},"321":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.7320508075688772},"599":{"tf":1.0},"76":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"469":{"tf":2.8284271247461903},"470":{"tf":2.23606797749979}}}},"df":0,"docs":{},"h":{"df":10,"docs":{"156":{"tf":1.0},"286":{"tf":1.0},"394":{"tf":1.4142135623730951},"41":{"tf":1.0},"417":{"tf":1.0},"448":{"tf":1.4142135623730951},"458":{"tf":1.0},"463":{"tf":1.0},"470":{"tf":1.0},"558":{"tf":1.0}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"363":{"tf":1.0}},"n":{"df":18,"docs":{"125":{"tf":1.0},"156":{"tf":2.0},"191":{"tf":1.0},"195":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.4142135623730951},"363":{"tf":1.0},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"372":{"tf":1.0},"389":{"tf":1.0},"450":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"#":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"d":{"df":1,"docs":{"365":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"y":{"df":4,"docs":{"110":{"tf":1.0},"213":{"tf":1.0},"340":{"tf":1.0},"515":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":1,"docs":{"214":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":3,"docs":{"470":{"tf":1.0},"539":{"tf":1.4142135623730951},"558":{"tf":2.449489742783178}},"e":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"131":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"370":{"tf":1.0}}}},"n":{"df":1,"docs":{"478":{"tf":1.0}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":63,"docs":{"154":{"tf":1.4142135623730951},"158":{"tf":1.0},"16":{"tf":1.0},"164":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"23":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.4142135623730951},"291":{"tf":1.0},"292":{"tf":1.0},"306":{"tf":1.0},"317":{"tf":1.0},"319":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"331":{"tf":1.4142135623730951},"333":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"357":{"tf":1.0},"36":{"tf":1.0},"361":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"42":{"tf":1.4142135623730951},"435":{"tf":1.0},"437":{"tf":1.0},"447":{"tf":1.0},"453":{"tf":1.0},"467":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.4142135623730951},"490":{"tf":1.4142135623730951},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"53":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"54":{"tf":1.0},"583":{"tf":1.0},"597":{"tf":1.0},"60":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.4142135623730951},"64":{"tf":1.0},"9":{"tf":1.0}},"e":{"'":{"df":3,"docs":{"27":{"tf":1.0},"299":{"tf":1.0},"54":{"tf":1.0}}},"df":0,"docs":{}}}}},"r":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"336":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":8,"docs":{"319":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.0},"412":{"tf":1.7320508075688772},"421":{"tf":1.7320508075688772},"422":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"469":{"tf":1.0}},"f":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":4,"docs":{"305":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"322":{"tf":1.0}}}}}}},"df":5,"docs":{"209":{"tf":2.6457513110645907},"214":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"543":{"tf":1.0},"82":{"tf":1.0}},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"110":{"tf":1.0},"35":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"137":{"tf":1.0},"217":{"tf":1.0},"380":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"221":{"tf":2.449489742783178}}}}}}}}}},"df":41,"docs":{"134":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"207":{"tf":1.0},"209":{"tf":2.449489742783178},"211":{"tf":2.23606797749979},"213":{"tf":1.0},"223":{"tf":1.0},"256":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"292":{"tf":1.0},"308":{"tf":1.0},"312":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.7320508075688772},"345":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"408":{"tf":1.7320508075688772},"41":{"tf":1.0},"431":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"510":{"tf":1.0},"521":{"tf":1.4142135623730951},"528":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.4142135623730951},"543":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.4142135623730951},"82":{"tf":1.0},"9":{"tf":1.7320508075688772}}}}}},"h":{"a":{"df":0,"docs":{},"p":{"df":13,"docs":{"156":{"tf":1.0},"200":{"tf":1.0},"252":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"359":{"tf":1.0},"365":{"tf":1.0},"389":{"tf":1.4142135623730951},"428":{"tf":1.0},"49":{"tf":1.0},"496":{"tf":1.0},"515":{"tf":1.0},"54":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"o":{"d":{"df":44,"docs":{"15":{"tf":2.23606797749979},"158":{"tf":1.0},"16":{"tf":2.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"457":{"tf":1.0},"46":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"58":{"tf":1.0},"60":{"tf":1.0}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"146":{"tf":1.0},"177":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"244":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":16,"docs":{"200":{"tf":1.0},"213":{"tf":1.0},"218":{"tf":1.0},"238":{"tf":1.0},"262":{"tf":1.0},"303":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"364":{"tf":1.0},"384":{"tf":1.0},"443":{"tf":1.0},"451":{"tf":1.0},"461":{"tf":1.0},"474":{"tf":1.0},"558":{"tf":1.0},"64":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"29":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"259":{"tf":1.0}}}}}},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"55":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"469":{"tf":1.0},"470":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":18,"docs":{"113":{"tf":1.0},"156":{"tf":1.0},"231":{"tf":1.7320508075688772},"232":{"tf":1.4142135623730951},"237":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"35":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"408":{"tf":1.0},"480":{"tf":1.7320508075688772},"483":{"tf":1.0},"538":{"tf":1.0},"61":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"15":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"c":{"df":3,"docs":{"246":{"tf":1.0},"248":{"tf":1.0},"374":{"tf":1.0}}},"df":0,"docs":{}},"n":{":":{":":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"370":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":1.0}}}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"d":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":6,"docs":{"197":{"tf":1.0},"217":{"tf":1.0},"336":{"tf":1.7320508075688772},"418":{"tf":1.0},"421":{"tf":2.0},"568":{"tf":1.0}}}}}},"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":6,"docs":{"199":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"328":{"tf":1.4142135623730951},"370":{"tf":1.0},"375":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"328":{"tf":1.0}}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":3,"docs":{"246":{"tf":2.23606797749979},"248":{"tf":1.0},"251":{"tf":1.0}}}}}},"df":19,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.7320508075688772},"199":{"tf":1.7320508075688772},"203":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":2.449489742783178},"248":{"tf":1.0},"251":{"tf":1.7320508075688772},"252":{"tf":1.7320508075688772},"258":{"tf":1.0},"332":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.0},"383":{"tf":1.0},"394":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.4142135623730951}},"g":{"df":1,"docs":{"397":{"tf":1.7320508075688772}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"457":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"l":{"df":5,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"367":{"tf":1.0},"456":{"tf":1.0},"496":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"a":{"c":{"df":0,"docs":{},"e":{"df":13,"docs":{"2":{"tf":1.0},"251":{"tf":1.0},"40":{"tf":1.0},"402":{"tf":1.0},"421":{"tf":1.0},"442":{"tf":1.0},"465":{"tf":1.0},"475":{"tf":1.0},"497":{"tf":1.0},"52":{"tf":1.0},"539":{"tf":1.0},"562":{"tf":1.0},"598":{"tf":1.0}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"551":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"156":{"tf":1.0},"460":{"tf":1.0}}}},"n":{"df":14,"docs":{"11":{"tf":1.0},"16":{"tf":1.0},"18":{"tf":1.0},"19":{"tf":1.0},"328":{"tf":1.0},"40":{"tf":1.0},"46":{"tf":1.0},"486":{"tf":1.0},"49":{"tf":1.0},"532":{"tf":1.0},"550":{"tf":1.0},"552":{"tf":2.0},"553":{"tf":1.0},"61":{"tf":1.0}}},"y":{"df":45,"docs":{"130":{"tf":1.0},"156":{"tf":2.0},"164":{"tf":1.4142135623730951},"174":{"tf":1.4142135623730951},"184":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"206":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"218":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"251":{"tf":1.0},"259":{"tf":1.0},"264":{"tf":1.4142135623730951},"265":{"tf":1.0},"273":{"tf":1.0},"28":{"tf":1.4142135623730951},"281":{"tf":1.0},"289":{"tf":1.0},"297":{"tf":1.0},"317":{"tf":1.0},"32":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"353":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"414":{"tf":1.0},"428":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"483":{"tf":1.0},"599":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"217":{"tf":1.0}}},".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":1,"docs":{"217":{"tf":1.0}}}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"356":{"tf":1.0},"380":{"tf":1.0}}}}},"df":9,"docs":{"113":{"tf":1.0},"21":{"tf":1.0},"23":{"tf":1.0},"25":{"tf":1.0},"26":{"tf":1.0},"37":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.0},"39":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":1,"docs":{"209":{"tf":1.0}},"g":{"df":2,"docs":{"300":{"tf":1.0},"458":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"217":{"tf":1.4142135623730951},"542":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}}},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":31,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.4142135623730951},"17":{"tf":1.0},"171":{"tf":1.0},"178":{"tf":1.4142135623730951},"200":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"230":{"tf":1.0},"257":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"271":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"325":{"tf":1.0},"336":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"419":{"tf":1.0},"469":{"tf":1.0},"49":{"tf":1.0},"498":{"tf":1.0},"507":{"tf":1.0},"526":{"tf":1.0},"559":{"tf":1.0},"56":{"tf":1.0},"562":{"tf":1.0},"583":{"tf":1.0},"61":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"190":{"tf":1.0},"198":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"458":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"380":{"tf":1.0}}}},"l":{"df":0,"docs":{},"l":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"217":{"tf":1.0},"336":{"tf":1.7320508075688772},"421":{"tf":2.0}}}}}}},":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":5,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"336":{"tf":2.0},"418":{"tf":1.0},"457":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":4,"docs":{"200":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"421":{"tf":1.4142135623730951}}},"y":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"418":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"k":{"(":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}},"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"v":{"df":1,"docs":{"200":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"568":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"t":{"df":1,"docs":{"418":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"197":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":3,"docs":{"217":{"tf":1.0},"336":{"tf":1.7320508075688772},"421":{"tf":2.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"197":{"tf":1.0},"418":{"tf":1.0}}}}}}},"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"572":{"tf":1.0}}}}}}}},"df":2,"docs":{"199":{"tf":1.0},"568":{"tf":1.0}}}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"328":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":29,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"171":{"tf":1.7320508075688772},"197":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"217":{"tf":1.0},"276":{"tf":1.0},"279":{"tf":1.0},"284":{"tf":1.4142135623730951},"328":{"tf":2.8284271247461903},"336":{"tf":3.1622776601683795},"342":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"353":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":2.23606797749979},"423":{"tf":1.4142135623730951},"456":{"tf":2.0},"457":{"tf":2.449489742783178},"538":{"tf":1.0},"539":{"tf":1.0},"570":{"tf":1.0},"62":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":1,"docs":{"276":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"325":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"331":{"tf":1.4142135623730951},"470":{"tf":1.0}}},"r":{"df":3,"docs":{"167":{"tf":1.0},"321":{"tf":1.0},"599":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"347":{"tf":1.0},"599":{"tf":1.0}}}}}},"p":{"df":4,"docs":{"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"258":{"tf":1.0},"397":{"tf":1.0}},"u":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":10,"docs":{"232":{"tf":1.0},"300":{"tf":1.0},"315":{"tf":1.0},"359":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"452":{"tf":1.0},"546":{"tf":1.0},"599":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"509":{"tf":1.0}}}},"df":0,"docs":{}},"df":7,"docs":{"209":{"tf":1.0},"408":{"tf":1.0},"532":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0},"546":{"tf":1.0},"73":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"116":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":5,"docs":{"15":{"tf":1.0},"217":{"tf":1.0},"421":{"tf":1.0},"487":{"tf":1.4142135623730951},"84":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":29,"docs":{"120":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.4142135623730951},"128":{"tf":1.0},"192":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"428":{"tf":1.0},"478":{"tf":1.0},"483":{"tf":1.0},"498":{"tf":1.0},"526":{"tf":1.4142135623730951},"61":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"t":{"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"271":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":23,"docs":{"162":{"tf":1.0},"192":{"tf":1.0},"199":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.4142135623730951},"28":{"tf":1.0},"284":{"tf":1.4142135623730951},"312":{"tf":1.0},"319":{"tf":1.0},"343":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.4142135623730951},"36":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"486":{"tf":1.0},"599":{"tf":2.8284271247461903},"60":{"tf":1.0},"9":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":9,"docs":{"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"268":{"tf":1.4142135623730951},"389":{"tf":1.7320508075688772},"42":{"tf":1.0},"496":{"tf":1.0},"560":{"tf":1.0}}}}}}},"v":{"df":2,"docs":{"27":{"tf":1.0},"40":{"tf":1.0}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"108":{"tf":1.0},"127":{"tf":1.0},"259":{"tf":1.4142135623730951}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":9,"docs":{"203":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"302":{"tf":1.0},"341":{"tf":1.0},"401":{"tf":1.0},"513":{"tf":1.0},"564":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"8":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":59,"docs":{"14":{"tf":1.4142135623730951},"148":{"tf":1.0},"149":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.0},"158":{"tf":1.0},"16":{"tf":2.23606797749979},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"19":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"21":{"tf":1.4142135623730951},"216":{"tf":1.0},"217":{"tf":1.0},"22":{"tf":1.4142135623730951},"220":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.4142135623730951},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":1.4142135623730951},"283":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.4142135623730951},"396":{"tf":1.0},"40":{"tf":1.7320508075688772},"407":{"tf":1.0},"41":{"tf":1.4142135623730951},"416":{"tf":1.0},"42":{"tf":1.0},"44":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"481":{"tf":1.0},"485":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"55":{"tf":1.4142135623730951},"58":{"tf":1.0},"60":{"tf":1.0},"84":{"tf":1.0}},"e":{"c":{"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"566":{"tf":1.0}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"s":{"df":4,"docs":{"19":{"tf":1.0},"29":{"tf":1.0},"336":{"tf":1.0},"49":{"tf":1.0}}}}},"d":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"51":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":8,"docs":{"21":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"347":{"tf":1.0},"37":{"tf":1.0},"417":{"tf":1.0},"61":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"408":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":10,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"251":{"tf":1.0},"27":{"tf":1.4142135623730951},"336":{"tf":1.0},"356":{"tf":1.0},"40":{"tf":1.0},"486":{"tf":1.0},"503":{"tf":1.0},"544":{"tf":1.0}}}},"r":{"df":0,"docs":{},"v":{"df":1,"docs":{"517":{"tf":1.4142135623730951}}}}},"s":{"df":2,"docs":{"284":{"tf":1.0},"336":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"478":{"tf":1.0},"539":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"i":{"df":15,"docs":{"156":{"tf":1.4142135623730951},"178":{"tf":1.0},"188":{"tf":1.0},"21":{"tf":1.0},"221":{"tf":1.4142135623730951},"259":{"tf":1.0},"264":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"502":{"tf":1.0},"510":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"599":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":9,"docs":{"110":{"tf":1.0},"125":{"tf":1.0},"167":{"tf":1.0},"218":{"tf":1.0},"263":{"tf":1.0},"284":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.4142135623730951},"487":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":6,"docs":{"360":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"418":{"tf":1.0},"440":{"tf":1.0}},"s":{"df":5,"docs":{"209":{"tf":1.0},"284":{"tf":1.0},"313":{"tf":1.0},"360":{"tf":1.4142135623730951},"469":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"140":{"tf":1.0},"474":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"462":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":2,"docs":{"156":{"tf":1.0},"61":{"tf":1.0}}}}}},"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"(":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":5,"docs":{"245":{"tf":1.0},"284":{"tf":1.0},"336":{"tf":3.1622776601683795},"380":{"tf":2.23606797749979},"448":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"336":{"tf":2.6457513110645907}}}}}}},"l":{"df":0,"docs":{},"n":{"!":{"(":{"\"":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"320":{"tf":1.0},"380":{"tf":3.3166247903554}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"458":{"tf":1.0}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":7,"docs":{"168":{"tf":1.0},"171":{"tf":1.0},"258":{"tf":1.0},"286":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"523":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"153":{"tf":1.0},"155":{"tf":1.4142135623730951},"539":{"tf":1.0}},"i":{"df":5,"docs":{"328":{"tf":2.0},"331":{"tf":1.0},"41":{"tf":2.0},"64":{"tf":1.0},"65":{"tf":2.0}}}}}}},"v":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"187":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"b":{"a":{"b":{"df":0,"docs":{},"l":{"df":28,"docs":{"174":{"tf":1.4142135623730951},"214":{"tf":1.7320508075688772},"218":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"251":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"284":{"tf":1.0},"315":{"tf":1.0},"321":{"tf":1.0},"325":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"352":{"tf":1.0},"367":{"tf":1.0},"385":{"tf":1.0},"418":{"tf":1.0},"445":{"tf":1.0},"450":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"96":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":1,"docs":{"389":{"tf":1.0}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":80,"docs":{"155":{"tf":1.0},"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"161":{"tf":1.0},"164":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"181":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"233":{"tf":1.7320508075688772},"234":{"tf":2.0},"244":{"tf":1.0},"25":{"tf":1.4142135623730951},"251":{"tf":1.0},"256":{"tf":1.7320508075688772},"257":{"tf":1.0},"258":{"tf":2.23606797749979},"259":{"tf":1.0},"261":{"tf":1.0},"264":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"284":{"tf":1.0},"297":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"319":{"tf":1.0},"323":{"tf":1.0},"328":{"tf":1.0},"331":{"tf":1.0},"345":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951},"370":{"tf":1.0},"375":{"tf":1.0},"377":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.0},"397":{"tf":1.0},"400":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"419":{"tf":1.4142135623730951},"42":{"tf":1.0},"421":{"tf":1.0},"425":{"tf":1.0},"431":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.4142135623730951},"458":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"470":{"tf":2.0},"472":{"tf":1.4142135623730951},"475":{"tf":1.0},"478":{"tf":1.0},"490":{"tf":1.0},"499":{"tf":1.4142135623730951},"501":{"tf":1.0},"519":{"tf":1.0},"521":{"tf":1.7320508075688772},"537":{"tf":1.0},"539":{"tf":1.7320508075688772},"54":{"tf":1.0},"561":{"tf":1.0},"599":{"tf":1.0},"74":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"516":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"199":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":29,"docs":{"15":{"tf":1.0},"152":{"tf":1.0},"156":{"tf":1.0},"181":{"tf":1.0},"189":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.4142135623730951},"303":{"tf":1.0},"31":{"tf":1.0},"312":{"tf":1.0},"330":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"410":{"tf":1.0},"42":{"tf":1.4142135623730951},"421":{"tf":1.0},"44":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"469":{"tf":1.4142135623730951},"485":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.4142135623730951},"62":{"tf":1.0}}}}}},"d":{"df":1,"docs":{"292":{"tf":2.449489742783178}},"u":{"c":{"df":4,"docs":{"214":{"tf":1.0},"276":{"tf":1.0},"350":{"tf":1.0},"599":{"tf":1.0}},"t":{"df":22,"docs":{"131":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.0},"168":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.0},"318":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"349":{"tf":1.0},"351":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"470":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":1.0},"9":{"tf":1.4142135623730951},"91":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{":":{":":{"<":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{">":{"(":{"&":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"276":{"tf":1.0},"469":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"469":{"tf":1.0}}}}}}},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"383":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":3,"docs":{"209":{"tf":1.7320508075688772},"248":{"tf":1.0},"435":{"tf":1.0}}}}},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":42,"docs":{"110":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.4142135623730951},"187":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.4142135623730951},"232":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"289":{"tf":1.0},"300":{"tf":1.0},"315":{"tf":1.0},"339":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":2.0},"408":{"tf":1.0},"436":{"tf":1.0},"448":{"tf":1.7320508075688772},"457":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.7320508075688772},"474":{"tf":1.4142135623730951},"483":{"tf":1.0},"510":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"528":{"tf":1.0},"538":{"tf":2.8284271247461903},"539":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"67":{"tf":1.0},"72":{"tf":1.0},"74":{"tf":1.0},"79":{"tf":1.0},"84":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"286":{"tf":1.0}}}},"df":49,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"211":{"tf":1.0},"216":{"tf":1.0},"218":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"241":{"tf":1.0},"243":{"tf":1.0},"250":{"tf":1.4142135623730951},"254":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"339":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.4142135623730951},"467":{"tf":1.0},"469":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":10,"docs":{"156":{"tf":1.0},"18":{"tf":1.0},"268":{"tf":1.0},"342":{"tf":1.0},"380":{"tf":1.0},"412":{"tf":1.4142135623730951},"470":{"tf":1.0},"538":{"tf":1.4142135623730951},"558":{"tf":1.7320508075688772},"562":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":103,"docs":{"101":{"tf":1.0},"102":{"tf":1.0},"103":{"tf":1.0},"104":{"tf":1.0},"105":{"tf":1.0},"106":{"tf":1.0},"107":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"114":{"tf":1.0},"115":{"tf":1.0},"118":{"tf":1.7320508075688772},"120":{"tf":1.4142135623730951},"121":{"tf":1.0},"122":{"tf":1.0},"123":{"tf":1.0},"124":{"tf":1.0},"127":{"tf":1.7320508075688772},"129":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0},"132":{"tf":1.0},"133":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.0},"14":{"tf":1.0},"140":{"tf":1.0},"141":{"tf":1.0},"142":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"16":{"tf":1.4142135623730951},"187":{"tf":1.4142135623730951},"20":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":2.23606797749979},"213":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":2.23606797749979},"22":{"tf":1.4142135623730951},"221":{"tf":1.0},"224":{"tf":1.0},"230":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"244":{"tf":1.0},"249":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.7320508075688772},"258":{"tf":1.7320508075688772},"276":{"tf":2.23606797749979},"278":{"tf":1.0},"292":{"tf":1.4142135623730951},"3":{"tf":1.0},"300":{"tf":1.7320508075688772},"315":{"tf":1.0},"341":{"tf":1.4142135623730951},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"360":{"tf":1.0},"366":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"389":{"tf":2.449489742783178},"392":{"tf":1.0},"41":{"tf":1.7320508075688772},"456":{"tf":2.0},"458":{"tf":1.0},"47":{"tf":1.7320508075688772},"496":{"tf":1.0},"499":{"tf":1.0},"502":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.4142135623730951},"515":{"tf":2.0},"517":{"tf":1.0},"521":{"tf":1.4142135623730951},"522":{"tf":1.4142135623730951},"532":{"tf":1.7320508075688772},"533":{"tf":1.4142135623730951},"535":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"549":{"tf":1.0},"557":{"tf":1.4142135623730951},"558":{"tf":1.4142135623730951},"559":{"tf":1.0},"599":{"tf":1.0},"72":{"tf":1.4142135623730951},"79":{"tf":1.0},"89":{"tf":1.0},"91":{"tf":1.0},"93":{"tf":1.0},"94":{"tf":1.4142135623730951},"95":{"tf":1.0},"96":{"tf":2.449489742783178},"97":{"tf":1.7320508075688772},"98":{"tf":1.0},"99":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":2,"docs":{"55":{"tf":1.0},"59":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"211":{"tf":1.0}}},"s":{"df":9,"docs":{"156":{"tf":1.0},"188":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"278":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.0},"599":{"tf":1.0},"76":{"tf":1.0}},"e":{".":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"n":{"df":0,"docs":{},"e":{"df":2,"docs":{"330":{"tf":1.0},"433":{"tf":1.0}}}},"o":{"df":0,"docs":{},"f":{"df":2,"docs":{"422":{"tf":1.0},"431":{"tf":1.0}}}},"p":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"276":{"tf":1.0},"347":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"214":{"tf":1.0}}}},"s":{"df":10,"docs":{"14":{"tf":1.4142135623730951},"152":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.4142135623730951},"31":{"tf":1.0},"319":{"tf":1.0},"44":{"tf":1.0},"478":{"tf":1.0},"485":{"tf":1.0},"489":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"237":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0}}}}}}},"t":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"64":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"263":{"tf":1.0},"272":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"o":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":4,"docs":{"141":{"tf":1.0},"143":{"tf":1.4142135623730951},"548":{"tf":1.0},"549":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":6,"docs":{"209":{"tf":1.7320508075688772},"349":{"tf":1.0},"370":{"tf":1.7320508075688772},"408":{"tf":1.0},"538":{"tf":1.0},"548":{"tf":1.0}},"e":{"_":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"538":{"tf":1.4142135623730951},"539":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"d":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"i":{"d":{"df":34,"docs":{"11":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"125":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"168":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.4142135623730951},"241":{"tf":1.0},"245":{"tf":1.0},"252":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"457":{"tf":1.4142135623730951},"543":{"tf":1.0},"548":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"x":{"df":0,"docs":{},"i":{"df":1,"docs":{"268":{"tf":2.8284271247461903}}}}}},"u":{"b":{"(":{"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":7,"docs":{"217":{"tf":1.7320508075688772},"292":{"tf":2.23606797749979},"328":{"tf":2.8284271247461903},"380":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":2.0},"568":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"c":{"df":4,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"129":{"tf":1.0},"221":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":5,"docs":{"221":{"tf":1.0},"276":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"47":{"tf":1.0}}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":7,"docs":{"276":{"tf":2.23606797749979},"279":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"389":{"tf":1.0},"534":{"tf":1.0},"603":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"225":{"tf":1.0},"456":{"tf":1.0}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":3,"docs":{"119":{"tf":1.0},"310":{"tf":1.0},"421":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"h":{"df":7,"docs":{"173":{"tf":1.0},"209":{"tf":1.4142135623730951},"261":{"tf":1.0},"309":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0}}}},"t":{"df":14,"docs":{"195":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.4142135623730951},"258":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"53":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"55":{"tf":1.0},"562":{"tf":1.0}}},"z":{"df":0,"docs":{},"z":{"df":0,"docs":{},"l":{"df":3,"docs":{"234":{"tf":1.0},"284":{"tf":1.0},"599":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"347":{"tf":1.0}}},"df":1,"docs":{"347":{"tf":1.0}}}}}}}},"q":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"423":{"tf":1.0}}}}},"df":0,"docs":{}}},"{":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":3,"docs":{"417":{"tf":1.0},"421":{"tf":2.449489742783178},"422":{"tf":1.0}}}}}},"df":0,"docs":{},"t":{"df":2,"docs":{"192":{"tf":1.0},"599":{"tf":1.0}}},"u":{"a":{"d":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"311":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":7,"docs":{"110":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"328":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"599":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":4,"docs":{"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"209":{"tf":1.0},"347":{"tf":2.23606797749979}},"e":{"df":0,"docs":{},"s":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{":":{":":{"<":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"c":{"<":{"d":{"a":{"df":0,"docs":{},"t":{"a":{">":{">":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":79,"docs":{"100":{"tf":1.0},"109":{"tf":1.0},"117":{"tf":1.0},"126":{"tf":1.0},"135":{"tf":1.0},"144":{"tf":1.0},"154":{"tf":1.7320508075688772},"16":{"tf":1.0},"160":{"tf":1.0},"164":{"tf":1.0},"170":{"tf":1.0},"180":{"tf":1.0},"192":{"tf":1.0},"202":{"tf":1.0},"210":{"tf":1.0},"218":{"tf":1.0},"222":{"tf":1.0},"236":{"tf":1.0},"247":{"tf":1.0},"25":{"tf":1.0},"260":{"tf":1.0},"269":{"tf":1.0},"27":{"tf":1.0},"277":{"tf":1.0},"28":{"tf":1.7320508075688772},"284":{"tf":1.0},"285":{"tf":1.0},"29":{"tf":1.4142135623730951},"292":{"tf":1.0},"293":{"tf":1.0},"30":{"tf":1.0},"300":{"tf":2.23606797749979},"301":{"tf":1.0},"314":{"tf":1.0},"329":{"tf":1.0},"337":{"tf":1.0},"348":{"tf":1.0},"362":{"tf":1.0},"371":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"398":{"tf":1.0},"408":{"tf":1.0},"409":{"tf":1.0},"41":{"tf":1.7320508075688772},"42":{"tf":1.4142135623730951},"424":{"tf":1.0},"43":{"tf":1.0},"432":{"tf":1.0},"441":{"tf":1.0},"449":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.0},"471":{"tf":1.0},"479":{"tf":1.0},"487":{"tf":1.0},"492":{"tf":1.0},"505":{"tf":1.0},"506":{"tf":1.0},"509":{"tf":1.0},"524":{"tf":1.0},"529":{"tf":1.0},"534":{"tf":1.4142135623730951},"538":{"tf":1.0},"540":{"tf":1.0},"556":{"tf":1.0},"56":{"tf":1.4142135623730951},"566":{"tf":1.0},"57":{"tf":1.4142135623730951},"572":{"tf":1.0},"573":{"tf":1.4142135623730951},"582":{"tf":1.0},"593":{"tf":1.0},"599":{"tf":1.0},"66":{"tf":1.0},"75":{"tf":1.0},"80":{"tf":1.0},"85":{"tf":1.0},"90":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"e":{"df":2,"docs":{"328":{"tf":1.0},"347":{"tf":1.0}}}}},"i":{"c":{"df":1,"docs":{"150":{"tf":1.0}},"k":{"df":5,"docs":{"195":{"tf":1.0},"24":{"tf":1.0},"284":{"tf":1.0},"38":{"tf":1.0},"538":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":16,"docs":{"130":{"tf":1.0},"195":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"389":{"tf":1.0},"391":{"tf":1.0},"397":{"tf":1.0},"457":{"tf":1.0}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"187":{"tf":1.0}}}},"t":{"df":25,"docs":{"156":{"tf":1.0},"190":{"tf":1.4142135623730951},"211":{"tf":1.0},"230":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.0},"270":{"tf":1.0},"307":{"tf":1.0},"330":{"tf":1.0},"347":{"tf":1.0},"356":{"tf":1.0},"359":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"475":{"tf":1.0},"512":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"599":{"tf":1.0}}}},"o":{"df":112,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"15":{"tf":1.7320508075688772},"151":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.4142135623730951},"156":{"tf":1.0},"157":{"tf":2.0},"158":{"tf":1.7320508075688772},"16":{"tf":1.7320508075688772},"165":{"tf":1.0},"166":{"tf":1.7320508075688772},"17":{"tf":1.0},"175":{"tf":1.0},"176":{"tf":1.7320508075688772},"185":{"tf":1.0},"186":{"tf":1.7320508075688772},"19":{"tf":1.0},"193":{"tf":1.0},"194":{"tf":1.7320508075688772},"207":{"tf":1.0},"208":{"tf":1.7320508075688772},"21":{"tf":1.0},"215":{"tf":1.0},"216":{"tf":1.7320508075688772},"219":{"tf":1.0},"220":{"tf":1.7320508075688772},"227":{"tf":1.0},"228":{"tf":1.0},"23":{"tf":1.7320508075688772},"24":{"tf":1.7320508075688772},"242":{"tf":1.0},"243":{"tf":1.0},"25":{"tf":1.4142135623730951},"253":{"tf":1.0},"254":{"tf":1.0},"266":{"tf":1.0},"267":{"tf":1.7320508075688772},"27":{"tf":1.4142135623730951},"274":{"tf":1.0},"275":{"tf":1.7320508075688772},"28":{"tf":1.0},"282":{"tf":1.0},"283":{"tf":1.7320508075688772},"29":{"tf":1.4142135623730951},"290":{"tf":1.0},"291":{"tf":1.7320508075688772},"298":{"tf":1.0},"299":{"tf":1.7320508075688772},"305":{"tf":1.0},"306":{"tf":1.7320508075688772},"31":{"tf":1.0},"326":{"tf":1.0},"327":{"tf":1.0},"334":{"tf":1.0},"335":{"tf":1.7320508075688772},"345":{"tf":1.0},"346":{"tf":1.7320508075688772},"354":{"tf":1.0},"355":{"tf":1.0},"36":{"tf":1.0},"368":{"tf":1.0},"369":{"tf":1.7320508075688772},"378":{"tf":1.0},"379":{"tf":1.7320508075688772},"387":{"tf":1.0},"388":{"tf":1.0},"395":{"tf":1.0},"396":{"tf":1.7320508075688772},"40":{"tf":1.4142135623730951},"406":{"tf":1.0},"407":{"tf":1.7320508075688772},"41":{"tf":1.4142135623730951},"416":{"tf":1.7320508075688772},"42":{"tf":1.4142135623730951},"429":{"tf":1.0},"430":{"tf":1.0},"438":{"tf":1.0},"439":{"tf":1.0},"446":{"tf":1.0},"447":{"tf":1.7320508075688772},"45":{"tf":1.0},"454":{"tf":1.0},"455":{"tf":1.0},"46":{"tf":1.4142135623730951},"466":{"tf":1.0},"467":{"tf":1.7320508075688772},"476":{"tf":1.0},"477":{"tf":1.7320508075688772},"493":{"tf":1.4142135623730951},"506":{"tf":1.0},"507":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"53":{"tf":1.4142135623730951},"539":{"tf":1.0},"54":{"tf":1.0},"541":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.0},"56":{"tf":1.4142135623730951},"58":{"tf":1.0},"59":{"tf":1.4142135623730951},"597":{"tf":1.0},"598":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}}}}},"r":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}}}}},"a":{"b":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"258":{"tf":1.0},"300":{"tf":1.0}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":8,"docs":{"167":{"tf":1.4142135623730951},"178":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.4142135623730951},"374":{"tf":1.0},"469":{"tf":1.0},"521":{"tf":1.0}}},"k":{"df":2,"docs":{"125":{"tf":1.0},"127":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"259":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"134":{"tf":1.0},"72":{"tf":1.0}}},"s":{"df":3,"docs":{"154":{"tf":1.0},"292":{"tf":1.0},"57":{"tf":1.0}}}},"m":{"df":2,"docs":{"336":{"tf":2.0},"340":{"tf":1.0}}},"n":{"d":{"df":1,"docs":{"481":{"tf":1.4142135623730951}},"o":{"df":0,"docs":{},"m":{"df":2,"docs":{"27":{"tf":1.0},"370":{"tf":1.0}}}}},"df":1,"docs":{"470":{"tf":1.0}},"g":{"df":1,"docs":{"8":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"140":{"tf":1.0},"419":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":2,"docs":{"538":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"240":{"tf":1.0}}}},"df":0,"docs":{}}}}},"w":{"df":4,"docs":{"157":{"tf":1.0},"276":{"tf":1.0},"328":{"tf":1.0},"489":{"tf":1.0}},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"190":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":2,"docs":{"190":{"tf":1.0},"336":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"599":{"tf":1.0}}},"df":4,"docs":{"360":{"tf":1.0},"389":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}}},"c":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"423":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"0":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"1":{"_":{"df":0,"docs":{},"u":{"3":{"2":{"df":1,"docs":{"423":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"419":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"418":{"tf":1.0}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"_":{"df":1,"docs":{"419":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"418":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"422":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":3,"docs":{"421":{"tf":1.0},"423":{"tf":1.0},"470":{"tf":1.0}}},"df":3,"docs":{"292":{"tf":2.449489742783178},"370":{"tf":1.7320508075688772},"440":{"tf":2.0}},"e":{"a":{"c":{"df":0,"docs":{},"h":{"df":6,"docs":{"209":{"tf":1.0},"245":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"286":{"tf":1.0},"448":{"tf":1.0},"556":{"tf":1.0}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0}}}}}},"d":{"df":33,"docs":{"156":{"tf":2.23606797749979},"178":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.4142135623730951},"198":{"tf":1.4142135623730951},"199":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.4142135623730951},"249":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.7320508075688772},"357":{"tf":1.4142135623730951},"360":{"tf":1.0},"361":{"tf":1.0},"365":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.4142135623730951},"402":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.7320508075688772},"486":{"tf":1.0},"527":{"tf":1.0},"565":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"481":{"tf":1.0},"538":{"tf":1.7320508075688772}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"478":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":3,"docs":{"195":{"tf":1.0},"196":{"tf":1.4142135623730951},"199":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"i":{"df":13,"docs":{"17":{"tf":1.0},"199":{"tf":1.4142135623730951},"230":{"tf":1.7320508075688772},"232":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"380":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"551":{"tf":1.0},"560":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}},"m":{"df":3,"docs":{"221":{"tf":1.0},"538":{"tf":1.0},"543":{"tf":1.0}}},"y":{"!":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{"c":{"df":0,"docs":{},"x":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"(":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"c":{"df":0,"docs":{},"x":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"df":45,"docs":{"110":{"tf":1.0},"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"23":{"tf":1.4142135623730951},"233":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"278":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"322":{"tf":1.0},"327":{"tf":1.0},"33":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"47":{"tf":1.0},"477":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":3,"docs":{"190":{"tf":1.0},"237":{"tf":1.0},"347":{"tf":1.0}}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"156":{"tf":1.0},"487":{"tf":1.0}}}},"z":{"df":38,"docs":{"178":{"tf":1.0},"195":{"tf":1.0},"198":{"tf":1.0},"201":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.0},"383":{"tf":1.0},"41":{"tf":1.4142135623730951},"421":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"47":{"tf":1.0},"470":{"tf":1.0},"487":{"tf":1.0},"497":{"tf":1.0},"499":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":30,"docs":{"148":{"tf":1.0},"149":{"tf":1.0},"156":{"tf":1.4142135623730951},"217":{"tf":1.0},"245":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"315":{"tf":1.0},"32":{"tf":1.0},"321":{"tf":1.4142135623730951},"340":{"tf":1.0},"35":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"408":{"tf":1.4142135623730951},"423":{"tf":1.0},"47":{"tf":1.0},"478":{"tf":1.7320508075688772},"481":{"tf":1.7320508075688772},"499":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.0},"534":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"461":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"110":{"tf":1.0}}}}}},"r":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"179":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":17,"docs":{"190":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"319":{"tf":1.0},"324":{"tf":1.0},"341":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"357":{"tf":1.0},"360":{"tf":1.4142135623730951},"370":{"tf":1.0},"404":{"tf":1.0},"440":{"tf":1.0},"45":{"tf":1.0},"512":{"tf":1.0},"61":{"tf":1.0},"82":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"c":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":9,"docs":{"120":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.7320508075688772},"292":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"380":{"tf":1.0},"481":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":3,"docs":{"259":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.0}}}},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":5,"docs":{"178":{"tf":1.0},"209":{"tf":1.7320508075688772},"217":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"470":{"tf":1.0},"522":{"tf":1.0}}}}}},"r":{"d":{"df":4,"docs":{"209":{"tf":1.4142135623730951},"392":{"tf":1.0},"448":{"tf":2.0},"598":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":4,"docs":{"156":{"tf":1.0},"245":{"tf":1.4142135623730951},"370":{"tf":2.6457513110645907},"375":{"tf":1.0}}}}},"v":{"df":1,"docs":{"539":{"tf":1.0}}}},"d":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"258":{"tf":1.0},"27":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0}}}}},"df":3,"docs":{"218":{"tf":1.0},"245":{"tf":1.0},"538":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":2,"docs":{"336":{"tf":1.0},"389":{"tf":1.0}}}}}}},"o":{"df":1,"docs":{"599":{"tf":1.0}}},"u":{"c":{"df":5,"docs":{"209":{"tf":1.0},"336":{"tf":1.0},"397":{"tf":1.7320508075688772},"405":{"tf":1.0},"73":{"tf":1.0}},"t":{"df":1,"docs":{"341":{"tf":1.0}}}},"df":0,"docs":{}}},"df":9,"docs":{"192":{"tf":1.0},"200":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":3.1622776601683795},"336":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"517":{"tf":1.0},"599":{"tf":1.0}},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"258":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":3,"docs":{"417":{"tf":2.0},"422":{"tf":1.0},"425":{"tf":1.0}},"l":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"417":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":3,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"565":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":16,"docs":{"156":{"tf":1.0},"213":{"tf":1.4142135623730951},"217":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"268":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.4142135623730951},"328":{"tf":1.0},"417":{"tf":1.4142135623730951},"42":{"tf":1.0},"421":{"tf":1.0},"470":{"tf":1.0},"538":{"tf":1.4142135623730951},"598":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"154":{"tf":1.0},"94":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"198":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"336":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":40,"docs":{"155":{"tf":1.0},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"176":{"tf":1.4142135623730951},"186":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"208":{"tf":1.4142135623730951},"216":{"tf":1.4142135623730951},"220":{"tf":1.4142135623730951},"228":{"tf":1.0},"23":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"259":{"tf":1.0},"267":{"tf":1.4142135623730951},"275":{"tf":1.4142135623730951},"283":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"299":{"tf":1.4142135623730951},"306":{"tf":1.4142135623730951},"327":{"tf":1.0},"335":{"tf":1.4142135623730951},"346":{"tf":1.4142135623730951},"355":{"tf":1.0},"369":{"tf":1.4142135623730951},"37":{"tf":1.0},"379":{"tf":1.4142135623730951},"388":{"tf":1.0},"396":{"tf":1.4142135623730951},"407":{"tf":1.4142135623730951},"416":{"tf":1.4142135623730951},"430":{"tf":1.0},"439":{"tf":1.0},"444":{"tf":1.0},"447":{"tf":1.4142135623730951},"455":{"tf":1.0},"458":{"tf":1.0},"467":{"tf":1.4142135623730951},"477":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"g":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"278":{"tf":1.0},"496":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":3,"docs":{"316":{"tf":1.0},"321":{"tf":1.0},"341":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"469":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"200":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"r":{"df":2,"docs":{"203":{"tf":1.0},"292":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"156":{"tf":1.4142135623730951},"207":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":5,"docs":{"110":{"tf":1.0},"195":{"tf":1.0},"217":{"tf":1.0},"310":{"tf":1.0},"457":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"18":{"tf":1.0},"51":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"190":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0}}}}}}}}}},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"417":{"tf":1.0}}}}}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":6,"docs":{"268":{"tf":1.0},"386":{"tf":1.0},"460":{"tf":1.0},"480":{"tf":1.0},"538":{"tf":1.0},"566":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"338":{"tf":1.0}}}}}}}}}},"y":{"df":1,"docs":{"108":{"tf":1.0}}}},"df":9,"docs":{"246":{"tf":1.0},"248":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"370":{"tf":1.0},"495":{"tf":1.0},"502":{"tf":1.0},"507":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"s":{"df":6,"docs":{"218":{"tf":1.0},"328":{"tf":1.4142135623730951},"357":{"tf":1.0},"380":{"tf":1.0},"422":{"tf":1.0},"89":{"tf":1.0}}}},"df":0,"docs":{},"v":{"df":3,"docs":{"172":{"tf":1.0},"559":{"tf":1.0},"579":{"tf":1.0}}}},"i":{"a":{"b":{"df":0,"docs":{},"l":{"df":4,"docs":{"119":{"tf":1.0},"121":{"tf":1.0},"130":{"tf":1.4142135623730951},"72":{"tf":1.0}}}},"df":0,"docs":{}},"df":5,"docs":{"248":{"tf":1.0},"456":{"tf":1.4142135623730951},"462":{"tf":1.4142135623730951},"544":{"tf":1.0},"548":{"tf":1.0}},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"358":{"tf":1.0},"370":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"458":{"tf":1.0}}},"df":5,"docs":{"169":{"tf":1.0},"209":{"tf":1.0},"357":{"tf":1.0},"458":{"tf":1.0},"517":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":19,"docs":{"167":{"tf":1.0},"199":{"tf":1.0},"23":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":1.0},"25":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"311":{"tf":1.0},"37":{"tf":1.0},"380":{"tf":2.0},"385":{"tf":1.0},"419":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"89":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"231":{"tf":1.0},"448":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"v":{"df":7,"docs":{"131":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"380":{"tf":1.4142135623730951},"392":{"tf":1.0},"559":{"tf":1.0}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"391":{"tf":1.0},"538":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"217":{"tf":1.0},"542":{"tf":1.0}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":4,"docs":{"300":{"tf":1.0},"343":{"tf":1.0},"370":{"tf":1.0},"474":{"tf":1.0}},"e":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"328":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"l":{"a":{"c":{"df":9,"docs":{"157":{"tf":1.0},"279":{"tf":1.0},"310":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"470":{"tf":1.0},"489":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":2,"docs":{"300":{"tf":1.4142135623730951},"54":{"tf":1.0}}}},"o":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}}},":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"16":{"tf":1.0},"292":{"tf":2.449489742783178},"562":{"tf":1.0},"580":{"tf":1.0}},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"221":{"tf":1.0}}}},"r":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":8,"docs":{"209":{"tf":2.23606797749979},"214":{"tf":1.0},"221":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.7320508075688772},"400":{"tf":1.0},"404":{"tf":1.4142135623730951},"9":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"24":{"tf":1.0},"25":{"tf":1.0},"603":{"tf":1.0}}}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":8,"docs":{"155":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"280":{"tf":1.0},"328":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.0},"94":{"tf":1.0}}}},"o":{"'":{"df":1,"docs":{"286":{"tf":1.0}}},"d":{"df":0,"docs":{},"u":{"c":{"df":4,"docs":{"178":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"431":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"284":{"tf":1.0}}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"278":{"tf":1.0}}}}},"q":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"418":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"347":{"tf":1.4142135623730951},"579":{"tf":1.0},"580":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":18,"docs":{"165":{"tf":1.0},"169":{"tf":1.7320508075688772},"217":{"tf":2.23606797749979},"221":{"tf":2.449489742783178},"232":{"tf":1.4142135623730951},"268":{"tf":3.7416573867739413},"276":{"tf":2.23606797749979},"279":{"tf":1.0},"292":{"tf":2.23606797749979},"300":{"tf":1.4142135623730951},"307":{"tf":1.4142135623730951},"315":{"tf":1.0},"347":{"tf":2.449489742783178},"349":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":2.0},"523":{"tf":1.4142135623730951},"603":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"r":{"df":60,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"112":{"tf":1.0},"119":{"tf":1.0},"128":{"tf":1.0},"129":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0},"153":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.7320508075688772},"171":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"268":{"tf":1.4142135623730951},"270":{"tf":1.0},"273":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.7320508075688772},"302":{"tf":1.0},"319":{"tf":1.4142135623730951},"328":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"351":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":2.6457513110645907},"380":{"tf":1.0},"41":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":2.23606797749979},"431":{"tf":1.0},"440":{"tf":6.708203932499369},"442":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.0},"522":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0},"559":{"tf":1.0},"579":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.4142135623730951}}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"323":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"258":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":7,"docs":{"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"237":{"tf":1.7320508075688772},"258":{"tf":1.0},"307":{"tf":1.0},"321":{"tf":1.7320508075688772}}}}}}},"s":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"181":{"tf":1.0},"183":{"tf":1.0},"359":{"tf":1.0},"469":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":7,"docs":{"181":{"tf":1.0},"218":{"tf":1.0},"319":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.7320508075688772}}}},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"385":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"c":{"df":18,"docs":{"108":{"tf":1.0},"119":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.4142135623730951},"125":{"tf":1.0},"127":{"tf":1.0},"131":{"tf":1.0},"178":{"tf":1.0},"217":{"tf":1.0},"284":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"370":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"538":{"tf":2.8284271247461903},"539":{"tf":1.4142135623730951},"544":{"tf":1.0},"546":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"213":{"tf":1.0},"53":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"n":{"d":{"df":9,"docs":{"209":{"tf":1.0},"217":{"tf":1.0},"276":{"tf":1.0},"29":{"tf":1.0},"300":{"tf":1.4142135623730951},"336":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":20,"docs":{"167":{"tf":2.23606797749979},"168":{"tf":1.0},"169":{"tf":2.23606797749979},"189":{"tf":1.0},"195":{"tf":1.7320508075688772},"201":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":2.8284271247461903},"230":{"tf":1.0},"276":{"tf":1.7320508075688772},"28":{"tf":1.0},"292":{"tf":1.7320508075688772},"300":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":1.4142135623730951},"397":{"tf":1.0},"41":{"tf":1.0},"538":{"tf":1.4142135623730951},"580":{"tf":1.4142135623730951},"599":{"tf":1.0}},"e":{"<":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"284":{"tf":1.0},"448":{"tf":1.0}}}}},"df":4,"docs":{"357":{"tf":1.0},"389":{"tf":1.0},"457":{"tf":1.0},"92":{"tf":1.0}},"r":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"370":{"tf":1.0},"421":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"<":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"292":{"tf":1.0}},"e":{"<":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{":":{":":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"u":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"209":{"tf":1.0}}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"<":{"df":0,"docs":{},"u":{"8":{"df":2,"docs":{"196":{"tf":1.4142135623730951},"197":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":43,"docs":{"108":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":2.6457513110645907},"307":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"347":{"tf":2.6457513110645907},"374":{"tf":1.0},"377":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0},"431":{"tf":1.0},"445":{"tf":1.0},"448":{"tf":1.7320508075688772},"469":{"tf":1.0},"470":{"tf":2.0},"472":{"tf":1.0},"502":{"tf":1.4142135623730951},"521":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"561":{"tf":1.0},"578":{"tf":1.4142135623730951},"579":{"tf":1.0},"599":{"tf":1.4142135623730951},"79":{"tf":1.0}}}},"m":{"df":1,"docs":{"573":{"tf":1.0}},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":2.0}}}}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"11":{"tf":1.0},"179":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":7,"docs":{"40":{"tf":1.0},"41":{"tf":1.4142135623730951},"45":{"tf":1.0},"493":{"tf":1.0},"506":{"tf":1.0},"525":{"tf":1.0},"541":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"336":{"tf":1.0}},"e":{"df":0,"docs":{},"v":{"df":2,"docs":{"336":{"tf":1.0},"342":{"tf":1.0}}}}},"y":{"_":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":2,"docs":{"457":{"tf":1.7320508075688772},"458":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":26,"docs":{"167":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":2.6457513110645907},"209":{"tf":1.4142135623730951},"217":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"246":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":2.0},"294":{"tf":1.0},"336":{"tf":3.1622776601683795},"341":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"418":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":2.0},"458":{"tf":1.7320508075688772},"465":{"tf":1.0},"508":{"tf":1.0},"51":{"tf":1.0},"522":{"tf":1.0},"573":{"tf":1.7320508075688772}}}}}},"u":{"df":0,"docs":{},"s":{"df":4,"docs":{"196":{"tf":1.0},"205":{"tf":1.0},"571":{"tf":1.0},"96":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"399":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":1,"docs":{"463":{"tf":1.0}}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":9,"docs":{"15":{"tf":1.0},"16":{"tf":1.4142135623730951},"230":{"tf":1.0},"259":{"tf":1.0},"29":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":1.0},"42":{"tf":1.4142135623730951},"558":{"tf":2.6457513110645907}}}},"s":{"df":1,"docs":{"61":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"18":{"tf":1.0},"268":{"tf":1.0},"347":{"tf":1.0},"51":{"tf":1.0}}}}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"512":{"tf":1.0},"518":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":6,"docs":{"134":{"tf":1.0},"209":{"tf":1.0},"313":{"tf":1.0},"370":{"tf":1.0},"431":{"tf":1.0},"460":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"370":{"tf":1.0}}}}}}}}}},"f":{"c":{"df":4,"docs":{"17":{"tf":1.0},"478":{"tf":1.0},"560":{"tf":1.0},"562":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":1,"docs":{"602":{"tf":1.0}}}}}}}}},"h":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"602":{"tf":1.0}}}}}}}}},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"542":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":29,"docs":{"129":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"268":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"300":{"tf":1.4142135623730951},"304":{"tf":1.0},"319":{"tf":1.0},"321":{"tf":1.0},"359":{"tf":1.0},"361":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"394":{"tf":1.0},"421":{"tf":1.7320508075688772},"431":{"tf":1.0},"472":{"tf":1.0},"475":{"tf":1.0},"522":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0},"552":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"460":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"401":{"tf":1.0}}},"k":{"df":1,"docs":{"538":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":2.23606797749979}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":1,"docs":{"380":{"tf":1.0}}}},"o":{"a":{"d":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"df":5,"docs":{"10":{"tf":1.0},"155":{"tf":1.0},"550":{"tf":1.0},"553":{"tf":1.0},"562":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"57":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}},"i":{"df":1,"docs":{"221":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":2,"docs":{"28":{"tf":1.0},"41":{"tf":1.0}}}},"m":{"df":1,"docs":{"156":{"tf":1.0}}},"o":{"df":0,"docs":{},"m":{"df":2,"docs":{"200":{"tf":1.0},"57":{"tf":1.0}}},"t":{"df":1,"docs":{"250":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"268":{"tf":1.0},"380":{"tf":1.0}}}}}},"t":{"df":6,"docs":{"195":{"tf":1.0},"201":{"tf":1.0},"268":{"tf":3.4641016151377544},"292":{"tf":1.0},"300":{"tf":1.0},"431":{"tf":1.7320508075688772}},"e":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"/":{"\"":{")":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"_":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"_":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"/":{"\"":{")":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"(":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"_":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"(":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":3,"docs":{"268":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0}}},"s":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"(":{"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":1.0}},"e":{")":{"?":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"230":{"tf":1.0},"502":{"tf":1.0}}}}}},"w":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}},"p":{"c":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":2,"docs":{"276":{"tf":2.6457513110645907},"359":{"tf":1.0}}},"df":0,"docs":{}},"s":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"349":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"279":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"df":2,"docs":{"440":{"tf":2.0},"602":{"tf":1.0}}},"t":{".":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"f":{"df":1,"docs":{"309":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"5":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"6":{"5":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{":":{"1":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":1,"docs":{"309":{"tf":1.0}},"l":{"d":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"b":{"d":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"503":{"tf":1.0}}},"i":{"df":2,"docs":{"134":{"tf":1.0},"72":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":1,"docs":{"218":{"tf":1.4142135623730951}}}}},"l":{"df":0,"docs":{},"e":{"df":5,"docs":{"156":{"tf":1.4142135623730951},"218":{"tf":1.0},"515":{"tf":1.0},"54":{"tf":1.0},"59":{"tf":1.0}}}},"m":{"df":0,"docs":{},"q":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":1,"docs":{"323":{"tf":1.0}}}}}},"n":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":53,"docs":{"112":{"tf":1.0},"121":{"tf":1.0},"125":{"tf":2.0},"127":{"tf":1.0},"128":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":2.0},"16":{"tf":1.0},"171":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.4142135623730951},"192":{"tf":1.0},"221":{"tf":1.0},"233":{"tf":1.4142135623730951},"234":{"tf":1.0},"242":{"tf":1.0},"244":{"tf":1.0},"245":{"tf":1.0},"258":{"tf":1.4142135623730951},"273":{"tf":1.0},"284":{"tf":1.7320508075688772},"309":{"tf":1.0},"318":{"tf":1.4142135623730951},"319":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.0},"347":{"tf":1.4142135623730951},"380":{"tf":2.449489742783178},"385":{"tf":1.0},"389":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"408":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"448":{"tf":1.7320508075688772},"453":{"tf":1.0},"504":{"tf":2.449489742783178},"508":{"tf":1.0},"509":{"tf":1.0},"510":{"tf":1.0},"517":{"tf":1.0},"522":{"tf":1.4142135623730951},"523":{"tf":1.0},"528":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.4142135623730951},"73":{"tf":1.0},"74":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":80,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.7320508075688772},"128":{"tf":1.4142135623730951},"137":{"tf":1.7320508075688772},"146":{"tf":1.4142135623730951},"156":{"tf":3.1622776601683795},"167":{"tf":1.0},"189":{"tf":2.0},"190":{"tf":2.449489742783178},"191":{"tf":1.0},"192":{"tf":1.4142135623730951},"203":{"tf":1.0},"233":{"tf":1.7320508075688772},"234":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":2.0},"240":{"tf":1.0},"241":{"tf":1.0},"256":{"tf":2.0},"257":{"tf":1.0},"258":{"tf":2.6457513110645907},"261":{"tf":2.0},"265":{"tf":1.0},"268":{"tf":1.0},"278":{"tf":1.4142135623730951},"284":{"tf":1.7320508075688772},"286":{"tf":1.0},"288":{"tf":1.4142135623730951},"300":{"tf":2.23606797749979},"302":{"tf":1.0},"309":{"tf":2.0},"319":{"tf":2.23606797749979},"323":{"tf":1.0},"325":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.7320508075688772},"349":{"tf":1.7320508075688772},"358":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":2.0},"372":{"tf":1.0},"380":{"tf":1.0},"399":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":2.0},"418":{"tf":1.0},"421":{"tf":2.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"437":{"tf":1.4142135623730951},"462":{"tf":1.0},"464":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"500":{"tf":1.0},"502":{"tf":2.8284271247461903},"503":{"tf":1.0},"504":{"tf":1.4142135623730951},"507":{"tf":2.449489742783178},"508":{"tf":1.0},"509":{"tf":1.0},"511":{"tf":1.4142135623730951},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.7320508075688772},"521":{"tf":2.0},"526":{"tf":1.4142135623730951},"527":{"tf":1.7320508075688772},"529":{"tf":1.7320508075688772},"532":{"tf":1.0},"533":{"tf":1.4142135623730951},"534":{"tf":1.7320508075688772},"564":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":2.23606797749979},"62":{"tf":1.7320508075688772}},"e":{"'":{"df":1,"docs":{"349":{"tf":1.0}}},".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{")":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"f":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"167":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"179":{"tf":1.0}}}}}},"t":{"'":{"df":19,"docs":{"156":{"tf":1.0},"181":{"tf":1.0},"211":{"tf":1.4142135623730951},"218":{"tf":1.0},"231":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"289":{"tf":1.0},"338":{"tf":1.0},"350":{"tf":1.0},"363":{"tf":1.4142135623730951},"367":{"tf":1.4142135623730951},"403":{"tf":1.0},"456":{"tf":1.4142135623730951},"469":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"502":{"tf":1.0},"76":{"tf":1.0}}},"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{"=":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":1,"docs":{"556":{"tf":1.0}}}}},"c":{"df":2,"docs":{"292":{"tf":1.0},"440":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"o":{"c":{"df":1,"docs":{"465":{"tf":1.0}}},"df":0,"docs":{}}},"df":182,"docs":{"108":{"tf":1.0},"11":{"tf":1.7320508075688772},"110":{"tf":1.7320508075688772},"118":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.4142135623730951},"15":{"tf":1.0},"153":{"tf":1.7320508075688772},"156":{"tf":3.7416573867739413},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"17":{"tf":1.0},"176":{"tf":1.4142135623730951},"178":{"tf":1.0},"183":{"tf":1.0},"186":{"tf":1.4142135623730951},"187":{"tf":1.7320508075688772},"188":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"195":{"tf":1.4142135623730951},"198":{"tf":1.0},"204":{"tf":1.0},"208":{"tf":1.4142135623730951},"209":{"tf":2.8284271247461903},"211":{"tf":2.0},"213":{"tf":1.0},"216":{"tf":1.4142135623730951},"217":{"tf":1.7320508075688772},"218":{"tf":1.4142135623730951},"220":{"tf":1.4142135623730951},"221":{"tf":1.7320508075688772},"227":{"tf":1.0},"228":{"tf":1.4142135623730951},"23":{"tf":1.4142135623730951},"230":{"tf":2.23606797749979},"232":{"tf":1.0},"235":{"tf":1.4142135623730951},"237":{"tf":1.4142135623730951},"243":{"tf":1.4142135623730951},"244":{"tf":1.0},"245":{"tf":1.4142135623730951},"251":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.0},"254":{"tf":1.4142135623730951},"256":{"tf":1.7320508075688772},"257":{"tf":1.0},"258":{"tf":2.6457513110645907},"259":{"tf":2.0},"261":{"tf":2.0},"263":{"tf":1.0},"264":{"tf":1.4142135623730951},"267":{"tf":1.4142135623730951},"268":{"tf":2.6457513110645907},"27":{"tf":1.0},"270":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"275":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"283":{"tf":1.4142135623730951},"284":{"tf":2.449489742783178},"289":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"299":{"tf":1.4142135623730951},"3":{"tf":1.0},"300":{"tf":2.0},"303":{"tf":1.0},"304":{"tf":1.0},"306":{"tf":1.4142135623730951},"316":{"tf":1.4142135623730951},"317":{"tf":1.0},"327":{"tf":1.4142135623730951},"332":{"tf":1.0},"333":{"tf":1.0},"335":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"338":{"tf":1.4142135623730951},"339":{"tf":1.4142135623730951},"340":{"tf":1.4142135623730951},"341":{"tf":1.7320508075688772},"343":{"tf":1.0},"346":{"tf":1.4142135623730951},"347":{"tf":1.7320508075688772},"349":{"tf":1.0},"350":{"tf":1.0},"355":{"tf":1.4142135623730951},"356":{"tf":2.0},"357":{"tf":1.4142135623730951},"358":{"tf":1.4142135623730951},"359":{"tf":1.4142135623730951},"363":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.4142135623730951},"37":{"tf":1.7320508075688772},"370":{"tf":1.7320508075688772},"376":{"tf":1.0},"379":{"tf":1.4142135623730951},"380":{"tf":4.47213595499958},"382":{"tf":1.0},"383":{"tf":2.0},"385":{"tf":1.0},"386":{"tf":1.0},"388":{"tf":1.4142135623730951},"389":{"tf":2.0},"393":{"tf":1.0},"394":{"tf":1.0},"396":{"tf":1.4142135623730951},"399":{"tf":1.0},"40":{"tf":1.0},"405":{"tf":1.0},"407":{"tf":1.4142135623730951},"408":{"tf":1.7320508075688772},"41":{"tf":1.0},"416":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.0},"427":{"tf":1.0},"430":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"435":{"tf":1.0},"439":{"tf":1.4142135623730951},"447":{"tf":1.4142135623730951},"455":{"tf":1.4142135623730951},"456":{"tf":2.6457513110645907},"457":{"tf":1.4142135623730951},"458":{"tf":1.4142135623730951},"460":{"tf":2.23606797749979},"461":{"tf":1.0},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"467":{"tf":1.4142135623730951},"469":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"475":{"tf":1.0},"477":{"tf":1.4142135623730951},"478":{"tf":1.0},"483":{"tf":1.0},"490":{"tf":2.0},"499":{"tf":1.0},"501":{"tf":2.0},"502":{"tf":1.4142135623730951},"512":{"tf":1.4142135623730951},"519":{"tf":2.0},"521":{"tf":1.7320508075688772},"522":{"tf":1.0},"523":{"tf":1.0},"525":{"tf":1.0},"530":{"tf":1.0},"537":{"tf":2.0},"538":{"tf":1.7320508075688772},"544":{"tf":1.0},"597":{"tf":1.0},"599":{"tf":2.449489742783178},"600":{"tf":1.0},"601":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.7320508075688772},"64":{"tf":1.0},"65":{"tf":2.23606797749979},"71":{"tf":1.0},"72":{"tf":1.7320508075688772},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":2.0},"8":{"tf":2.0},"81":{"tf":1.0},"82":{"tf":1.0},"86":{"tf":1.0},"87":{"tf":1.0},"89":{"tf":1.7320508075688772},"9":{"tf":2.449489742783178},"91":{"tf":1.7320508075688772},"92":{"tf":1.7320508075688772}},"f":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"245":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"i":{"df":1,"docs":{"156":{"tf":1.0}}},"u":{"df":0,"docs":{},"p":{"df":4,"docs":{"110":{"tf":1.0},"245":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"469":{"tf":1.0}}}}}}}},"w":{"<":{"'":{"a":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"x":{"df":1,"docs":{"448":{"tf":1.0}}},"y":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"224":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}},"s":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"579":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"131":{"tf":1.0}}},"df":0,"docs":{}}}}}},"d":{"df":1,"docs":{"221":{"tf":1.0}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":11,"docs":{"110":{"tf":1.0},"178":{"tf":1.0},"198":{"tf":1.0},"320":{"tf":1.0},"336":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"470":{"tf":1.0},"563":{"tf":1.0}},"r":{"df":2,"docs":{"425":{"tf":1.0},"428":{"tf":1.0}}},"t":{"df":0,"docs":{},"i":{"df":20,"docs":{"171":{"tf":1.0},"190":{"tf":1.0},"218":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.0},"344":{"tf":1.0},"41":{"tf":1.0},"456":{"tf":1.7320508075688772},"460":{"tf":1.4142135623730951},"469":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"511":{"tf":1.4142135623730951},"521":{"tf":1.0},"529":{"tf":1.0},"65":{"tf":1.4142135623730951},"76":{"tf":1.0},"79":{"tf":1.0},"81":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}}}}},"m":{"df":0,"docs":{},"e":{"df":55,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.0},"230":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"237":{"tf":1.7320508075688772},"240":{"tf":1.0},"25":{"tf":1.0},"252":{"tf":1.0},"257":{"tf":1.0},"261":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"321":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"331":{"tf":1.0},"341":{"tf":1.0},"358":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"393":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":1.0},"423":{"tf":1.4142135623730951},"437":{"tf":1.0},"45":{"tf":1.0},"453":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"46":{"tf":1.4142135623730951},"463":{"tf":1.0},"464":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"512":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"61":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.4142135623730951},"96":{"tf":1.0}}},"p":{"df":0,"docs":{},"l":{"df":11,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.0},"142":{"tf":1.0},"209":{"tf":1.0},"336":{"tf":1.0},"496":{"tf":1.0},"94":{"tf":1.0},"98":{"tf":1.0}}}}},"n":{"d":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"315":{"tf":1.0},"321":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"389":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":7,"docs":{"246":{"tf":1.0},"258":{"tf":1.0},"330":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"470":{"tf":1.0},"57":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":5,"docs":{"122":{"tf":1.0},"199":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.4142135623730951},"417":{"tf":1.0}}}},"w":{"df":1,"docs":{"465":{"tf":1.0}}},"y":{"df":2,"docs":{"300":{"tf":1.0},"538":{"tf":1.0}}}},"c":{"a":{"df":0,"docs":{},"l":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":1,"docs":{"73":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":4,"docs":{"284":{"tf":1.0},"347":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0}}}},"n":{"df":1,"docs":{"408":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":3,"docs":{"156":{"tf":1.0},"300":{"tf":1.0},"450":{"tf":1.0}}}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"389":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":8,"docs":{"209":{"tf":1.0},"318":{"tf":1.0},"328":{"tf":3.7416573867739413},"418":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"529":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"=":{"0":{"df":0,"docs":{},"x":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"d":{"b":{"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"328":{"tf":1.0}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"531":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":3,"docs":{"178":{"tf":1.0},"389":{"tf":1.0},"47":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"458":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"330":{"tf":1.0},"460":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"198":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"217":{"tf":1.0},"539":{"tf":1.4142135623730951}}}}},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"538":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":4,"docs":{"292":{"tf":1.0},"328":{"tf":1.4142135623730951},"440":{"tf":2.8284271247461903},"470":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"507":{"tf":1.0}}}}}}}}},"n":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"r":{"c":{"df":0,"docs":{},"h":{"df":14,"docs":{"178":{"tf":1.4142135623730951},"181":{"tf":1.0},"195":{"tf":1.0},"232":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":2.23606797749979},"258":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.0},"440":{"tf":1.0},"458":{"tf":1.0},"475":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"237":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"433":{"tf":1.0}}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":15,"docs":{"130":{"tf":1.0},"16":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.7320508075688772},"431":{"tf":1.0},"458":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":2.23606797749979},"539":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"89":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":6,"docs":{"154":{"tf":1.7320508075688772},"380":{"tf":1.0},"551":{"tf":1.4142135623730951},"597":{"tf":1.4142135623730951},"598":{"tf":1.4142135623730951},"94":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"237":{"tf":1.0}}}}},"df":1,"docs":{"341":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"53":{"tf":1.0}}},"df":59,"docs":{"152":{"tf":1.4142135623730951},"156":{"tf":1.0},"157":{"tf":1.0},"161":{"tf":1.0},"178":{"tf":2.0},"188":{"tf":1.0},"190":{"tf":1.0},"196":{"tf":1.0},"209":{"tf":2.23606797749979},"217":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.4142135623730951},"27":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":2.23606797749979},"292":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"343":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.23606797749979},"393":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.4142135623730951},"408":{"tf":1.7320508075688772},"421":{"tf":1.4142135623730951},"440":{"tf":1.0},"463":{"tf":1.0},"485":{"tf":1.4142135623730951},"489":{"tf":1.0},"499":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"509":{"tf":1.0},"516":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":3.1622776601683795},"539":{"tf":1.4142135623730951},"542":{"tf":1.0},"543":{"tf":1.0},"551":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.4142135623730951},"580":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"68":{"tf":1.0},"69":{"tf":1.0},"73":{"tf":1.0},"95":{"tf":1.0},"97":{"tf":1.0}},"k":{"df":2,"docs":{"178":{"tf":1.0},"179":{"tf":1.0}}},"m":{"df":33,"docs":{"139":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":2.23606797749979},"276":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.7320508075688772},"319":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.4142135623730951},"389":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"450":{"tf":1.0},"458":{"tf":1.0},"478":{"tf":1.0},"57":{"tf":1.0},"599":{"tf":1.0}}},"n":{"df":7,"docs":{"198":{"tf":1.0},"245":{"tf":1.0},"284":{"tf":1.0},"347":{"tf":1.4142135623730951},"380":{"tf":1.0},"445":{"tf":1.4142135623730951},"502":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":13,"docs":{"15":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"192":{"tf":1.0},"211":{"tf":1.0},"246":{"tf":1.4142135623730951},"252":{"tf":1.0},"370":{"tf":1.0},"422":{"tf":1.0},"538":{"tf":1.0},"588":{"tf":1.0},"60":{"tf":1.0}}}},"df":0,"docs":{}},"f":{"(":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},".":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"418":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":1,"docs":{"167":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"167":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":1,"docs":{"370":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"_":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}},"m":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"190":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"370":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"q":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"200":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":2.0},"200":{"tf":2.0}},"e":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"268":{"tf":2.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"o":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"580":{"tf":1.4142135623730951}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"221":{"tf":1.4142135623730951}}}}}}}}}},"df":0,"docs":{}},"=":{"0":{"df":0,"docs":{},"x":{"5":{"5":{"5":{"5":{"5":{"5":{"7":{"0":{"1":{"a":{"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"d":{"b":{"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"2":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"8":{"df":1,"docs":{"284":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"d":{"0":{"0":{"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"3":{"0":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":11,"docs":{"167":{"tf":1.0},"169":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":2.23606797749979},"217":{"tf":1.0},"292":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"418":{"tf":1.0},"421":{"tf":2.8284271247461903},"568":{"tf":1.4142135623730951}}},"l":{"df":1,"docs":{"235":{"tf":1.0}}}},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"171":{"tf":1.0},"270":{"tf":1.0},"341":{"tf":1.0},"453":{"tf":1.0},"470":{"tf":1.0}}}}},"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"572":{"tf":1.0}}}}}},"n":{"d":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"189":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":20,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.4142135623730951},"195":{"tf":1.0},"268":{"tf":3.3166247903554},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.7320508075688772},"292":{"tf":2.8284271247461903},"328":{"tf":2.23606797749979},"341":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.4142135623730951},"470":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":2.0},"564":{"tf":1.0},"579":{"tf":2.23606797749979},"599":{"tf":1.0},"62":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"276":{"tf":1.0},"328":{"tf":1.0},"538":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":10,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"310":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.0},"352":{"tf":1.0},"389":{"tf":1.0}},"i":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"116":{"tf":1.0},"230":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"106":{"tf":1.0},"108":{"tf":1.4142135623730951},"111":{"tf":1.0}}}}},"t":{"df":2,"docs":{"169":{"tf":1.0},"276":{"tf":2.23606797749979}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":6,"docs":{"217":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"349":{"tf":1.0},"389":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"191":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"509":{"tf":1.0},"527":{"tf":1.0}}},"n":{"c":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"r":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"j":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"&":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"s":{")":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":2,"docs":{"182":{"tf":1.0},"400":{"tf":1.0}}}}},"i":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"292":{"tf":2.0},"347":{"tf":1.4142135623730951},"469":{"tf":1.0}},"i":{"df":0,"docs":{},"z":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"s":{"(":{"&":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":1,"docs":{"458":{"tf":1.0}}},"v":{"df":3,"docs":{"119":{"tf":1.0},"302":{"tf":1.0},"572":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":21,"docs":{"111":{"tf":1.4142135623730951},"116":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.0},"132":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":2.0},"137":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.4142135623730951},"195":{"tf":1.0},"209":{"tf":1.0},"227":{"tf":1.0},"230":{"tf":1.4142135623730951},"231":{"tf":1.7320508075688772},"233":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"276":{"tf":2.0},"599":{"tf":1.0}}}},"i":{"c":{"df":23,"docs":{"116":{"tf":1.0},"125":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.4142135623730951},"167":{"tf":2.0},"209":{"tf":1.4142135623730951},"212":{"tf":1.0},"224":{"tf":1.0},"268":{"tf":2.0},"284":{"tf":2.23606797749979},"300":{"tf":1.0},"347":{"tf":2.23606797749979},"370":{"tf":1.0},"408":{"tf":1.7320508075688772},"429":{"tf":1.0},"431":{"tf":2.0},"538":{"tf":2.449489742783178},"579":{"tf":1.4142135623730951},"580":{"tf":1.7320508075688772},"599":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"235":{"tf":1.0},"60":{"tf":1.0},"601":{"tf":1.4142135623730951},"79":{"tf":1.0}}}}}}},"t":{"df":25,"docs":{"156":{"tf":1.7320508075688772},"168":{"tf":1.0},"169":{"tf":1.7320508075688772},"199":{"tf":1.0},"209":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.0},"261":{"tf":1.0},"328":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"393":{"tf":1.0},"417":{"tf":1.0},"435":{"tf":1.0},"448":{"tf":1.7320508075688772},"450":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"490":{"tf":1.0},"501":{"tf":1.0},"516":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"l":{"df":1,"docs":{"199":{"tf":1.0}}}},"u":{"df":0,"docs":{},"p":{"df":4,"docs":{"156":{"tf":1.4142135623730951},"240":{"tf":1.0},"347":{"tf":1.0},"470":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":16,"docs":{"155":{"tf":1.0},"168":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"195":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.0},"408":{"tf":1.0},"419":{"tf":1.0},"538":{"tf":1.0},"91":{"tf":1.0}}}}}},"h":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"276":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"217":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"df":3,"docs":{"297":{"tf":1.0},"560":{"tf":1.0},"573":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"422":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"422":{"tf":1.4142135623730951}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"422":{"tf":1.0}}}}}}}}},"df":22,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"276":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.4142135623730951},"419":{"tf":1.0},"422":{"tf":1.4142135623730951},"470":{"tf":2.23606797749979},"476":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"548":{"tf":1.0},"79":{"tf":1.0},"8":{"tf":1.0},"92":{"tf":1.0}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"16":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"359":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"'":{"d":{"df":3,"docs":{"225":{"tf":1.0},"394":{"tf":1.0},"82":{"tf":1.0}}},"df":20,"docs":{"251":{"tf":1.4142135623730951},"268":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"321":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"393":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"413":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":2.23606797749979},"81":{"tf":1.0},"82":{"tf":1.0},"89":{"tf":1.0}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"308":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"129":{"tf":1.0},"370":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}}},"i":{"df":51,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"15":{"tf":1.7320508075688772},"16":{"tf":1.7320508075688772},"17":{"tf":1.0},"18":{"tf":1.0},"19":{"tf":1.0},"21":{"tf":1.0},"37":{"tf":1.4142135623730951},"38":{"tf":1.0},"40":{"tf":2.0},"41":{"tf":1.7320508075688772},"44":{"tf":1.0},"45":{"tf":1.0},"46":{"tf":1.7320508075688772},"47":{"tf":1.7320508075688772},"484":{"tf":1.0},"485":{"tf":1.0},"486":{"tf":1.0},"489":{"tf":2.0},"49":{"tf":1.4142135623730951},"490":{"tf":1.7320508075688772},"494":{"tf":1.0},"495":{"tf":1.0},"497":{"tf":1.0},"499":{"tf":1.0},"500":{"tf":1.0},"501":{"tf":1.7320508075688772},"51":{"tf":1.4142135623730951},"516":{"tf":1.0},"518":{"tf":1.0},"519":{"tf":1.7320508075688772},"53":{"tf":1.4142135623730951},"534":{"tf":1.0},"536":{"tf":1.0},"537":{"tf":1.7320508075688772},"54":{"tf":1.4142135623730951},"548":{"tf":1.0},"55":{"tf":1.0},"57":{"tf":1.4142135623730951},"58":{"tf":1.0},"59":{"tf":1.4142135623730951},"602":{"tf":1.0},"603":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}}},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"39":{"tf":1.0},"489":{"tf":1.0}}}}}}}},"df":0,"docs":{}}},"p":{"df":3,"docs":{"168":{"tf":1.0},"268":{"tf":1.4142135623730951},"560":{"tf":1.0}}}},"o":{"df":0,"docs":{},"e":{"df":1,"docs":{"276":{"tf":1.0}}},"o":{"df":0,"docs":{},"t":{"df":1,"docs":{"573":{"tf":1.0}}}},"p":{"df":2,"docs":{"284":{"tf":1.0},"73":{"tf":1.0}}},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"558":{"tf":1.0}}}},"df":7,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"233":{"tf":1.0},"268":{"tf":1.4142135623730951},"270":{"tf":1.0},"276":{"tf":1.0},"598":{"tf":1.0}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"579":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"292":{"tf":1.0}}}}}},"t":{"df":2,"docs":{"284":{"tf":1.0},"538":{"tf":1.0}}},"u":{"df":0,"docs":{},"l":{"d":{"'":{"df":0,"docs":{},"v":{"df":1,"docs":{"365":{"tf":1.0}}}},"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"178":{"tf":1.0},"375":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"w":{"df":10,"docs":{"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"27":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"522":{"tf":1.0},"539":{"tf":1.7320508075688772}},"n":{"df":2,"docs":{"246":{"tf":1.0},"347":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"i":{"d":{"df":0,"docs":{},"e":{"b":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"95":{"tf":1.0}}}},"df":0,"docs":{}},"df":3,"docs":{"181":{"tf":1.0},"224":{"tf":1.0},"389":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"(":{"&":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":3,"docs":{"196":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":3,"docs":{"196":{"tf":1.0},"199":{"tf":2.449489742783178},"200":{"tf":2.23606797749979}},"h":{"df":1,"docs":{"370":{"tf":1.0}}},"n":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"196":{"tf":1.4142135623730951}}}}}},"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"336":{"tf":1.0},"344":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":5,"docs":{"195":{"tf":1.4142135623730951},"199":{"tf":2.23606797749979},"217":{"tf":1.0},"292":{"tf":1.0},"421":{"tf":1.7320508075688772}},"e":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"196":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":4,"docs":{"195":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.0},"230":{"tf":1.0}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":6,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"366":{"tf":1.0}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"199":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"197":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951}}}}}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":33,"docs":{"167":{"tf":1.0},"171":{"tf":1.0},"192":{"tf":1.4142135623730951},"195":{"tf":1.0},"196":{"tf":1.0},"204":{"tf":1.0},"206":{"tf":1.0},"218":{"tf":1.0},"22":{"tf":1.0},"233":{"tf":1.0},"25":{"tf":1.0},"251":{"tf":1.0},"259":{"tf":1.0},"261":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"323":{"tf":1.0},"333":{"tf":1.0},"347":{"tf":1.4142135623730951},"352":{"tf":1.0},"370":{"tf":1.0},"386":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.7320508075688772},"475":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":6,"docs":{"231":{"tf":1.0},"264":{"tf":1.0},"317":{"tf":1.0},"340":{"tf":1.0},"358":{"tf":1.0},"61":{"tf":1.0}}}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"l":{"df":12,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"321":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":1.4142135623730951},"523":{"tf":1.0},"61":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"389":{"tf":1.0},"460":{"tf":1.0}}}},"i":{"c":{"df":1,"docs":{"357":{"tf":1.0}}},"df":6,"docs":{"196":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"232":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"df":4,"docs":{"292":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"l":{"df":5,"docs":{"156":{"tf":1.4142135623730951},"466":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"473":{"tf":1.0}},"t":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":21,"docs":{"156":{"tf":1.0},"177":{"tf":1.0},"189":{"tf":1.4142135623730951},"195":{"tf":1.0},"318":{"tf":1.4142135623730951},"319":{"tf":1.0},"336":{"tf":2.0},"341":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"363":{"tf":1.0},"391":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.4142135623730951},"533":{"tf":1.0},"534":{"tf":1.0},"539":{"tf":1.4142135623730951},"564":{"tf":1.0},"62":{"tf":2.0}},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"177":{"tf":1.4142135623730951}}}}}}}},"k":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"599":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":7,"docs":{"156":{"tf":1.0},"274":{"tf":1.0},"276":{"tf":2.23606797749979},"278":{"tf":1.4142135623730951},"279":{"tf":1.7320508075688772},"589":{"tf":1.0},"599":{"tf":1.4142135623730951}}}},"t":{"df":2,"docs":{"268":{"tf":1.0},"380":{"tf":1.0}},"e":{"df":4,"docs":{"138":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"232":{"tf":1.0}}},"u":{"a":{"df":0,"docs":{},"t":{"df":8,"docs":{"226":{"tf":1.0},"237":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"286":{"tf":1.0},"336":{"tf":1.0},"359":{"tf":1.0},"419":{"tf":1.0}}}},"df":0,"docs":{}}},"x":{"df":1,"docs":{"15":{"tf":1.0}}},"z":{"df":0,"docs":{},"e":{"=":{"<":{"df":0,"docs":{},"s":{"df":1,"docs":{"245":{"tf":1.0}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"568":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":15,"docs":{"11":{"tf":1.0},"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"245":{"tf":2.23606797749979},"258":{"tf":1.0},"292":{"tf":1.4142135623730951},"336":{"tf":2.0},"340":{"tf":1.0},"341":{"tf":2.23606797749979},"342":{"tf":1.4142135623730951},"343":{"tf":1.4142135623730951},"370":{"tf":1.0},"515":{"tf":1.0},"527":{"tf":1.0},"538":{"tf":1.4142135623730951}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"336":{"tf":1.0}}}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"498":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"192":{"tf":1.0},"221":{"tf":1.0}}}},"m":{"df":4,"docs":{"209":{"tf":1.0},"358":{"tf":1.0},"367":{"tf":1.0},"538":{"tf":1.4142135623730951}}},"p":{"df":2,"docs":{"41":{"tf":1.0},"448":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"457":{"tf":1.0}}}}}},"df":2,"docs":{"380":{"tf":1.0},"566":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"375":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"[":{"1":{".":{".":{"]":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"375":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"375":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"259":{"tf":1.0},"419":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"300":{"tf":1.0},"386":{"tf":1.0},"458":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"g":{"df":1,"docs":{"292":{"tf":1.0}}},"w":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"}":{"df":0,"docs":{},"}":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"df":9,"docs":{"141":{"tf":1.0},"143":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.0},"150":{"tf":1.4142135623730951},"156":{"tf":1.0},"397":{"tf":1.0},"532":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}}}}},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":13,"docs":{"209":{"tf":1.4142135623730951},"302":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.0},"356":{"tf":1.0},"380":{"tf":1.0},"458":{"tf":1.0},"474":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"245":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"252":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":1,"docs":{"188":{"tf":1.0}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"3":{"tf":1.0},"370":{"tf":1.0}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"341":{"tf":1.0}}}}}}}}},"n":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"c":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"276":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":5,"docs":{"195":{"tf":1.0},"274":{"tf":1.0},"276":{"tf":2.0},"408":{"tf":1.0},"431":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":6,"docs":{"110":{"tf":1.0},"112":{"tf":1.0},"127":{"tf":1.0},"130":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"e":{"df":2,"docs":{"539":{"tf":1.4142135623730951},"543":{"tf":1.0}}},"i":{"d":{"df":2,"docs":{"181":{"tf":1.0},"363":{"tf":1.0}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":4,"docs":{"256":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"521":{"tf":1.0}}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":34,"docs":{"129":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.4142135623730951},"181":{"tf":1.0},"183":{"tf":1.0},"190":{"tf":1.0},"200":{"tf":1.0},"223":{"tf":1.0},"226":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"279":{"tf":1.0},"286":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"410":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":1.7320508075688772},"469":{"tf":2.6457513110645907},"470":{"tf":2.23606797749979},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"560":{"tf":1.4142135623730951},"570":{"tf":1.0}}}},"v":{"df":19,"docs":{"179":{"tf":1.0},"278":{"tf":1.4142135623730951},"328":{"tf":1.0},"349":{"tf":1.0},"440":{"tf":1.0},"445":{"tf":1.7320508075688772},"457":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"478":{"tf":1.0},"490":{"tf":1.0},"499":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"54":{"tf":1.0},"561":{"tf":1.0},"579":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"470":{"tf":1.0},"473":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"(":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"167":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"195":{"tf":1.0},"196":{"tf":1.0}}}}}},"x":{".":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"457":{"tf":1.7320508075688772},"458":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.7320508075688772}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}}}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}},"df":0,"docs":{}},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":3,"docs":{"19":{"tf":1.0},"50":{"tf":1.0},"54":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"217":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":18,"docs":{"153":{"tf":1.0},"178":{"tf":1.0},"192":{"tf":1.0},"24":{"tf":1.0},"251":{"tf":1.0},"292":{"tf":1.0},"302":{"tf":1.0},"339":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"421":{"tf":1.4142135623730951},"450":{"tf":1.0},"452":{"tf":1.0},"460":{"tf":1.0},"474":{"tf":1.0},"498":{"tf":1.0},"55":{"tf":1.0},"559":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":51,"docs":{"129":{"tf":1.0},"130":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.0},"181":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"221":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"276":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"312":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.7320508075688772},"336":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"397":{"tf":1.4142135623730951},"402":{"tf":1.0},"408":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"469":{"tf":1.0},"480":{"tf":1.0},"489":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"55":{"tf":1.0},"558":{"tf":1.0},"562":{"tf":1.0},"564":{"tf":1.0},"573":{"tf":1.0},"579":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"564":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"m":{"df":29,"docs":{"156":{"tf":2.6457513110645907},"16":{"tf":1.0},"168":{"tf":1.0},"177":{"tf":1.0},"218":{"tf":1.0},"27":{"tf":1.0},"278":{"tf":1.0},"319":{"tf":1.0},"324":{"tf":1.0},"347":{"tf":1.7320508075688772},"372":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"47":{"tf":1.0},"478":{"tf":1.4142135623730951},"487":{"tf":1.0},"51":{"tf":1.0},"539":{"tf":1.4142135623730951},"571":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.4142135623730951},"73":{"tf":1.0},"74":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"t":{"df":9,"docs":{"167":{"tf":1.0},"205":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"251":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"457":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"284":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"380":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"n":{"df":6,"docs":{"190":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"328":{"tf":1.0},"431":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"453":{"tf":1.0}}}}},"o":{"df":1,"docs":{"599":{"tf":1.0}}}},"p":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"110":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"i":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}},"df":10,"docs":{"200":{"tf":1.0},"25":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"40":{"tf":1.0},"526":{"tf":1.0},"539":{"tf":1.0},"61":{"tf":1.0}}}},"u":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"284":{"tf":1.0},"393":{"tf":1.0}}},"df":0,"docs":{}},"p":{"df":2,"docs":{"292":{"tf":1.0},"294":{"tf":1.0}}},"r":{"c":{"df":56,"docs":{"103":{"tf":1.0},"112":{"tf":1.4142135623730951},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"140":{"tf":1.0},"143":{"tf":1.0},"147":{"tf":1.0},"154":{"tf":1.0},"157":{"tf":1.0},"162":{"tf":1.0},"172":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"182":{"tf":1.0},"192":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":2.8284271247461903},"212":{"tf":1.0},"218":{"tf":1.0},"224":{"tf":1.0},"238":{"tf":1.0},"245":{"tf":1.0},"249":{"tf":1.0},"262":{"tf":1.0},"27":{"tf":1.4142135623730951},"271":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.4142135623730951},"279":{"tf":1.0},"28":{"tf":1.0},"287":{"tf":1.0},"292":{"tf":1.0},"295":{"tf":1.0},"303":{"tf":1.0},"321":{"tf":1.0},"331":{"tf":1.0},"351":{"tf":1.0},"364":{"tf":1.0},"373":{"tf":1.0},"384":{"tf":1.0},"392":{"tf":1.0},"399":{"tf":1.0},"400":{"tf":1.0},"408":{"tf":1.0},"411":{"tf":1.0},"426":{"tf":1.0},"434":{"tf":1.0},"440":{"tf":1.0},"443":{"tf":1.0},"451":{"tf":1.0},"461":{"tf":1.0},"473":{"tf":1.0},"481":{"tf":1.0},"489":{"tf":1.0},"538":{"tf":1.0},"598":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"a":{"c":{"df":0,"docs":{},"e":{"df":6,"docs":{"156":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"561":{"tf":1.0},"89":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}},"w":{"df":0,"docs":{},"n":{"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":6,"docs":{"310":{"tf":2.0},"320":{"tf":1.0},"322":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.7320508075688772},"360":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{"(":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"<":{"df":0,"docs":{},"f":{">":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":1,"docs":{"217":{"tf":2.0}}},"df":0,"docs":{}}}},"df":21,"docs":{"178":{"tf":1.0},"181":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"310":{"tf":1.7320508075688772},"322":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"341":{"tf":1.4142135623730951},"344":{"tf":1.0},"347":{"tf":2.0},"349":{"tf":1.0},"403":{"tf":1.0},"408":{"tf":1.0},"412":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.7320508075688772},"538":{"tf":1.0},"599":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{},"e":{"c":{"df":1,"docs":{"156":{"tf":1.0}},"i":{"a":{"df":0,"docs":{},"l":{"df":9,"docs":{"112":{"tf":1.0},"129":{"tf":1.0},"156":{"tf":1.0},"218":{"tf":1.0},"330":{"tf":1.0},"341":{"tf":1.0},"403":{"tf":1.0},"579":{"tf":1.0},"61":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"f":{"df":28,"docs":{"156":{"tf":1.0},"164":{"tf":1.0},"182":{"tf":1.0},"187":{"tf":1.0},"192":{"tf":1.0},"201":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"232":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"33":{"tf":1.4142135623730951},"336":{"tf":1.0},"34":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"36":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"417":{"tf":1.4142135623730951},"431":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.4142135623730951},"486":{"tf":1.0},"496":{"tf":1.0},"538":{"tf":1.0},"543":{"tf":1.0},"56":{"tf":1.0}},"i":{"df":4,"docs":{"276":{"tf":1.0},"380":{"tf":1.0},"470":{"tf":1.0},"49":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"d":{"df":3,"docs":{"336":{"tf":1.0},"347":{"tf":1.0},"478":{"tf":1.0}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"380":{"tf":1.0},"40":{"tf":1.0}}}},"n":{"d":{"df":9,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"458":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}},"i":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"259":{"tf":2.6457513110645907}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"59":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"209":{"tf":1.0},"276":{"tf":1.7320508075688772}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}},"t":{"df":1,"docs":{"259":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"372":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"l":{"df":3,"docs":{"370":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"365":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":1,"docs":{"336":{"tf":1.7320508075688772}}}}}}}},"q":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"178":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"s":{"df":0,"docs":{},"q":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{"\"":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":2,"docs":{"177":{"tf":1.4142135623730951},"259":{"tf":1.4142135623730951}}}}},"x":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"a":{"df":0,"docs":{},"s":{"(":{"\"":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"177":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"z":{"df":2,"docs":{"256":{"tf":1.0},"521":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"522":{"tf":1.0}}}}}}}},"r":{"c":{"/":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"7":{"8":{"7":{":":{"9":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{":":{"2":{"7":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"1":{":":{"1":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{":":{"9":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"5":{"df":2,"docs":{"221":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{":":{"5":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{":":{"1":{"4":{"df":1,"docs":{"307":{"tf":1.0}}},"7":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{":":{"5":{"df":1,"docs":{"397":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"1":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":1,"docs":{"522":{"tf":1.4142135623730951}}},"2":{"2":{":":{"1":{"4":{"df":1,"docs":{"310":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{":":{"2":{"7":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"4":{"1":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"5":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{":":{"5":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{":":{"2":{"5":{"df":1,"docs":{"522":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"9":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"2":{":":{"2":{"6":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"1":{":":{"4":{"3":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"\\":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"3":{":":{"7":{"1":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{":":{"3":{"1":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"4":{":":{"3":{"1":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"a":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":4,"docs":{"156":{"tf":1.0},"292":{"tf":1.0},"572":{"tf":1.0},"91":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"230":{"tf":1.0}}}}}},"l":{"df":4,"docs":{"237":{"tf":1.4142135623730951},"239":{"tf":1.0},"310":{"tf":1.0},"380":{"tf":1.0}}}},"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"c":{"7":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":31,"docs":{"112":{"tf":1.0},"128":{"tf":1.0},"136":{"tf":1.0},"138":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"209":{"tf":1.7320508075688772},"218":{"tf":1.7320508075688772},"221":{"tf":1.0},"230":{"tf":1.0},"242":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":2.449489742783178},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.4142135623730951},"252":{"tf":1.0},"284":{"tf":1.4142135623730951},"313":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":2.449489742783178},"399":{"tf":1.4142135623730951},"402":{"tf":1.4142135623730951},"403":{"tf":1.0},"412":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":3,"docs":{"27":{"tf":1.0},"284":{"tf":1.4142135623730951},"470":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":3,"docs":{"156":{"tf":1.4142135623730951},"395":{"tf":1.0},"403":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"s":{"c":{"a":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":5,"docs":{"192":{"tf":1.0},"209":{"tf":1.0},"470":{"tf":1.0},"561":{"tf":1.4142135623730951},"562":{"tf":1.0}}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"487":{"tf":1.0}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"422":{"tf":2.23606797749979},"423":{"tf":1.0},"426":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"347":{"tf":1.0}}}},"n":{"d":{"a":{"df":0,"docs":{},"r":{"d":{"df":28,"docs":{"127":{"tf":1.0},"156":{"tf":1.4142135623730951},"160":{"tf":1.0},"221":{"tf":1.0},"223":{"tf":1.0},"231":{"tf":1.0},"240":{"tf":1.0},"257":{"tf":1.4142135623730951},"268":{"tf":1.0},"28":{"tf":1.0},"3":{"tf":1.0},"329":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"381":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"390":{"tf":1.0},"397":{"tf":1.0},"398":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"449":{"tf":1.0},"47":{"tf":1.4142135623730951},"523":{"tf":1.0},"530":{"tf":1.0},"599":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":1,"docs":{"245":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"300":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"478":{"tf":1.0}}}},"t":{".":{"c":{":":{"3":{"0":{"8":{":":{"1":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":67,"docs":{"14":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":2.0},"157":{"tf":1.0},"160":{"tf":1.0},"171":{"tf":1.0},"197":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":1.0},"253":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"29":{"tf":1.0},"300":{"tf":2.0},"309":{"tf":1.4142135623730951},"311":{"tf":1.4142135623730951},"324":{"tf":1.0},"329":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.4142135623730951},"366":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":2.0},"38":{"tf":1.0},"380":{"tf":2.0},"381":{"tf":1.0},"383":{"tf":1.0},"386":{"tf":1.0},"389":{"tf":1.4142135623730951},"390":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.4142135623730951},"398":{"tf":1.0},"408":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.7320508075688772},"449":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0},"472":{"tf":1.0},"475":{"tf":1.0},"480":{"tf":1.0},"489":{"tf":1.0},"516":{"tf":1.0},"521":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"525":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.0},"556":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0},"9":{"tf":1.0}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"284":{"tf":1.0}}}}},"v":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}},"df":2,"docs":{"122":{"tf":1.0},"349":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"s":{"c":{"a":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"h":{"df":0,"docs":{},"y":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},":":{":":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"199":{"tf":1.7320508075688772},"200":{"tf":1.7320508075688772}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"_":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"200":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{".":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":27,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":4.0},"200":{"tf":1.7320508075688772},"206":{"tf":1.0},"217":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":4.69041575982343},"309":{"tf":1.0},"328":{"tf":3.3166247903554},"336":{"tf":1.7320508075688772},"365":{"tf":1.0},"380":{"tf":1.0},"391":{"tf":1.0},"410":{"tf":1.0},"412":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"458":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"539":{"tf":1.0},"545":{"tf":1.0},"549":{"tf":1.0},"6":{"tf":1.0},"8":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"232":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"178":{"tf":1.4142135623730951},"343":{"tf":1.0},"450":{"tf":1.0}}}}}}},"i":{"c":{"df":16,"docs":{"136":{"tf":1.4142135623730951},"217":{"tf":2.449489742783178},"218":{"tf":1.7320508075688772},"268":{"tf":1.0},"292":{"tf":2.6457513110645907},"328":{"tf":1.7320508075688772},"336":{"tf":2.449489742783178},"347":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":2.6457513110645907},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"428":{"tf":1.0},"448":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"u":{"df":120,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"15":{"tf":1.7320508075688772},"151":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.4142135623730951},"156":{"tf":1.0},"157":{"tf":2.0},"158":{"tf":2.0},"16":{"tf":1.7320508075688772},"165":{"tf":1.0},"166":{"tf":2.0},"17":{"tf":1.0},"175":{"tf":1.0},"176":{"tf":2.0},"185":{"tf":1.0},"186":{"tf":2.0},"19":{"tf":1.0},"193":{"tf":1.0},"194":{"tf":2.0},"207":{"tf":1.0},"208":{"tf":2.0},"21":{"tf":1.0},"215":{"tf":1.0},"216":{"tf":2.0},"219":{"tf":1.0},"220":{"tf":2.0},"227":{"tf":1.0},"228":{"tf":1.4142135623730951},"23":{"tf":1.7320508075688772},"24":{"tf":1.7320508075688772},"242":{"tf":1.0},"243":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"253":{"tf":1.0},"254":{"tf":1.4142135623730951},"266":{"tf":1.0},"267":{"tf":2.0},"27":{"tf":1.4142135623730951},"274":{"tf":1.0},"275":{"tf":2.0},"28":{"tf":1.0},"282":{"tf":1.0},"283":{"tf":2.0},"29":{"tf":1.4142135623730951},"290":{"tf":1.0},"291":{"tf":2.0},"298":{"tf":1.0},"299":{"tf":2.0},"305":{"tf":1.0},"306":{"tf":2.0},"31":{"tf":1.0},"326":{"tf":1.0},"327":{"tf":1.4142135623730951},"334":{"tf":1.0},"335":{"tf":2.0},"345":{"tf":1.0},"346":{"tf":2.0},"354":{"tf":1.0},"355":{"tf":1.4142135623730951},"36":{"tf":1.0},"368":{"tf":1.0},"369":{"tf":2.0},"378":{"tf":1.0},"379":{"tf":2.0},"387":{"tf":1.0},"388":{"tf":1.4142135623730951},"395":{"tf":1.0},"396":{"tf":2.0},"40":{"tf":1.4142135623730951},"406":{"tf":1.0},"407":{"tf":2.0},"41":{"tf":1.4142135623730951},"416":{"tf":2.0},"42":{"tf":1.4142135623730951},"429":{"tf":1.0},"430":{"tf":1.4142135623730951},"438":{"tf":1.0},"439":{"tf":1.4142135623730951},"446":{"tf":1.0},"447":{"tf":2.0},"45":{"tf":1.0},"454":{"tf":1.0},"455":{"tf":1.4142135623730951},"46":{"tf":1.4142135623730951},"466":{"tf":1.0},"467":{"tf":2.0},"476":{"tf":1.0},"477":{"tf":2.0},"490":{"tf":1.0},"493":{"tf":1.4142135623730951},"501":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"519":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"53":{"tf":1.4142135623730951},"537":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"54":{"tf":1.0},"541":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.0},"553":{"tf":1.0},"56":{"tf":1.4142135623730951},"562":{"tf":1.0},"58":{"tf":1.0},"59":{"tf":1.4142135623730951},"597":{"tf":1.0},"598":{"tf":1.0},"61":{"tf":1.4142135623730951},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}},"s":{"_":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"o":{"df":2,"docs":{"157":{"tf":1.0},"26":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"y":{"df":2,"docs":{"125":{"tf":1.0},"417":{"tf":1.0}}}},"d":{"'":{"df":1,"docs":{"167":{"tf":1.0}}},"/":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"/":{"6":{"3":{"1":{"df":1,"docs":{"349":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},":":{":":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":1,"docs":{"526":{"tf":1.0}}}},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"522":{"tf":1.7320508075688772},"523":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"522":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":2,"docs":{"502":{"tf":1.0},"503":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"502":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"502":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"419":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":5,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"502":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"f":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":1,"docs":{"522":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"383":{"tf":1.0}},"e":{"<":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}}}},"df":0,"docs":{}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":2,"docs":{"380":{"tf":2.23606797749979},"383":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"=":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"307":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"310":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"+":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{">":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":1,"docs":{"440":{"tf":3.4641016151377544}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"440":{"tf":4.242640687119285}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"323":{"tf":1.0}}}}}}},"p":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"c":{":":{":":{"c":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{":":{":":{"df":0,"docs":{},"h":{"8":{"3":{"6":{"6":{"7":{"1":{"9":{"d":{"1":{"df":0,"docs":{},"f":{"6":{"1":{"5":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{":":{"d":{"df":0,"docs":{},"o":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"6":{"b":{"0":{"df":0,"docs":{},"f":{"4":{"3":{"0":{"d":{"4":{"8":{"1":{"2":{"2":{"d":{"d":{"df":0,"docs":{},"f":{"df":1,"docs":{"404":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"6":{"b":{"a":{"4":{"2":{"0":{"df":0,"docs":{},"e":{"2":{"df":0,"docs":{},"e":{"2":{"1":{"b":{"5":{"a":{"df":0,"docs":{},"f":{"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":1,"docs":{"198":{"tf":1.0}}}}},"r":{"c":{":":{":":{"df":0,"docs":{},"r":{"c":{"df":2,"docs":{"419":{"tf":1.0},"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"268":{"tf":1.0}},"g":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"r":{"d":{"<":{"'":{"_":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"457":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"<":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"397":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"397":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"383":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"v":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"y":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"<":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":24,"docs":{"156":{"tf":1.4142135623730951},"233":{"tf":1.0},"276":{"tf":1.4142135623730951},"3":{"tf":1.0},"325":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.0},"483":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.4142135623730951},"509":{"tf":1.0},"513":{"tf":1.4142135623730951},"515":{"tf":2.0},"516":{"tf":1.0},"517":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"535":{"tf":1.0},"544":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"b":{"df":3,"docs":{"399":{"tf":1.0},"478":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"319":{"tf":1.0},"328":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":3,"docs":{"156":{"tf":1.0},"261":{"tf":1.0},"470":{"tf":1.0}}}},"p":{"df":16,"docs":{"181":{"tf":1.0},"199":{"tf":1.0},"336":{"tf":2.23606797749979},"386":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.4142135623730951},"41":{"tf":1.0},"417":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"516":{"tf":1.4142135623730951},"534":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"56":{"tf":1.0}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"54":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"481":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":4,"docs":{"258":{"tf":1.0},"278":{"tf":1.0},"361":{"tf":1.0},"456":{"tf":1.4142135623730951}}},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":40,"docs":{"134":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.0},"178":{"tf":1.4142135623730951},"225":{"tf":1.0},"237":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.4142135623730951},"300":{"tf":1.0},"310":{"tf":1.0},"315":{"tf":1.0},"328":{"tf":1.0},"358":{"tf":1.0},"361":{"tf":1.0},"365":{"tf":1.0},"380":{"tf":1.4142135623730951},"401":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"413":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"456":{"tf":1.0},"48":{"tf":1.0},"485":{"tf":1.0},"49":{"tf":1.0},"538":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"558":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":1.7320508075688772},"62":{"tf":1.0},"74":{"tf":1.0},"89":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":10,"docs":{"2":{"tf":1.0},"217":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.0},"341":{"tf":1.0},"404":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.7320508075688772},"451":{"tf":1.0},"521":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"221":{"tf":1.0}}}}}},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"571":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":9,"docs":{"167":{"tf":1.0},"169":{"tf":1.0},"199":{"tf":1.4142135623730951},"209":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"380":{"tf":1.0},"572":{"tf":1.0}}},"i":{"df":308,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.7320508075688772},"142":{"tf":1.0},"15":{"tf":2.23606797749979},"151":{"tf":1.0},"152":{"tf":1.4142135623730951},"153":{"tf":2.0},"154":{"tf":2.23606797749979},"155":{"tf":2.0},"156":{"tf":2.449489742783178},"157":{"tf":1.7320508075688772},"158":{"tf":2.0},"159":{"tf":1.4142135623730951},"16":{"tf":2.6457513110645907},"161":{"tf":1.0},"162":{"tf":1.4142135623730951},"163":{"tf":1.4142135623730951},"164":{"tf":1.0},"165":{"tf":1.0},"166":{"tf":1.7320508075688772},"167":{"tf":1.0},"17":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.4142135623730951},"173":{"tf":1.0},"174":{"tf":1.4142135623730951},"175":{"tf":1.0},"176":{"tf":2.0},"18":{"tf":1.0},"181":{"tf":1.7320508075688772},"182":{"tf":1.4142135623730951},"183":{"tf":1.0},"184":{"tf":1.4142135623730951},"185":{"tf":1.0},"186":{"tf":2.0},"187":{"tf":1.0},"192":{"tf":2.23606797749979},"193":{"tf":1.0},"194":{"tf":2.0},"195":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.4142135623730951},"205":{"tf":1.0},"206":{"tf":1.4142135623730951},"207":{"tf":1.0},"208":{"tf":2.0},"209":{"tf":1.0},"21":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"215":{"tf":1.0},"216":{"tf":2.0},"217":{"tf":1.0},"218":{"tf":2.449489742783178},"219":{"tf":1.0},"220":{"tf":1.7320508075688772},"221":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":2.0},"226":{"tf":1.0},"227":{"tf":1.0},"228":{"tf":1.0},"229":{"tf":1.0},"23":{"tf":1.7320508075688772},"233":{"tf":1.0},"237":{"tf":1.0},"238":{"tf":1.0},"239":{"tf":1.0},"24":{"tf":2.0},"240":{"tf":1.0},"241":{"tf":1.4142135623730951},"242":{"tf":1.0},"243":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.7320508075688772},"25":{"tf":2.23606797749979},"250":{"tf":1.7320508075688772},"251":{"tf":1.0},"253":{"tf":1.0},"254":{"tf":1.0},"255":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.0},"267":{"tf":2.0},"268":{"tf":1.0},"27":{"tf":2.0},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"274":{"tf":1.0},"275":{"tf":2.0},"276":{"tf":1.0},"278":{"tf":1.0},"279":{"tf":1.0},"28":{"tf":2.449489742783178},"280":{"tf":1.0},"281":{"tf":1.0},"282":{"tf":1.0},"283":{"tf":2.0},"284":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.7320508075688772},"290":{"tf":1.0},"291":{"tf":2.0},"292":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"298":{"tf":1.0},"299":{"tf":2.0},"300":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0},"305":{"tf":1.0},"306":{"tf":2.0},"307":{"tf":1.0},"31":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.4142135623730951},"317":{"tf":1.0},"32":{"tf":1.7320508075688772},"325":{"tf":1.4142135623730951},"326":{"tf":1.0},"327":{"tf":1.0},"328":{"tf":1.0},"33":{"tf":1.4142135623730951},"330":{"tf":1.0},"331":{"tf":1.4142135623730951},"332":{"tf":1.4142135623730951},"333":{"tf":1.4142135623730951},"334":{"tf":1.0},"335":{"tf":2.0},"336":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.4142135623730951},"340":{"tf":1.0},"345":{"tf":1.0},"346":{"tf":1.7320508075688772},"347":{"tf":1.0},"349":{"tf":1.0},"35":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.4142135623730951},"353":{"tf":1.0},"354":{"tf":1.0},"355":{"tf":1.0},"36":{"tf":1.0},"363":{"tf":1.4142135623730951},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":2.0},"367":{"tf":1.4142135623730951},"368":{"tf":1.0},"369":{"tf":2.0},"37":{"tf":2.0},"370":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.0},"379":{"tf":2.0},"38":{"tf":1.0},"380":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"386":{"tf":1.4142135623730951},"387":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.0},"395":{"tf":1.0},"396":{"tf":2.0},"397":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":2.23606797749979},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.0},"406":{"tf":1.0},"407":{"tf":2.0},"408":{"tf":1.0},"41":{"tf":2.23606797749979},"410":{"tf":1.0},"411":{"tf":1.0},"413":{"tf":1.0},"414":{"tf":1.4142135623730951},"416":{"tf":2.0},"417":{"tf":1.0},"42":{"tf":1.4142135623730951},"425":{"tf":1.0},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0},"429":{"tf":1.0},"430":{"tf":1.0},"431":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.4142135623730951},"436":{"tf":1.0},"437":{"tf":1.4142135623730951},"438":{"tf":1.0},"439":{"tf":1.0},"44":{"tf":1.0},"440":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"447":{"tf":2.0},"448":{"tf":1.0},"45":{"tf":1.4142135623730951},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"454":{"tf":1.0},"455":{"tf":1.0},"456":{"tf":1.0},"46":{"tf":1.7320508075688772},"460":{"tf":1.0},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.4142135623730951},"466":{"tf":1.0},"467":{"tf":2.0},"468":{"tf":1.0},"47":{"tf":2.23606797749979},"472":{"tf":1.0},"473":{"tf":1.4142135623730951},"474":{"tf":1.4142135623730951},"475":{"tf":1.4142135623730951},"476":{"tf":1.0},"477":{"tf":2.0},"478":{"tf":1.0},"480":{"tf":1.4142135623730951},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"485":{"tf":1.4142135623730951},"487":{"tf":1.0},"488":{"tf":1.0},"489":{"tf":1.7320508075688772},"490":{"tf":2.0},"491":{"tf":1.4142135623730951},"492":{"tf":1.0},"493":{"tf":1.4142135623730951},"497":{"tf":1.7320508075688772},"498":{"tf":2.23606797749979},"499":{"tf":1.0},"500":{"tf":1.0},"501":{"tf":2.0},"502":{"tf":1.0},"506":{"tf":1.4142135623730951},"507":{"tf":1.0},"509":{"tf":1.0},"51":{"tf":1.4142135623730951},"518":{"tf":1.0},"519":{"tf":2.0},"520":{"tf":1.0},"525":{"tf":1.4142135623730951},"526":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.0},"534":{"tf":1.4142135623730951},"536":{"tf":1.0},"537":{"tf":2.0},"538":{"tf":1.0},"539":{"tf":1.7320508075688772},"54":{"tf":2.6457513110645907},"541":{"tf":1.4142135623730951},"55":{"tf":1.4142135623730951},"56":{"tf":1.4142135623730951},"57":{"tf":1.4142135623730951},"59":{"tf":2.449489742783178},"601":{"tf":1.0},"602":{"tf":1.4142135623730951},"603":{"tf":1.0},"64":{"tf":1.4142135623730951},"9":{"tf":2.0},"94":{"tf":1.0},"96":{"tf":1.4142135623730951},"98":{"tf":1.0}}},"y":{"'":{"df":2,"docs":{"29":{"tf":1.0},"42":{"tf":1.0}}},"]":{"[":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"v":{"df":0,"docs":{},"s":{"df":0,"docs":{},"q":{"df":3,"docs":{"166":{"tf":1.0},"220":{"tf":1.0},"346":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"179":{"tf":1.0}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"423":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"331":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":2,"docs":{"209":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}}},"y":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":2,"docs":{"309":{"tf":1.0},"375":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"m":{"'":{"df":1,"docs":{"199":{"tf":1.0}}},":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":2,"docs":{"458":{"tf":1.4142135623730951},"465":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":2,"docs":{"191":{"tf":1.0},"458":{"tf":1.0}}}}}}},"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"(":{"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":1,"docs":{"458":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":32,"docs":{"156":{"tf":2.0},"188":{"tf":1.0},"193":{"tf":1.0},"195":{"tf":2.0},"196":{"tf":1.4142135623730951},"197":{"tf":1.7320508075688772},"2":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.0},"203":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.7320508075688772},"313":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":2.6457513110645907},"387":{"tf":1.0},"389":{"tf":2.6457513110645907},"391":{"tf":2.0},"392":{"tf":1.4142135623730951},"393":{"tf":1.4142135623730951},"394":{"tf":1.7320508075688772},"4":{"tf":1.0},"418":{"tf":1.7320508075688772},"458":{"tf":2.23606797749979},"460":{"tf":1.7320508075688772},"462":{"tf":1.0},"567":{"tf":1.0},"568":{"tf":1.0},"571":{"tf":1.4142135623730951},"573":{"tf":1.4142135623730951},"599":{"tf":1.7320508075688772},"61":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":2,"docs":{"276":{"tf":1.0},"572":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"418":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"s":{"/":{"#":{"df":0,"docs":{},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"279":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"431":{"tf":1.0},"62":{"tf":1.7320508075688772}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"62":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"347":{"tf":1.0}}}},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"[":{"0":{".":{".":{"1":{"df":1,"docs":{"375":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":7,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"217":{"tf":1.7320508075688772},"268":{"tf":2.0},"276":{"tf":1.4142135623730951},"375":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"156":{"tf":1.0}}}}}}},"p":{"df":1,"docs":{"292":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"156":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":10,"docs":{"110":{"tf":1.0},"341":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"456":{"tf":1.0},"529":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"77":{"tf":1.0},"87":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"414":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":16,"docs":{"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.0},"245":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":2.0},"336":{"tf":1.0},"380":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":2.6457513110645907},"458":{"tf":1.0},"508":{"tf":1.4142135623730951},"599":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":4,"docs":{"199":{"tf":1.0},"419":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":8,"docs":{"134":{"tf":1.0},"189":{"tf":1.0},"218":{"tf":1.0},"240":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"340":{"tf":1.0},"463":{"tf":1.0}}}}}}},"u":{"c":{"df":0,"docs":{},"k":{"df":7,"docs":{"246":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"35":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"469":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"o":{"'":{"df":1,"docs":{"284":{"tf":1.0}}},"df":1,"docs":{"414":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":12,"docs":{"157":{"tf":1.0},"190":{"tf":1.0},"198":{"tf":1.0},"273":{"tf":1.0},"307":{"tf":1.4142135623730951},"308":{"tf":1.4142135623730951},"309":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"40":{"tf":1.0},"417":{"tf":1.0},"489":{"tf":1.0},"522":{"tf":1.0}}}},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"358":{"tf":1.0}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":7,"docs":{"199":{"tf":1.0},"218":{"tf":1.0},"344":{"tf":1.0},"393":{"tf":1.0},"423":{"tf":1.0},"440":{"tf":1.4142135623730951},"462":{"tf":1.0}}}}}},"u":{"b":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"469":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"271":{"tf":1.0},"475":{"tf":1.0},"598":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":41,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"17":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"58":{"tf":1.0},"6":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"d":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"359":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"159":{"tf":1.0},"491":{"tf":1.0}}}},"df":0,"docs":{},"t":{"df":3,"docs":{"155":{"tf":1.0},"156":{"tf":1.0},"515":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"l":{"df":6,"docs":{"156":{"tf":2.0},"251":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"372":{"tf":1.0},"539":{"tf":1.4142135623730951}},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"272":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"538":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"c":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}}}}},"c":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"209":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":6,"docs":{"129":{"tf":1.0},"256":{"tf":1.0},"380":{"tf":1.0},"521":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":5,"docs":{"169":{"tf":1.0},"268":{"tf":1.0},"322":{"tf":1.0},"380":{"tf":1.0},"431":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{},"h":{"df":23,"docs":{"127":{"tf":1.4142135623730951},"190":{"tf":1.0},"209":{"tf":1.0},"218":{"tf":1.0},"252":{"tf":1.0},"268":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"338":{"tf":1.0},"451":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"472":{"tf":1.0},"499":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"62":{"tf":1.0},"82":{"tf":1.0}}}},"d":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"217":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"539":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}},"i":{"c":{"df":0,"docs":{},"i":{"df":3,"docs":{"360":{"tf":1.0},"457":{"tf":1.0},"546":{"tf":1.0}}}},"df":0,"docs":{}}}},"g":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"370":{"tf":1.0},"457":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":14,"docs":{"16":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"279":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.0},"389":{"tf":1.0},"522":{"tf":1.4142135623730951},"572":{"tf":1.0},"59":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":5,"docs":{"336":{"tf":1.0},"338":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.4142135623730951},"527":{"tf":1.0}}}},"df":0,"docs":{}},"df":1,"docs":{"470":{"tf":1.0}}}},"m":{"(":{"df":0,"docs":{},"n":{"df":1,"docs":{"370":{"tf":3.4641016151377544}}}},"df":1,"docs":{"15":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"z":{"df":1,"docs":{"598":{"tf":1.0}}}},"r":{"df":2,"docs":{"156":{"tf":1.0},"494":{"tf":1.0}},"i":{"df":2,"docs":{"154":{"tf":1.4142135623730951},"597":{"tf":1.0}}},"y":{".":{"df":0,"docs":{},"m":{"d":{"df":10,"docs":{"157":{"tf":1.0},"16":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"296":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"357":{"tf":1.0}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"259":{"tf":1.0}}}}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"218":{"tf":1.0},"508":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":35,"docs":{"110":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"209":{"tf":1.0},"221":{"tf":1.7320508075688772},"230":{"tf":1.4142135623730951},"232":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.7320508075688772},"340":{"tf":1.0},"341":{"tf":1.7320508075688772},"370":{"tf":1.4142135623730951},"389":{"tf":1.0},"405":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"474":{"tf":1.0},"502":{"tf":1.0},"509":{"tf":1.4142135623730951},"53":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.4142135623730951}}}},"s":{"df":2,"docs":{"310":{"tf":1.0},"522":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":21,"docs":{"131":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"22":{"tf":1.0},"23":{"tf":1.0},"276":{"tf":1.0},"281":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"296":{"tf":1.0},"300":{"tf":1.0},"36":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.4142135623730951},"421":{"tf":1.0},"456":{"tf":1.0},"487":{"tf":1.0},"506":{"tf":1.0},"62":{"tf":1.0}}},"f":{"a":{"c":{"df":3,"docs":{"156":{"tf":1.0},"347":{"tf":1.0},"394":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":12,"docs":{"231":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"272":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.4142135623730951},"448":{"tf":1.0},"481":{"tf":1.0},"497":{"tf":1.0},"529":{"tf":1.0},"59":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"408":{"tf":1.0},"538":{"tf":1.0}}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"276":{"tf":1.0},"359":{"tf":1.0}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"284":{"tf":1.0},"297":{"tf":1.0},"546":{"tf":1.0}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"156":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}}}},"w":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"538":{"tf":1.0},"539":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":18,"docs":{"209":{"tf":1.0},"233":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"359":{"tf":1.0},"380":{"tf":1.0},"422":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"500":{"tf":1.0},"511":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"y":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":3,"docs":{"397":{"tf":1.0},"399":{"tf":1.0},"401":{"tf":1.0}}}}},"df":0,"docs":{}},"n":{"c":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"302":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":22,"docs":{"156":{"tf":2.23606797749979},"191":{"tf":1.0},"218":{"tf":1.7320508075688772},"292":{"tf":1.4142135623730951},"300":{"tf":2.6457513110645907},"305":{"tf":1.0},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"315":{"tf":1.7320508075688772},"321":{"tf":1.7320508075688772},"323":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"365":{"tf":1.0},"408":{"tf":1.7320508075688772},"423":{"tf":1.0},"448":{"tf":1.4142135623730951},"531":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":19,"docs":{"156":{"tf":1.7320508075688772},"179":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"232":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"308":{"tf":1.0},"309":{"tf":1.0},"313":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":2.23606797749979},"323":{"tf":1.0},"324":{"tf":1.4142135623730951},"344":{"tf":1.0},"389":{"tf":1.4142135623730951},"502":{"tf":1.0},"522":{"tf":1.0},"61":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{},"x":{"df":10,"docs":{"196":{"tf":1.4142135623730951},"218":{"tf":1.0},"292":{"tf":1.7320508075688772},"336":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"570":{"tf":1.0},"573":{"tf":1.0},"74":{"tf":1.0},"89":{"tf":1.0}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":1,"docs":{"502":{"tf":1.0}}}}}}},"s":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"v":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"c":{":":{"3":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":39,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.4142135623730951},"199":{"tf":1.0},"211":{"tf":1.0},"273":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.4142135623730951},"318":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"339":{"tf":1.0},"347":{"tf":1.7320508075688772},"356":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.7320508075688772},"394":{"tf":1.4142135623730951},"408":{"tf":1.0},"410":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.0},"436":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"522":{"tf":1.0},"539":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":2.449489742783178},"65":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"79":{"tf":1.4142135623730951},"8":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"192":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"t":{"0":{"df":1,"docs":{"440":{"tf":2.0}}},"1":{"df":1,"docs":{"440":{"tf":2.0}}},"=":{"0":{"df":0,"docs":{},"x":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"a":{"df":0,"docs":{},"f":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},">":{"(":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"b":{"df":1,"docs":{"397":{"tf":1.0}},"l":{"df":3,"docs":{"156":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}},"d":{"a":{"df":1,"docs":{"558":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":2,"docs":{"24":{"tf":1.0},"25":{"tf":1.0}}},"i":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}},"l":{"df":1,"docs":{"431":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":7,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.0},"128":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0},"511":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"y":{"df":3,"docs":{"154":{"tf":1.0},"161":{"tf":1.0},"28":{"tf":1.0}}}},"df":0,"docs":{}}},"df":42,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.0},"157":{"tf":1.0},"190":{"tf":1.4142135623730951},"2":{"tf":1.4142135623730951},"217":{"tf":1.0},"230":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"271":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"292":{"tf":2.0},"303":{"tf":1.0},"310":{"tf":1.0},"318":{"tf":1.4142135623730951},"319":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.4142135623730951},"374":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"393":{"tf":1.0},"40":{"tf":1.0},"418":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0},"47":{"tf":1.0},"48":{"tf":1.0},"481":{"tf":1.0},"517":{"tf":1.0},"53":{"tf":1.0},"552":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"560":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.0}},"n":{"df":7,"docs":{"17":{"tf":1.0},"353":{"tf":1.0},"402":{"tf":1.0},"440":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"599":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"k":{"df":16,"docs":{"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"268":{"tf":1.0},"279":{"tf":1.0},"28":{"tf":1.7320508075688772},"32":{"tf":1.0},"35":{"tf":1.0},"359":{"tf":1.0},"41":{"tf":1.4142135623730951},"47":{"tf":1.0},"49":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.0},"68":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"419":{"tf":1.0}}}}},"p":{"df":1,"docs":{"538":{"tf":1.7320508075688772}}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"/":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"\\":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"\\":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"244":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":7,"docs":{"211":{"tf":1.0},"284":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0},"532":{"tf":1.0},"573":{"tf":1.0},"94":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"k":{"(":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"539":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"(":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"(":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"542":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"566":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"457":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"320":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":33,"docs":{"156":{"tf":1.7320508075688772},"178":{"tf":1.7320508075688772},"189":{"tf":1.4142135623730951},"190":{"tf":1.7320508075688772},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"230":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":3.4641016151377544},"288":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"328":{"tf":5.385164807134504},"330":{"tf":1.4142135623730951},"331":{"tf":1.0},"347":{"tf":2.23606797749979},"349":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":2.449489742783178},"412":{"tf":3.0},"460":{"tf":1.0},"470":{"tf":2.8284271247461903},"475":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.7320508075688772},"538":{"tf":4.358898943540674},"539":{"tf":2.8284271247461903},"544":{"tf":1.0},"599":{"tf":1.0},"62":{"tf":2.6457513110645907}},"s":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0}}}}}}},"b":{"d":{"df":1,"docs":{"19":{"tf":1.0}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}},"p":{"df":4,"docs":{"143":{"tf":1.0},"276":{"tf":1.0},"503":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"d":{"df":2,"docs":{"12":{"tf":1.0},"539":{"tf":1.0}}},"df":6,"docs":{"199":{"tf":1.0},"211":{"tf":1.0},"268":{"tf":1.0},"380":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":2.8284271247461903}},"e":{"a":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"358":{"tf":1.4142135623730951},"359":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":20,"docs":{"110":{"tf":1.0},"120":{"tf":1.0},"134":{"tf":1.4142135623730951},"15":{"tf":1.0},"17":{"tf":1.4142135623730951},"249":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.0},"392":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":2.23606797749979},"457":{"tf":2.6457513110645907},"458":{"tf":1.4142135623730951},"460":{"tf":1.7320508075688772},"463":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"580":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"457":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"599":{"tf":1.0},"84":{"tf":1.0}},"n":{"df":0,"docs":{},"i":{"c":{"df":7,"docs":{"192":{"tf":1.0},"221":{"tf":1.0},"278":{"tf":1.0},"363":{"tf":1.0},"499":{"tf":1.0},"513":{"tf":1.0},"57":{"tf":1.4142135623730951}}},"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":3,"docs":{"156":{"tf":1.0},"319":{"tf":1.0},"417":{"tf":1.7320508075688772}}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":3,"docs":{"116":{"tf":1.0},"120":{"tf":1.0},"217":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":52,"docs":{"148":{"tf":1.0},"149":{"tf":1.0},"163":{"tf":1.0},"173":{"tf":1.0},"183":{"tf":1.0},"192":{"tf":1.0},"205":{"tf":1.0},"213":{"tf":1.0},"218":{"tf":1.0},"225":{"tf":1.0},"239":{"tf":1.0},"248":{"tf":1.0},"250":{"tf":1.0},"256":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"272":{"tf":1.4142135623730951},"28":{"tf":1.0},"280":{"tf":1.0},"288":{"tf":1.0},"296":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.0},"332":{"tf":1.0},"336":{"tf":1.4142135623730951},"339":{"tf":1.0},"352":{"tf":1.0},"366":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":1.0},"382":{"tf":1.0},"393":{"tf":1.0},"401":{"tf":1.0},"408":{"tf":1.0},"413":{"tf":1.0},"427":{"tf":1.0},"431":{"tf":1.4142135623730951},"435":{"tf":1.0},"444":{"tf":1.0},"452":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.0},"474":{"tf":1.0},"482":{"tf":1.0},"486":{"tf":1.0},"521":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"56":{"tf":1.0},"89":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"394":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":12,"docs":{"157":{"tf":1.7320508075688772},"16":{"tf":1.4142135623730951},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"458":{"tf":1.4142135623730951},"489":{"tf":1.7320508075688772},"97":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"450":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"417":{"tf":1.0},"421":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"t":{"df":4,"docs":{"278":{"tf":1.0},"300":{"tf":1.0},"452":{"tf":1.0},"456":{"tf":1.0}}}}},"n":{"d":{"df":3,"docs":{"153":{"tf":1.0},"319":{"tf":1.0},"62":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"61":{"tf":2.0}}}}},"r":{"df":0,"docs":{},"m":{"df":8,"docs":{"218":{"tf":1.0},"231":{"tf":1.0},"393":{"tf":1.0},"450":{"tf":1.0},"511":{"tf":1.0},"560":{"tf":1.0},"6":{"tf":1.0},"65":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"538":{"tf":2.23606797749979},"539":{"tf":1.4142135623730951},"542":{"tf":1.0}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":1,"docs":{"417":{"tf":1.0}}}}}}}}}},"s":{"df":0,"docs":{},"t":{"(":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"312":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"217":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"y":{"(":{"df":0,"docs":{},"|":{"a":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":9,"docs":{"110":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"417":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.7320508075688772},"62":{"tf":1.7320508075688772}}}},"x":{"df":0,"docs":{},"t":{"df":4,"docs":{"258":{"tf":1.0},"397":{"tf":1.7320508075688772},"523":{"tf":1.0},"538":{"tf":1.0}}}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":7,"docs":{"397":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"600":{"tf":1.0},"601":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"199":{"tf":1.0}}}}}}}}},"t":{"'":{"df":14,"docs":{"156":{"tf":1.0},"217":{"tf":1.4142135623730951},"237":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"352":{"tf":1.0},"36":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"487":{"tf":1.0},"493":{"tf":1.0},"504":{"tf":1.0},"65":{"tf":1.4142135623730951}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":1,"docs":{"603":{"tf":1.0}}}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":10,"docs":{"138":{"tf":1.0},"156":{"tf":1.0},"211":{"tf":1.0},"226":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"391":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"559":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"284":{"tf":1.0},"389":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"67":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"'":{"df":11,"docs":{"122":{"tf":1.0},"200":{"tf":1.0},"278":{"tf":1.4142135623730951},"300":{"tf":1.0},"309":{"tf":1.0},"336":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"410":{"tf":1.0},"475":{"tf":1.0},"558":{"tf":1.0}}},"df":1,"docs":{"599":{"tf":1.0}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":5,"docs":{"138":{"tf":1.0},"195":{"tf":1.0},"323":{"tf":1.0},"336":{"tf":1.0},"456":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":1,"docs":{"356":{"tf":1.0}}}},"y":{"'":{"df":0,"docs":{},"r":{"df":10,"docs":{"129":{"tf":1.0},"131":{"tf":1.0},"134":{"tf":1.0},"225":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"8":{"tf":1.0}}},"v":{"df":3,"docs":{"134":{"tf":1.0},"284":{"tf":1.0},"361":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"456":{"tf":1.4142135623730951}},"g":{"df":67,"docs":{"125":{"tf":1.0},"129":{"tf":1.0},"131":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":2.6457513110645907},"16":{"tf":1.0},"167":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"190":{"tf":1.0},"195":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":2.8284271247461903},"223":{"tf":1.0},"231":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.4142135623730951},"311":{"tf":1.0},"315":{"tf":1.0},"317":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.0},"412":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"428":{"tf":1.0},"456":{"tf":1.0},"46":{"tf":1.0},"47":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"499":{"tf":1.0},"504":{"tf":1.4142135623730951},"509":{"tf":1.0},"51":{"tf":1.0},"511":{"tf":1.0},"521":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"552":{"tf":1.0},"562":{"tf":1.0},"565":{"tf":1.0},"59":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.4142135623730951},"86":{"tf":1.0}}},"k":{"df":46,"docs":{"10":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"159":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.0},"258":{"tf":1.0},"264":{"tf":1.0},"266":{"tf":1.0},"276":{"tf":1.7320508075688772},"284":{"tf":1.7320508075688772},"300":{"tf":1.7320508075688772},"307":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.0},"331":{"tf":1.0},"333":{"tf":1.0},"347":{"tf":1.4142135623730951},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.0},"389":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.7320508075688772},"41":{"tf":2.0},"421":{"tf":1.4142135623730951},"456":{"tf":1.0},"487":{"tf":1.0},"491":{"tf":1.0},"498":{"tf":1.4142135623730951},"506":{"tf":1.0},"522":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"56":{"tf":1.0},"570":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.4142135623730951}}}},"r":{"d":{"df":4,"docs":{"221":{"tf":1.0},"276":{"tf":1.0},"279":{"tf":1.0},"458":{"tf":1.0}}},"df":0,"docs":{}},"s":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"(":{")":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"(":{"\"":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":1,"docs":{"408":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"367":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":40,"docs":{"118":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.7320508075688772},"190":{"tf":1.0},"192":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"213":{"tf":1.0},"218":{"tf":1.4142135623730951},"256":{"tf":1.0},"276":{"tf":1.0},"288":{"tf":1.0},"32":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"33":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"36":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.0},"423":{"tf":1.0},"448":{"tf":1.0},"458":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"480":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"538":{"tf":1.4142135623730951},"54":{"tf":1.0},"562":{"tf":1.0},"62":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":25,"docs":{"154":{"tf":1.0},"192":{"tf":1.0},"2":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"263":{"tf":1.0},"292":{"tf":1.0},"313":{"tf":1.0},"321":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.7320508075688772},"389":{"tf":1.0},"399":{"tf":1.0},"451":{"tf":1.0},"503":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"96":{"tf":1.0}},"t":{"df":9,"docs":{"156":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"328":{"tf":1.4142135623730951},"343":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"470":{"tf":1.4142135623730951},"599":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"6":{"3":{":":{"5":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"380":{"tf":1.0}}}}}},"df":41,"docs":{"189":{"tf":1.7320508075688772},"190":{"tf":1.0},"191":{"tf":1.0},"233":{"tf":1.0},"244":{"tf":1.4142135623730951},"256":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.7320508075688772},"284":{"tf":3.3166247903554},"309":{"tf":1.7320508075688772},"318":{"tf":2.0},"319":{"tf":2.8284271247461903},"328":{"tf":2.0},"331":{"tf":1.7320508075688772},"336":{"tf":2.23606797749979},"344":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"357":{"tf":1.0},"361":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.7320508075688772},"404":{"tf":1.0},"412":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"423":{"tf":2.0},"431":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"469":{"tf":1.7320508075688772},"470":{"tf":2.6457513110645907},"504":{"tf":1.0},"521":{"tf":1.0},"561":{"tf":1.0},"564":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":2.0},"62":{"tf":2.23606797749979}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"517":{"tf":1.0}}}}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"125":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"218":{"tf":1.0},"422":{"tf":1.0}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"319":{"tf":1.0}}},"df":0,"docs":{}}}}}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":4,"docs":{"230":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"545":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":23,"docs":{"168":{"tf":1.0},"169":{"tf":1.0},"190":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.0},"245":{"tf":1.7320508075688772},"276":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"303":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":2.0},"421":{"tf":1.0},"448":{"tf":1.7320508075688772},"450":{"tf":1.0},"515":{"tf":1.0}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"47":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":5,"docs":{"143":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"268":{"tf":1.4142135623730951},"431":{"tf":1.0}}}}}}}},"w":{"df":2,"docs":{"157":{"tf":1.0},"268":{"tf":1.0}},"n":{"df":1,"docs":{"261":{"tf":1.0}}}}}},"u":{"df":4,"docs":{"129":{"tf":1.0},"169":{"tf":1.0},"218":{"tf":1.0},"453":{"tf":1.0}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"232":{"tf":1.4142135623730951}}}}}},"d":{"df":0,"docs":{},"e":{"df":4,"docs":{"231":{"tf":1.0},"233":{"tf":1.0},"237":{"tf":1.0},"276":{"tf":1.4142135623730951}}}},"df":5,"docs":{"156":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"370":{"tf":1.0},"9":{"tf":1.0}},"e":{"df":2,"docs":{"431":{"tf":1.0},"62":{"tf":1.0}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"389":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"286":{"tf":1.0},"288":{"tf":1.0}}}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"14":{"tf":1.7320508075688772}}}},"m":{"df":0,"docs":{},"e":{"df":75,"docs":{"110":{"tf":1.7320508075688772},"131":{"tf":1.0},"138":{"tf":1.0},"156":{"tf":1.7320508075688772},"174":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.7320508075688772},"2":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":2.0},"214":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"226":{"tf":1.0},"230":{"tf":1.7320508075688772},"235":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"246":{"tf":1.0},"248":{"tf":1.0},"25":{"tf":1.0},"251":{"tf":1.4142135623730951},"261":{"tf":1.0},"268":{"tf":1.4142135623730951},"273":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"286":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"319":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"332":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":1.0},"347":{"tf":2.23606797749979},"359":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"389":{"tf":1.0},"393":{"tf":1.0},"397":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"417":{"tf":1.7320508075688772},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"431":{"tf":1.0},"436":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":2.449489742783178},"469":{"tf":1.4142135623730951},"470":{"tf":1.7320508075688772},"472":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"515":{"tf":1.0},"538":{"tf":1.7320508075688772},"551":{"tf":1.0},"555":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"9":{"tf":1.0}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"=":{"4":{"9":{"1":{"5":{"2":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"167":{"tf":1.0},"181":{"tf":1.0},"284":{"tf":1.4142135623730951}}}}},"r":{"df":3,"docs":{"300":{"tf":1.0},"336":{"tf":1.4142135623730951},"457":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"259":{"tf":1.0}}}},"i":{"df":1,"docs":{"380":{"tf":1.0}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"72":{"tf":1.0}}}}}},"p":{"df":1,"docs":{"153":{"tf":1.0}}}},"l":{";":{"d":{"df":0,"docs":{},"r":{"df":2,"docs":{"24":{"tf":1.0},"38":{"tf":1.0}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.7320508075688772}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"421":{"tf":1.0}}}}}},"df":0,"docs":{}},"<":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"m":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"1":{"tf":1.0},"603":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"o":{"_":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"<":{"df":0,"docs":{},"h":{"df":1,"docs":{"292":{"tf":1.0}}}},"_":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"292":{"tf":1.7320508075688772}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"<":{"df":0,"docs":{},"f":{">":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"344":{"tf":1.0}}}},"d":{"a":{"df":0,"docs":{},"y":{"df":41,"docs":{"153":{"tf":1.0},"156":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"495":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":3,"docs":{"328":{"tf":1.0},"336":{"tf":2.0},"601":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"261":{"tf":1.0},"84":{"tf":1.0}}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":8,"docs":{"156":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"531":{"tf":1.0},"599":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"'":{"df":5,"docs":{"167":{"tf":1.0},"209":{"tf":1.0},"252":{"tf":1.0},"268":{"tf":1.4142135623730951},"309":{"tf":1.7320508075688772}}},":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{":":{":":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"h":{"4":{"1":{"0":{"d":{"c":{"df":0,"docs":{},"e":{"d":{"2":{"a":{"7":{"d":{"df":0,"docs":{},"f":{"3":{"df":0,"docs":{},"e":{"c":{"8":{"(":{"df":0,"docs":{},"f":{"=":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"_":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"h":{"c":{"d":{"4":{"7":{"7":{"7":{"3":{"4":{"d":{"4":{"9":{"7":{"0":{"df":0,"docs":{},"e":{"d":{"5":{"(":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"=":{"(":{"_":{"_":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"<":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":6,"docs":{"258":{"tf":1.0},"309":{"tf":1.4142135623730951},"320":{"tf":1.0},"380":{"tf":1.0},"448":{"tf":1.7320508075688772},"450":{"tf":1.0}}}}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"a":{",":{"b":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{">":{":":{":":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":2.0}}}}}}}}}},"df":1,"docs":{"284":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"_":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"r":{"d":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{":":{":":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"309":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"284":{"tf":1.0},"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"309":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":4,"docs":{"268":{"tf":1.4142135623730951},"347":{"tf":1.0},"349":{"tf":1.0},"448":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"310":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"310":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"310":{"tf":1.0},"347":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"310":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"383":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"(":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":31,"docs":{"156":{"tf":1.4142135623730951},"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"233":{"tf":1.4142135623730951},"234":{"tf":2.23606797749979},"258":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"3":{"tf":1.0},"309":{"tf":1.7320508075688772},"318":{"tf":1.4142135623730951},"320":{"tf":1.0},"325":{"tf":1.4142135623730951},"347":{"tf":2.23606797749979},"359":{"tf":1.7320508075688772},"360":{"tf":1.4142135623730951},"365":{"tf":1.0},"370":{"tf":2.8284271247461903},"372":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":3.3166247903554},"383":{"tf":1.7320508075688772},"397":{"tf":1.4142135623730951},"431":{"tf":1.0},"434":{"tf":1.0},"437":{"tf":1.0},"470":{"tf":2.0},"517":{"tf":1.0},"544":{"tf":1.0},"548":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"l":{"d":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"240":{"tf":1.0}}}}},"n":{"df":1,"docs":{"370":{"tf":1.0}}},"o":{"df":0,"docs":{},"k":{"df":2,"docs":{"389":{"tf":1.4142135623730951},"59":{"tf":1.0}}},"l":{"'":{"df":1,"docs":{"544":{"tf":1.0}}},"b":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"453":{"tf":1.0}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"110":{"tf":1.0},"245":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":28,"docs":{"110":{"tf":1.4142135623730951},"130":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.7320508075688772},"213":{"tf":1.4142135623730951},"230":{"tf":1.0},"251":{"tf":1.0},"288":{"tf":1.0},"347":{"tf":1.0},"403":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"414":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"433":{"tf":1.0},"436":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"475":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.4142135623730951},"545":{"tf":1.0},"65":{"tf":1.0},"73":{"tf":1.0},"77":{"tf":1.0},"82":{"tf":1.4142135623730951}}}},"p":{"df":11,"docs":{"125":{"tf":1.0},"128":{"tf":1.0},"189":{"tf":1.0},"258":{"tf":1.0},"347":{"tf":1.0},"41":{"tf":2.0},"421":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"599":{"tf":1.0},"65":{"tf":2.0}},"i":{"c":{"df":2,"docs":{"16":{"tf":1.0},"480":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"a":{"d":{"d":{"df":0,"docs":{},"r":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"300":{"tf":1.0},"341":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"367":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":7,"docs":{"360":{"tf":1.0},"41":{"tf":1.0},"462":{"tf":1.0},"487":{"tf":1.0},"516":{"tf":1.0},"534":{"tf":1.0},"548":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}},"y":{"df":2,"docs":{"380":{"tf":1.4142135623730951},"448":{"tf":1.0}}}},"r":{"a":{"c":{"df":0,"docs":{},"e":{"df":13,"docs":{"209":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.7320508075688772},"399":{"tf":1.4142135623730951},"402":{"tf":1.4142135623730951},"403":{"tf":1.0},"410":{"tf":1.4142135623730951},"412":{"tf":1.4142135623730951},"453":{"tf":1.0},"470":{"tf":1.0},"545":{"tf":1.0},"548":{"tf":1.4142135623730951}},"r":{"df":1,"docs":{"469":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"289":{"tf":1.0}}}}}}}}}}}}},"df":0,"docs":{}}}},"k":{"df":9,"docs":{"18":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"271":{"tf":1.0},"470":{"tf":1.0},"552":{"tf":1.0},"557":{"tf":1.0},"560":{"tf":1.0},"562":{"tf":1.4142135623730951}}}},"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":7,"docs":{"111":{"tf":1.0},"156":{"tf":1.0},"251":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"132":{"tf":1.0},"408":{"tf":1.0},"91":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":4,"docs":{"125":{"tf":1.7320508075688772},"134":{"tf":1.0},"209":{"tf":1.4142135623730951},"213":{"tf":1.0}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":6,"docs":{"123":{"tf":1.0},"125":{"tf":2.0},"127":{"tf":1.0},"128":{"tf":1.7320508075688772},"129":{"tf":1.4142135623730951},"130":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"t":{"'":{"df":1,"docs":{"209":{"tf":1.0}}},"df":50,"docs":{"156":{"tf":2.23606797749979},"195":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":2.8284271247461903},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"219":{"tf":1.0},"221":{"tf":4.47213595499958},"223":{"tf":1.4142135623730951},"224":{"tf":1.0},"226":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.4142135623730951},"279":{"tf":1.0},"292":{"tf":2.23606797749979},"300":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.4142135623730951},"370":{"tf":3.3166247903554},"380":{"tf":2.0},"421":{"tf":1.7320508075688772},"440":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"47":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.4142135623730951},"535":{"tf":1.0},"553":{"tf":1.0},"567":{"tf":1.0},"568":{"tf":1.4142135623730951},"570":{"tf":1.0},"574":{"tf":1.0},"575":{"tf":1.4142135623730951},"576":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.4142135623730951},"580":{"tf":1.4142135623730951},"581":{"tf":1.0},"589":{"tf":1.0},"599":{"tf":2.0}},"s":{"/":{"a":{"d":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"394":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"51":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"342":{"tf":1.4142135623730951},"417":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":5,"docs":{"201":{"tf":1.0},"209":{"tf":1.0},"259":{"tf":1.0},"442":{"tf":1.0},"458":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"300":{"tf":1.4142135623730951}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"62":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}}}}},"p":{"df":1,"docs":{"214":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"191":{"tf":1.0}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"431":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"a":{"df":0,"docs":{},"g":{"df":7,"docs":{"2":{"tf":1.0},"397":{"tf":1.0},"554":{"tf":1.0},"555":{"tf":1.0},"556":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.7320508075688772}}}},"c":{"df":0,"docs":{},"k":{"df":9,"docs":{"153":{"tf":1.0},"156":{"tf":1.0},"321":{"tf":1.0},"41":{"tf":1.0},"460":{"tf":1.4142135623730951},"511":{"tf":1.4142135623730951},"516":{"tf":1.0},"517":{"tf":1.0},"529":{"tf":1.0}},"i":{"df":5,"docs":{"156":{"tf":1.0},"347":{"tf":1.0},"456":{"tf":1.4142135623730951},"52":{"tf":1.0},"552":{"tf":1.0}}}}},"df":78,"docs":{"153":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":2.23606797749979},"16":{"tf":1.0},"165":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"183":{"tf":1.0},"192":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.7320508075688772},"209":{"tf":2.23606797749979},"217":{"tf":1.0},"221":{"tf":1.7320508075688772},"223":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.4142135623730951},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"274":{"tf":1.0},"276":{"tf":2.449489742783178},"278":{"tf":1.0},"282":{"tf":1.0},"284":{"tf":1.4142135623730951},"286":{"tf":1.4142135623730951},"292":{"tf":1.7320508075688772},"300":{"tf":1.4142135623730951},"307":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"333":{"tf":1.0},"336":{"tf":1.4142135623730951},"34":{"tf":1.0},"340":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.4142135623730951},"357":{"tf":1.4142135623730951},"360":{"tf":1.0},"370":{"tf":2.6457513110645907},"380":{"tf":3.3166247903554},"385":{"tf":1.0},"387":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"402":{"tf":1.0},"421":{"tf":1.0},"426":{"tf":1.0},"438":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"461":{"tf":1.0},"470":{"tf":1.7320508075688772},"486":{"tf":1.0},"494":{"tf":1.0},"507":{"tf":1.0},"521":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"526":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"543":{"tf":1.0},"559":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"9":{"tf":1.0}},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"173":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"286":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0}}}}}},"m":{"df":4,"docs":{"156":{"tf":1.0},"395":{"tf":1.0},"402":{"tf":1.0},"405":{"tf":1.0}}},"p":{"df":2,"docs":{"272":{"tf":1.0},"393":{"tf":1.0}}},"v":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":6,"docs":{"156":{"tf":1.0},"221":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"410":{"tf":1.0},"517":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"l":{"df":5,"docs":{"156":{"tf":1.0},"242":{"tf":1.0},"276":{"tf":1.0},"372":{"tf":1.0},"53":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"258":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"e":{"df":7,"docs":{"154":{"tf":1.4142135623730951},"270":{"tf":1.0},"300":{"tf":1.0},"456":{"tf":1.0},"54":{"tf":1.0},"578":{"tf":1.0},"61":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":14,"docs":{"156":{"tf":1.4142135623730951},"230":{"tf":1.0},"233":{"tf":1.0},"241":{"tf":1.0},"253":{"tf":1.0},"256":{"tf":2.0},"258":{"tf":1.4142135623730951},"383":{"tf":1.0},"386":{"tf":1.0},"389":{"tf":1.0},"512":{"tf":1.0},"518":{"tf":1.0},"521":{"tf":2.0},"525":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"487":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"t":{"c":{"df":0,"docs":{},"p":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"i":{"df":1,"docs":{"448":{"tf":1.0}}},"n":{"df":0,"docs":{},"e":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"129":{"tf":1.0}}}},"df":0,"docs":{}},"df":5,"docs":{"125":{"tf":1.0},"129":{"tf":1.0},"209":{"tf":1.4142135623730951},"319":{"tf":1.0},"502":{"tf":1.0}}}},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"r":{"b":{"df":0,"docs":{},"o":{"df":1,"docs":{"503":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"67":{"tf":1.0}}},"n":{"df":19,"docs":{"156":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.4142135623730951},"199":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"257":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"359":{"tf":1.0},"389":{"tf":1.0},"417":{"tf":1.0},"470":{"tf":1.0},"498":{"tf":1.4142135623730951},"51":{"tf":1.4142135623730951}}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"343":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":4,"docs":{"359":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0}}}}}}},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"df":4,"docs":{"138":{"tf":1.0},"209":{"tf":1.0},"342":{"tf":1.0},"73":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":8,"docs":{"162":{"tf":1.0},"28":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"36":{"tf":1.0},"361":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"e":{"df":5,"docs":{"235":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"389":{"tf":1.0}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"201":{"tf":1.0},"583":{"tf":1.0},"599":{"tf":1.0}}}}}}},"o":{"df":18,"docs":{"15":{"tf":1.0},"167":{"tf":1.0},"209":{"tf":1.7320508075688772},"218":{"tf":1.0},"276":{"tf":1.4142135623730951},"29":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"42":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0},"522":{"tf":1.0},"599":{"tf":1.0}}}},"x":{"df":1,"docs":{"448":{"tf":1.0}}},"y":{"df":1,"docs":{"221":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"214":{"tf":1.0}}},"df":52,"docs":{"110":{"tf":1.0},"136":{"tf":1.4142135623730951},"197":{"tf":1.0},"198":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951},"209":{"tf":2.23606797749979},"211":{"tf":1.4142135623730951},"214":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"221":{"tf":1.4142135623730951},"245":{"tf":2.23606797749979},"268":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":3.1622776601683795},"294":{"tf":1.0},"307":{"tf":2.0},"310":{"tf":2.0},"317":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":3.0},"422":{"tf":1.4142135623730951},"423":{"tf":1.4142135623730951},"440":{"tf":4.242640687119285},"448":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":3.0},"460":{"tf":1.4142135623730951},"465":{"tf":1.0},"470":{"tf":1.4142135623730951},"472":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.7320508075688772},"564":{"tf":1.0},"565":{"tf":1.4142135623730951},"566":{"tf":1.0},"568":{"tf":1.0},"579":{"tf":1.4142135623730951},"580":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":3,"docs":{"230":{"tf":1.0},"231":{"tf":1.0},"280":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"i":{"c":{"df":7,"docs":{"111":{"tf":1.0},"153":{"tf":1.0},"237":{"tf":1.0},"421":{"tf":1.0},"478":{"tf":1.0},"564":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"u":{"1":{"6":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"3":{"2":{"df":1,"docs":{"522":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"6":{"4":{"df":1,"docs":{"328":{"tf":2.0}}},"df":0,"docs":{}},"8":{"df":2,"docs":{"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772}}},"a":{"df":0,"docs":{},"z":{"df":0,"docs":{},"u":{"df":1,"docs":{"602":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"p":{"df":1,"docs":{"143":{"tf":1.0}}}},"df":0,"docs":{},"h":{"df":3,"docs":{"148":{"tf":1.0},"149":{"tf":1.0},"217":{"tf":1.0}}},"i":{"df":5,"docs":{"188":{"tf":1.0},"189":{"tf":1.0},"191":{"tf":1.4142135623730951},"192":{"tf":1.0},"403":{"tf":1.0}},"e":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"191":{"tf":1.0}}}}}}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":10,"docs":{"171":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"302":{"tf":1.0},"321":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"445":{"tf":1.0},"470":{"tf":1.0},"9":{"tf":1.0}}}}}},"n":{"a":{"b":{"df":0,"docs":{},"l":{"df":3,"docs":{"289":{"tf":1.0},"336":{"tf":1.4142135623730951},"391":{"tf":1.0}}}},"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"338":{"tf":1.0}}},"df":0,"docs":{}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":3,"docs":{"340":{"tf":1.0},"367":{"tf":1.0},"428":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"558":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":3,"docs":{"408":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"558":{"tf":1.0}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":3,"docs":{"18":{"tf":1.0},"40":{"tf":1.0},"487":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":3,"docs":{"252":{"tf":1.0},"278":{"tf":1.0},"370":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"65":{"tf":1.0},"84":{"tf":1.0}}}}}}},"v":{"df":2,"docs":{"497":{"tf":1.0},"561":{"tf":1.0}}}}},"d":{"df":1,"docs":{"192":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":14,"docs":{"12":{"tf":1.0},"152":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"324":{"tf":1.0},"347":{"tf":1.0},"358":{"tf":1.0},"457":{"tf":1.4142135623730951},"470":{"tf":1.0},"485":{"tf":1.0},"5":{"tf":1.0},"522":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":8,"docs":{"140":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"347":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.4142135623730951},"460":{"tf":1.4142135623730951},"502":{"tf":1.0}}}},"n":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"370":{"tf":1.0},"394":{"tf":1.0}}}}},"df":0,"docs":{}}},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"391":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":39,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"171":{"tf":1.0},"173":{"tf":1.0},"178":{"tf":1.0},"181":{"tf":1.0},"183":{"tf":1.0},"195":{"tf":1.0},"211":{"tf":1.0},"226":{"tf":1.0},"246":{"tf":1.0},"248":{"tf":1.4142135623730951},"251":{"tf":1.0},"258":{"tf":1.4142135623730951},"261":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.4142135623730951},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"288":{"tf":1.0},"33":{"tf":1.0},"336":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.4142135623730951},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"394":{"tf":1.0},"421":{"tf":1.0},"427":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"463":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.4142135623730951},"54":{"tf":2.23606797749979},"544":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"389":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"df":1,"docs":{"559":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":2,"docs":{"300":{"tf":1.0},"380":{"tf":1.0}}}}},"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":5,"docs":{"181":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"497":{"tf":1.0},"59":{"tf":1.0}},"e":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"f":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"197":{"tf":1.0},"383":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"458":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":1,"docs":{"465":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":9,"docs":{"168":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"196":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.4142135623730951},"538":{"tf":1.0}}}}}}}},"i":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"460":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"1":{"0":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"380":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"218":{"tf":1.0}}}}}}},"q":{"df":0,"docs":{},"u":{"df":3,"docs":{"112":{"tf":1.0},"118":{"tf":1.0},"264":{"tf":1.0}}}},"t":{"df":3,"docs":{"394":{"tf":1.0},"470":{"tf":1.0},"573":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":3,"docs":{"356":{"tf":1.0},"386":{"tf":1.0},"469":{"tf":1.0}}}}}},"x":{"df":4,"docs":{"336":{"tf":1.0},"344":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}}}},"k":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"319":{"tf":1.0}},"n":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}}}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"367":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":5,"docs":{"16":{"tf":1.0},"321":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"6":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"k":{"df":3,"docs":{"112":{"tf":1.0},"214":{"tf":1.0},"61":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"338":{"tf":1.0},"54":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"363":{"tf":1.0}}}}}},"r":{"d":{"df":1,"docs":{"156":{"tf":1.0}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"198":{"tf":1.0},"370":{"tf":2.449489742783178},"380":{"tf":1.0},"440":{"tf":4.0}}}}},"r":{"df":0,"docs":{},"e":{"a":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"328":{"tf":1.0}}}},"d":{"df":1,"docs":{"470":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"59":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"s":{"a":{"df":0,"docs":{},"f":{"df":4,"docs":{"190":{"tf":1.0},"198":{"tf":1.4142135623730951},"328":{"tf":2.449489742783178},"336":{"tf":1.4142135623730951}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":3,"docs":{"457":{"tf":1.0},"460":{"tf":1.0},"543":{"tf":1.0}}}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"344":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"458":{"tf":1.0}}}}}},"df":0,"docs":{}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}},"r":{"df":4,"docs":{"197":{"tf":1.0},"268":{"tf":1.0},"361":{"tf":1.0},"456":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"245":{"tf":1.0}}}},"i":{"df":0,"docs":{},"l":{"df":13,"docs":{"15":{"tf":1.7320508075688772},"16":{"tf":1.0},"167":{"tf":1.0},"234":{"tf":1.0},"237":{"tf":1.0},"357":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.0},"559":{"tf":1.4142135623730951},"562":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"200":{"tf":1.0}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":3,"docs":{"258":{"tf":1.0},"320":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":10,"docs":{"18":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.0},"550":{"tf":1.0},"553":{"tf":1.0},"561":{"tf":1.0}}}},"df":0,"docs":{}},"df":68,"docs":{"112":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.7320508075688772},"167":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"189":{"tf":1.0},"191":{"tf":1.4142135623730951},"196":{"tf":1.0},"201":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"232":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"272":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":2.0},"292":{"tf":1.4142135623730951},"307":{"tf":1.0},"309":{"tf":1.0},"322":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"389":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"460":{"tf":1.0},"462":{"tf":1.0},"478":{"tf":1.4142135623730951},"48":{"tf":1.0},"504":{"tf":1.0},"510":{"tf":1.0},"522":{"tf":1.0},"528":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"538":{"tf":2.449489742783178},"539":{"tf":2.0},"552":{"tf":1.0},"559":{"tf":1.0},"565":{"tf":1.0},"599":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"462":{"tf":1.0}}}}}}},"g":{"df":0,"docs":{},"r":{"a":{"d":{"df":1,"docs":{"237":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"218":{"tf":1.0}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"n":{"df":5,"docs":{"201":{"tf":1.0},"209":{"tf":1.0},"27":{"tf":1.0},"358":{"tf":1.0},"470":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"292":{"tf":1.0},"347":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"r":{"df":1,"docs":{"156":{"tf":1.0}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"l":{":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":9,"docs":{"217":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"307":{"tf":2.23606797749979},"308":{"tf":1.7320508075688772},"309":{"tf":1.4142135623730951},"310":{"tf":2.0},"311":{"tf":1.4142135623730951},"312":{"tf":2.0},"320":{"tf":1.4142135623730951}},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"309":{"tf":1.0},"320":{"tf":1.0}}}}},"df":0,"docs":{}}}},"s":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"530":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":11,"docs":{"127":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.4142135623730951},"340":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"450":{"tf":1.0},"469":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.0}}}},"df":209,"docs":{"10":{"tf":1.0},"107":{"tf":1.0},"108":{"tf":1.4142135623730951},"110":{"tf":1.0},"115":{"tf":1.0},"116":{"tf":1.0},"118":{"tf":1.4142135623730951},"124":{"tf":1.0},"127":{"tf":1.7320508075688772},"133":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.0},"142":{"tf":1.0},"143":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.4142135623730951},"15":{"tf":1.0},"153":{"tf":1.4142135623730951},"154":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":2.0},"16":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"168":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"179":{"tf":1.0},"181":{"tf":1.0},"185":{"tf":1.0},"187":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.4142135623730951},"192":{"tf":1.0},"195":{"tf":2.0},"198":{"tf":1.0},"200":{"tf":1.4142135623730951},"203":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":2.6457513110645907},"21":{"tf":1.0},"211":{"tf":1.0},"213":{"tf":1.7320508075688772},"217":{"tf":1.7320508075688772},"218":{"tf":2.449489742783178},"221":{"tf":3.3166247903554},"224":{"tf":1.0},"225":{"tf":1.0},"23":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.7320508075688772},"233":{"tf":1.0},"234":{"tf":2.0},"237":{"tf":2.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.7320508075688772},"248":{"tf":1.4142135623730951},"250":{"tf":1.0},"251":{"tf":1.7320508075688772},"252":{"tf":1.4142135623730951},"256":{"tf":1.0},"257":{"tf":2.449489742783178},"258":{"tf":2.0},"259":{"tf":1.0},"26":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":2.8284271247461903},"27":{"tf":1.4142135623730951},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"274":{"tf":1.0},"276":{"tf":3.872983346207417},"278":{"tf":1.4142135623730951},"279":{"tf":1.0},"28":{"tf":1.4142135623730951},"284":{"tf":2.8284271247461903},"288":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":3.872983346207417},"300":{"tf":2.8284271247461903},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":2.449489742783178},"31":{"tf":1.0},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":2.23606797749979},"323":{"tf":1.7320508075688772},"325":{"tf":1.0},"328":{"tf":1.7320508075688772},"336":{"tf":3.0},"338":{"tf":1.4142135623730951},"340":{"tf":1.0},"341":{"tf":2.0},"344":{"tf":1.0},"347":{"tf":3.872983346207417},"349":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":2.0},"358":{"tf":1.4142135623730951},"359":{"tf":2.0},"360":{"tf":1.0},"370":{"tf":3.3166247903554},"380":{"tf":3.1622776601683795},"383":{"tf":1.4142135623730951},"389":{"tf":2.0},"39":{"tf":1.0},"391":{"tf":1.7320508075688772},"392":{"tf":1.4142135623730951},"394":{"tf":1.4142135623730951},"397":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.4142135623730951},"41":{"tf":1.4142135623730951},"414":{"tf":1.7320508075688772},"415":{"tf":1.0},"417":{"tf":2.23606797749979},"419":{"tf":1.4142135623730951},"421":{"tf":3.3166247903554},"422":{"tf":2.23606797749979},"425":{"tf":1.0},"431":{"tf":2.0},"435":{"tf":1.0},"437":{"tf":1.4142135623730951},"44":{"tf":1.0},"440":{"tf":1.7320508075688772},"445":{"tf":1.0},"448":{"tf":1.0},"45":{"tf":1.4142135623730951},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.7320508075688772},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.7320508075688772},"463":{"tf":1.4142135623730951},"464":{"tf":1.4142135623730951},"465":{"tf":1.0},"469":{"tf":2.0},"47":{"tf":1.0},"470":{"tf":3.3166247903554},"474":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.4142135623730951},"483":{"tf":1.0},"487":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":2.449489742783178},"504":{"tf":2.0},"507":{"tf":1.4142135623730951},"511":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.7320508075688772},"519":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":3.0},"523":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951},"529":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.4142135623730951},"542":{"tf":1.0},"543":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"557":{"tf":1.0},"56":{"tf":1.0},"561":{"tf":1.0},"564":{"tf":1.0},"565":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0},"597":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":2.6457513110645907},"61":{"tf":2.0},"62":{"tf":1.4142135623730951},"64":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.4142135623730951},"77":{"tf":1.0},"8":{"tf":1.7320508075688772},"82":{"tf":1.4142135623730951},"89":{"tf":1.0},"9":{"tf":1.7320508075688772},"91":{"tf":1.0},"98":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"397":{"tf":1.0}}},"df":71,"docs":{"11":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.0},"139":{"tf":1.0},"155":{"tf":1.4142135623730951},"156":{"tf":2.23606797749979},"158":{"tf":1.0},"166":{"tf":1.0},"168":{"tf":1.0},"171":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"221":{"tf":2.23606797749979},"228":{"tf":1.0},"23":{"tf":1.0},"237":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"261":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":2.23606797749979},"302":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"331":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"376":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":2.0},"392":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.7320508075688772},"407":{"tf":1.0},"412":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"450":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"508":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}}},"df":0,"docs":{},"p":{"a":{"c":{"df":1,"docs":{"344":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"z":{"df":5,"docs":{"217":{"tf":1.7320508075688772},"370":{"tf":3.872983346207417},"419":{"tf":1.0},"421":{"tf":1.0},"568":{"tf":1.0}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":13,"docs":{"127":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"245":{"tf":1.0},"272":{"tf":1.0},"284":{"tf":1.0},"347":{"tf":1.0},"360":{"tf":1.0},"383":{"tf":1.0},"42":{"tf":1.0},"45":{"tf":1.0},"469":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":9,"docs":{"116":{"tf":1.0},"120":{"tf":1.0},"125":{"tf":1.0},"156":{"tf":1.0},"284":{"tf":1.0},"372":{"tf":1.4142135623730951},"517":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"234":{"tf":1.0},"300":{"tf":1.0}}}}}}}}},"v":{"0":{".":{"1":{".":{"0":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"1":{".":{"2":{"df":1,"docs":{"234":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"df":1,"docs":{"234":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{"df":1,"docs":{"234":{"tf":1.0}}},"3":{".":{"3":{".":{"2":{"df":1,"docs":{"234":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"c":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"552":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":4,"docs":{"268":{"tf":1.0},"321":{"tf":1.0},"380":{"tf":1.0},"560":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"178":{"tf":1.0},"217":{"tf":1.0},"54":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":21,"docs":{"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"246":{"tf":1.0},"268":{"tf":1.0},"271":{"tf":1.0},"292":{"tf":1.4142135623730951},"307":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"380":{"tf":1.0},"389":{"tf":1.0},"440":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.7320508075688772},"495":{"tf":1.0},"496":{"tf":1.0},"573":{"tf":1.4142135623730951},"599":{"tf":1.0},"86":{"tf":1.0},"9":{"tf":1.0},"92":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"a":{"b":{"df":0,"docs":{},"l":{"df":4,"docs":{"217":{"tf":1.4142135623730951},"336":{"tf":1.0},"397":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":10,"docs":{"199":{"tf":1.0},"209":{"tf":2.0},"214":{"tf":1.0},"320":{"tf":1.0},"323":{"tf":1.0},"325":{"tf":1.0},"522":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}}},"t":{"df":2,"docs":{"392":{"tf":1.0},"498":{"tf":1.7320508075688772}}}},"df":2,"docs":{"174":{"tf":1.0},"560":{"tf":1.0}},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"146":{"tf":1.0},"389":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"u":{"df":26,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"142":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"19":{"tf":1.0},"300":{"tf":1.4142135623730951},"307":{"tf":1.0},"358":{"tf":1.0},"365":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":1.7320508075688772},"498":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.0},"557":{"tf":1.0},"58":{"tf":1.0},"584":{"tf":1.0},"82":{"tf":1.0},"89":{"tf":1.0},"9":{"tf":1.0},"94":{"tf":1.0},"98":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"231":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"!":{"[":{"1":{",":{"3":{",":{"5":{",":{"3":{"1":{",":{"2":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"380":{"tf":2.23606797749979}}}}}},"df":0,"docs":{}},"<":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":7,"docs":{"307":{"tf":2.0},"308":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":2.23606797749979},"311":{"tf":1.0},"312":{"tf":1.7320508075688772},"320":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}}}}}}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"309":{"tf":1.0}}}}},"u":{"8":{"df":1,"docs":{"199":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"380":{"tf":2.0}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"125":{"tf":1.0},"209":{"tf":1.0},"312":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"r":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":3,"docs":{"397":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0}}}}},"df":0,"docs":{},"g":{"df":1,"docs":{"139":{"tf":1.0}}},"i":{"df":41,"docs":{"108":{"tf":1.4142135623730951},"110":{"tf":1.4142135623730951},"111":{"tf":1.0},"130":{"tf":1.0},"156":{"tf":2.449489742783178},"190":{"tf":1.0},"192":{"tf":1.0},"195":{"tf":1.0},"203":{"tf":1.0},"211":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.0},"233":{"tf":1.0},"235":{"tf":1.0},"241":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.7320508075688772},"302":{"tf":1.0},"309":{"tf":1.0},"316":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.4142135623730951},"356":{"tf":1.0},"372":{"tf":1.4142135623730951},"380":{"tf":2.449489742783178},"408":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.4142135623730951},"51":{"tf":1.0},"533":{"tf":1.0},"549":{"tf":1.0},"566":{"tf":1.0},"599":{"tf":1.0},"73":{"tf":1.0}},"f":{"df":1,"docs":{"178":{"tf":1.0}},"i":{"df":3,"docs":{"237":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0}}}}},"s":{"a":{"df":1,"docs":{"321":{"tf":1.0}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":19,"docs":{"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"224":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"237":{"tf":2.0},"257":{"tf":1.0},"276":{"tf":1.0},"323":{"tf":1.0},"336":{"tf":1.7320508075688772},"358":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"41":{"tf":1.0},"470":{"tf":1.4142135623730951},"483":{"tf":1.0},"5":{"tf":1.0},"522":{"tf":1.0},"599":{"tf":1.7320508075688772}}}}},"u":{"df":1,"docs":{"211":{"tf":1.0}}}}}},"i":{"a":{"df":12,"docs":{"110":{"tf":1.0},"209":{"tf":1.4142135623730951},"213":{"tf":1.0},"214":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"422":{"tf":1.0},"453":{"tf":1.0},"503":{"tf":1.0},"539":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0}}},"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"530":{"tf":1.0}}}}},"df":0,"docs":{}}},"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"321":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":1,"docs":{"113":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"258":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":6,"docs":{"380":{"tf":1.0},"404":{"tf":1.0},"448":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.0},"542":{"tf":1.0}}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":25,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":1.4142135623730951},"12":{"tf":1.0},"13":{"tf":1.0},"15":{"tf":1.0},"152":{"tf":1.4142135623730951},"157":{"tf":1.0},"17":{"tf":1.4142135623730951},"20":{"tf":1.0},"211":{"tf":1.0},"23":{"tf":1.4142135623730951},"37":{"tf":1.4142135623730951},"47":{"tf":1.4142135623730951},"485":{"tf":1.4142135623730951},"489":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"51":{"tf":1.4142135623730951},"519":{"tf":1.0},"52":{"tf":1.0},"537":{"tf":1.0},"58":{"tf":1.0},"7":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"t":{"df":1,"docs":{"27":{"tf":1.0}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"284":{"tf":1.0},"414":{"tf":1.0},"504":{"tf":1.0}},"v":{"df":0,"docs":{},"m":{"df":1,"docs":{"213":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"l":{"a":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"1":{"0":{"0":{"0":{"df":1,"docs":{"602":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"m":{"df":1,"docs":{"414":{"tf":1.0}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"559":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":4,"docs":{"14":{"tf":1.0},"16":{"tf":1.0},"58":{"tf":1.0},"60":{"tf":1.4142135623730951}}}},"w":{"df":1,"docs":{"276":{"tf":1.0}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"195":{"tf":1.4142135623730951}}}}}},"s":{"c":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":4,"docs":{"136":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.0},"300":{"tf":1.0}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"53":{"tf":1.0}}}}}}}},"w":{".":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"t":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{}}},"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":17,"docs":{"156":{"tf":1.0},"19":{"tf":1.0},"2":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":2.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"380":{"tf":2.6457513110645907},"408":{"tf":1.0},"412":{"tf":1.0},"446":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.7320508075688772},"457":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.4142135623730951},"556":{"tf":1.0}}}},"k":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}}},"/":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"b":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":8,"docs":{"200":{"tf":1.0},"284":{"tf":1.0},"328":{"tf":2.6457513110645907},"336":{"tf":2.0},"342":{"tf":1.4142135623730951},"412":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.7320508075688772}},"r":{".":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"b":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"w":{"a":{"df":0,"docs":{},"k":{"df":2,"docs":{"336":{"tf":1.7320508075688772},"342":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":9,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"200":{"tf":1.7320508075688772},"203":{"tf":1.0},"258":{"tf":1.0},"328":{"tf":2.449489742783178},"332":{"tf":1.0},"336":{"tf":2.23606797749979},"457":{"tf":1.7320508075688772}}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"336":{"tf":2.0}}}}}},"l":{"df":0,"docs":{},"k":{"df":2,"docs":{"276":{"tf":1.0},"448":{"tf":1.4142135623730951}}},"l":{"df":2,"docs":{"347":{"tf":1.0},"440":{"tf":1.0}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"503":{"tf":1.0}}}}},"df":0,"docs":{},"n":{"a":{"df":1,"docs":{"483":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":57,"docs":{"11":{"tf":1.0},"118":{"tf":1.0},"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"190":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"23":{"tf":1.0},"24":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.7320508075688772},"315":{"tf":1.0},"331":{"tf":1.0},"349":{"tf":1.0},"359":{"tf":1.0},"360":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"38":{"tf":1.0},"405":{"tf":1.0},"412":{"tf":1.0},"437":{"tf":1.0},"450":{"tf":1.0},"458":{"tf":1.0},"46":{"tf":1.0},"462":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.4142135623730951},"484":{"tf":1.0},"498":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"517":{"tf":1.4142135623730951},"52":{"tf":1.0},"527":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"55":{"tf":1.0},"556":{"tf":1.0},"566":{"tf":1.0},"573":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.7320508075688772},"76":{"tf":1.0},"8":{"tf":1.0},"81":{"tf":1.0},"86":{"tf":1.0},"91":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"!":{"(":{"\"":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"w":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":41,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"203":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.4142135623730951},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"522":{"tf":1.4142135623730951},"537":{"tf":1.0},"539":{"tf":1.0}}},"p":{"df":2,"docs":{"276":{"tf":1.0},"370":{"tf":1.7320508075688772}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"357":{"tf":1.0}}},"m":{"df":1,"docs":{"217":{"tf":1.0}}},"n":{"'":{"df":0,"docs":{},"t":{"df":4,"docs":{"199":{"tf":1.0},"245":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"402":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"113":{"tf":1.0},"258":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.0},"392":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":3.7416573867739413}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"y":{"df":69,"docs":{"118":{"tf":1.0},"146":{"tf":1.0},"153":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.0},"171":{"tf":1.4142135623730951},"178":{"tf":1.0},"179":{"tf":1.0},"181":{"tf":1.0},"187":{"tf":1.0},"191":{"tf":1.0},"195":{"tf":1.0},"197":{"tf":1.0},"203":{"tf":1.0},"213":{"tf":1.0},"224":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"296":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.0},"309":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.0},"344":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"370":{"tf":1.4142135623730951},"372":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.4142135623730951},"408":{"tf":1.4142135623730951},"410":{"tf":1.4142135623730951},"413":{"tf":1.0},"417":{"tf":1.7320508075688772},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.4142135623730951},"445":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.7320508075688772},"460":{"tf":1.0},"470":{"tf":1.0},"487":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"515":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"57":{"tf":1.0},"599":{"tf":1.7320508075688772},"61":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{},"e":{"'":{"d":{"df":3,"docs":{"16":{"tf":1.0},"487":{"tf":1.0},"508":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":14,"docs":{"155":{"tf":1.0},"157":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0},"493":{"tf":1.0},"499":{"tf":1.0},"506":{"tf":1.0},"58":{"tf":1.0}}}},"r":{"df":7,"docs":{"155":{"tf":1.0},"49":{"tf":1.0},"53":{"tf":1.0},"55":{"tf":1.0},"550":{"tf":1.0},"551":{"tf":1.4142135623730951},"60":{"tf":1.0}}},"v":{"df":7,"docs":{"153":{"tf":1.0},"18":{"tf":1.0},"21":{"tf":1.0},"481":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"96":{"tf":1.0}}}},"b":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":1,"docs":{"217":{"tf":1.0}}},"y":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"509":{"tf":1.0},"62":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":20,"docs":{"156":{"tf":1.4142135623730951},"195":{"tf":1.0},"212":{"tf":1.0},"227":{"tf":1.0},"230":{"tf":2.6457513110645907},"231":{"tf":1.7320508075688772},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"235":{"tf":1.4142135623730951},"237":{"tf":2.23606797749979},"239":{"tf":1.0},"290":{"tf":1.0},"292":{"tf":2.6457513110645907},"296":{"tf":1.0},"300":{"tf":1.0},"307":{"tf":1.4142135623730951},"315":{"tf":1.0},"370":{"tf":1.0},"523":{"tf":1.4142135623730951},"542":{"tf":1.0}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"0":{"tf":1.0},"134":{"tf":1.0},"27":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":3,"docs":{"156":{"tf":1.0},"276":{"tf":2.8284271247461903},"279":{"tf":1.4142135623730951}},"s":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"1":{"5":{"#":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"279":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"/":{"1":{"7":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"k":{"df":6,"docs":{"15":{"tf":1.4142135623730951},"168":{"tf":1.0},"195":{"tf":1.0},"276":{"tf":1.0},"380":{"tf":1.0},"456":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"246":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"2":{"tf":1.0},"555":{"tf":1.0},"558":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":1,"docs":{"300":{"tf":1.0}},"t":{"df":3,"docs":{"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"343":{"tf":1.0}}}}},"r":{"d":{"df":1,"docs":{"199":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":3,"docs":{"0":{"tf":1.4142135623730951},"276":{"tf":1.0},"437":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"df":44,"docs":{"143":{"tf":1.0},"156":{"tf":1.4142135623730951},"177":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"199":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.0},"259":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"352":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"41":{"tf":1.0},"436":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"502":{"tf":1.0},"508":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.0},"515":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"542":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"246":{"tf":1.0},"27":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.0}}}},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}}}},"g":{"df":6,"docs":{"0":{"tf":1.0},"16":{"tf":1.0},"17":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"4":{"tf":1.0}}},"h":{"a":{"df":0,"docs":{},"t":{"'":{"df":9,"docs":{"261":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"328":{"tf":1.0},"383":{"tf":1.7320508075688772},"431":{"tf":1.0},"502":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":11,"docs":{"159":{"tf":1.0},"217":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"300":{"tf":1.0},"41":{"tf":1.0},"453":{"tf":1.0},"491":{"tf":1.0},"578":{"tf":1.0},"8":{"tf":1.0},"99":{"tf":1.0}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"62":{"tf":1.0}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"217":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":1,"docs":{"341":{"tf":1.0}}},"b":{"df":0,"docs":{},"i":{"df":1,"docs":{"417":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":13,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"235":{"tf":1.0},"25":{"tf":1.0},"252":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.4142135623730951},"423":{"tf":1.0},"529":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0}}}}}}},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"507":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":11,"docs":{"11":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.4142135623730951},"226":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"311":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"538":{"tf":1.4142135623730951}}}},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"399":{"tf":1.0},"483":{"tf":1.0}}}}}},"i":{"d":{"df":0,"docs":{},"e":{"df":2,"docs":{"116":{"tf":1.0},"156":{"tf":1.0}}}},"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":1,"docs":{"192":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"559":{"tf":1.0}}}}}}},"n":{"d":{"df":3,"docs":{"156":{"tf":1.4142135623730951},"322":{"tf":1.0},"504":{"tf":1.0}},"o":{"df":0,"docs":{},"w":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":5,"docs":{"188":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.4142135623730951},"538":{"tf":1.7320508075688772},"539":{"tf":1.0}}}}},"df":2,"docs":{"389":{"tf":1.0},"60":{"tf":1.0}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"15":{"tf":1.0},"60":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"456":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"108":{"tf":1.0}}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"67":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"360":{"tf":1.0}}}},"h":{"4":{"df":7,"docs":{"538":{"tf":2.23606797749979},"539":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.4142135623730951},"546":{"tf":1.4142135623730951},"547":{"tf":1.0}}},"df":33,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"309":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.4142135623730951},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"536":{"tf":1.0},"537":{"tf":1.4142135623730951},"565":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":24,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"142":{"tf":1.0},"209":{"tf":1.0},"231":{"tf":1.0},"276":{"tf":1.4142135623730951},"309":{"tf":1.0},"310":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"359":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"440":{"tf":4.47213595499958},"448":{"tf":1.0},"504":{"tf":1.0},"522":{"tf":1.0},"545":{"tf":1.0},"98":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"b":{"df":0,"docs":{},"o":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"365":{"tf":1.0}}}},"df":0,"docs":{}}},"df":34,"docs":{"108":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.0},"171":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.4142135623730951},"239":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"294":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"343":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"457":{"tf":1.4142135623730951},"462":{"tf":1.0},"480":{"tf":1.4142135623730951},"502":{"tf":1.0},"526":{"tf":1.0},"530":{"tf":1.0},"579":{"tf":1.0},"6":{"tf":1.0},"61":{"tf":1.0},"9":{"tf":1.0}}}}}}}},"l":{"df":1,"docs":{"245":{"tf":1.0}}},"o":{"df":0,"docs":{},"e":{"df":1,"docs":{"360":{"tf":1.0}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"342":{"tf":1.0}},"n":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}}}},"n":{"'":{"df":0,"docs":{},"t":{"df":9,"docs":{"125":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"237":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"521":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":11,"docs":{"198":{"tf":1.4142135623730951},"199":{"tf":1.0},"217":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"361":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"423":{"tf":1.0},"543":{"tf":1.0}}}}},"df":0,"docs":{}},"r":{"d":{"df":2,"docs":{"249":{"tf":1.0},"336":{"tf":1.0}}},"df":0,"docs":{},"k":{"a":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"423":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":6,"docs":{"153":{"tf":1.0},"181":{"tf":1.0},"218":{"tf":1.0},"278":{"tf":1.0},"370":{"tf":1.0},"442":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":115,"docs":{"1":{"tf":1.0},"10":{"tf":1.0},"12":{"tf":1.4142135623730951},"127":{"tf":1.0},"128":{"tf":1.0},"129":{"tf":1.7320508075688772},"130":{"tf":1.0},"131":{"tf":1.0},"136":{"tf":1.0},"15":{"tf":1.4142135623730951},"153":{"tf":1.0},"156":{"tf":3.1622776601683795},"16":{"tf":1.4142135623730951},"167":{"tf":1.4142135623730951},"168":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"188":{"tf":1.0},"192":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"221":{"tf":2.6457513110645907},"225":{"tf":1.0},"232":{"tf":1.0},"244":{"tf":1.4142135623730951},"249":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"276":{"tf":3.0},"278":{"tf":1.0},"279":{"tf":1.0},"284":{"tf":2.0},"289":{"tf":1.0},"292":{"tf":2.23606797749979},"3":{"tf":1.7320508075688772},"300":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.7320508075688772},"311":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"317":{"tf":1.0},"319":{"tf":1.4142135623730951},"320":{"tf":1.4142135623730951},"321":{"tf":1.0},"322":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":2.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":2.0},"349":{"tf":2.0},"353":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":2.8284271247461903},"380":{"tf":2.6457513110645907},"383":{"tf":1.4142135623730951},"389":{"tf":1.0},"394":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"408":{"tf":2.0},"41":{"tf":1.0},"421":{"tf":1.4142135623730951},"423":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"442":{"tf":1.0},"457":{"tf":1.0},"464":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":2.0},"472":{"tf":1.0},"474":{"tf":1.4142135623730951},"475":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"487":{"tf":1.4142135623730951},"49":{"tf":1.0},"50":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.4142135623730951},"507":{"tf":1.0},"511":{"tf":1.4142135623730951},"522":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"545":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"556":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.4142135623730951},"559":{"tf":1.0},"566":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":2.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.0},"73":{"tf":1.7320508075688772},"79":{"tf":1.0},"82":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":7,"docs":{"268":{"tf":1.0},"276":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"347":{"tf":1.0},"412":{"tf":1.0},"470":{"tf":2.23606797749979}}}},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":2,"docs":{"435":{"tf":1.0},"475":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":4,"docs":{"128":{"tf":1.0},"349":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"l":{"d":{"!":{"\"":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"522":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"<":{"'":{"_":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"a":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":12,"docs":{"130":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.0},"215":{"tf":1.0},"217":{"tf":3.7416573867739413},"218":{"tf":1.0},"284":{"tf":1.0},"363":{"tf":1.0},"389":{"tf":1.0},"448":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"523":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"i":{"df":7,"docs":{"198":{"tf":1.0},"221":{"tf":1.4142135623730951},"245":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"365":{"tf":1.0},"552":{"tf":1.0}}}},"s":{"df":2,"docs":{"328":{"tf":1.0},"367":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"221":{"tf":1.0}}}},"t":{"df":5,"docs":{"190":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":4,"docs":{"268":{"tf":1.0},"309":{"tf":1.0},"341":{"tf":1.0},"37":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"d":{"'":{"df":0,"docs":{},"v":{"df":2,"docs":{"340":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":5,"docs":{"217":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.4142135623730951},"324":{"tf":1.0},"428":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"d":{"df":1,"docs":{"533":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":4,"docs":{"259":{"tf":1.0},"268":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"259":{"tf":1.0},"292":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.7320508075688772},"504":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":1,"docs":{"214":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":86,"docs":{"110":{"tf":1.0},"138":{"tf":1.0},"15":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":3.3166247903554},"157":{"tf":1.0},"159":{"tf":1.0},"16":{"tf":1.0},"167":{"tf":1.0},"17":{"tf":1.0},"19":{"tf":1.0},"193":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.4142135623730951},"198":{"tf":1.0},"199":{"tf":1.4142135623730951},"203":{"tf":1.4142135623730951},"204":{"tf":1.0},"206":{"tf":1.0},"217":{"tf":1.0},"23":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"239":{"tf":1.0},"24":{"tf":1.7320508075688772},"25":{"tf":1.4142135623730951},"258":{"tf":1.0},"26":{"tf":1.0},"268":{"tf":2.0},"27":{"tf":1.0},"284":{"tf":1.0},"290":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.4142135623730951},"300":{"tf":1.0},"307":{"tf":1.0},"312":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.7320508075688772},"344":{"tf":1.0},"347":{"tf":1.0},"351":{"tf":1.0},"37":{"tf":1.7320508075688772},"370":{"tf":2.0},"38":{"tf":1.0},"380":{"tf":2.6457513110645907},"389":{"tf":1.0},"39":{"tf":1.0},"41":{"tf":1.4142135623730951},"423":{"tf":1.0},"433":{"tf":1.0},"456":{"tf":1.7320508075688772},"457":{"tf":2.449489742783178},"458":{"tf":2.0},"46":{"tf":1.0},"460":{"tf":1.7320508075688772},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.0},"480":{"tf":1.0},"491":{"tf":1.0},"497":{"tf":1.7320508075688772},"498":{"tf":1.4142135623730951},"502":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"51":{"tf":1.4142135623730951},"513":{"tf":1.0},"522":{"tf":1.7320508075688772},"523":{"tf":1.0},"53":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.4142135623730951},"551":{"tf":1.0},"559":{"tf":1.4142135623730951},"565":{"tf":1.0},"573":{"tf":1.0},"599":{"tf":1.0},"601":{"tf":1.7320508075688772},"61":{"tf":2.0},"79":{"tf":1.0},"9":{"tf":1.4142135623730951}},"r":{"df":1,"docs":{"84":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":25,"docs":{"108":{"tf":1.0},"118":{"tf":1.0},"125":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.4142135623730951},"147":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":1.0},"211":{"tf":1.0},"257":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"320":{"tf":1.0},"332":{"tf":1.0},"347":{"tf":1.4142135623730951},"356":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.0},"488":{"tf":1.0},"498":{"tf":1.0},"509":{"tf":1.0},"599":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":43,"docs":{"130":{"tf":1.0},"140":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"196":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"328":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"359":{"tf":1.4142135623730951},"363":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"440":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"51":{"tf":1.4142135623730951},"519":{"tf":1.0},"53":{"tf":1.0},"537":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"e":{"df":14,"docs":{"246":{"tf":1.0},"248":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.4142135623730951},"408":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"502":{"tf":1.0},"538":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.4142135623730951},"603":{"tf":1.0}}}}}},"s":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"276":{"tf":2.23606797749979}},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"df":0,"docs":{},"r":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":1,"docs":{"276":{"tf":2.449489742783178}}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}}}}},"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"276":{"tf":1.7320508075688772}}}},"x":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"564":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"8":{"6":{"_":{"6":{"4":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"42":{"tf":1.0},"448":{"tf":1.0},"56":{"tf":1.0},"57":{"tf":1.4142135623730951}},"m":{"a":{"df":1,"docs":{"230":{"tf":1.0}}},"df":0,"docs":{}}},"y":{"2":{"1":{"df":1,"docs":{"602":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"h":{"df":2,"docs":{"217":{"tf":1.0},"69":{"tf":1.0}}},"r":{"df":15,"docs":{"10":{"tf":1.0},"171":{"tf":1.0},"332":{"tf":1.0},"356":{"tf":1.0},"380":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"40":{"tf":1.0},"457":{"tf":1.0},"486":{"tf":1.4142135623730951},"72":{"tf":1.0},"79":{"tf":1.0},"9":{"tf":1.0}},"n":{"df":1,"docs":{"503":{"tf":1.0}}}}},"df":10,"docs":{"111":{"tf":1.0},"120":{"tf":1.0},"19":{"tf":1.0},"320":{"tf":1.0},"322":{"tf":1.0},"405":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.4142135623730951},"89":{"tf":1.0}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":9,"docs":{"196":{"tf":2.23606797749979},"214":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"310":{"tf":1.0},"563":{"tf":1.0},"564":{"tf":1.0},"573":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"89":{"tf":1.0}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"602":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"u":{"'":{"d":{"df":4,"docs":{"21":{"tf":1.0},"26":{"tf":1.0},"39":{"tf":1.0},"96":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"417":{"tf":1.0},"487":{"tf":1.0}}}},"r":{"df":8,"docs":{"157":{"tf":1.0},"2":{"tf":1.0},"25":{"tf":1.0},"300":{"tf":1.0},"321":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"556":{"tf":1.0}}},"v":{"df":3,"docs":{"156":{"tf":1.0},"292":{"tf":1.0},"417":{"tf":1.0}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":11,"docs":{"132":{"tf":1.0},"134":{"tf":2.0},"136":{"tf":1.4142135623730951},"137":{"tf":1.4142135623730951},"138":{"tf":1.7320508075688772},"139":{"tf":1.4142135623730951},"177":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.4142135623730951},"532":{"tf":1.0}}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"96":{"tf":1.0}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"2":{"tf":1.0}}}}}}}}}},"z":{"b":{"df":0,"docs":{},"u":{"df":2,"docs":{"224":{"tf":1.0},"323":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":1,"docs":{"602":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"224":{"tf":1.0}}}},"df":0,"docs":{}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"232":{"tf":1.0}}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"o":{"df":4,"docs":{"343":{"tf":2.449489742783178},"422":{"tf":1.4142135623730951},"513":{"tf":1.0},"62":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":1,"docs":{"110":{"tf":1.0}}}},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"200":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"245":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"245":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":9,"docs":{"1":{"tf":1.0},"16":{"tf":1.0},"2":{"tf":1.0},"25":{"tf":1.0},"35":{"tf":1.0},"4":{"tf":1.4142135623730951},"555":{"tf":1.0},"556":{"tf":1.0},"68":{"tf":1.0}}}}}}}}},"breadcrumbs":{"root":{"0":{".":{".":{"1":{"0":{"df":1,"docs":{"380":{"tf":2.23606797749979}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{"df":2,"docs":{"199":{"tf":1.4142135623730951},"89":{"tf":1.0}}},"4":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"7":{".":{"1":{"1":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"3":{"1":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"6":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"df":3,"docs":{"15":{"tf":1.0},"553":{"tf":1.0},"599":{"tf":1.7320508075688772}}},"3":{"df":1,"docs":{"365":{"tf":1.0}}},"4":{"df":3,"docs":{"14":{"tf":2.0},"15":{"tf":1.0},"16":{"tf":1.0}}},"df":8,"docs":{"217":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":3.1622776601683795},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":3.1622776601683795},"419":{"tf":1.0},"568":{"tf":1.0}},"x":{"0":{"0":{"0":{"0":{"5":{"5":{"5":{"5":{"5":{"5":{"5":{"7":{"6":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"7":{"3":{"c":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"8":{"df":0,"docs":{},"f":{"7":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"9":{"0":{"5":{"2":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"5":{"c":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"5":{"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"d":{"3":{"b":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"2":{"df":0,"docs":{},"f":{"7":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"6":{"9":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"5":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"9":{"c":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"b":{"0":{"b":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{"b":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"9":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"2":{"2":{"df":0,"docs":{},"f":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"3":{"0":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"0":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"7":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"a":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"8":{"0":{"5":{"a":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"a":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"1":{"2":{"5":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"4":{"a":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"0":{"9":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"3":{"2":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"df":0,"docs":{},"f":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"6":{"a":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"d":{"0":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"2":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"0":{"9":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"d":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"7":{"4":{"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"8":{"2":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"a":{"d":{"9":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"b":{"8":{"d":{"a":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"4":{"7":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"8":{"7":{"b":{"b":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"8":{"d":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"2":{"2":{"9":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"0":{"b":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"6":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"9":{"9":{"0":{"9":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"6":{"4":{"a":{"8":{"2":{"df":0,"docs":{},"f":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"f":{"7":{"d":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"7":{"0":{"a":{"c":{"3":{"df":1,"docs":{"404":{"tf":2.0}}},"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"0":{"0":{"d":{"8":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"0":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"1":{"1":{"b":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"7":{"c":{"2":{"df":0,"docs":{},"f":{"0":{"9":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"d":{"5":{"df":0,"docs":{},"e":{"5":{"8":{"a":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"e":{"3":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"6":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"b":{"2":{"6":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"1":{"4":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"8":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"8":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"4":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"d":{"0":{"0":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"4":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"0":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"6":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"7":{"c":{"3":{"b":{"5":{"c":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"1":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":2.449489742783178}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},".":{"0":{"df":2,"docs":{"548":{"tf":1.0},"599":{"tf":1.0}}},"1":{"1":{".":{"3":{"df":1,"docs":{"419":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"404":{"tf":1.0}}},"3":{".":{"0":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"6":{":":{"9":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"6":{":":{"5":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"9":{":":{"5":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"6":{"3":{":":{"3":{"1":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"5":{"4":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{"1":{":":{"1":{"3":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"5":{"2":{":":{"4":{"3":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"7":{"1":{":":{"9":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{".":{"0":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"6":{"2":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"3":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"6":{"1":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"3":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"7":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"8":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"/":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"_":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"4":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"8":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"2":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"7":{"9":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"2":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"9":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"5":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"2":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"9":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{".":{"0":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"2":{"9":{":":{"2":{"1":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"x":{"df":3,"docs":{"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0}}}},"0":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"0":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":5,"docs":{"138":{"tf":1.0},"196":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0}}},"4":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"5":{"df":1,"docs":{"373":{"tf":1.0}}},"df":4,"docs":{"284":{"tf":1.4142135623730951},"380":{"tf":2.23606797749979},"397":{"tf":1.0},"404":{"tf":1.0}},"x":{"df":1,"docs":{"469":{"tf":1.0}}}},"1":{"df":5,"docs":{"284":{"tf":1.0},"307":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"2":{"9":{"df":1,"docs":{"268":{"tf":1.0}}},"df":5,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"503":{"tf":1.0},"599":{"tf":1.7320508075688772}}},"3":{",":{"1":{"0":{",":{"1":{"6":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"0":{"0":{"df":1,"docs":{"555":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.0}}},"4":{"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"5":{"0":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"6":{"0":{"0":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}},"df":4,"docs":{"284":{"tf":1.0},"347":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"7":{"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"8":{"9":{"df":1,"docs":{"268":{"tf":1.0}}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"9":{":":{"1":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.0}}},"c":{"df":1,"docs":{"211":{"tf":1.0}}},"df":20,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"234":{"tf":1.0},"284":{"tf":1.4142135623730951},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.4142135623730951},"418":{"tf":1.4142135623730951},"419":{"tf":1.4142135623730951},"421":{"tf":1.4142135623730951},"456":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":1.0},"564":{"tf":1.0}},"e":{"c":{"c":{"6":{"2":{"9":{"9":{"d":{"b":{"9":{"df":0,"docs":{},"e":{"c":{"8":{"2":{"3":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":3,"docs":{"268":{"tf":1.0},"284":{"tf":4.123105625617661},"397":{"tf":2.8284271247461903}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"182":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"2":{".":{"0":{"df":2,"docs":{"5":{"tf":1.4142135623730951},"6":{"tf":1.0}}},"df":0,"docs":{}},"/":{"3":{"/":{"6":{"df":1,"docs":{"235":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"0":{"0":{"df":2,"docs":{"336":{"tf":1.4142135623730951},"431":{"tf":1.0}}},"2":{"0":{"df":1,"docs":{"230":{"tf":1.0}}},"1":{"df":8,"docs":{"14":{"tf":2.0},"15":{"tf":1.0},"16":{"tf":1.0},"550":{"tf":2.0},"551":{"tf":1.0},"552":{"tf":1.0},"553":{"tf":1.4142135623730951},"599":{"tf":1.7320508075688772}}},"4":{"df":1,"docs":{"538":{"tf":1.0}}},"df":0,"docs":{}},"df":5,"docs":{"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"1":{"df":2,"docs":{"196":{"tf":1.0},"404":{"tf":1.0}}},"2":{"df":2,"docs":{"310":{"tf":1.0},"404":{"tf":1.0}}},"3":{"df":2,"docs":{"404":{"tf":1.0},"440":{"tf":1.4142135623730951}}},"4":{":":{"1":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"404":{"tf":1.0}}},"5":{"df":1,"docs":{"404":{"tf":1.0}}},"6":{"df":1,"docs":{"404":{"tf":1.0}}},"7":{"7":{"0":{"a":{"3":{"0":{"d":{"9":{"df":0,"docs":{},"f":{"2":{"5":{"9":{"6":{"6":{"6":{"df":0,"docs":{},"f":{"b":{"4":{"7":{"0":{"d":{"6":{"df":0,"docs":{},"f":{"1":{"1":{"c":{"df":0,"docs":{},"f":{"1":{"8":{"5":{"1":{"df":0,"docs":{},"e":{"b":{"b":{"2":{"d":{"5":{"7":{"9":{"a":{"1":{"4":{"8":{"0":{"a":{"8":{"1":{"7":{"3":{"d":{"3":{"8":{"5":{"5":{"5":{"7":{"2":{"7":{"4":{"8":{"3":{"8":{"5":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"196":{"tf":1.0},"404":{"tf":1.0}}},"8":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":17,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"284":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.4142135623730951},"423":{"tf":1.0},"440":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"486":{"tf":1.0},"538":{"tf":1.0}}},"3":{"0":{"df":5,"docs":{"14":{"tf":2.0},"16":{"tf":1.0},"284":{"tf":1.0},"404":{"tf":1.0},"470":{"tf":1.7320508075688772}}},"1":{"df":1,"docs":{"404":{"tf":1.0}}},"2":{"df":2,"docs":{"347":{"tf":1.0},"404":{"tf":1.0}}},"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":9,"docs":{"284":{"tf":1.0},"328":{"tf":1.0},"397":{"tf":1.4142135623730951},"40":{"tf":1.0},"404":{"tf":1.0},"417":{"tf":1.0},"470":{"tf":1.0},"486":{"tf":1.0},"538":{"tf":1.0}},"r":{"d":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}}},"4":{"0":{"df":1,"docs":{"370":{"tf":1.0}}},"3":{"1":{"2":{"2":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"0":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":7,"docs":{"284":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"522":{"tf":1.7320508075688772}},"g":{"b":{"df":1,"docs":{"245":{"tf":1.0}}},"df":0,"docs":{}}},"5":{"0":{"0":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"k":{"b":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}}},"2":{"df":2,"docs":{"370":{"tf":1.0},"448":{"tf":1.0}}},"3":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"4":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"5":{"df":1,"docs":{"448":{"tf":1.0}}},"6":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"7":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"8":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"9":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"df":8,"docs":{"211":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"404":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.4142135623730951},"469":{"tf":1.0}}},"6":{"0":{"df":2,"docs":{"448":{"tf":1.0},"470":{"tf":1.7320508075688772}}},"2":{"2":{"9":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}},"s":{"df":1,"docs":{"221":{"tf":1.0}}}},"7":{"5":{"df":1,"docs":{"411":{"tf":1.0}}},"6":{"df":1,"docs":{"287":{"tf":1.0}}},"8":{"6":{"df":1,"docs":{"268":{"tf":1.0}}},"7":{"df":1,"docs":{"268":{"tf":1.0}}},"8":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"9":{"7":{"0":{"9":{"0":{"8":{"9":{"2":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.0}}},"8":{"0":{"8":{"0":{"df":2,"docs":{"538":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"df":1,"docs":{"292":{"tf":1.0}}},"df":6,"docs":{"209":{"tf":1.0},"284":{"tf":1.0},"358":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"503":{"tf":1.0}}},"9":{"6":{"df":1,"docs":{"336":{"tf":1.0}}},"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.4142135623730951},"397":{"tf":1.0},"404":{"tf":1.0}}},"_":{"df":7,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"328":{"tf":1.4142135623730951},"380":{"tf":2.0},"418":{"tf":1.0},"421":{"tf":2.0},"470":{"tf":1.0}}},"a":{".":{"c":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"(":{"b":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},">":{"(":{"&":{"'":{"a":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"343":{"tf":1.4142135623730951}}}}}},"b":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"453":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":7,"docs":{"217":{"tf":1.0},"292":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"472":{"tf":1.0},"517":{"tf":1.4142135623730951},"529":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.0}}}},"v":{"df":12,"docs":{"121":{"tf":1.0},"226":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.4142135623730951},"392":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"539":{"tf":1.0},"6":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"599":{"tf":1.0},"65":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":1,"docs":{"181":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":20,"docs":{"110":{"tf":1.4142135623730951},"112":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.4142135623730951},"203":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"27":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"33":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":2.449489742783178},"370":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"394":{"tf":1.0},"47":{"tf":1.0},"544":{"tf":1.0},"599":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"(":{"a":{"d":{"d":{"df":0,"docs":{},"r":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":8,"docs":{"15":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"258":{"tf":1.0},"336":{"tf":1.0},"421":{"tf":1.4142135623730951},"423":{"tf":1.0},"534":{"tf":1.0}}}},"s":{"df":0,"docs":{},"s":{"df":21,"docs":{"156":{"tf":1.0},"211":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"336":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.7320508075688772},"418":{"tf":2.23606797749979},"419":{"tf":1.4142135623730951},"421":{"tf":1.0},"422":{"tf":2.449489742783178},"423":{"tf":1.7320508075688772},"503":{"tf":1.0},"508":{"tf":1.4142135623730951},"512":{"tf":1.0},"62":{"tf":1.4142135623730951},"65":{"tf":1.0},"8":{"tf":1.0},"82":{"tf":1.0},"86":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"278":{"tf":1.0},"460":{"tf":1.0}}}}}}}},"r":{"d":{"df":2,"docs":{"342":{"tf":1.0},"422":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"218":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"478":{"tf":1.0}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":6,"docs":{"178":{"tf":1.0},"191":{"tf":1.0},"237":{"tf":1.0},"380":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0}}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":11,"docs":{"153":{"tf":1.0},"252":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"40":{"tf":1.0},"431":{"tf":1.0},"437":{"tf":1.7320508075688772},"464":{"tf":1.4142135623730951},"49":{"tf":1.7320508075688772},"61":{"tf":1.0},"9":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"g":{"df":5,"docs":{"34":{"tf":1.0},"600":{"tf":1.7320508075688772},"601":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"q":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.7320508075688772}}}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"328":{"tf":1.7320508075688772},"451":{"tf":1.0}}}}}},"t":{"df":6,"docs":{"217":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.0},"497":{"tf":1.0},"53":{"tf":1.0},"8":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"125":{"tf":1.0},"276":{"tf":1.0},"599":{"tf":1.0}}}},"v":{"df":8,"docs":{"12":{"tf":1.0},"15":{"tf":1.0},"177":{"tf":1.0},"389":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"419":{"tf":1.0},"422":{"tf":1.0}}},"x":{"df":4,"docs":{"192":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"237":{"tf":1.4142135623730951}}}},"o":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"422":{"tf":1.0}}},"df":2,"docs":{"177":{"tf":1.4142135623730951},"422":{"tf":2.23606797749979}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":70,"docs":{"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"178":{"tf":1.4142135623730951},"182":{"tf":1.0},"186":{"tf":1.0},"188":{"tf":1.0},"194":{"tf":1.0},"200":{"tf":1.0},"208":{"tf":1.0},"211":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"237":{"tf":1.0},"243":{"tf":1.0},"246":{"tf":1.0},"254":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.4142135623730951},"306":{"tf":1.0},"318":{"tf":1.0},"321":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"349":{"tf":1.4142135623730951},"355":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":1.4142135623730951},"396":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"423":{"tf":1.0},"430":{"tf":1.0},"435":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"452":{"tf":1.0},"455":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"467":{"tf":1.0},"475":{"tf":1.0},"477":{"tf":1.0},"487":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"502":{"tf":1.4142135623730951},"519":{"tf":1.0},"537":{"tf":1.0},"562":{"tf":1.0}}}},"df":0,"docs":{}}}},"d":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":5,"docs":{"147":{"tf":1.0},"249":{"tf":1.0},"319":{"tf":1.7320508075688772},"336":{"tf":1.0},"522":{"tf":1.0}}}}},"d":{"df":87,"docs":{"156":{"tf":1.0},"157":{"tf":1.0},"158":{"tf":1.0},"159":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"178":{"tf":1.7320508075688772},"186":{"tf":1.0},"194":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.4142135623730951},"208":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":2.23606797749979},"211":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.7320508075688772},"220":{"tf":1.0},"221":{"tf":1.4142135623730951},"24":{"tf":1.0},"258":{"tf":1.0},"26":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"310":{"tf":1.0},"315":{"tf":1.0},"329":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":2.0},"34":{"tf":1.0},"346":{"tf":1.0},"36":{"tf":1.0},"369":{"tf":1.0},"370":{"tf":2.0},"379":{"tf":1.0},"38":{"tf":1.0},"380":{"tf":1.4142135623730951},"381":{"tf":1.0},"39":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.4142135623730951},"416":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.4142135623730951},"44":{"tf":1.0},"447":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"48":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"50":{"tf":1.0},"501":{"tf":1.0},"508":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.4142135623730951},"537":{"tf":1.0},"538":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0},"61":{"tf":1.4142135623730951},"96":{"tf":1.0},"97":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":12,"docs":{"16":{"tf":1.0},"191":{"tf":1.0},"221":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.4142135623730951},"341":{"tf":1.0},"389":{"tf":1.0},"417":{"tf":1.0},"469":{"tf":1.0},"507":{"tf":1.0},"6":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"372":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":8,"docs":{"155":{"tf":1.0},"16":{"tf":1.0},"29":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.0},"431":{"tf":1.4142135623730951},"46":{"tf":1.0},"470":{"tf":1.0}}}}}}},"df":27,"docs":{"157":{"tf":1.0},"16":{"tf":1.0},"177":{"tf":1.0},"199":{"tf":1.0},"21":{"tf":1.0},"214":{"tf":1.0},"221":{"tf":1.0},"26":{"tf":1.0},"286":{"tf":1.0},"328":{"tf":1.4142135623730951},"370":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.0},"39":{"tf":1.0},"408":{"tf":1.0},"421":{"tf":1.0},"453":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"478":{"tf":1.0},"489":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.4142135623730951},"562":{"tf":1.0},"599":{"tf":1.4142135623730951},"97":{"tf":1.0}},"j":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":35,"docs":{"15":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"199":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.4142135623730951},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"42":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"51":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"68":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"53":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":7,"docs":{"179":{"tf":1.0},"209":{"tf":1.0},"302":{"tf":1.0},"417":{"tf":1.0},"47":{"tf":1.0},"538":{"tf":1.0},"579":{"tf":1.0}}}}},"v":{"a":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"156":{"tf":1.0},"383":{"tf":1.0}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":5,"docs":{"128":{"tf":1.0},"338":{"tf":1.0},"403":{"tf":1.0},"417":{"tf":1.0},"517":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"502":{"tf":1.0}}}}}}},"i":{"c":{"df":4,"docs":{"245":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"340":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"357":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"370":{"tf":1.0},"397":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}},"r":{"a":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"57":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"16":{"tf":1.0},"292":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"g":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":20,"docs":{"199":{"tf":1.0},"200":{"tf":1.7320508075688772},"214":{"tf":1.0},"234":{"tf":1.4142135623730951},"237":{"tf":1.0},"258":{"tf":1.0},"292":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"313":{"tf":1.7320508075688772},"336":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.4142135623730951},"458":{"tf":1.0},"504":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.7320508075688772},"599":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"df":8,"docs":{"125":{"tf":1.0},"16":{"tf":1.0},"246":{"tf":1.0},"272":{"tf":1.4142135623730951},"292":{"tf":1.0},"370":{"tf":1.0},"503":{"tf":1.0},"59":{"tf":1.0}}}}}}},"df":1,"docs":{"199":{"tf":1.0}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"(":{"&":{"[":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"320":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":7,"docs":{"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"320":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":7,"docs":{"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"320":{"tf":1.7320508075688772}}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"276":{"tf":1.0},"349":{"tf":1.0},"372":{"tf":1.0}}}}}},"o":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"209":{"tf":1.0}}}}},"h":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}},"i":{"df":0,"docs":{},"m":{"df":7,"docs":{"10":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":2.0},"16":{"tf":1.0},"435":{"tf":1.0},"49":{"tf":1.0},"61":{"tf":1.0}}},"r":{"df":1,"docs":{"48":{"tf":1.0}}}},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"458":{"tf":1.0},"562":{"tf":1.0}}}}},"l":{"a":{"df":0,"docs":{},"n":{"'":{"df":28,"docs":{"187":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"230":{"tf":1.0},"234":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.7320508075688772},"284":{"tf":1.0},"41":{"tf":1.0},"512":{"tf":1.0},"518":{"tf":1.7320508075688772},"519":{"tf":1.0},"520":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0}}},"/":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":1,"docs":{"296":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}}},"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"489":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"157":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":186,"docs":{"156":{"tf":4.123105625617661},"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":2.449489742783178},"168":{"tf":2.0},"169":{"tf":1.7320508075688772},"170":{"tf":1.0},"171":{"tf":1.4142135623730951},"172":{"tf":1.0},"173":{"tf":2.0},"174":{"tf":1.0},"175":{"tf":1.7320508075688772},"176":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":2.0},"179":{"tf":1.4142135623730951},"180":{"tf":1.0},"181":{"tf":1.4142135623730951},"182":{"tf":1.0},"183":{"tf":1.7320508075688772},"184":{"tf":1.0},"185":{"tf":1.7320508075688772},"186":{"tf":1.0},"187":{"tf":1.7320508075688772},"188":{"tf":2.23606797749979},"189":{"tf":1.7320508075688772},"190":{"tf":2.0},"191":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"193":{"tf":1.7320508075688772},"194":{"tf":1.0},"195":{"tf":2.23606797749979},"196":{"tf":2.0},"197":{"tf":1.4142135623730951},"198":{"tf":2.0},"199":{"tf":2.449489742783178},"200":{"tf":2.23606797749979},"201":{"tf":1.4142135623730951},"202":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.0},"205":{"tf":2.23606797749979},"206":{"tf":1.0},"207":{"tf":1.7320508075688772},"208":{"tf":1.0},"209":{"tf":5.385164807134504},"210":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":2.449489742783178},"214":{"tf":1.4142135623730951},"215":{"tf":1.7320508075688772},"216":{"tf":1.0},"217":{"tf":4.0},"218":{"tf":1.7320508075688772},"219":{"tf":1.7320508075688772},"220":{"tf":1.0},"221":{"tf":3.7416573867739413},"222":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":2.0},"226":{"tf":1.4142135623730951},"227":{"tf":1.7320508075688772},"228":{"tf":1.0},"229":{"tf":1.0},"230":{"tf":2.449489742783178},"231":{"tf":1.7320508075688772},"232":{"tf":2.0},"233":{"tf":1.7320508075688772},"234":{"tf":1.4142135623730951},"235":{"tf":2.23606797749979},"236":{"tf":1.0},"237":{"tf":2.0},"238":{"tf":1.0},"239":{"tf":2.0},"240":{"tf":1.0},"241":{"tf":1.7320508075688772},"242":{"tf":1.7320508075688772},"243":{"tf":1.0},"244":{"tf":1.7320508075688772},"245":{"tf":3.1622776601683795},"246":{"tf":2.449489742783178},"247":{"tf":1.0},"248":{"tf":2.0},"249":{"tf":1.0},"250":{"tf":1.7320508075688772},"251":{"tf":1.0},"252":{"tf":1.7320508075688772},"253":{"tf":1.7320508075688772},"254":{"tf":1.0},"255":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.7320508075688772},"258":{"tf":2.23606797749979},"259":{"tf":2.0},"260":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":2.0},"264":{"tf":1.0},"265":{"tf":1.7320508075688772},"266":{"tf":1.7320508075688772},"267":{"tf":1.0},"268":{"tf":4.358898943540674},"269":{"tf":1.0},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":2.0},"273":{"tf":1.4142135623730951},"274":{"tf":1.7320508075688772},"275":{"tf":1.0},"276":{"tf":3.872983346207417},"277":{"tf":1.0},"278":{"tf":1.4142135623730951},"279":{"tf":1.0},"280":{"tf":2.0},"281":{"tf":1.0},"282":{"tf":1.7320508075688772},"283":{"tf":1.0},"284":{"tf":3.872983346207417},"285":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":2.23606797749979},"289":{"tf":1.0},"290":{"tf":1.7320508075688772},"291":{"tf":1.0},"292":{"tf":3.4641016151377544},"293":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":3.0},"309":{"tf":1.0},"340":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"370":{"tf":1.0},"386":{"tf":1.0},"394":{"tf":1.7320508075688772},"397":{"tf":1.4142135623730951},"41":{"tf":1.0},"414":{"tf":1.0},"436":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"500":{"tf":1.7320508075688772},"501":{"tf":1.0},"502":{"tf":1.7320508075688772},"503":{"tf":1.4142135623730951},"504":{"tf":2.0},"505":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.4142135623730951},"510":{"tf":2.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"525":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.7320508075688772},"529":{"tf":1.0},"542":{"tf":2.0},"65":{"tf":1.0},"67":{"tf":1.0},"70":{"tf":1.0},"71":{"tf":1.7320508075688772},"72":{"tf":1.4142135623730951},"73":{"tf":1.4142135623730951},"74":{"tf":1.4142135623730951},"75":{"tf":1.0},"76":{"tf":1.7320508075688772},"77":{"tf":1.7320508075688772},"9":{"tf":1.0}}},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"198":{"tf":1.0}}}}},"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"572":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"df":3,"docs":{"147":{"tf":1.0},"356":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}}}}}},"i":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"292":{"tf":1.0}}}},"c":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"271":{"tf":1.0}}},"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"d":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"271":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"257":{"tf":1.0}}}},"v":{"df":1,"docs":{"268":{"tf":1.0}}}},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":15,"docs":{"122":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.4142135623730951},"209":{"tf":2.23606797749979},"242":{"tf":1.4142135623730951},"245":{"tf":1.7320508075688772},"246":{"tf":1.0},"248":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"338":{"tf":1.0},"341":{"tf":1.7320508075688772},"61":{"tf":1.0},"62":{"tf":1.4142135623730951}}},"df":0,"docs":{},"w":{"df":22,"docs":{"134":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.7320508075688772},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"342":{"tf":1.0},"360":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"423":{"tf":2.0},"436":{"tf":1.0},"470":{"tf":1.4142135623730951},"521":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":7,"docs":{"154":{"tf":1.4142135623730951},"200":{"tf":1.0},"361":{"tf":1.0},"389":{"tf":1.0},"487":{"tf":1.0},"538":{"tf":1.0},"73":{"tf":1.0}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":27,"docs":{"120":{"tf":1.0},"174":{"tf":1.0},"177":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.0},"205":{"tf":1.0},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"235":{"tf":1.0},"258":{"tf":1.0},"264":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"29":{"tf":1.0},"317":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.4142135623730951},"408":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.4142135623730951},"456":{"tf":1.4142135623730951},"475":{"tf":1.7320508075688772},"498":{"tf":1.4142135623730951},"515":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"89":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"34":{"tf":1.0}}}}},"df":0,"docs":{},"n":{"df":43,"docs":{"158":{"tf":1.0},"16":{"tf":1.4142135623730951},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"25":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.4142135623730951},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.7320508075688772},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.4142135623730951},"498":{"tf":1.0},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"539":{"tf":1.7320508075688772},"55":{"tf":1.0},"561":{"tf":1.0},"579":{"tf":1.0},"82":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":8,"docs":{"192":{"tf":1.0},"21":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"3":{"tf":1.0},"311":{"tf":1.0},"375":{"tf":1.0},"61":{"tf":1.0}}}}}}}},"w":{"a":{"df":0,"docs":{},"y":{"df":40,"docs":{"10":{"tf":1.0},"139":{"tf":1.0},"156":{"tf":2.0},"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.0},"169":{"tf":1.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"211":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.4142135623730951},"350":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"389":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"418":{"tf":1.0},"42":{"tf":1.0},"504":{"tf":1.0},"52":{"tf":1.0},"538":{"tf":1.0},"76":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"z":{"df":2,"docs":{"53":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"212":{"tf":1.0}}}}}},"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"385":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"487":{"tf":1.0},"59":{"tf":1.0}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":1,"docs":{"130":{"tf":1.0}}}}}}}}}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"'":{"df":2,"docs":{"125":{"tf":1.0},"129":{"tf":1.4142135623730951}}},"df":3,"docs":{"125":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0}}}}}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":7,"docs":{"231":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.0},"394":{"tf":1.0},"470":{"tf":1.0},"513":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"16":{"tf":1.0}}}}},"n":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":2,"docs":{"251":{"tf":1.0},"61":{"tf":1.7320508075688772}},"u":{"df":1,"docs":{"372":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":4,"docs":{"271":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"538":{"tf":1.0}}}},"z":{"df":1,"docs":{"380":{"tf":1.7320508075688772}}}}}},"d":{"/":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"341":{"tf":1.0},"380":{"tf":1.0},"412":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"218":{"tf":1.0}}}},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":8,"docs":{"156":{"tf":1.0},"298":{"tf":1.7320508075688772},"299":{"tf":1.0},"300":{"tf":1.0},"301":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0}}}}},"l":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"189":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":6,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"380":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"502":{"tf":2.0}}},"u":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"357":{"tf":1.0},"486":{"tf":1.0}}},"df":0,"docs":{}}},"y":{"df":5,"docs":{"198":{"tf":1.0},"256":{"tf":1.0},"312":{"tf":1.0},"401":{"tf":1.0},"521":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{"df":0,"docs":{},"m":{"df":1,"docs":{"218":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"h":{"df":30,"docs":{"156":{"tf":1.0},"201":{"tf":1.0},"218":{"tf":1.0},"241":{"tf":1.4142135623730951},"246":{"tf":1.0},"252":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"272":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.4142135623730951},"300":{"tf":1.0},"313":{"tf":1.0},"318":{"tf":1.0},"325":{"tf":1.0},"336":{"tf":1.0},"344":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"437":{"tf":1.4142135623730951},"464":{"tf":1.4142135623730951},"475":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"511":{"tf":1.0},"59":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":42,"docs":{"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"22":{"tf":1.4142135623730951},"220":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.4142135623730951},"275":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.4142135623730951},"306":{"tf":1.0},"335":{"tf":1.0},"342":{"tf":1.0},"346":{"tf":1.0},"363":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"437":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"50":{"tf":1.4142135623730951},"501":{"tf":1.0},"502":{"tf":1.0},"519":{"tf":1.0},"534":{"tf":1.0},"537":{"tf":1.0},"57":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":2,"docs":{"380":{"tf":1.0},"417":{"tf":1.0}}}}},"df":0,"docs":{}}},"y":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"408":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"156":{"tf":1.0},"258":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"558":{"tf":1.0},"89":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":26,"docs":{"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"244":{"tf":1.0},"245":{"tf":1.0},"25":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.4142135623730951},"41":{"tf":2.0},"421":{"tf":1.0},"497":{"tf":1.4142135623730951},"510":{"tf":1.4142135623730951},"511":{"tf":1.4142135623730951},"512":{"tf":1.4142135623730951},"513":{"tf":1.4142135623730951},"528":{"tf":1.4142135623730951},"529":{"tf":1.4142135623730951},"530":{"tf":1.4142135623730951},"531":{"tf":1.4142135623730951},"538":{"tf":1.0},"542":{"tf":1.4142135623730951},"543":{"tf":1.4142135623730951},"544":{"tf":1.4142135623730951},"545":{"tf":1.4142135623730951},"558":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"217":{"tf":1.0}}}}},"w":{"a":{"df":0,"docs":{},"y":{"df":4,"docs":{"309":{"tf":1.0},"359":{"tf":1.0},"389":{"tf":1.0},"503":{"tf":1.0}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"125":{"tf":1.0},"209":{"tf":1.0},"423":{"tf":1.0},"448":{"tf":1.0}}}}}}}},"p":{"a":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"5":{"tf":1.4142135623730951},"6":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":49,"docs":{"156":{"tf":1.7320508075688772},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"224":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.4142135623730951},"258":{"tf":1.0},"294":{"tf":1.4142135623730951},"296":{"tf":1.0},"300":{"tf":1.4142135623730951},"309":{"tf":1.0},"321":{"tf":3.0},"323":{"tf":1.4142135623730951},"324":{"tf":1.0},"336":{"tf":2.23606797749979},"338":{"tf":1.0},"342":{"tf":1.0},"349":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"423":{"tf":1.0},"454":{"tf":1.7320508075688772},"455":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.4142135623730951},"458":{"tf":1.0},"459":{"tf":1.0},"460":{"tf":1.0},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":2.0},"504":{"tf":1.4142135623730951},"507":{"tf":1.0},"508":{"tf":1.7320508075688772},"511":{"tf":1.0},"513":{"tf":1.0},"515":{"tf":1.0},"522":{"tf":1.4142135623730951},"526":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"535":{"tf":1.0},"599":{"tf":1.0}}},"p":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"268":{"tf":1.0},"372":{"tf":1.0}}}},"df":7,"docs":{"188":{"tf":1.0},"189":{"tf":1.4142135623730951},"190":{"tf":1.0},"201":{"tf":1.0},"336":{"tf":2.8284271247461903},"419":{"tf":1.0},"599":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"r":{"df":9,"docs":{"156":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.4142135623730951},"347":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"417":{"tf":1.0},"440":{"tf":4.242640687119285}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"195":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"df":1,"docs":{"192":{"tf":1.0}},"i":{"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":29,"docs":{"110":{"tf":1.7320508075688772},"111":{"tf":1.0},"116":{"tf":1.0},"118":{"tf":1.0},"127":{"tf":1.0},"132":{"tf":1.7320508075688772},"133":{"tf":1.0},"134":{"tf":1.0},"135":{"tf":1.0},"136":{"tf":2.449489742783178},"137":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.4142135623730951},"140":{"tf":1.0},"145":{"tf":1.0},"179":{"tf":1.0},"195":{"tf":1.4142135623730951},"209":{"tf":1.0},"230":{"tf":1.0},"244":{"tf":1.4142135623730951},"284":{"tf":2.0},"336":{"tf":4.123105625617661},"356":{"tf":1.0},"357":{"tf":1.4142135623730951},"456":{"tf":1.0},"470":{"tf":1.0},"496":{"tf":1.0},"503":{"tf":1.0},"57":{"tf":1.0}}},"df":11,"docs":{"156":{"tf":1.0},"183":{"tf":1.0},"237":{"tf":1.0},"307":{"tf":1.0},"312":{"tf":1.0},"32":{"tf":1.4142135623730951},"360":{"tf":1.0},"367":{"tf":1.0},"480":{"tf":1.0},"522":{"tf":1.4142135623730951},"565":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":2,"docs":{"110":{"tf":1.0},"383":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"a":{"c":{"df":0,"docs":{},"h":{"df":13,"docs":{"276":{"tf":1.7320508075688772},"292":{"tf":1.0},"341":{"tf":1.0},"361":{"tf":1.0},"37":{"tf":1.4142135623730951},"389":{"tf":1.0},"392":{"tf":1.0},"440":{"tf":1.0},"463":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":12,"docs":{"17":{"tf":1.0},"217":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"3":{"tf":1.0},"41":{"tf":1.4142135623730951},"470":{"tf":1.0},"51":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"558":{"tf":1.0}}}}},"v":{"df":2,"docs":{"16":{"tf":1.0},"17":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"15":{"tf":1.0}}}}}},"r":{"3":{"7":{"df":1,"docs":{"602":{"tf":1.0}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"205":{"tf":1.0},"34":{"tf":1.7320508075688772},"341":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}}},"c":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"<":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"268":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"328":{"tf":1.7320508075688772}}}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"328":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":4,"docs":{"328":{"tf":1.0},"394":{"tf":1.0},"470":{"tf":1.4142135623730951},"539":{"tf":2.0}},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":7,"docs":{"278":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"431":{"tf":1.0},"433":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":6,"docs":{"258":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"487":{"tf":1.0},"496":{"tf":1.0},"65":{"tf":1.0}}},"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":10,"docs":{"217":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"310":{"tf":1.0},"317":{"tf":1.0},"341":{"tf":1.4142135623730951},"460":{"tf":1.0},"503":{"tf":1.0},"552":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":3,"docs":{"230":{"tf":1.4142135623730951},"231":{"tf":1.0},"232":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"g":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"c":{"=":{"1":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"217":{"tf":1.0},"245":{"tf":1.0},"292":{"tf":1.0},"573":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"0":{")":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{")":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"u":{"df":2,"docs":{"278":{"tf":1.0},"456":{"tf":1.0}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"294":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"538":{"tf":1.0},"581":{"tf":1.4142135623730951}}}}}}},"v":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"c":{"8":{"8":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"s":{"df":8,"docs":{"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"42":{"tf":1.0},"543":{"tf":1.0},"573":{"tf":1.0},"81":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"252":{"tf":1.0}}}}}},"m":{"7":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"d":{"df":29,"docs":{"112":{"tf":1.0},"130":{"tf":1.0},"153":{"tf":1.0},"200":{"tf":1.0},"205":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"259":{"tf":1.0},"276":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"311":{"tf":1.0},"336":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.7320508075688772},"394":{"tf":1.0},"421":{"tf":1.0},"433":{"tf":1.0},"458":{"tf":1.0},"486":{"tf":1.0},"502":{"tf":1.0},"544":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.7320508075688772},"73":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":3,"docs":{"232":{"tf":1.0},"276":{"tf":1.0},"397":{"tf":1.0}}}},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}}}},"t":{"df":2,"docs":{"209":{"tf":1.0},"410":{"tf":1.0}},"i":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"457":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"358":{"tf":1.0}}},"df":0,"docs":{}},"k":{"df":82,"docs":{"100":{"tf":1.4142135623730951},"109":{"tf":1.4142135623730951},"113":{"tf":1.0},"117":{"tf":1.4142135623730951},"126":{"tf":1.4142135623730951},"135":{"tf":1.4142135623730951},"144":{"tf":1.4142135623730951},"154":{"tf":1.4142135623730951},"160":{"tf":1.4142135623730951},"169":{"tf":1.0},"170":{"tf":1.4142135623730951},"178":{"tf":1.0},"180":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"198":{"tf":1.0},"200":{"tf":1.0},"202":{"tf":1.4142135623730951},"209":{"tf":2.0},"210":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"222":{"tf":1.4142135623730951},"236":{"tf":1.4142135623730951},"247":{"tf":1.4142135623730951},"260":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"269":{"tf":1.4142135623730951},"27":{"tf":1.0},"277":{"tf":1.4142135623730951},"284":{"tf":1.0},"285":{"tf":1.4142135623730951},"293":{"tf":1.4142135623730951},"30":{"tf":1.4142135623730951},"300":{"tf":1.7320508075688772},"301":{"tf":1.4142135623730951},"314":{"tf":1.4142135623730951},"328":{"tf":1.0},"329":{"tf":1.4142135623730951},"337":{"tf":1.4142135623730951},"340":{"tf":1.0},"348":{"tf":1.4142135623730951},"362":{"tf":1.4142135623730951},"370":{"tf":1.0},"371":{"tf":1.4142135623730951},"381":{"tf":1.4142135623730951},"385":{"tf":1.0},"390":{"tf":1.4142135623730951},"398":{"tf":1.4142135623730951},"409":{"tf":1.4142135623730951},"42":{"tf":1.4142135623730951},"424":{"tf":1.4142135623730951},"43":{"tf":1.4142135623730951},"432":{"tf":1.4142135623730951},"441":{"tf":1.4142135623730951},"448":{"tf":1.0},"449":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.4142135623730951},"47":{"tf":1.0},"470":{"tf":1.0},"471":{"tf":1.4142135623730951},"479":{"tf":1.4142135623730951},"487":{"tf":1.0},"492":{"tf":1.4142135623730951},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.0},"505":{"tf":1.4142135623730951},"51":{"tf":1.0},"524":{"tf":1.4142135623730951},"53":{"tf":1.4142135623730951},"54":{"tf":1.0},"540":{"tf":1.4142135623730951},"556":{"tf":1.0},"582":{"tf":1.4142135623730951},"593":{"tf":1.4142135623730951},"66":{"tf":1.4142135623730951},"75":{"tf":1.4142135623730951},"80":{"tf":1.4142135623730951},"85":{"tf":1.4142135623730951},"90":{"tf":1.4142135623730951}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":6,"docs":{"264":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"349":{"tf":1.4142135623730951},"51":{"tf":1.0},"561":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"40":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"15":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"!":{"(":{"1":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{".":{"0":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":3,"docs":{"469":{"tf":1.4142135623730951},"558":{"tf":2.0},"559":{"tf":1.7320508075688772}},"e":{"df":1,"docs":{"556":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"463":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}},"o":{"c":{"df":0,"docs":{},"i":{"df":4,"docs":{"218":{"tf":1.4142135623730951},"370":{"tf":1.0},"431":{"tf":1.0},"579":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"m":{"df":10,"docs":{"196":{"tf":1.0},"200":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"317":{"tf":1.0},"343":{"tf":1.4142135623730951},"470":{"tf":1.0},"539":{"tf":1.0},"62":{"tf":1.0}},"p":{"df":0,"docs":{},"t":{"df":3,"docs":{"173":{"tf":1.0},"393":{"tf":1.0},"460":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"196":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"n":{"c":{"/":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"370":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":15,"docs":{"195":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.0},"230":{"tf":1.0},"300":{"tf":1.7320508075688772},"332":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.4142135623730951},"418":{"tf":1.0},"426":{"tf":1.0},"61":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":1,"docs":{"370":{"tf":1.0}}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"t":{"d":{":":{":":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"276":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":2,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"df":0,"docs":{},"{":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"276":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"257":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"392":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":2.23606797749979},"211":{"tf":1.0},"221":{"tf":2.23606797749979}}}}},"df":0,"docs":{}}}},"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"558":{"tf":1.0}}}}},"df":0,"docs":{}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{">":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"421":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":279,"docs":{"0":{"tf":1.0},"11":{"tf":2.0},"110":{"tf":1.0},"136":{"tf":1.0},"153":{"tf":1.7320508075688772},"156":{"tf":6.557438524302},"158":{"tf":1.0},"16":{"tf":1.0},"166":{"tf":1.0},"167":{"tf":1.4142135623730951},"169":{"tf":1.0},"173":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"181":{"tf":1.4142135623730951},"186":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"192":{"tf":1.4142135623730951},"194":{"tf":1.0},"195":{"tf":1.4142135623730951},"196":{"tf":2.23606797749979},"197":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951},"203":{"tf":1.4142135623730951},"208":{"tf":1.0},"209":{"tf":3.0},"211":{"tf":2.0},"216":{"tf":1.0},"217":{"tf":3.872983346207417},"218":{"tf":3.0},"219":{"tf":1.7320508075688772},"220":{"tf":1.4142135623730951},"221":{"tf":4.242640687119285},"222":{"tf":1.0},"223":{"tf":1.7320508075688772},"224":{"tf":1.7320508075688772},"225":{"tf":1.0},"226":{"tf":1.0},"228":{"tf":1.0},"23":{"tf":1.7320508075688772},"230":{"tf":1.4142135623730951},"233":{"tf":1.0},"237":{"tf":1.4142135623730951},"239":{"tf":1.4142135623730951},"24":{"tf":1.0},"240":{"tf":1.4142135623730951},"241":{"tf":1.0},"243":{"tf":1.0},"244":{"tf":1.0},"25":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":1.4142135623730951},"255":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":3.3166247903554},"258":{"tf":2.23606797749979},"259":{"tf":3.605551275463989},"260":{"tf":1.0},"261":{"tf":2.23606797749979},"262":{"tf":1.0},"263":{"tf":1.4142135623730951},"264":{"tf":1.0},"265":{"tf":1.4142135623730951},"266":{"tf":1.7320508075688772},"267":{"tf":1.4142135623730951},"268":{"tf":3.3166247903554},"269":{"tf":1.0},"27":{"tf":1.0},"270":{"tf":1.7320508075688772},"271":{"tf":1.0},"272":{"tf":1.4142135623730951},"273":{"tf":1.4142135623730951},"275":{"tf":1.0},"276":{"tf":2.449489742783178},"278":{"tf":1.4142135623730951},"283":{"tf":1.0},"284":{"tf":2.6457513110645907},"288":{"tf":1.0},"289":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":4.242640687119285},"294":{"tf":1.4142135623730951},"299":{"tf":1.0},"3":{"tf":1.4142135623730951},"300":{"tf":3.872983346207417},"305":{"tf":1.7320508075688772},"306":{"tf":1.4142135623730951},"307":{"tf":2.6457513110645907},"308":{"tf":1.4142135623730951},"309":{"tf":2.449489742783178},"310":{"tf":2.23606797749979},"311":{"tf":2.23606797749979},"312":{"tf":1.7320508075688772},"313":{"tf":1.7320508075688772},"314":{"tf":1.0},"315":{"tf":2.449489742783178},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.4142135623730951},"321":{"tf":2.449489742783178},"322":{"tf":1.4142135623730951},"323":{"tf":2.23606797749979},"324":{"tf":2.0},"325":{"tf":1.4142135623730951},"326":{"tf":1.7320508075688772},"327":{"tf":1.4142135623730951},"328":{"tf":2.0},"329":{"tf":1.0},"330":{"tf":2.23606797749979},"331":{"tf":1.4142135623730951},"332":{"tf":1.0},"333":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":2.0},"340":{"tf":1.0},"341":{"tf":2.6457513110645907},"342":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":2.23606797749979},"349":{"tf":1.4142135623730951},"350":{"tf":1.4142135623730951},"354":{"tf":1.7320508075688772},"355":{"tf":1.4142135623730951},"356":{"tf":1.0},"357":{"tf":3.4641016151377544},"358":{"tf":3.1622776601683795},"359":{"tf":1.7320508075688772},"360":{"tf":2.8284271247461903},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":2.6457513110645907},"364":{"tf":1.0},"365":{"tf":2.0},"366":{"tf":1.7320508075688772},"367":{"tf":2.8284271247461903},"368":{"tf":1.7320508075688772},"369":{"tf":1.4142135623730951},"37":{"tf":2.0},"370":{"tf":5.196152422706632},"371":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"374":{"tf":1.0},"375":{"tf":1.7320508075688772},"376":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.7320508075688772},"379":{"tf":1.4142135623730951},"380":{"tf":4.358898943540674},"381":{"tf":1.0},"382":{"tf":1.4142135623730951},"383":{"tf":2.449489742783178},"384":{"tf":1.0},"385":{"tf":1.4142135623730951},"386":{"tf":1.4142135623730951},"387":{"tf":1.7320508075688772},"388":{"tf":1.4142135623730951},"389":{"tf":3.1622776601683795},"390":{"tf":1.0},"391":{"tf":2.449489742783178},"392":{"tf":1.7320508075688772},"393":{"tf":1.4142135623730951},"394":{"tf":1.7320508075688772},"396":{"tf":1.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.4142135623730951},"4":{"tf":1.0},"40":{"tf":1.0},"403":{"tf":1.4142135623730951},"406":{"tf":1.7320508075688772},"407":{"tf":1.4142135623730951},"408":{"tf":2.23606797749979},"409":{"tf":1.0},"410":{"tf":1.0},"411":{"tf":1.0},"412":{"tf":1.0},"413":{"tf":1.0},"414":{"tf":1.4142135623730951},"416":{"tf":1.0},"419":{"tf":1.7320508075688772},"430":{"tf":1.0},"433":{"tf":1.0},"439":{"tf":1.0},"440":{"tf":1.0},"442":{"tf":1.0},"447":{"tf":1.0},"448":{"tf":2.449489742783178},"450":{"tf":1.0},"455":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.4142135623730951},"460":{"tf":1.7320508075688772},"462":{"tf":1.4142135623730951},"467":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":4.0},"472":{"tf":1.0},"475":{"tf":1.4142135623730951},"477":{"tf":1.0},"478":{"tf":1.4142135623730951},"480":{"tf":1.0},"481":{"tf":1.0},"483":{"tf":1.7320508075688772},"487":{"tf":1.0},"490":{"tf":1.7320508075688772},"501":{"tf":1.7320508075688772},"502":{"tf":2.23606797749979},"504":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"510":{"tf":1.0},"512":{"tf":1.0},"519":{"tf":1.7320508075688772},"522":{"tf":3.7416573867739413},"523":{"tf":1.0},"525":{"tf":1.4142135623730951},"526":{"tf":2.0},"528":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"537":{"tf":1.7320508075688772},"538":{"tf":3.0},"541":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.7320508075688772},"545":{"tf":2.23606797749979},"546":{"tf":2.0},"547":{"tf":1.4142135623730951},"548":{"tf":1.7320508075688772},"549":{"tf":1.0},"553":{"tf":1.0},"556":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.0},"561":{"tf":1.0},"564":{"tf":1.4142135623730951},"566":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":1.0},"575":{"tf":2.0},"576":{"tf":1.4142135623730951},"577":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":2.0},"580":{"tf":1.4142135623730951},"581":{"tf":1.4142135623730951},"582":{"tf":1.0},"583":{"tf":1.0},"584":{"tf":1.0},"585":{"tf":1.7320508075688772},"586":{"tf":1.7320508075688772},"590":{"tf":1.7320508075688772},"591":{"tf":1.0},"592":{"tf":1.0},"593":{"tf":1.0},"594":{"tf":1.7320508075688772},"595":{"tf":2.0},"597":{"tf":1.0},"599":{"tf":3.872983346207417},"600":{"tf":1.0},"601":{"tf":1.0},"61":{"tf":3.0},"62":{"tf":1.0},"64":{"tf":1.0},"76":{"tf":1.4142135623730951},"8":{"tf":2.0},"81":{"tf":1.4142135623730951},"86":{"tf":1.4142135623730951},"89":{"tf":1.0},"9":{"tf":1.7320508075688772},"91":{"tf":1.7320508075688772},"92":{"tf":1.0}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":21,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"218":{"tf":1.4142135623730951},"230":{"tf":1.0},"232":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":2.0},"261":{"tf":1.0},"278":{"tf":1.0},"309":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"341":{"tf":1.0},"370":{"tf":1.0},"456":{"tf":1.4142135623730951},"458":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.7320508075688772}},"i":{"df":4,"docs":{"389":{"tf":1.0},"391":{"tf":1.7320508075688772},"393":{"tf":1.0},"394":{"tf":1.4142135623730951}}}}}}},"i":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":2,"docs":{"370":{"tf":1.0},"574":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"574":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"62":{"tf":1.0}},"i":{"c":{"df":0,"docs":{},"u":{"6":{"4":{"df":1,"docs":{"328":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"p":{"df":2,"docs":{"209":{"tf":1.0},"548":{"tf":1.4142135623730951}}}},"t":{"a":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":1,"docs":{"571":{"tf":1.4142135623730951}}},"k":{"df":1,"docs":{"125":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"487":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":14,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"213":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"330":{"tf":1.0},"349":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.0},"469":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"200":{"tf":1.0},"340":{"tf":1.0},"515":{"tf":1.0}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":6,"docs":{"209":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"380":{"tf":1.0},"494":{"tf":1.7320508075688772},"539":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"431":{"tf":1.4142135623730951}}}}},"o":{"df":0,"docs":{},"r":{"'":{"df":4,"docs":{"280":{"tf":1.0},"295":{"tf":1.0},"303":{"tf":1.0},"364":{"tf":1.0}}},"df":15,"docs":{"171":{"tf":1.4142135623730951},"192":{"tf":1.0},"199":{"tf":1.0},"238":{"tf":1.0},"252":{"tf":1.0},"262":{"tf":1.0},"366":{"tf":1.0},"384":{"tf":1.0},"423":{"tf":1.0},"426":{"tf":1.0},"444":{"tf":1.0},"478":{"tf":1.0},"483":{"tf":1.0},"513":{"tf":1.0},"54":{"tf":1.4142135623730951}}}}},"o":{"df":1,"docs":{"347":{"tf":1.4142135623730951}},"m":{"a":{"df":0,"docs":{},"t":{"df":4,"docs":{"178":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0}}}},"df":1,"docs":{"526":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":19,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"111":{"tf":1.0},"147":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.0},"209":{"tf":1.0},"284":{"tf":1.4142135623730951},"318":{"tf":1.0},"336":{"tf":1.0},"394":{"tf":1.0},"403":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0},"82":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"359":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"i":{"d":{"df":13,"docs":{"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"252":{"tf":1.0},"272":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.0},"417":{"tf":1.4142135623730951},"474":{"tf":1.0},"478":{"tf":1.7320508075688772},"513":{"tf":1.0},"564":{"tf":1.0},"62":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":35,"docs":{"156":{"tf":2.0},"169":{"tf":1.7320508075688772},"171":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"195":{"tf":1.4142135623730951},"196":{"tf":1.0},"205":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"268":{"tf":2.23606797749979},"271":{"tf":1.0},"292":{"tf":1.7320508075688772},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"315":{"tf":1.0},"320":{"tf":1.0},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"403":{"tf":1.0},"419":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0},"522":{"tf":1.7320508075688772},"523":{"tf":1.4142135623730951},"526":{"tf":1.0},"539":{"tf":1.4142135623730951},"556":{"tf":1.0},"558":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}},"r":{"d":{"df":8,"docs":{"14":{"tf":1.0},"15":{"tf":1.0},"16":{"tf":1.0},"19":{"tf":2.0},"55":{"tf":1.0},"58":{"tf":2.0},"59":{"tf":2.449489742783178},"60":{"tf":1.4142135623730951}}},"df":8,"docs":{"171":{"tf":1.0},"230":{"tf":1.0},"412":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"584":{"tf":1.7320508075688772},"585":{"tf":1.7320508075688772},"81":{"tf":1.0}}},"y":{"df":4,"docs":{"199":{"tf":1.0},"221":{"tf":1.0},"357":{"tf":1.0},"419":{"tf":1.0}}}},"df":1,"docs":{"599":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"223":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"325":{"tf":1.0}}},"df":0,"docs":{}}}}},"b":{"+":{">":{"5":{"5":{"df":1,"docs":{"448":{"tf":1.0}}},"6":{"df":1,"docs":{"448":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"k":{"df":21,"docs":{"209":{"tf":1.0},"218":{"tf":1.0},"237":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.0},"278":{"tf":1.0},"289":{"tf":1.0},"310":{"tf":1.0},"389":{"tf":1.0},"417":{"tf":1.4142135623730951},"425":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.0},"498":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"539":{"tf":1.4142135623730951},"579":{"tf":1.0},"598":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"178":{"tf":1.0},"230":{"tf":1.0}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":21,"docs":{"127":{"tf":1.0},"164":{"tf":1.0},"214":{"tf":1.0},"248":{"tf":1.0},"28":{"tf":1.0},"280":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.4142135623730951},"300":{"tf":1.0},"316":{"tf":1.0},"336":{"tf":1.4142135623730951},"418":{"tf":1.0},"433":{"tf":1.0},"436":{"tf":1.0},"440":{"tf":1.0},"444":{"tf":1.0},"460":{"tf":1.0},"538":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"237":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":5,"docs":{"284":{"tf":1.0},"397":{"tf":2.23606797749979},"404":{"tf":1.0},"405":{"tf":1.7320508075688772},"539":{"tf":1.0}},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"2":{"5":{":":{"1":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"338":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"d":{"df":5,"docs":{"189":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"397":{"tf":1.4142135623730951}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"603":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"e":{"df":2,"docs":{"460":{"tf":1.0},"53":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"116":{"tf":1.0},"457":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"g":{"df":2,"docs":{"217":{"tf":1.0},"370":{"tf":1.0}}}},"r":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"b":{"a":{"df":0,"docs":{},"r":{"a":{"'":{"df":15,"docs":{"209":{"tf":1.0},"300":{"tf":1.0},"318":{"tf":1.0},"341":{"tf":1.7320508075688772},"342":{"tf":1.0},"344":{"tf":1.4142135623730951},"356":{"tf":1.7320508075688772},"359":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.4142135623730951},"385":{"tf":1.0},"389":{"tf":1.0},"41":{"tf":1.0},"480":{"tf":1.0},"539":{"tf":1.0}}},"df":187,"docs":{"156":{"tf":4.58257569495584},"169":{"tf":1.4142135623730951},"171":{"tf":1.0},"174":{"tf":1.0},"178":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":3.872983346207417},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"221":{"tf":2.449489742783178},"225":{"tf":1.4142135623730951},"226":{"tf":1.0},"240":{"tf":1.0},"245":{"tf":1.7320508075688772},"251":{"tf":1.0},"264":{"tf":1.4142135623730951},"268":{"tf":3.0},"272":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.4142135623730951},"297":{"tf":1.0},"298":{"tf":1.7320508075688772},"299":{"tf":1.0},"300":{"tf":3.4641016151377544},"301":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":2.0},"305":{"tf":2.0},"306":{"tf":1.4142135623730951},"307":{"tf":1.7320508075688772},"308":{"tf":1.4142135623730951},"309":{"tf":1.7320508075688772},"310":{"tf":1.4142135623730951},"311":{"tf":1.4142135623730951},"312":{"tf":1.4142135623730951},"313":{"tf":1.4142135623730951},"314":{"tf":1.4142135623730951},"315":{"tf":1.4142135623730951},"316":{"tf":2.0},"317":{"tf":1.4142135623730951},"318":{"tf":2.23606797749979},"319":{"tf":1.4142135623730951},"320":{"tf":1.7320508075688772},"321":{"tf":2.6457513110645907},"322":{"tf":1.7320508075688772},"323":{"tf":1.4142135623730951},"324":{"tf":2.0},"325":{"tf":1.4142135623730951},"326":{"tf":1.7320508075688772},"327":{"tf":1.0},"328":{"tf":3.1622776601683795},"329":{"tf":1.0},"330":{"tf":1.0},"331":{"tf":1.0},"332":{"tf":1.7320508075688772},"333":{"tf":1.0},"334":{"tf":1.7320508075688772},"335":{"tf":1.0},"336":{"tf":4.47213595499958},"337":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.7320508075688772},"340":{"tf":1.7320508075688772},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.4142135623730951},"345":{"tf":1.7320508075688772},"346":{"tf":1.0},"347":{"tf":3.3166247903554},"348":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.7320508075688772},"353":{"tf":1.0},"354":{"tf":1.7320508075688772},"355":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.7320508075688772},"358":{"tf":1.0},"359":{"tf":1.7320508075688772},"360":{"tf":1.7320508075688772},"361":{"tf":1.4142135623730951},"362":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":2.23606797749979},"367":{"tf":1.4142135623730951},"368":{"tf":1.7320508075688772},"369":{"tf":1.0},"370":{"tf":2.6457513110645907},"371":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"374":{"tf":1.0},"375":{"tf":1.0},"376":{"tf":1.7320508075688772},"377":{"tf":1.0},"378":{"tf":1.7320508075688772},"379":{"tf":1.0},"380":{"tf":4.358898943540674},"381":{"tf":1.0},"382":{"tf":2.0},"383":{"tf":1.4142135623730951},"384":{"tf":1.0},"385":{"tf":1.4142135623730951},"386":{"tf":1.7320508075688772},"387":{"tf":1.7320508075688772},"388":{"tf":1.0},"389":{"tf":3.1622776601683795},"390":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.0},"393":{"tf":2.0},"394":{"tf":1.0},"395":{"tf":1.7320508075688772},"396":{"tf":1.0},"397":{"tf":1.7320508075688772},"398":{"tf":1.0},"399":{"tf":1.0},"400":{"tf":1.0},"401":{"tf":1.7320508075688772},"402":{"tf":1.0},"403":{"tf":1.0},"404":{"tf":1.7320508075688772},"405":{"tf":1.0},"406":{"tf":1.7320508075688772},"407":{"tf":1.0},"408":{"tf":2.23606797749979},"409":{"tf":1.0},"41":{"tf":1.0},"410":{"tf":1.0},"411":{"tf":1.0},"412":{"tf":1.0},"413":{"tf":2.0},"414":{"tf":1.0},"415":{"tf":1.7320508075688772},"416":{"tf":1.0},"417":{"tf":2.449489742783178},"418":{"tf":1.0},"419":{"tf":1.0},"420":{"tf":1.7320508075688772},"421":{"tf":2.6457513110645907},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"424":{"tf":1.0},"425":{"tf":1.4142135623730951},"426":{"tf":1.0},"427":{"tf":2.0},"428":{"tf":1.0},"445":{"tf":1.0},"458":{"tf":1.4142135623730951},"463":{"tf":1.0},"475":{"tf":1.0},"478":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.7320508075688772},"513":{"tf":1.7320508075688772},"525":{"tf":1.0},"531":{"tf":1.7320508075688772},"536":{"tf":1.7320508075688772},"537":{"tf":1.0},"538":{"tf":4.47213595499958},"539":{"tf":2.8284271247461903},"540":{"tf":1.0},"541":{"tf":1.4142135623730951},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":2.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"65":{"tf":1.0},"67":{"tf":1.0},"88":{"tf":1.0},"89":{"tf":2.0},"90":{"tf":1.0},"91":{"tf":1.7320508075688772},"92":{"tf":1.7320508075688772}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":4,"docs":{"380":{"tf":1.0},"504":{"tf":1.0},"576":{"tf":1.0},"578":{"tf":1.4142135623730951}},"e":{"df":1,"docs":{"232":{"tf":1.0}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"572":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"e":{"df":39,"docs":{"15":{"tf":1.0},"154":{"tf":1.7320508075688772},"162":{"tf":1.0},"17":{"tf":1.0},"173":{"tf":1.0},"18":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"24":{"tf":1.0},"250":{"tf":1.0},"268":{"tf":1.4142135623730951},"28":{"tf":1.0},"294":{"tf":1.4142135623730951},"296":{"tf":1.0},"303":{"tf":1.0},"336":{"tf":2.0},"340":{"tf":1.0},"341":{"tf":1.4142135623730951},"364":{"tf":1.0},"38":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"422":{"tf":1.0},"434":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.0},"473":{"tf":1.0},"502":{"tf":1.0},"516":{"tf":1.0},"542":{"tf":1.0},"570":{"tf":1.4142135623730951},"596":{"tf":1.7320508075688772},"62":{"tf":1.4142135623730951},"65":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"393":{"tf":1.0}}}}}},"i":{"c":{"df":13,"docs":{"156":{"tf":2.0},"167":{"tf":1.0},"195":{"tf":1.0},"258":{"tf":1.0},"309":{"tf":1.0},"318":{"tf":1.0},"359":{"tf":1.0},"374":{"tf":1.0},"383":{"tf":1.0},"397":{"tf":1.0},"469":{"tf":1.0},"573":{"tf":1.0},"96":{"tf":1.0}}},"df":1,"docs":{"550":{"tf":1.0}}}}},"df":5,"docs":{"12":{"tf":1.0},"211":{"tf":1.4142135623730951},"217":{"tf":1.0},"421":{"tf":1.7320508075688772},"73":{"tf":1.4142135623730951}},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"414":{"tf":1.0}}},"r":{"df":1,"docs":{"382":{"tf":1.0}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}}}}}}}},"c":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"328":{"tf":1.0},"470":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":12,"docs":{"112":{"tf":1.0},"139":{"tf":1.0},"259":{"tf":1.0},"278":{"tf":1.4142135623730951},"292":{"tf":1.0},"321":{"tf":1.0},"372":{"tf":1.0},"456":{"tf":1.0},"532":{"tf":1.0},"54":{"tf":1.0},"562":{"tf":1.0},"8":{"tf":1.0}}}}},"df":26,"docs":{"127":{"tf":1.0},"130":{"tf":1.0},"189":{"tf":1.0},"209":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"272":{"tf":1.0},"309":{"tf":1.0},"316":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"460":{"tf":1.0},"503":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0},"55":{"tf":1.0},"599":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":32,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"169":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"183":{"tf":1.0},"195":{"tf":1.0},"198":{"tf":1.0},"218":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.0},"359":{"tf":1.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.4142135623730951},"402":{"tf":1.0},"414":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.0},"445":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"502":{"tf":1.4142135623730951},"538":{"tf":1.7320508075688772},"599":{"tf":1.4142135623730951},"61":{"tf":1.0}}}}},"g":{"a":{"df":0,"docs":{},"n":{"df":3,"docs":{"389":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":10,"docs":{"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"235":{"tf":1.0},"284":{"tf":1.7320508075688772},"289":{"tf":1.0},"313":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"380":{"tf":1.0},"458":{"tf":1.0},"599":{"tf":1.0}},"n":{"df":1,"docs":{"363":{"tf":1.0}}}}}},"h":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"300":{"tf":1.0}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"448":{"tf":1.0},"450":{"tf":1.0},"538":{"tf":1.0}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"462":{"tf":1.0}}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":6,"docs":{"134":{"tf":1.0},"240":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"246":{"tf":1.0}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":5,"docs":{"336":{"tf":1.0},"408":{"tf":1.0},"470":{"tf":1.0},"538":{"tf":1.0},"8":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"w":{"df":2,"docs":{"404":{"tf":1.0},"516":{"tf":1.0}}}},"t":{"df":1,"docs":{"457":{"tf":1.0}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}}}},"df":7,"docs":{"209":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.0},"363":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.4142135623730951},"538":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"341":{"tf":1.0}}}},"df":0,"docs":{},"t":{"df":15,"docs":{"259":{"tf":1.0},"278":{"tf":1.0},"41":{"tf":1.0},"427":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"464":{"tf":1.0},"495":{"tf":1.0},"514":{"tf":1.7320508075688772},"532":{"tf":1.7320508075688772},"54":{"tf":1.0},"546":{"tf":2.0},"79":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"499":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"t":{"df":18,"docs":{"110":{"tf":1.0},"156":{"tf":1.4142135623730951},"159":{"tf":1.0},"16":{"tf":1.4142135623730951},"168":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"32":{"tf":1.0},"389":{"tf":1.0},"421":{"tf":1.0},"457":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"48":{"tf":1.0},"486":{"tf":1.0},"491":{"tf":1.0},"55":{"tf":1.0},"59":{"tf":1.0}}}},"t":{"df":1,"docs":{"538":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":33,"docs":{"131":{"tf":1.0},"138":{"tf":1.0},"214":{"tf":1.0},"258":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.4142135623730951},"33":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951},"36":{"tf":1.0},"363":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"423":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.7320508075688772},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"72":{"tf":1.0},"76":{"tf":1.0},"82":{"tf":1.0},"96":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":24,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"278":{"tf":1.0},"311":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"383":{"tf":1.7320508075688772},"391":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.4142135623730951},"456":{"tf":1.0},"469":{"tf":1.4142135623730951},"47":{"tf":1.0},"470":{"tf":1.7320508075688772},"517":{"tf":1.4142135623730951},"535":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":3,"docs":{"209":{"tf":1.0},"573":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}}}},"i":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"463":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"b":{"df":0,"docs":{},"v":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":10,"docs":{"15":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.0},"315":{"tf":1.0},"356":{"tf":1.7320508075688772},"359":{"tf":2.0},"380":{"tf":1.0},"478":{"tf":1.0},"487":{"tf":2.0},"599":{"tf":1.0}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"161":{"tf":1.0},"28":{"tf":1.0},"302":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"573":{"tf":1.0}}},"df":0,"docs":{}}}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"139":{"tf":1.0}}}}}}},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"313":{"tf":1.0},"370":{"tf":1.0},"448":{"tf":1.0}}}}},"d":{"(":{"1":{"5":{"0":{"_":{"df":0,"docs":{},"i":{"6":{"4":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"456":{"tf":1.0}}}}}},"df":0,"docs":{}},"t":{"df":28,"docs":{"178":{"tf":1.0},"18":{"tf":1.0},"190":{"tf":1.4142135623730951},"217":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.0},"3":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"358":{"tf":1.4142135623730951},"359":{"tf":1.7320508075688772},"363":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":1.4142135623730951},"375":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.0},"513":{"tf":1.0},"539":{"tf":1.0},"552":{"tf":1.0},"561":{"tf":1.0},"599":{"tf":1.7320508075688772},"82":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"174":{"tf":1.0},"259":{"tf":1.7320508075688772}}}}}}},"l":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"300":{"tf":1.0},"380":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"361":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}}},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":2,"docs":{"347":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"n":{"(":{"d":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"309":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"o":{">":{"(":{"df":0,"docs":{},"f":{"df":1,"docs":{"309":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":11,"docs":{"218":{"tf":1.0},"308":{"tf":1.7320508075688772},"309":{"tf":2.0},"310":{"tf":1.0},"313":{"tf":1.0},"318":{"tf":1.7320508075688772},"320":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.0},"325":{"tf":2.6457513110645907},"478":{"tf":1.0}}}}},"df":39,"docs":{"110":{"tf":1.0},"156":{"tf":1.7320508075688772},"189":{"tf":1.0},"190":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":2.23606797749979},"270":{"tf":1.7320508075688772},"271":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.7320508075688772},"300":{"tf":1.0},"309":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"323":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.7320508075688772},"350":{"tf":1.0},"360":{"tf":1.4142135623730951},"365":{"tf":2.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"385":{"tf":1.0},"399":{"tf":1.0},"408":{"tf":1.0},"412":{"tf":1.0},"422":{"tf":1.0},"448":{"tf":1.4142135623730951},"456":{"tf":2.0},"470":{"tf":1.4142135623730951},"522":{"tf":1.4142135623730951},"526":{"tf":1.0},"538":{"tf":2.6457513110645907},"539":{"tf":1.0},"558":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"<":{"c":{"df":1,"docs":{"470":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"df":23,"docs":{"162":{"tf":1.0},"192":{"tf":1.0},"199":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"276":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"319":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.4142135623730951},"36":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"365":{"tf":2.0},"367":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"486":{"tf":1.0},"599":{"tf":2.0},"60":{"tf":1.0},"9":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"258":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"560":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"e":{"df":1,"docs":{"218":{"tf":1.0}}}}},"o":{"a":{"df":0,"docs":{},"r":{"d":{"df":5,"docs":{"245":{"tf":1.0},"460":{"tf":1.0},"557":{"tf":1.7320508075688772},"558":{"tf":1.4142135623730951},"559":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"357":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":5,"docs":{"195":{"tf":1.7320508075688772},"201":{"tf":1.0},"258":{"tf":1.4142135623730951},"292":{"tf":2.8284271247461903},"523":{"tf":1.4142135623730951}}},"y":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"195":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"258":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"232":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"k":{"/":{"0":{"7":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"s":{"/":{"0":{"3":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"_":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":1,"docs":{"271":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":11,"docs":{"268":{"tf":1.0},"358":{"tf":2.0},"360":{"tf":1.4142135623730951},"365":{"tf":1.0},"370":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.7320508075688772},"483":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"599":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"284":{"tf":1.0},"380":{"tf":1.0}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"389":{"tf":1.0},"394":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":21,"docs":{"156":{"tf":1.0},"189":{"tf":1.0},"217":{"tf":3.4641016151377544},"218":{"tf":2.6457513110645907},"294":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.4142135623730951},"415":{"tf":1.7320508075688772},"416":{"tf":1.0},"417":{"tf":4.47213595499958},"418":{"tf":2.23606797749979},"419":{"tf":3.605551275463989},"420":{"tf":1.0},"421":{"tf":3.0},"422":{"tf":2.23606797749979},"423":{"tf":1.7320508075688772},"424":{"tf":1.0},"425":{"tf":1.4142135623730951},"426":{"tf":1.0},"427":{"tf":1.4142135623730951},"428":{"tf":1.4142135623730951}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"235":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"h":{"df":17,"docs":{"1":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"209":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"418":{"tf":1.0},"470":{"tf":1.0},"544":{"tf":1.4142135623730951},"55":{"tf":1.0},"57":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"389":{"tf":1.0}}}},"df":0,"docs":{}}}}},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"538":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"d":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"472":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"268":{"tf":1.0}}}}},"df":11,"docs":{"198":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.4142135623730951},"475":{"tf":1.0},"538":{"tf":1.7320508075688772},"564":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"x":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":2,"docs":{"156":{"tf":1.0},"380":{"tf":1.4142135623730951}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":4,"docs":{"156":{"tf":1.0},"221":{"tf":1.0},"370":{"tf":1.0},"375":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}}}}}},"df":5,"docs":{"156":{"tf":1.0},"246":{"tf":1.0},"251":{"tf":1.0},"380":{"tf":1.4142135623730951},"572":{"tf":1.0}}}}}},"df":0,"docs":{}},"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":8,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"292":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"448":{"tf":1.4142135623730951},"502":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"211":{"tf":1.0}}}},"df":16,"docs":{"156":{"tf":1.0},"209":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.4142135623730951},"265":{"tf":1.0},"292":{"tf":1.7320508075688772},"370":{"tf":2.0},"380":{"tf":2.23606797749979},"397":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.4142135623730951},"515":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":2.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"<":{"'":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"y":{"df":1,"docs":{"300":{"tf":1.0}}}},"r":{"a":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"300":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":46,"docs":{"15":{"tf":2.23606797749979},"158":{"tf":1.0},"16":{"tf":2.449489742783178},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"46":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"486":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"55":{"tf":1.0},"58":{"tf":1.0},"59":{"tf":1.0},"60":{"tf":1.0}}}}}}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"200":{"tf":2.0},"276":{"tf":1.0},"336":{"tf":1.0}}}},"d":{"df":1,"docs":{"389":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"602":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"53":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"df":10,"docs":{"171":{"tf":1.0},"223":{"tf":1.0},"328":{"tf":1.7320508075688772},"380":{"tf":1.0},"421":{"tf":1.4142135623730951},"448":{"tf":1.0},"450":{"tf":1.4142135623730951},"451":{"tf":1.0},"470":{"tf":1.0},"552":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"341":{"tf":1.4142135623730951}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"404":{"tf":1.0},"448":{"tf":2.0},"450":{"tf":1.0},"453":{"tf":1.0}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"268":{"tf":1.0},"370":{"tf":1.0}}}}},"df":0,"docs":{}},"i":{"d":{"df":0,"docs":{},"g":{"df":25,"docs":{"156":{"tf":1.4142135623730951},"300":{"tf":1.0},"305":{"tf":1.7320508075688772},"306":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.4142135623730951},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"325":{"tf":1.0},"456":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"359":{"tf":1.0},"503":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"179":{"tf":1.0},"358":{"tf":1.0},"503":{"tf":1.0}}}}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"394":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"g":{"df":16,"docs":{"156":{"tf":1.0},"268":{"tf":1.0},"382":{"tf":1.0},"41":{"tf":2.0},"410":{"tf":1.0},"427":{"tf":1.0},"433":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.0},"62":{"tf":1.0},"64":{"tf":1.0},"77":{"tf":1.4142135623730951},"82":{"tf":1.4142135623730951},"87":{"tf":1.4142135623730951},"9":{"tf":1.0},"92":{"tf":1.4142135623730951}}}}},"o":{"a":{"d":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"279":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"258":{"tf":1.0},"261":{"tf":1.0}}}}},"df":0,"docs":{}},"c":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"s":{"df":3,"docs":{"16":{"tf":1.0},"25":{"tf":1.0},"397":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"217":{"tf":1.0},"542":{"tf":1.0},"62":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"336":{"tf":1.0}}}},"t":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}},"u":{"b":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"565":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"418":{"tf":1.0}}},"df":0,"docs":{}}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"418":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":2,"docs":{"370":{"tf":1.0},"418":{"tf":2.23606797749979}},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"347":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"d":{"(":{"3":{"2":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":4,"docs":{"195":{"tf":2.0},"209":{"tf":1.0},"336":{"tf":2.449489742783178},"418":{"tf":1.7320508075688772}},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"g":{"df":26,"docs":{"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"168":{"tf":1.4142135623730951},"173":{"tf":1.0},"182":{"tf":1.0},"2":{"tf":1.0},"200":{"tf":1.0},"237":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"347":{"tf":1.0},"397":{"tf":2.0},"417":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.4142135623730951},"434":{"tf":1.0},"456":{"tf":1.0},"46":{"tf":1.0},"556":{"tf":2.449489742783178},"557":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.0}}},"i":{"df":0,"docs":{},"l":{"d":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"110":{"tf":1.0}}}},"df":40,"docs":{"11":{"tf":1.0},"110":{"tf":1.4142135623730951},"130":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":2.23606797749979},"195":{"tf":1.0},"221":{"tf":1.0},"240":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"312":{"tf":1.0},"326":{"tf":1.7320508075688772},"327":{"tf":1.0},"328":{"tf":1.7320508075688772},"329":{"tf":1.0},"330":{"tf":1.7320508075688772},"331":{"tf":1.0},"332":{"tf":1.0},"333":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.4142135623730951},"383":{"tf":1.0},"389":{"tf":1.0},"458":{"tf":1.0},"466":{"tf":1.7320508075688772},"467":{"tf":1.0},"468":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.4142135623730951},"474":{"tf":1.0},"475":{"tf":1.0},"486":{"tf":1.0},"597":{"tf":1.0},"72":{"tf":1.0},"8":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"df":17,"docs":{"103":{"tf":1.4142135623730951},"108":{"tf":1.0},"11":{"tf":1.0},"112":{"tf":1.4142135623730951},"120":{"tf":1.4142135623730951},"129":{"tf":1.4142135623730951},"138":{"tf":1.4142135623730951},"147":{"tf":1.4142135623730951},"195":{"tf":1.0},"211":{"tf":1.0},"276":{"tf":1.0},"307":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"323":{"tf":1.0},"599":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"198":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"481":{"tf":1.0},"517":{"tf":1.0}}}},"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":5,"docs":{"171":{"tf":1.0},"191":{"tf":1.0},"349":{"tf":1.0},"76":{"tf":1.0},"81":{"tf":1.0}}}}},"df":0,"docs":{},"n":{"df":1,"docs":{"156":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"df":5,"docs":{"130":{"tf":1.0},"139":{"tf":1.4142135623730951},"292":{"tf":1.0},"347":{"tf":1.4142135623730951},"52":{"tf":1.0}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"188":{"tf":1.0},"336":{"tf":1.0},"453":{"tf":1.0},"503":{"tf":1.0}}}}}},"y":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"z":{"df":0,"docs":{},"z":{"df":1,"docs":{"538":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"328":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"e":{"df":5,"docs":{"195":{"tf":1.0},"209":{"tf":1.4142135623730951},"245":{"tf":1.0},"336":{"tf":2.0},"347":{"tf":1.4142135623730951}}}}}},"c":{"+":{"+":{"2":{"0":{"'":{"df":1,"docs":{"347":{"tf":1.0}}},"df":1,"docs":{"347":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"/":{"c":{"df":4,"docs":{"259":{"tf":1.0},"460":{"tf":1.0},"474":{"tf":1.0},"65":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"h":{"df":11,"docs":{"156":{"tf":1.0},"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":2.23606797749979},"168":{"tf":1.4142135623730951},"169":{"tf":2.449489742783178},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0}}}},"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"189":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"555":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}},"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"c":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":11,"docs":{"292":{"tf":1.0},"294":{"tf":2.0},"296":{"tf":1.0},"300":{"tf":1.0},"324":{"tf":1.0},"336":{"tf":4.795831523312719},"341":{"tf":1.0},"344":{"tf":1.4142135623730951},"418":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":51,"docs":{"150":{"tf":1.4142135623730951},"167":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":2.23606797749979},"209":{"tf":2.8284271247461903},"217":{"tf":2.6457513110645907},"218":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":2.0},"268":{"tf":1.7320508075688772},"276":{"tf":2.6457513110645907},"284":{"tf":1.0},"300":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.4142135623730951},"320":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":3.4641016151377544},"341":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.8284271247461903},"389":{"tf":1.0},"391":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"417":{"tf":3.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.4142135623730951},"457":{"tf":2.0},"470":{"tf":1.0},"478":{"tf":1.0},"487":{"tf":1.0},"502":{"tf":1.7320508075688772},"503":{"tf":1.0},"54":{"tf":1.0},"578":{"tf":1.0},"61":{"tf":1.0}},"e":{"df":1,"docs":{"349":{"tf":1.0}},"r":{"df":5,"docs":{"217":{"tf":1.0},"336":{"tf":1.0},"349":{"tf":1.0},"403":{"tf":1.0},"573":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"419":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"m":{"df":0,"docs":{},"e":{"df":5,"docs":{"130":{"tf":1.0},"241":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"404":{"tf":1.0},"470":{"tf":1.0}},"r":{"a":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"457":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"457":{"tf":1.0}}}}}},"df":4,"docs":{"456":{"tf":2.449489742783178},"457":{"tf":2.0},"458":{"tf":2.449489742783178},"462":{"tf":1.0}}},"df":0,"docs":{}}}},"n":{"'":{"df":0,"docs":{},"t":{"df":21,"docs":{"156":{"tf":1.4142135623730951},"178":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.4142135623730951},"292":{"tf":1.7320508075688772},"307":{"tf":1.0},"312":{"tf":1.0},"315":{"tf":1.0},"322":{"tf":1.0},"370":{"tf":1.4142135623730951},"397":{"tf":1.0},"408":{"tf":1.0},"534":{"tf":1.0},"54":{"tf":1.0},"578":{"tf":1.0},"59":{"tf":1.4142135623730951}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":6,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"178":{"tf":1.7320508075688772},"181":{"tf":1.0},"341":{"tf":1.0},"349":{"tf":1.4142135623730951}}}}},"d":{"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"245":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"a":{"b":{"df":0,"docs":{},"l":{"df":7,"docs":{"110":{"tf":1.4142135623730951},"292":{"tf":1.0},"338":{"tf":1.4142135623730951},"456":{"tf":1.0},"503":{"tf":1.0},"507":{"tf":1.0},"515":{"tf":1.0}}}},"c":{"df":2,"docs":{"538":{"tf":1.7320508075688772},"539":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":2,"docs":{"15":{"tf":1.0},"389":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"539":{"tf":1.0}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":4,"docs":{"218":{"tf":1.4142135623730951},"560":{"tf":1.0},"561":{"tf":1.7320508075688772},"581":{"tf":1.4142135623730951}}}}}},"r":{"df":0,"docs":{},"e":{"df":11,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.0},"198":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.0},"417":{"tf":1.4142135623730951},"456":{"tf":1.0},"515":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"276":{"tf":1.0}}}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":14,"docs":{"156":{"tf":1.0},"218":{"tf":1.0},"328":{"tf":1.0},"334":{"tf":1.7320508075688772},"335":{"tf":1.0},"336":{"tf":1.0},"337":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0}}}}}}}},"g":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":3,"docs":{"221":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.0}}}}}}},"df":6,"docs":{"110":{"tf":1.0},"422":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.4142135623730951},"523":{"tf":1.0},"82":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":40,"docs":{"154":{"tf":1.0},"164":{"tf":1.0},"178":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.7320508075688772},"261":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.4142135623730951},"320":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.4142135623730951},"417":{"tf":1.0},"423":{"tf":1.4142135623730951},"451":{"tf":1.0},"462":{"tf":1.0},"516":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"561":{"tf":1.0},"564":{"tf":1.4142135623730951},"57":{"tf":1.0},"572":{"tf":1.0},"580":{"tf":1.4142135623730951},"581":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.7320508075688772},"62":{"tf":1.0},"96":{"tf":1.0}}},"t":{"df":32,"docs":{"352":{"tf":1.0},"63":{"tf":1.7320508075688772},"64":{"tf":1.0},"65":{"tf":1.0},"66":{"tf":1.0},"67":{"tf":1.0},"68":{"tf":1.0},"69":{"tf":1.0},"70":{"tf":1.7320508075688772},"71":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"75":{"tf":1.0},"76":{"tf":1.0},"77":{"tf":1.0},"78":{"tf":1.7320508075688772},"79":{"tf":1.0},"80":{"tf":1.0},"81":{"tf":1.0},"82":{"tf":1.0},"83":{"tf":1.7320508075688772},"84":{"tf":1.0},"85":{"tf":1.0},"86":{"tf":1.0},"87":{"tf":1.0},"88":{"tf":1.7320508075688772},"89":{"tf":1.0},"9":{"tf":1.0},"90":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"200":{"tf":1.0},"25":{"tf":1.0},"322":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"558":{"tf":1.0}},"i":{"df":3,"docs":{"16":{"tf":1.0},"19":{"tf":1.4142135623730951},"59":{"tf":2.0}}}}}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}}},"s":{"df":17,"docs":{"171":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"271":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.0},"349":{"tf":1.0},"417":{"tf":1.4142135623730951},"469":{"tf":1.0},"481":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}},"s":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"349":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":51,"docs":{"12":{"tf":1.0},"127":{"tf":1.0},"156":{"tf":2.8284271247461903},"206":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":2.23606797749979},"214":{"tf":2.0},"245":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.0},"258":{"tf":2.0},"259":{"tf":2.0},"263":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"345":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.4142135623730951},"348":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"380":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"414":{"tf":1.0},"431":{"tf":1.0},"435":{"tf":1.0},"440":{"tf":1.4142135623730951},"454":{"tf":1.7320508075688772},"455":{"tf":1.0},"456":{"tf":2.23606797749979},"457":{"tf":3.0},"458":{"tf":1.4142135623730951},"459":{"tf":1.0},"460":{"tf":2.0},"461":{"tf":1.0},"462":{"tf":2.449489742783178},"463":{"tf":1.7320508075688772},"464":{"tf":1.0},"465":{"tf":1.0},"521":{"tf":1.4142135623730951},"74":{"tf":1.4142135623730951},"76":{"tf":1.0},"79":{"tf":2.0},"81":{"tf":1.4142135623730951},"82":{"tf":1.4142135623730951},"9":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"r":{"df":2,"docs":{"357":{"tf":1.0},"558":{"tf":1.0}}}},"df":0,"docs":{}},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":2.0}}}}}},"df":15,"docs":{"415":{"tf":1.7320508075688772},"416":{"tf":1.0},"417":{"tf":3.4641016151377544},"418":{"tf":1.0},"419":{"tf":1.0},"420":{"tf":1.0},"421":{"tf":3.1622776601683795},"422":{"tf":1.7320508075688772},"423":{"tf":2.8284271247461903},"424":{"tf":1.0},"425":{"tf":1.4142135623730951},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.4142135623730951},"565":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"125":{"tf":1.4142135623730951}}}},"r":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"10":{"tf":1.0},"129":{"tf":1.0},"504":{"tf":1.0},"530":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":12,"docs":{"125":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"259":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"349":{"tf":1.0},"367":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.0},"504":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"338":{"tf":1.0},"546":{"tf":1.0},"598":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"f":{"d":{"df":2,"docs":{"469":{"tf":1.0},"470":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"188":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"h":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"389":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"n":{"df":5,"docs":{"313":{"tf":1.0},"315":{"tf":1.0},"380":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.0}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":51,"docs":{"153":{"tf":1.0},"156":{"tf":1.7320508075688772},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"278":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"317":{"tf":1.0},"321":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"355":{"tf":1.0},"356":{"tf":1.0},"369":{"tf":1.0},"370":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"561":{"tf":1.0},"584":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}}},"n":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"df":5,"docs":{"330":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"475":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":34,"docs":{"11":{"tf":1.0},"152":{"tf":1.0},"171":{"tf":1.0},"18":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.4142135623730951},"233":{"tf":1.0},"257":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"313":{"tf":1.0},"328":{"tf":1.7320508075688772},"338":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.7320508075688772},"456":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"485":{"tf":1.0},"487":{"tf":1.4142135623730951},"503":{"tf":1.4142135623730951},"507":{"tf":1.0},"516":{"tf":1.0},"522":{"tf":1.0},"526":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0},"545":{"tf":1.0},"62":{"tf":1.0}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"'":{"df":1,"docs":{"538":{"tf":1.0}}},"(":{"1":{"0":{"0":{"df":1,"docs":{"448":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"d":{":":{":":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":10,"docs":{"169":{"tf":1.7320508075688772},"276":{"tf":1.0},"279":{"tf":1.0},"370":{"tf":1.4142135623730951},"394":{"tf":1.0},"408":{"tf":1.7320508075688772},"538":{"tf":3.605551275463989},"539":{"tf":3.0},"585":{"tf":1.7320508075688772},"599":{"tf":1.4142135623730951}}}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"268":{"tf":1.0},"358":{"tf":1.0},"522":{"tf":1.0}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":79,"docs":{"153":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.4142135623730951},"174":{"tf":1.4142135623730951},"184":{"tf":1.4142135623730951},"192":{"tf":1.7320508075688772},"206":{"tf":1.7320508075688772},"214":{"tf":1.4142135623730951},"218":{"tf":1.0},"226":{"tf":1.4142135623730951},"240":{"tf":1.4142135623730951},"251":{"tf":1.4142135623730951},"264":{"tf":1.4142135623730951},"27":{"tf":1.0},"273":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"281":{"tf":1.4142135623730951},"289":{"tf":1.7320508075688772},"297":{"tf":1.4142135623730951},"317":{"tf":1.4142135623730951},"32":{"tf":2.23606797749979},"333":{"tf":1.4142135623730951},"339":{"tf":1.0},"340":{"tf":1.4142135623730951},"35":{"tf":1.4142135623730951},"353":{"tf":1.4142135623730951},"365":{"tf":1.4142135623730951},"367":{"tf":2.0},"377":{"tf":1.7320508075688772},"380":{"tf":1.0},"385":{"tf":2.23606797749979},"386":{"tf":1.0},"394":{"tf":1.4142135623730951},"40":{"tf":1.0},"402":{"tf":1.7320508075688772},"414":{"tf":1.4142135623730951},"428":{"tf":1.7320508075688772},"436":{"tf":1.4142135623730951},"445":{"tf":1.7320508075688772},"45":{"tf":2.0},"453":{"tf":1.7320508075688772},"463":{"tf":1.4142135623730951},"474":{"tf":1.7320508075688772},"475":{"tf":1.4142135623730951},"482":{"tf":1.0},"483":{"tf":1.7320508075688772},"496":{"tf":1.0},"54":{"tf":1.0},"63":{"tf":1.7320508075688772},"64":{"tf":1.7320508075688772},"65":{"tf":1.7320508075688772},"66":{"tf":1.0},"67":{"tf":1.0},"68":{"tf":1.7320508075688772},"69":{"tf":1.7320508075688772},"70":{"tf":1.7320508075688772},"71":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"75":{"tf":1.0},"76":{"tf":1.0},"77":{"tf":1.0},"78":{"tf":1.7320508075688772},"79":{"tf":1.0},"80":{"tf":1.0},"81":{"tf":1.0},"82":{"tf":1.0},"83":{"tf":1.7320508075688772},"84":{"tf":1.0},"85":{"tf":1.0},"86":{"tf":1.0},"87":{"tf":1.0},"88":{"tf":1.7320508075688772},"89":{"tf":1.0},"9":{"tf":2.0},"90":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"21":{"tf":1.0},"339":{"tf":1.0},"96":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":1,"docs":{"209":{"tf":1.0}}},"m":{"df":1,"docs":{"257":{"tf":1.0}}}},"t":{"df":4,"docs":{"200":{"tf":1.0},"268":{"tf":1.4142135623730951},"271":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"191":{"tf":1.4142135623730951},"213":{"tf":1.0}}},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}}}}}}}},"c":{"df":0,"docs":{},"k":{"df":19,"docs":{"12":{"tf":1.0},"136":{"tf":1.0},"19":{"tf":1.0},"199":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.4142135623730951},"417":{"tf":3.1622776601683795},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"423":{"tf":1.0},"428":{"tf":1.0},"456":{"tf":1.0},"51":{"tf":1.0},"538":{"tf":1.7320508075688772},"558":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"189":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"i":{"c":{"df":20,"docs":{"155":{"tf":1.0},"156":{"tf":2.0},"237":{"tf":1.0},"250":{"tf":1.4142135623730951},"300":{"tf":1.4142135623730951},"304":{"tf":1.4142135623730951},"34":{"tf":1.7320508075688772},"350":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.4142135623730951},"360":{"tf":1.0},"361":{"tf":1.0},"363":{"tf":1.4142135623730951},"421":{"tf":1.0},"433":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"599":{"tf":1.0},"8":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"s":{"df":42,"docs":{"156":{"tf":1.4142135623730951},"163":{"tf":1.4142135623730951},"173":{"tf":1.4142135623730951},"183":{"tf":1.4142135623730951},"192":{"tf":1.0},"205":{"tf":1.7320508075688772},"213":{"tf":1.4142135623730951},"218":{"tf":1.0},"225":{"tf":1.4142135623730951},"239":{"tf":1.4142135623730951},"250":{"tf":1.4142135623730951},"263":{"tf":1.4142135623730951},"272":{"tf":1.4142135623730951},"278":{"tf":1.0},"28":{"tf":1.0},"280":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"296":{"tf":1.4142135623730951},"302":{"tf":1.0},"304":{"tf":1.4142135623730951},"316":{"tf":1.4142135623730951},"332":{"tf":1.4142135623730951},"339":{"tf":1.4142135623730951},"349":{"tf":1.0},"352":{"tf":1.4142135623730951},"359":{"tf":1.7320508075688772},"366":{"tf":1.4142135623730951},"376":{"tf":1.4142135623730951},"382":{"tf":1.4142135623730951},"393":{"tf":1.4142135623730951},"401":{"tf":1.4142135623730951},"413":{"tf":1.4142135623730951},"427":{"tf":1.4142135623730951},"435":{"tf":1.4142135623730951},"444":{"tf":1.4142135623730951},"452":{"tf":1.4142135623730951},"457":{"tf":1.0},"462":{"tf":1.7320508075688772},"474":{"tf":1.4142135623730951},"482":{"tf":1.4142135623730951},"531":{"tf":1.0},"599":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":6,"docs":{"213":{"tf":1.0},"300":{"tf":1.0},"45":{"tf":1.0},"469":{"tf":1.0},"474":{"tf":1.0},"579":{"tf":1.0}},"n":{"df":5,"docs":{"156":{"tf":1.0},"235":{"tf":1.0},"356":{"tf":1.4142135623730951},"394":{"tf":1.0},"474":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"403":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"l":{"df":2,"docs":{"292":{"tf":1.0},"539":{"tf":2.0}}}},"df":0,"docs":{}},"t":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"159":{"tf":1.0},"491":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"41":{"tf":1.0},"512":{"tf":1.0}}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":5,"docs":{"423":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0},"598":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"389":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"110":{"tf":1.0},"263":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"s":{"df":2,"docs":{"292":{"tf":1.4142135623730951},"294":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"n":{"df":5,"docs":{"178":{"tf":1.4142135623730951},"221":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"74":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"217":{"tf":1.0},"370":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}},"r":{"df":6,"docs":{"156":{"tf":1.0},"246":{"tf":1.4142135623730951},"383":{"tf":1.0},"391":{"tf":1.0},"460":{"tf":1.0},"558":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"380":{"tf":1.0},"393":{"tf":1.0},"458":{"tf":1.0},"61":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"c":{"df":0,"docs":{},"k":{"df":3,"docs":{"404":{"tf":1.0},"405":{"tf":1.0},"522":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"_":{"df":1,"docs":{"347":{"tf":1.0}}},"df":9,"docs":{"187":{"tf":1.0},"230":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"276":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"431":{"tf":1.0},"542":{"tf":1.0}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"221":{"tf":1.4142135623730951}}}}}}}}},"f":{"df":0,"docs":{},"f":{"df":3,"docs":{"156":{"tf":1.0},"261":{"tf":1.0},"392":{"tf":1.0}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"168":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":3,"docs":{"268":{"tf":1.0},"336":{"tf":1.0},"470":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":12,"docs":{"130":{"tf":1.0},"178":{"tf":2.449489742783178},"200":{"tf":1.0},"201":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"276":{"tf":2.23606797749979},"309":{"tf":1.0},"458":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.0},"566":{"tf":1.0}},"r":{"df":2,"docs":{"10":{"tf":1.0},"347":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"35":{"tf":1.0},"391":{"tf":1.0}}}},"t":{"df":1,"docs":{"380":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":19,"docs":{"156":{"tf":1.0},"217":{"tf":2.449489742783178},"218":{"tf":1.4142135623730951},"276":{"tf":1.0},"292":{"tf":1.7320508075688772},"307":{"tf":1.0},"310":{"tf":2.23606797749979},"324":{"tf":1.0},"380":{"tf":3.3166247903554},"385":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.4142135623730951},"401":{"tf":1.0},"404":{"tf":1.4142135623730951},"450":{"tf":1.0},"458":{"tf":2.0},"460":{"tf":1.0},"572":{"tf":1.0},"586":{"tf":1.7320508075688772}},"e":{"'":{"df":1,"docs":{"217":{"tf":1.0}}},"@":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"r":{"c":{"\\":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"6":{":":{"4":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"1":{":":{"4":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":1,"docs":{"440":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"u":{"d":{"df":4,"docs":{"116":{"tf":1.0},"125":{"tf":1.4142135623730951},"129":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"e":{"df":1,"docs":{"284":{"tf":1.0}}}}},"o":{"_":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"347":{"tf":1.0}}}}}}}}},"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"79":{"tf":1.0}}}},"c":{"df":0,"docs":{},"o":{"a":{"df":3,"docs":{"187":{"tf":1.0},"188":{"tf":1.0},"504":{"tf":1.0}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"e":{"b":{"a":{"df":0,"docs":{},"s":{"df":4,"docs":{"240":{"tf":1.0},"245":{"tf":1.0},"389":{"tf":1.0},"546":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":101,"docs":{"108":{"tf":1.0},"156":{"tf":2.0},"159":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.4142135623730951},"171":{"tf":1.7320508075688772},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"190":{"tf":1.0},"197":{"tf":1.4142135623730951},"198":{"tf":1.0},"200":{"tf":1.4142135623730951},"209":{"tf":4.123105625617661},"211":{"tf":1.7320508075688772},"214":{"tf":1.0},"217":{"tf":2.6457513110645907},"221":{"tf":1.4142135623730951},"239":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":2.0},"251":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"258":{"tf":1.7320508075688772},"259":{"tf":2.0},"261":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":3.0},"270":{"tf":1.7320508075688772},"272":{"tf":1.4142135623730951},"276":{"tf":1.7320508075688772},"284":{"tf":1.4142135623730951},"286":{"tf":1.4142135623730951},"292":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"315":{"tf":1.7320508075688772},"322":{"tf":2.0},"323":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":4.0},"340":{"tf":1.0},"341":{"tf":2.23606797749979},"342":{"tf":2.6457513110645907},"343":{"tf":1.4142135623730951},"344":{"tf":1.4142135623730951},"345":{"tf":1.7320508075688772},"346":{"tf":1.0},"347":{"tf":3.3166247903554},"348":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.7320508075688772},"351":{"tf":1.4142135623730951},"352":{"tf":1.0},"353":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":4.123105625617661},"383":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.7320508075688772},"397":{"tf":2.23606797749979},"399":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":2.449489742783178},"417":{"tf":1.7320508075688772},"418":{"tf":2.23606797749979},"419":{"tf":1.4142135623730951},"434":{"tf":1.0},"440":{"tf":1.7320508075688772},"448":{"tf":1.0},"450":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":2.23606797749979},"462":{"tf":1.0},"470":{"tf":2.0},"491":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.4142135623730951},"504":{"tf":1.0},"507":{"tf":1.4142135623730951},"515":{"tf":1.0},"521":{"tf":1.4142135623730951},"522":{"tf":2.0},"533":{"tf":1.0},"538":{"tf":2.6457513110645907},"543":{"tf":1.0},"559":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"73":{"tf":1.0},"79":{"tf":1.0}}}},"df":2,"docs":{"268":{"tf":1.0},"276":{"tf":1.0}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"15":{"tf":1.0},"156":{"tf":1.4142135623730951}}}}},"l":{"df":0,"docs":{},"l":{"a":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"15":{"tf":1.0},"517":{"tf":1.0},"8":{"tf":1.0}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"df":1,"docs":{"389":{"tf":1.0}}}},"t":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":2,"docs":{"300":{"tf":1.0},"328":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"15":{"tf":1.4142135623730951},"16":{"tf":1.0},"218":{"tf":1.0},"307":{"tf":1.4142135623730951},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.7320508075688772},"320":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"136":{"tf":1.0},"73":{"tf":1.0}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"218":{"tf":2.23606797749979}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"n":{"df":2,"docs":{"558":{"tf":1.0},"559":{"tf":1.0}}}}}},"m":{"b":{"df":1,"docs":{"248":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":19,"docs":{"110":{"tf":1.0},"156":{"tf":1.4142135623730951},"192":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.0},"336":{"tf":1.7320508075688772},"360":{"tf":1.0},"389":{"tf":1.0},"418":{"tf":1.0},"55":{"tf":1.0},"561":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":2.0},"587":{"tf":1.7320508075688772},"588":{"tf":1.7320508075688772},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0}},"e":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":38,"docs":{"125":{"tf":1.0},"177":{"tf":1.0},"189":{"tf":1.4142135623730951},"192":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.4142135623730951},"217":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"248":{"tf":1.0},"25":{"tf":1.0},"268":{"tf":1.4142135623730951},"278":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"300":{"tf":1.4142135623730951},"324":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"41":{"tf":1.0},"433":{"tf":1.0},"456":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"67":{"tf":1.4142135623730951},"68":{"tf":1.0}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"110":{"tf":1.0},"81":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"284":{"tf":1.4142135623730951},"440":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":22,"docs":{"14":{"tf":1.4142135623730951},"16":{"tf":1.4142135623730951},"17":{"tf":1.0},"178":{"tf":1.0},"196":{"tf":1.0},"24":{"tf":1.0},"25":{"tf":1.4142135623730951},"276":{"tf":1.0},"287":{"tf":1.4142135623730951},"29":{"tf":2.0},"292":{"tf":1.0},"37":{"tf":1.0},"42":{"tf":2.0},"50":{"tf":1.4142135623730951},"52":{"tf":1.7320508075688772},"53":{"tf":1.0},"54":{"tf":2.23606797749979},"55":{"tf":1.4142135623730951},"556":{"tf":1.4142135623730951},"56":{"tf":1.0},"57":{"tf":1.0},"59":{"tf":1.0}}}},"r":{"c":{"df":2,"docs":{"134":{"tf":1.0},"138":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}},"o":{"df":0,"docs":{},"n":{"df":12,"docs":{"156":{"tf":1.7320508075688772},"199":{"tf":1.0},"270":{"tf":1.0},"296":{"tf":1.4142135623730951},"347":{"tf":1.0},"367":{"tf":1.0},"442":{"tf":1.0},"450":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"549":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"323":{"tf":1.0},"560":{"tf":1.0},"571":{"tf":1.4142135623730951}}}}}},"u":{"df":0,"docs":{},"n":{"df":22,"docs":{"108":{"tf":1.0},"11":{"tf":1.7320508075688772},"15":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.7320508075688772},"292":{"tf":1.0},"340":{"tf":1.4142135623730951},"341":{"tf":1.0},"357":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"385":{"tf":1.0},"41":{"tf":1.0},"431":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.0},"544":{"tf":1.0},"549":{"tf":1.0},"65":{"tf":1.4142135623730951},"8":{"tf":1.0},"87":{"tf":1.4142135623730951}}}}},"p":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":4,"docs":{"130":{"tf":1.0},"131":{"tf":1.0},"139":{"tf":1.0},"292":{"tf":1.0}}}},"r":{"df":14,"docs":{"156":{"tf":1.4142135623730951},"209":{"tf":1.0},"345":{"tf":1.7320508075688772},"346":{"tf":1.0},"347":{"tf":1.4142135623730951},"348":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.4142135623730951},"61":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"(":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"417":{"tf":1.0},"421":{"tf":1.0}}}}}}},"t":{"df":7,"docs":{"111":{"tf":1.0},"237":{"tf":1.4142135623730951},"336":{"tf":1.0},"545":{"tf":1.0},"548":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"367":{"tf":1.0}}},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"153":{"tf":1.0}}}},"t":{"df":1,"docs":{"302":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"138":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"l":{"df":81,"docs":{"110":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":2.23606797749979},"168":{"tf":1.0},"190":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.4142135623730951},"200":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":2.23606797749979},"223":{"tf":1.0},"226":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"246":{"tf":1.7320508075688772},"248":{"tf":1.0},"251":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":1.0},"255":{"tf":1.0},"256":{"tf":2.8284271247461903},"257":{"tf":2.0},"258":{"tf":1.7320508075688772},"259":{"tf":1.0},"260":{"tf":1.0},"261":{"tf":1.7320508075688772},"262":{"tf":1.0},"263":{"tf":1.4142135623730951},"264":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":2.6457513110645907},"272":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"315":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":2.0},"370":{"tf":2.0},"380":{"tf":2.8284271247461903},"383":{"tf":1.7320508075688772},"386":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.4142135623730951},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"440":{"tf":1.7320508075688772},"445":{"tf":1.0},"470":{"tf":2.0},"472":{"tf":1.0},"502":{"tf":1.0},"508":{"tf":1.0},"512":{"tf":1.0},"518":{"tf":1.7320508075688772},"519":{"tf":1.0},"520":{"tf":1.0},"521":{"tf":2.8284271247461903},"522":{"tf":1.7320508075688772},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.4142135623730951},"526":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"538":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":7,"docs":{"168":{"tf":1.0},"196":{"tf":1.0},"201":{"tf":1.0},"246":{"tf":1.0},"257":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":27,"docs":{"116":{"tf":1.0},"12":{"tf":1.0},"139":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.7320508075688772},"181":{"tf":1.0},"268":{"tf":1.0},"273":{"tf":1.0},"284":{"tf":1.0},"312":{"tf":1.0},"318":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"403":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"562":{"tf":1.0},"596":{"tf":1.7320508075688772},"62":{"tf":1.0}}},"x":{"df":16,"docs":{"156":{"tf":1.4142135623730951},"190":{"tf":1.0},"218":{"tf":1.4142135623730951},"226":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.4142135623730951},"258":{"tf":1.0},"259":{"tf":1.7320508075688772},"278":{"tf":1.7320508075688772},"311":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.4142135623730951},"350":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}}}},"i":{"c":{"df":8,"docs":{"156":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.0},"300":{"tf":1.0},"349":{"tf":1.0},"418":{"tf":1.0},"456":{"tf":1.0},"497":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"n":{"df":12,"docs":{"103":{"tf":1.4142135623730951},"112":{"tf":1.4142135623730951},"120":{"tf":1.4142135623730951},"129":{"tf":1.4142135623730951},"138":{"tf":1.4142135623730951},"147":{"tf":1.4142135623730951},"237":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"419":{"tf":1.0},"470":{"tf":1.0},"517":{"tf":1.0}}},"s":{"df":2,"docs":{"211":{"tf":1.0},"529":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"147":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"336":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"t":{"df":9,"docs":{"116":{"tf":1.0},"273":{"tf":1.0},"469":{"tf":2.23606797749979},"470":{"tf":1.7320508075688772},"472":{"tf":1.0},"475":{"tf":1.0},"487":{"tf":1.0},"503":{"tf":1.0},"543":{"tf":1.0}}}}}},"n":{"c":{"a":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"375":{"tf":1.0}}}}}},"<":{"'":{"a":{">":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"375":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":14,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"188":{"tf":1.4142135623730951},"197":{"tf":1.0},"245":{"tf":1.0},"288":{"tf":1.0},"332":{"tf":1.0},"336":{"tf":1.0},"359":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"422":{"tf":1.4142135623730951},"431":{"tf":1.0},"47":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"n":{"df":29,"docs":{"104":{"tf":1.4142135623730951},"105":{"tf":1.4142135623730951},"119":{"tf":1.0},"121":{"tf":1.4142135623730951},"122":{"tf":1.4142135623730951},"130":{"tf":1.7320508075688772},"131":{"tf":1.4142135623730951},"136":{"tf":1.0},"137":{"tf":1.0},"139":{"tf":1.4142135623730951},"140":{"tf":2.0},"148":{"tf":1.4142135623730951},"149":{"tf":1.4142135623730951},"156":{"tf":1.0},"16":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"308":{"tf":1.0},"370":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"511":{"tf":1.0},"569":{"tf":1.4142135623730951},"57":{"tf":1.0},"577":{"tf":1.4142135623730951}}}}},"l":{"df":0,"docs":{},"u":{"d":{"df":2,"docs":{"284":{"tf":1.0},"336":{"tf":1.4142135623730951}}},"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":2,"docs":{"458":{"tf":1.0},"548":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":10,"docs":{"156":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"374":{"tf":1.0},"470":{"tf":1.0},"521":{"tf":1.0},"599":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"178":{"tf":1.0},"218":{"tf":1.0},"418":{"tf":1.0},"6":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"171":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":2,"docs":{"256":{"tf":1.0},"521":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"d":{"df":10,"docs":{"110":{"tf":1.0},"221":{"tf":1.0},"237":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"360":{"tf":1.0},"469":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"347":{"tf":1.0},"431":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"m":{"df":3,"docs":{"178":{"tf":1.0},"230":{"tf":1.0},"284":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"157":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"340":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"s":{"df":16,"docs":{"178":{"tf":1.4142135623730951},"200":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"268":{"tf":1.7320508075688772},"278":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"300":{"tf":1.4142135623730951},"309":{"tf":1.0},"328":{"tf":1.0},"361":{"tf":1.4142135623730951},"397":{"tf":1.0},"42":{"tf":1.0},"481":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"n":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"178":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":3,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"292":{"tf":2.0}},"e":{"c":{"df":0,"docs":{},"t":{"df":9,"docs":{"177":{"tf":2.23606797749979},"178":{"tf":2.449489742783178},"276":{"tf":1.4142135623730951},"397":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":2.0},"436":{"tf":1.0},"503":{"tf":1.0},"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"s":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":4,"docs":{"119":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"125":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":3,"docs":{"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"304":{"tf":1.0}}}},"r":{"df":0,"docs":{},"v":{"df":1,"docs":{"271":{"tf":1.0}}}}},"i":{"d":{"df":13,"docs":{"155":{"tf":1.0},"156":{"tf":1.0},"179":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.4142135623730951},"221":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"498":{"tf":1.4142135623730951},"55":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"203":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.0},"304":{"tf":1.0},"516":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":5,"docs":{"156":{"tf":1.0},"178":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"531":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"l":{"df":7,"docs":{"217":{"tf":1.0},"336":{"tf":2.0},"380":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.7320508075688772},"542":{"tf":1.0},"548":{"tf":1.0}},"e":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"(":{"\"":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"410":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"284":{"tf":1.0}}}}}}},"df":3,"docs":{"328":{"tf":2.0},"347":{"tf":1.0},"380":{"tf":1.7320508075688772}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"108":{"tf":1.0},"218":{"tf":1.0},"336":{"tf":1.4142135623730951},"579":{"tf":1.0}},"t":{"df":3,"docs":{"486":{"tf":1.0},"546":{"tf":1.0},"560":{"tf":1.0}}}}}},"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":12,"docs":{"12":{"tf":1.4142135623730951},"136":{"tf":1.0},"152":{"tf":1.4142135623730951},"195":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"23":{"tf":1.0},"29":{"tf":1.0},"42":{"tf":1.0},"485":{"tf":1.4142135623730951},"52":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":1,"docs":{"366":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"284":{"tf":1.0}}}},"m":{"df":4,"docs":{"199":{"tf":1.0},"276":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0}},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"412":{"tf":1.0}}}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":10,"docs":{"112":{"tf":1.0},"154":{"tf":1.4142135623730951},"16":{"tf":1.0},"217":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"347":{"tf":1.7320508075688772},"562":{"tf":1.0},"573":{"tf":1.0},"597":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"116":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":2,"docs":{"302":{"tf":1.0},"62":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"156":{"tf":1.0},"349":{"tf":1.0},"422":{"tf":1.0},"562":{"tf":1.0}},"i":{"df":1,"docs":{"358":{"tf":1.0}}}}},"x":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"&":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"328":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"<":{"'":{"_":{"df":5,"docs":{"217":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":1.7320508075688772},"508":{"tf":1.0},"568":{"tf":1.0}}},"a":{"df":1,"docs":{"421":{"tf":1.0}}},"b":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":2.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"=":{"0":{"df":0,"docs":{},"x":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"a":{"df":0,"docs":{},"f":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":29,"docs":{"197":{"tf":1.0},"200":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"292":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"320":{"tf":1.0},"336":{"tf":2.0},"343":{"tf":1.0},"349":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":2.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"504":{"tf":1.0},"573":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":8,"docs":{"169":{"tf":1.0},"209":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.0},"448":{"tf":1.4142135623730951},"456":{"tf":1.0},"91":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"561":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":8,"docs":{"120":{"tf":1.4142135623730951},"16":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.0},"389":{"tf":1.0},"6":{"tf":1.7320508075688772},"603":{"tf":1.4142135623730951}},"o":{"df":0,"docs":{},"r":{"df":4,"docs":{"15":{"tf":1.0},"292":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"470":{"tf":1.0}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":12,"docs":{"131":{"tf":1.4142135623730951},"156":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"324":{"tf":1.0},"349":{"tf":1.0},"440":{"tf":1.4142135623730951},"448":{"tf":1.0},"469":{"tf":1.0},"539":{"tf":1.0},"61":{"tf":1.0},"79":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"_":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":3,"docs":{"213":{"tf":1.0},"309":{"tf":1.0},"341":{"tf":1.0}}}},"r":{"df":0,"docs":{},"s":{"df":10,"docs":{"154":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"357":{"tf":1.0},"359":{"tf":1.4142135623730951},"36":{"tf":1.0},"561":{"tf":1.0},"597":{"tf":2.23606797749979},"598":{"tf":1.4142135623730951},"599":{"tf":1.0}}},"t":{"df":9,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"324":{"tf":1.0},"440":{"tf":1.4142135623730951},"460":{"tf":1.0},"522":{"tf":1.0}}}},"y":{"df":4,"docs":{"27":{"tf":1.0},"494":{"tf":1.0},"507":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951}}}},"i":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"456":{"tf":1.0}}},"df":0,"docs":{}}}}},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":1,"docs":{"380":{"tf":1.0}}}},"l":{"df":1,"docs":{"522":{"tf":1.0}}},"p":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"6":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"9":{"9":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"41":{"tf":1.0},"517":{"tf":1.4142135623730951},"535":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951}}}}},"r":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"3":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"i":{"df":10,"docs":{"209":{"tf":1.0},"213":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"380":{"tf":1.0},"397":{"tf":1.0},"423":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"397":{"tf":2.0}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"336":{"tf":1.4142135623730951},"338":{"tf":1.0}},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{">":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"397":{"tf":2.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"404":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{":":{":":{"_":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"a":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"$":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"b":{"c":{"c":{"9":{"1":{"5":{"df":0,"docs":{},"e":{"6":{"6":{"8":{"c":{"7":{"c":{"a":{"1":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"u":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"e":{"d":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":19,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"188":{"tf":1.0},"209":{"tf":1.0},"278":{"tf":1.4142135623730951},"3":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.4142135623730951},"347":{"tf":1.7320508075688772},"389":{"tf":1.7320508075688772},"394":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.4142135623730951},"47":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"516":{"tf":1.0},"544":{"tf":1.0}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":9,"docs":{"156":{"tf":1.0},"29":{"tf":1.0},"349":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"42":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"328":{"tf":1.0},"380":{"tf":1.0}}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}}}}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"469":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"df":10,"docs":{"134":{"tf":1.0},"156":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"223":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":2.6457513110645907},"347":{"tf":1.0},"422":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"292":{"tf":1.0},"482":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"t":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":3,"docs":{"268":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":2.449489742783178}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.4142135623730951}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"259":{"tf":1.0},"389":{"tf":1.0}}}}},"df":0,"docs":{}}}}}},"p":{"df":0,"docs":{},"l":{"df":7,"docs":{"11":{"tf":1.0},"183":{"tf":1.0},"195":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0}}}},"r":{"df":0,"docs":{},"s":{"df":11,"docs":{"213":{"tf":1.0},"307":{"tf":1.4142135623730951},"310":{"tf":1.0},"336":{"tf":1.0},"36":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.4142135623730951},"431":{"tf":1.0},"515":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"156":{"tf":1.0},"29":{"tf":1.0},"370":{"tf":1.0},"42":{"tf":1.0},"47":{"tf":1.0}}},"y":{"df":1,"docs":{"54":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":2,"docs":{"347":{"tf":1.0},"502":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"p":{"df":0,"docs":{},"u":{"df":6,"docs":{"127":{"tf":1.0},"331":{"tf":1.0},"347":{"tf":2.23606797749979},"350":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"65":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"404":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"221":{"tf":1.0}}},":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"<":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"268":{"tf":1.7320508075688772}}}}}}}}}},"df":0,"docs":{}}}}}}},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"a":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{":":{":":{"d":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":38,"docs":{"156":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"187":{"tf":1.0},"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"22":{"tf":1.0},"221":{"tf":1.7320508075688772},"246":{"tf":1.0},"257":{"tf":1.0},"276":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"321":{"tf":1.4142135623730951},"324":{"tf":1.0},"325":{"tf":2.449489742783178},"338":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"370":{"tf":2.23606797749979},"372":{"tf":1.7320508075688772},"380":{"tf":1.4142135623730951},"383":{"tf":1.7320508075688772},"385":{"tf":1.0},"458":{"tf":1.0},"478":{"tf":1.7320508075688772},"481":{"tf":1.4142135623730951},"504":{"tf":1.0},"517":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"538":{"tf":2.0},"545":{"tf":1.7320508075688772},"546":{"tf":1.4142135623730951},"547":{"tf":1.0},"548":{"tf":1.0},"6":{"tf":1.0},"61":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":12,"docs":{"103":{"tf":1.4142135623730951},"112":{"tf":1.7320508075688772},"120":{"tf":1.4142135623730951},"129":{"tf":1.7320508075688772},"137":{"tf":1.0},"138":{"tf":1.4142135623730951},"147":{"tf":1.7320508075688772},"232":{"tf":1.0},"276":{"tf":1.0},"380":{"tf":1.0},"440":{"tf":1.0},"504":{"tf":1.0}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"l":{"df":1,"docs":{"408":{"tf":1.0}}}},"z":{"df":0,"docs":{},"i":{"df":1,"docs":{"89":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":37,"docs":{"110":{"tf":1.4142135623730951},"154":{"tf":1.0},"157":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"188":{"tf":1.0},"21":{"tf":1.0},"221":{"tf":1.4142135623730951},"230":{"tf":1.0},"232":{"tf":1.0},"24":{"tf":1.4142135623730951},"256":{"tf":1.0},"259":{"tf":1.0},"26":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"309":{"tf":1.0},"31":{"tf":1.0},"319":{"tf":1.7320508075688772},"328":{"tf":1.4142135623730951},"341":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"38":{"tf":1.4142135623730951},"39":{"tf":1.0},"417":{"tf":1.0},"44":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"472":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.0},"508":{"tf":1.0},"521":{"tf":1.0},"64":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"59":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"i":{"c":{"df":4,"docs":{"190":{"tf":1.0},"276":{"tf":1.0},"286":{"tf":1.0},"312":{"tf":1.0}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"b":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}}},"df":3,"docs":{"268":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"'":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"259":{"tf":1.0}}}}},"u":{"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"+":{"c":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":1,"docs":{"448":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"248":{"tf":1.0},"431":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":2,"docs":{"153":{"tf":1.0},"9":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"258":{"tf":1.0}}},"u":{"df":3,"docs":{"198":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":35,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"330":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.4142135623730951},"360":{"tf":1.0},"370":{"tf":1.0},"391":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":1.0},"456":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"507":{"tf":1.4142135623730951},"508":{"tf":1.4142135623730951},"516":{"tf":1.0},"538":{"tf":1.4142135623730951},"550":{"tf":1.0},"567":{"tf":1.0},"572":{"tf":1.0},"576":{"tf":1.0},"65":{"tf":1.0},"77":{"tf":1.4142135623730951},"79":{"tf":1.0},"82":{"tf":1.4142135623730951},"87":{"tf":1.4142135623730951},"9":{"tf":1.0},"92":{"tf":1.4142135623730951}}}}}},"s":{"df":1,"docs":{"153":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"538":{"tf":1.0}}}}},"v":{"df":3,"docs":{"188":{"tf":1.0},"268":{"tf":1.0},"470":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":30,"docs":{"102":{"tf":1.4142135623730951},"111":{"tf":1.4142135623730951},"119":{"tf":1.4142135623730951},"123":{"tf":1.7320508075688772},"124":{"tf":1.0},"125":{"tf":1.0},"126":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.7320508075688772},"129":{"tf":1.4142135623730951},"130":{"tf":1.4142135623730951},"131":{"tf":1.0},"137":{"tf":1.4142135623730951},"146":{"tf":1.4142135623730951},"221":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.4142135623730951},"328":{"tf":1.0},"330":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"412":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"492":{"tf":1.0},"503":{"tf":1.0},"514":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0}}}}}},"t":{"df":3,"docs":{"110":{"tf":1.0},"153":{"tf":1.0},"209":{"tf":1.0}}}},"x":{".":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"0":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"f":{"5":{"0":{"df":1,"docs":{"404":{"tf":2.8284271247461903}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":10,"docs":{"197":{"tf":1.0},"217":{"tf":1.0},"328":{"tf":2.6457513110645907},"336":{"tf":1.7320508075688772},"418":{"tf":1.7320508075688772},"419":{"tf":1.0},"421":{"tf":3.4641016151377544},"422":{"tf":1.7320508075688772},"423":{"tf":1.0},"568":{"tf":1.0}}},"y":{"c":{"df":0,"docs":{},"l":{"df":2,"docs":{"313":{"tf":1.4142135623730951},"539":{"tf":2.0}}}},"df":0,"docs":{}}},"d":{"a":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"218":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"417":{"tf":1.4142135623730951},"425":{"tf":1.0}}}},"l":{"df":1,"docs":{"436":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"k":{"df":3,"docs":{"199":{"tf":1.0},"284":{"tf":1.0},"538":{"tf":1.0}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"603":{"tf":1.0}}}}}}}},"t":{"a":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"312":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":15,"docs":{"116":{"tf":1.0},"156":{"tf":1.4142135623730951},"175":{"tf":1.7320508075688772},"176":{"tf":1.0},"177":{"tf":1.7320508075688772},"178":{"tf":1.4142135623730951},"179":{"tf":1.4142135623730951},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"315":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.0}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"127":{"tf":1.0}}}}}},"df":31,"docs":{"125":{"tf":1.4142135623730951},"153":{"tf":1.0},"155":{"tf":1.4142135623730951},"156":{"tf":1.0},"168":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":2.449489742783178},"217":{"tf":2.0},"218":{"tf":1.0},"276":{"tf":1.4142135623730951},"307":{"tf":1.7320508075688772},"308":{"tf":1.4142135623730951},"309":{"tf":1.0},"312":{"tf":2.23606797749979},"320":{"tf":1.0},"347":{"tf":2.23606797749979},"370":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"419":{"tf":1.7320508075688772},"469":{"tf":1.0},"470":{"tf":2.6457513110645907},"538":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"564":{"tf":1.4142135623730951},"599":{"tf":1.0},"62":{"tf":1.0}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":1,"docs":{"209":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"478":{"tf":1.0}}}},"y":{"'":{"df":1,"docs":{"284":{"tf":1.0}}},"df":10,"docs":{"239":{"tf":1.0},"244":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"359":{"tf":1.0},"361":{"tf":1.0},"397":{"tf":1.0},"503":{"tf":1.4142135623730951},"54":{"tf":1.0},"599":{"tf":1.0}}}},"b":{"df":1,"docs":{"599":{"tf":1.4142135623730951}}},"d":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":2.23606797749979}}}}}}}},"df":3,"docs":{"150":{"tf":1.0},"347":{"tf":2.0},"539":{"tf":1.4142135623730951}},"e":{"a":{"d":{"df":1,"docs":{"284":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":8,"docs":{"309":{"tf":1.4142135623730951},"315":{"tf":1.0},"318":{"tf":2.23606797749979},"319":{"tf":1.7320508075688772},"323":{"tf":1.0},"325":{"tf":1.0},"408":{"tf":1.0},"539":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":19,"docs":{"189":{"tf":1.4142135623730951},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"231":{"tf":1.0},"240":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"341":{"tf":1.4142135623730951},"380":{"tf":1.0},"394":{"tf":1.0},"401":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"521":{"tf":1.0},"537":{"tf":1.0},"599":{"tf":1.4142135623730951}},"t":{"df":2,"docs":{"256":{"tf":1.0},"521":{"tf":1.0}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"!":{"(":{"\"":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":22,"docs":{"156":{"tf":1.4142135623730951},"168":{"tf":1.0},"174":{"tf":1.0},"203":{"tf":1.0},"282":{"tf":1.7320508075688772},"283":{"tf":1.0},"284":{"tf":1.0},"285":{"tf":1.0},"286":{"tf":2.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"309":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.0},"414":{"tf":1.7320508075688772},"433":{"tf":1.0},"452":{"tf":1.0},"599":{"tf":1.0},"79":{"tf":1.0}},"g":{"df":10,"docs":{"171":{"tf":1.0},"284":{"tf":2.6457513110645907},"286":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"309":{"tf":1.0},"404":{"tf":1.4142135623730951},"408":{"tf":1.0},"414":{"tf":1.0},"448":{"tf":1.4142135623730951},"453":{"tf":1.7320508075688772}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":1,"docs":{"214":{"tf":1.0}}}}}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"270":{"tf":1.0},"273":{"tf":1.0},"502":{"tf":1.0},"526":{"tf":1.0}}}}},"i":{"d":{"df":34,"docs":{"125":{"tf":1.0},"134":{"tf":1.0},"178":{"tf":1.0},"187":{"tf":1.4142135623730951},"189":{"tf":1.0},"209":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"233":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":2.23606797749979},"284":{"tf":1.7320508075688772},"292":{"tf":1.0},"300":{"tf":2.0},"307":{"tf":1.0},"308":{"tf":1.4142135623730951},"309":{"tf":1.4142135623730951},"313":{"tf":1.0},"32":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"357":{"tf":1.7320508075688772},"358":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"408":{"tf":1.0},"431":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.4142135623730951},"469":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.7320508075688772},"562":{"tf":1.0},"84":{"tf":1.0}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"237":{"tf":1.0}}}},"s":{"df":6,"docs":{"248":{"tf":1.0},"302":{"tf":1.4142135623730951},"303":{"tf":1.0},"357":{"tf":1.0},"359":{"tf":2.0},"389":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"r":{"df":4,"docs":{"209":{"tf":1.0},"230":{"tf":1.0},"370":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":1,"docs":{"309":{"tf":1.0}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":2,"docs":{"341":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"478":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"457":{"tf":1.7320508075688772}},"e":{"df":0,"docs":{},"p":{"df":7,"docs":{"171":{"tf":1.0},"192":{"tf":1.0},"211":{"tf":1.0},"268":{"tf":1.0},"313":{"tf":1.0},"347":{"tf":1.0},"408":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"408":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.0},"84":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"183":{"tf":1.0}}}}}},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":12,"docs":{"116":{"tf":1.0},"190":{"tf":1.0},"321":{"tf":1.0},"502":{"tf":1.7320508075688772},"507":{"tf":1.0},"511":{"tf":1.0},"526":{"tf":1.4142135623730951},"527":{"tf":1.0},"529":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.4142135623730951},"599":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"246":{"tf":1.0},"292":{"tf":1.0}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":1,"docs":{"418":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"df":8,"docs":{"209":{"tf":1.7320508075688772},"292":{"tf":1.0},"380":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"532":{"tf":1.0},"6":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":5,"docs":{"3":{"tf":1.0},"336":{"tf":1.0},"343":{"tf":1.0},"567":{"tf":1.0},"568":{"tf":1.4142135623730951}}}}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"300":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"a":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"df":2,"docs":{"380":{"tf":3.605551275463989},"516":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":2,"docs":{"196":{"tf":1.0},"397":{"tf":1.7320508075688772}}}},"t":{"a":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}},"v":{"df":1,"docs":{"414":{"tf":1.0}}}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":3,"docs":{"181":{"tf":1.0},"423":{"tf":1.0},"480":{"tf":1.0}}}}}}}},"n":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"125":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"412":{"tf":1.0}}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"349":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":28,"docs":{"174":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"237":{"tf":2.0},"240":{"tf":1.0},"300":{"tf":1.0},"323":{"tf":1.0},"349":{"tf":1.4142135623730951},"353":{"tf":1.0},"370":{"tf":2.6457513110645907},"380":{"tf":1.0},"408":{"tf":1.0},"414":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"470":{"tf":2.0},"513":{"tf":1.0},"516":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"542":{"tf":1.0},"562":{"tf":1.0},"580":{"tf":1.0},"599":{"tf":1.7320508075688772}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":15,"docs":{"116":{"tf":1.0},"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"429":{"tf":1.7320508075688772},"430":{"tf":1.0},"431":{"tf":1.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.0},"511":{"tf":1.0},"538":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"358":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"u":{"df":1,"docs":{"328":{"tf":2.0}},"e":{"df":0,"docs":{},"u":{"df":1,"docs":{"539":{"tf":1.4142135623730951}}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":39,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"218":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"423":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"e":{"(":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":19,"docs":{"182":{"tf":1.0},"233":{"tf":1.0},"25":{"tf":1.0},"343":{"tf":1.0},"36":{"tf":1.4142135623730951},"41":{"tf":1.0},"483":{"tf":1.0},"486":{"tf":1.4142135623730951},"487":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"550":{"tf":1.0},"552":{"tf":1.0},"560":{"tf":1.4142135623730951},"597":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"9":{"tf":1.0},"94":{"tf":1.0}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":7,"docs":{"108":{"tf":1.4142135623730951},"116":{"tf":1.4142135623730951},"125":{"tf":1.4142135623730951},"134":{"tf":1.4142135623730951},"143":{"tf":1.4142135623730951},"584":{"tf":1.0},"99":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"347":{"tf":1.4142135623730951},"349":{"tf":1.7320508075688772}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":63,"docs":{"11":{"tf":1.0},"143":{"tf":1.0},"156":{"tf":2.449489742783178},"278":{"tf":1.0},"3":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.4142135623730951},"363":{"tf":1.7320508075688772},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"41":{"tf":1.0},"433":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":2.8284271247461903},"486":{"tf":1.0},"487":{"tf":1.4142135623730951},"49":{"tf":1.4142135623730951},"494":{"tf":1.0},"515":{"tf":1.0},"539":{"tf":1.0},"560":{"tf":2.449489742783178},"561":{"tf":2.449489742783178},"562":{"tf":2.449489742783178},"563":{"tf":1.0},"564":{"tf":1.0},"565":{"tf":1.0},"566":{"tf":1.4142135623730951},"567":{"tf":1.0},"568":{"tf":1.0},"569":{"tf":1.0},"570":{"tf":1.7320508075688772},"571":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":1.0},"574":{"tf":1.0},"575":{"tf":1.0},"576":{"tf":1.0},"577":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0},"582":{"tf":1.0},"583":{"tf":1.0},"584":{"tf":1.0},"585":{"tf":1.0},"586":{"tf":1.0},"587":{"tf":1.0},"588":{"tf":1.0},"589":{"tf":1.0},"590":{"tf":1.0},"591":{"tf":1.0},"592":{"tf":1.0},"593":{"tf":1.0},"594":{"tf":1.0},"595":{"tf":1.0},"596":{"tf":1.0},"61":{"tf":2.23606797749979},"62":{"tf":1.4142135623730951},"67":{"tf":1.0},"92":{"tf":1.0}}}},"r":{"df":8,"docs":{"183":{"tf":1.0},"421":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"571":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"k":{"df":1,"docs":{"370":{"tf":1.0}}},"p":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"209":{"tf":1.0},"96":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"245":{"tf":1.0}}}},"i":{"df":0,"docs":{},"t":{"df":5,"docs":{"188":{"tf":1.0},"276":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.0},"389":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"178":{"tf":2.23606797749979},"181":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"401":{"tf":1.0},"579":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":38,"docs":{"12":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.0},"19":{"tf":1.0},"200":{"tf":1.0},"218":{"tf":1.0},"225":{"tf":1.0},"27":{"tf":1.4142135623730951},"29":{"tf":1.4142135623730951},"302":{"tf":1.0},"33":{"tf":2.0},"349":{"tf":1.0},"353":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"42":{"tf":1.4142135623730951},"437":{"tf":1.0},"450":{"tf":1.0},"457":{"tf":1.0},"47":{"tf":2.0},"48":{"tf":1.7320508075688772},"485":{"tf":1.0},"489":{"tf":1.0},"504":{"tf":1.0},"513":{"tf":1.4142135623730951},"516":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"544":{"tf":1.0},"599":{"tf":1.0},"79":{"tf":1.0},"97":{"tf":1.0},"99":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"336":{"tf":1.0},"419":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"358":{"tf":1.0}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":7,"docs":{"276":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.4142135623730951},"389":{"tf":1.0},"516":{"tf":1.0},"538":{"tf":1.0},"9":{"tf":1.0}}}}}}}},"v":{"df":2,"docs":{"284":{"tf":1.0},"289":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":46,"docs":{"110":{"tf":2.0},"116":{"tf":1.0},"120":{"tf":1.0},"127":{"tf":1.0},"131":{"tf":1.0},"136":{"tf":1.4142135623730951},"146":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"189":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":2.23606797749979},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.4142135623730951},"239":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.4142135623730951},"286":{"tf":1.7320508075688772},"287":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.0},"339":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"393":{"tf":1.0},"403":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0},"548":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.4142135623730951},"71":{"tf":1.4142135623730951},"74":{"tf":1.0},"8":{"tf":1.0},"89":{"tf":1.4142135623730951}}}}}},"i":{"c":{"df":1,"docs":{"8":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":1,"docs":{"336":{"tf":1.0}}}}},"s":{"df":1,"docs":{"423":{"tf":1.0}}}}}},"i":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":9,"docs":{"171":{"tf":1.0},"209":{"tf":1.0},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"315":{"tf":1.0},"397":{"tf":1.0},"434":{"tf":1.0},"436":{"tf":1.0},"456":{"tf":1.0}},"t":{"df":3,"docs":{"209":{"tf":1.0},"292":{"tf":1.0},"572":{"tf":1.0}}}}}}}},"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":13,"docs":{"199":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.4142135623730951},"234":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"321":{"tf":1.4142135623730951},"322":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"463":{"tf":1.0},"497":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"292":{"tf":1.0},"599":{"tf":1.0}}}}}},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":87,"docs":{"101":{"tf":1.4142135623730951},"110":{"tf":1.4142135623730951},"111":{"tf":1.0},"118":{"tf":2.0},"127":{"tf":1.7320508075688772},"136":{"tf":1.4142135623730951},"145":{"tf":1.4142135623730951},"146":{"tf":1.0},"156":{"tf":1.4142135623730951},"164":{"tf":1.7320508075688772},"174":{"tf":1.4142135623730951},"184":{"tf":1.4142135623730951},"190":{"tf":1.0},"192":{"tf":1.4142135623730951},"195":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.4142135623730951},"209":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.4142135623730951},"218":{"tf":1.0},"22":{"tf":1.0},"226":{"tf":1.4142135623730951},"240":{"tf":1.4142135623730951},"241":{"tf":1.4142135623730951},"251":{"tf":1.4142135623730951},"258":{"tf":1.0},"264":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"273":{"tf":1.4142135623730951},"278":{"tf":1.0},"28":{"tf":1.4142135623730951},"281":{"tf":1.4142135623730951},"289":{"tf":1.4142135623730951},"292":{"tf":1.0},"297":{"tf":1.4142135623730951},"300":{"tf":1.0},"302":{"tf":1.0},"317":{"tf":1.4142135623730951},"32":{"tf":1.0},"333":{"tf":1.4142135623730951},"336":{"tf":1.0},"340":{"tf":1.4142135623730951},"350":{"tf":1.0},"353":{"tf":1.4142135623730951},"359":{"tf":1.0},"367":{"tf":1.7320508075688772},"37":{"tf":1.0},"372":{"tf":1.4142135623730951},"375":{"tf":1.4142135623730951},"377":{"tf":1.4142135623730951},"383":{"tf":1.7320508075688772},"385":{"tf":1.4142135623730951},"386":{"tf":1.4142135623730951},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":2.449489742783178},"402":{"tf":1.4142135623730951},"414":{"tf":1.4142135623730951},"421":{"tf":1.0},"423":{"tf":1.0},"428":{"tf":1.4142135623730951},"436":{"tf":1.4142135623730951},"445":{"tf":1.4142135623730951},"448":{"tf":1.0},"45":{"tf":1.0},"453":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.4142135623730951},"470":{"tf":1.0},"475":{"tf":1.4142135623730951},"483":{"tf":1.7320508075688772},"490":{"tf":1.0},"501":{"tf":1.0},"507":{"tf":1.4142135623730951},"515":{"tf":1.0},"519":{"tf":1.0},"52":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.4142135623730951},"54":{"tf":1.0},"55":{"tf":1.4142135623730951},"599":{"tf":1.7320508075688772},"61":{"tf":1.0},"64":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"138":{"tf":1.0}}}}}}}},"i":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":18,"docs":{"122":{"tf":1.0},"181":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"278":{"tf":1.4142135623730951},"300":{"tf":1.0},"324":{"tf":1.0},"330":{"tf":1.0},"350":{"tf":1.0},"372":{"tf":1.0},"375":{"tf":1.0},"389":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.0},"570":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0}},"i":{"df":3,"docs":{"156":{"tf":1.0},"392":{"tf":1.0},"421":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"g":{"df":7,"docs":{"234":{"tf":1.0},"246":{"tf":1.0},"271":{"tf":1.0},"311":{"tf":1.0},"408":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"341":{"tf":1.0}}}}}}}},"p":{"df":2,"docs":{"261":{"tf":1.0},"84":{"tf":1.0}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"214":{"tf":1.0},"394":{"tf":1.0},"508":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":10,"docs":{"16":{"tf":1.0},"211":{"tf":1.0},"3":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"457":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"603":{"tf":1.4142135623730951}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":6,"docs":{"157":{"tf":1.0},"21":{"tf":1.0},"26":{"tf":1.0},"39":{"tf":1.0},"489":{"tf":1.0},"562":{"tf":1.0}}}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"358":{"tf":1.0},"359":{"tf":1.0}}}}},"s":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":1,"docs":{"278":{"tf":1.7320508075688772}},"e":{"df":1,"docs":{"27":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"576":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":17,"docs":{"209":{"tf":1.0},"358":{"tf":1.4142135623730951},"380":{"tf":1.0},"41":{"tf":2.0},"478":{"tf":1.0},"510":{"tf":1.4142135623730951},"511":{"tf":1.4142135623730951},"512":{"tf":1.4142135623730951},"513":{"tf":1.7320508075688772},"528":{"tf":1.4142135623730951},"529":{"tf":1.4142135623730951},"530":{"tf":1.4142135623730951},"531":{"tf":1.4142135623730951},"542":{"tf":1.4142135623730951},"543":{"tf":1.4142135623730951},"544":{"tf":1.4142135623730951},"545":{"tf":1.7320508075688772}}}}}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"457":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"d":{"df":4,"docs":{"357":{"tf":1.0},"363":{"tf":1.0},"392":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"278":{"tf":1.0}}}},"df":0,"docs":{}}},"v":{"df":12,"docs":{"179":{"tf":1.0},"245":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.4142135623730951},"347":{"tf":1.0},"359":{"tf":1.4142135623730951},"372":{"tf":1.0},"389":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"599":{"tf":1.0}}}},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":19,"docs":{"156":{"tf":1.0},"172":{"tf":1.0},"209":{"tf":1.0},"212":{"tf":1.0},"221":{"tf":1.0},"25":{"tf":1.7320508075688772},"278":{"tf":1.0},"3":{"tf":1.0},"347":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.4142135623730951},"380":{"tf":1.0},"4":{"tf":1.0},"52":{"tf":1.0},"538":{"tf":1.0},"57":{"tf":1.0},"571":{"tf":1.0},"599":{"tf":1.0},"602":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"k":{"df":1,"docs":{"539":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":1,"docs":{"41":{"tf":1.0}}}}},"m":{"a":{"df":0,"docs":{},"y":{"df":2,"docs":{"370":{"tf":1.0},"408":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":12,"docs":{"276":{"tf":1.0},"334":{"tf":1.7320508075688772},"335":{"tf":1.0},"336":{"tf":1.0},"337":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0}}}}}},"p":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":4,"docs":{"223":{"tf":1.0},"336":{"tf":1.0},"504":{"tf":1.0},"516":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"a":{"d":{"df":1,"docs":{"54":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"300":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":1,"docs":{"211":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.0},"211":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":7,"docs":{"116":{"tf":1.0},"125":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.0},"8":{"tf":1.0}}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"'":{"df":1,"docs":{"119":{"tf":1.4142135623730951}}},"df":14,"docs":{"114":{"tf":1.7320508075688772},"115":{"tf":1.0},"116":{"tf":1.7320508075688772},"117":{"tf":1.0},"118":{"tf":1.7320508075688772},"119":{"tf":1.7320508075688772},"120":{"tf":1.4142135623730951},"121":{"tf":1.0},"122":{"tf":1.4142135623730951},"209":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":2.0}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.7320508075688772}}}}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":2,"docs":{"380":{"tf":1.0},"408":{"tf":1.0}}}}},"j":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":1,"docs":{"72":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"_":{"a":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"_":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"502":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"g":{"c":{"d":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"178":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"310":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":5,"docs":{"307":{"tf":1.7320508075688772},"308":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.4142135623730951}}}}}},"df":1,"docs":{"307":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"c":{"df":60,"docs":{"12":{"tf":1.0},"15":{"tf":1.0},"17":{"tf":1.0},"178":{"tf":1.0},"181":{"tf":1.0},"23":{"tf":1.0},"246":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"309":{"tf":1.0},"311":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.6457513110645907},"383":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"47":{"tf":1.0},"487":{"tf":1.0},"49":{"tf":1.0},"552":{"tf":1.0},"560":{"tf":1.7320508075688772},"561":{"tf":2.0},"562":{"tf":2.23606797749979},"563":{"tf":1.0},"564":{"tf":1.0},"565":{"tf":1.0},"566":{"tf":1.0},"567":{"tf":1.0},"568":{"tf":1.0},"569":{"tf":1.0},"570":{"tf":1.0},"571":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":1.0},"574":{"tf":1.0},"575":{"tf":1.0},"576":{"tf":1.0},"577":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0},"582":{"tf":1.0},"583":{"tf":1.0},"584":{"tf":1.0},"585":{"tf":1.0},"586":{"tf":1.0},"587":{"tf":1.0},"588":{"tf":1.0},"589":{"tf":1.0},"590":{"tf":1.0},"591":{"tf":1.0},"592":{"tf":1.0},"593":{"tf":1.0},"594":{"tf":1.0},"595":{"tf":1.0},"596":{"tf":1.0},"599":{"tf":1.0},"603":{"tf":1.0},"9":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":37,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"12":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.0},"167":{"tf":1.0},"17":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"18":{"tf":1.7320508075688772},"190":{"tf":1.0},"203":{"tf":1.0},"217":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"246":{"tf":1.0},"268":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"365":{"tf":1.4142135623730951},"367":{"tf":1.4142135623730951},"380":{"tf":1.0},"391":{"tf":1.0},"457":{"tf":1.0},"478":{"tf":2.6457513110645907},"480":{"tf":1.0},"485":{"tf":1.0},"487":{"tf":1.4142135623730951},"51":{"tf":1.7320508075688772},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"560":{"tf":1.7320508075688772},"562":{"tf":1.0},"599":{"tf":1.4142135623730951},"8":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.0}}}}}}}},"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"456":{"tf":1.0}}}},"df":18,"docs":{"156":{"tf":1.0},"189":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"248":{"tf":1.0},"312":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"331":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.4142135623730951},"413":{"tf":1.0},"458":{"tf":1.7320508075688772},"475":{"tf":1.0},"487":{"tf":1.0},"504":{"tf":1.0},"550":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":51,"docs":{"155":{"tf":1.0},"156":{"tf":2.23606797749979},"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.4142135623730951},"169":{"tf":1.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"178":{"tf":1.4142135623730951},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"217":{"tf":1.0},"232":{"tf":1.0},"252":{"tf":1.0},"276":{"tf":1.7320508075688772},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.0},"311":{"tf":1.0},"313":{"tf":1.0},"33":{"tf":1.0},"35":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"404":{"tf":1.4142135623730951},"405":{"tf":1.4142135623730951},"408":{"tf":1.4142135623730951},"418":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"423":{"tf":1.0},"431":{"tf":1.0},"445":{"tf":1.4142135623730951},"457":{"tf":1.7320508075688772},"47":{"tf":1.0},"527":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"544":{"tf":1.0},"559":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"139":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"472":{"tf":1.0},"94":{"tf":1.0},"97":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"n":{"'":{"df":0,"docs":{},"t":{"df":45,"docs":{"11":{"tf":1.0},"136":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"156":{"tf":1.7320508075688772},"192":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"25":{"tf":1.0},"258":{"tf":1.0},"27":{"tf":1.0},"315":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.4142135623730951},"367":{"tf":1.4142135623730951},"397":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.0},"405":{"tf":1.7320508075688772},"408":{"tf":1.0},"41":{"tf":1.0},"410":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.4142135623730951},"463":{"tf":1.0},"48":{"tf":1.4142135623730951},"481":{"tf":1.0},"483":{"tf":1.0},"49":{"tf":1.0},"499":{"tf":1.0},"50":{"tf":1.4142135623730951},"503":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.4142135623730951},"534":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.4142135623730951},"68":{"tf":1.4142135623730951},"89":{"tf":1.0},"96":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"e":{"df":18,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"188":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"423":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"558":{"tf":1.0},"56":{"tf":1.0}}}},"t":{"df":1,"docs":{"539":{"tf":1.0}}},"u":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"538":{"tf":1.0},"599":{"tf":1.0}}},"t":{"df":4,"docs":{"268":{"tf":1.0},"278":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":0,"docs":{},"n":{"df":17,"docs":{"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"322":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"457":{"tf":1.0},"463":{"tf":1.0},"539":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"319":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"167":{"tf":1.7320508075688772},"268":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}}}},"r":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":43,"docs":{"15":{"tf":1.4142135623730951},"152":{"tf":1.0},"158":{"tf":1.7320508075688772},"166":{"tf":1.7320508075688772},"17":{"tf":1.4142135623730951},"176":{"tf":1.7320508075688772},"186":{"tf":1.7320508075688772},"194":{"tf":1.7320508075688772},"208":{"tf":1.7320508075688772},"216":{"tf":1.7320508075688772},"220":{"tf":1.7320508075688772},"228":{"tf":1.7320508075688772},"243":{"tf":1.7320508075688772},"254":{"tf":1.7320508075688772},"267":{"tf":1.7320508075688772},"275":{"tf":1.7320508075688772},"283":{"tf":1.7320508075688772},"291":{"tf":1.7320508075688772},"299":{"tf":1.7320508075688772},"306":{"tf":1.7320508075688772},"327":{"tf":1.7320508075688772},"335":{"tf":1.7320508075688772},"346":{"tf":1.7320508075688772},"355":{"tf":1.7320508075688772},"369":{"tf":1.7320508075688772},"379":{"tf":1.7320508075688772},"388":{"tf":1.7320508075688772},"396":{"tf":1.7320508075688772},"407":{"tf":1.7320508075688772},"416":{"tf":1.7320508075688772},"430":{"tf":1.7320508075688772},"439":{"tf":1.7320508075688772},"447":{"tf":1.7320508075688772},"455":{"tf":1.7320508075688772},"467":{"tf":1.7320508075688772},"477":{"tf":1.7320508075688772},"485":{"tf":1.0},"490":{"tf":1.7320508075688772},"501":{"tf":1.7320508075688772},"519":{"tf":1.7320508075688772},"537":{"tf":1.7320508075688772},"562":{"tf":1.0},"61":{"tf":1.7320508075688772}}}},"g":{"df":1,"docs":{"472":{"tf":1.0}}},"m":{"a":{"df":1,"docs":{"311":{"tf":1.0}},"t":{"df":2,"docs":{"153":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"203":{"tf":1.0}}},"df":0,"docs":{}}}},"w":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"223":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"17":{"tf":1.0},"245":{"tf":1.0},"27":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"300":{"tf":1.0}}},"df":0,"docs":{},"m":{"df":5,"docs":{"188":{"tf":1.4142135623730951},"359":{"tf":1.0},"37":{"tf":1.0},"389":{"tf":1.0},"487":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"e":{"df":7,"docs":{"10":{"tf":1.4142135623730951},"189":{"tf":1.0},"192":{"tf":1.0},"309":{"tf":1.0},"336":{"tf":1.0},"557":{"tf":1.0},"61":{"tf":1.0}},"n":{"df":2,"docs":{"342":{"tf":1.0},"474":{"tf":1.0}}},"r":{"df":1,"docs":{"456":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":1.0}}}}}}},"df":22,"docs":{"156":{"tf":1.7320508075688772},"169":{"tf":1.4142135623730951},"175":{"tf":1.7320508075688772},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":2.0},"179":{"tf":1.0},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"268":{"tf":2.23606797749979},"270":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"341":{"tf":2.0},"412":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"594":{"tf":1.7320508075688772},"595":{"tf":1.0},"599":{"tf":1.0}}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":13,"docs":{"156":{"tf":1.0},"214":{"tf":1.0},"218":{"tf":1.0},"336":{"tf":1.0},"357":{"tf":1.0},"383":{"tf":1.0},"417":{"tf":1.0},"436":{"tf":1.0},"440":{"tf":1.0},"450":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0},"74":{"tf":1.0}}},"m":{"df":0,"docs":{},"p":{"df":1,"docs":{"598":{"tf":1.0}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"276":{"tf":1.0}}}},"i":{"c":{"df":3,"docs":{"200":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":2.0}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":6,"docs":{"218":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":2.0},"380":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.7320508075688772}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"(":{"5":{"df":1,"docs":{"458":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":11,"docs":{"15":{"tf":1.0},"16":{"tf":1.0},"230":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.0},"365":{"tf":1.4142135623730951},"391":{"tf":1.0},"46":{"tf":1.0},"521":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0}}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":1,"docs":{"214":{"tf":1.0}}}}},"df":0,"docs":{}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":6,"docs":{"223":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.4142135623730951},"410":{"tf":1.0},"516":{"tf":1.0},"72":{"tf":1.4142135623730951}}}},"df":5,"docs":{"292":{"tf":1.0},"328":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":1.0},"515":{"tf":1.0}}}}},"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"g":{"df":15,"docs":{"136":{"tf":1.0},"156":{"tf":1.0},"211":{"tf":1.0},"270":{"tf":1.0},"341":{"tf":1.0},"372":{"tf":1.0},"383":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"453":{"tf":1.0},"548":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}},"0":{"2":{"7":{"7":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"h":{"df":35,"docs":{"153":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.0},"218":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"27":{"tf":1.0},"278":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":2.0},"389":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.4142135623730951},"496":{"tf":1.0},"508":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951},"94":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"380":{"tf":1.0},"538":{"tf":1.4142135623730951}}}}},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":11,"docs":{"136":{"tf":1.0},"156":{"tf":1.0},"192":{"tf":1.0},"270":{"tf":1.0},"363":{"tf":1.0},"456":{"tf":1.0},"502":{"tf":1.0},"560":{"tf":1.0},"561":{"tf":1.7320508075688772},"65":{"tf":1.0},"87":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"276":{"tf":1.0},"61":{"tf":1.0}}}}}}},"s":{"df":3,"docs":{"359":{"tf":1.0},"41":{"tf":1.0},"77":{"tf":1.0}},"i":{"df":26,"docs":{"120":{"tf":1.0},"121":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.4142135623730951},"190":{"tf":1.0},"200":{"tf":1.0},"211":{"tf":1.0},"245":{"tf":1.0},"278":{"tf":1.0},"330":{"tf":1.0},"343":{"tf":1.0},"370":{"tf":1.0},"391":{"tf":1.4142135623730951},"393":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.4142135623730951},"456":{"tf":1.4142135623730951},"504":{"tf":1.0},"510":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"528":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":8,"docs":{"131":{"tf":1.0},"226":{"tf":1.0},"284":{"tf":1.0},"389":{"tf":1.0},"516":{"tf":1.0},"532":{"tf":1.0},"538":{"tf":1.0},"572":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":7,"docs":{"130":{"tf":1.0},"268":{"tf":1.0},"315":{"tf":1.0},"341":{"tf":1.0},"350":{"tf":1.0},"507":{"tf":1.0},"511":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"555":{"tf":1.0}}}}}},"y":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"221":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"380":{"tf":1.0}}}},"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":30,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"231":{"tf":1.4142135623730951},"237":{"tf":1.0},"278":{"tf":1.0},"302":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"340":{"tf":1.4142135623730951},"341":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":2.0},"360":{"tf":1.0},"363":{"tf":1.7320508075688772},"372":{"tf":1.4142135623730951},"383":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0},"431":{"tf":1.4142135623730951},"47":{"tf":1.4142135623730951},"478":{"tf":1.0},"480":{"tf":1.0},"526":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"61":{"tf":1.4142135623730951},"65":{"tf":1.0},"73":{"tf":1.0},"77":{"tf":1.0}}}}}}}}}},"d":{"df":1,"docs":{"309":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":30,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"358":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"402":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"201":{"tf":1.0},"453":{"tf":1.0}}}}}},"u":{"c":{"df":1,"docs":{"363":{"tf":1.0}}},"df":0,"docs":{}}},"df":6,"docs":{"134":{"tf":1.0},"138":{"tf":1.0},"209":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.7320508075688772},"603":{"tf":1.0}},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":7,"docs":{"181":{"tf":1.0},"259":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"389":{"tf":1.0},"422":{"tf":1.0},"462":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"c":{"df":0,"docs":{},"i":{"df":3,"docs":{"156":{"tf":1.4142135623730951},"223":{"tf":1.0},"341":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":4,"docs":{"341":{"tf":1.4142135623730951},"37":{"tf":1.0},"486":{"tf":1.0},"8":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"110":{"tf":1.0}}}}}}}}}}}}},"g":{"df":1,"docs":{"391":{"tf":1.0}}},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"603":{"tf":1.0}}}}}},"l":{"a":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"343":{"tf":1.0},"42":{"tf":1.0},"54":{"tf":1.0}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":1,"docs":{"65":{"tf":1.0}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"307":{"tf":1.0},"310":{"tf":1.0}}}}}}},"i":{"d":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"209":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"343":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"55":{"tf":1.0}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"211":{"tf":1.0},"252":{"tf":1.0},"341":{"tf":1.0},"562":{"tf":1.0}}}}}}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":2,"docs":{"3":{"tf":1.0},"515":{"tf":1.0}}}}}},"df":3,"docs":{"209":{"tf":1.0},"310":{"tf":1.0},"486":{"tf":1.0}},"e":{"d":{"df":29,"docs":{"106":{"tf":1.7320508075688772},"107":{"tf":1.0},"108":{"tf":1.0},"109":{"tf":1.0},"110":{"tf":2.8284271247461903},"111":{"tf":1.4142135623730951},"112":{"tf":1.0},"113":{"tf":1.0},"156":{"tf":1.4142135623730951},"321":{"tf":1.0},"322":{"tf":1.0},"334":{"tf":1.7320508075688772},"335":{"tf":1.0},"336":{"tf":1.4142135623730951},"337":{"tf":1.0},"338":{"tf":2.23606797749979},"339":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0},"370":{"tf":1.0},"456":{"tf":1.7320508075688772},"463":{"tf":1.0},"515":{"tf":2.0},"61":{"tf":1.0},"62":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":1,"docs":{"284":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{"2":{"0":{"0":{"0":{"df":1,"docs":{"603":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"j":{"df":0,"docs":{},"i":{"df":1,"docs":{"552":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":1,"docs":{"231":{"tf":1.0}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"156":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"469":{"tf":1.0}}}}},"n":{"a":{"b":{"df":0,"docs":{},"l":{"df":12,"docs":{"178":{"tf":1.0},"259":{"tf":1.0},"321":{"tf":1.0},"343":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"470":{"tf":1.0},"530":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"358":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"457":{"tf":1.0}}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":13,"docs":{"153":{"tf":1.0},"177":{"tf":1.0},"182":{"tf":1.0},"25":{"tf":1.0},"263":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"318":{"tf":1.0},"321":{"tf":1.0},"470":{"tf":1.0},"74":{"tf":1.0},"9":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"g":{"df":6,"docs":{"15":{"tf":1.0},"152":{"tf":1.0},"268":{"tf":1.0},"462":{"tf":1.0},"485":{"tf":1.0},"54":{"tf":1.0}}}},"df":0,"docs":{}}}}},"d":{"df":25,"docs":{"11":{"tf":1.4142135623730951},"15":{"tf":1.4142135623730951},"156":{"tf":1.0},"16":{"tf":1.0},"218":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"284":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"322":{"tf":1.0},"370":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"47":{"tf":1.4142135623730951},"504":{"tf":1.0},"58":{"tf":1.0},"599":{"tf":1.4142135623730951},"60":{"tf":1.0},"8":{"tf":1.4142135623730951}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"232":{"tf":1.7320508075688772},"370":{"tf":1.0},"408":{"tf":1.7320508075688772},"538":{"tf":2.0}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":1,"docs":{"138":{"tf":1.0}}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"171":{"tf":1.0}}},"df":0,"docs":{}}}},"g":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"27":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":6,"docs":{"138":{"tf":1.0},"212":{"tf":1.0},"231":{"tf":1.0},"389":{"tf":1.7320508075688772},"393":{"tf":1.0},"433":{"tf":1.0}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":3,"docs":{"276":{"tf":1.0},"486":{"tf":1.0},"9":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"195":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":24,"docs":{"156":{"tf":1.0},"173":{"tf":1.0},"178":{"tf":1.0},"189":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"318":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.7320508075688772},"427":{"tf":1.0},"431":{"tf":1.0},"470":{"tf":1.0},"480":{"tf":1.0},"503":{"tf":1.0},"530":{"tf":1.0}}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"u":{"df":1,"docs":{"539":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":4,"docs":{"120":{"tf":1.0},"16":{"tf":1.0},"517":{"tf":1.0},"539":{"tf":1.0}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"156":{"tf":1.0},"240":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{"1":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":2,"docs":{"363":{"tf":1.0},"538":{"tf":1.4142135623730951}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"113":{"tf":1.0},"27":{"tf":1.0}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"r":{"df":15,"docs":{"116":{"tf":1.0},"127":{"tf":1.0},"218":{"tf":1.0},"268":{"tf":1.4142135623730951},"284":{"tf":1.0},"313":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"442":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.7320508075688772},"506":{"tf":1.0},"72":{"tf":1.0},"8":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"257":{"tf":1.0},"284":{"tf":1.0},"431":{"tf":1.4142135623730951}}}}},"u":{"df":0,"docs":{},"m":{"df":4,"docs":{"199":{"tf":1.7320508075688772},"209":{"tf":1.0},"214":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":19,"docs":{"108":{"tf":1.0},"110":{"tf":1.4142135623730951},"146":{"tf":1.0},"156":{"tf":1.0},"218":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.4142135623730951},"286":{"tf":1.0},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"344":{"tf":1.4142135623730951},"425":{"tf":1.0},"457":{"tf":1.7320508075688772},"546":{"tf":1.0},"61":{"tf":1.4142135623730951},"77":{"tf":1.4142135623730951},"82":{"tf":1.4142135623730951},"87":{"tf":1.4142135623730951},"92":{"tf":1.4142135623730951}}}}}}},"z":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"f":{"d":{"=":{"3":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"i":{"c":{"df":1,"docs":{"79":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"62":{"tf":1.0}},"l":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"q":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":9,"docs":{"213":{"tf":1.0},"214":{"tf":1.0},"259":{"tf":1.0},"336":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"458":{"tf":1.4142135623730951},"526":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":4,"docs":{"156":{"tf":1.0},"292":{"tf":1.0},"487":{"tf":1.0},"9":{"tf":1.0}}}}}}},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"t":{"'":{"df":1,"docs":{"287":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"414":{"tf":1.0}}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"261":{"tf":1.0}}},"df":0,"docs":{}},"r":{"(":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"_":{"df":1,"docs":{"276":{"tf":1.0}}},"df":3,"docs":{"292":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"440":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"328":{"tf":1.0}}}}}}}}},"df":1,"docs":{"292":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"[":{"df":0,"docs":{},"e":{"0":{"2":{"7":{"7":{"df":6,"docs":{"292":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"0":{"8":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"9":{"7":{"df":2,"docs":{"217":{"tf":1.0},"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"5":{"8":{"df":2,"docs":{"196":{"tf":1.0},"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"0":{"6":{"df":2,"docs":{"209":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}},"3":{"3":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":41,"docs":{"110":{"tf":1.4142135623730951},"196":{"tf":1.7320508075688772},"197":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"226":{"tf":1.0},"244":{"tf":1.0},"258":{"tf":1.4142135623730951},"261":{"tf":1.7320508075688772},"263":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"272":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.7320508075688772},"307":{"tf":1.0},"310":{"tf":1.4142135623730951},"317":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.4142135623730951},"370":{"tf":2.0},"380":{"tf":3.605551275463989},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"394":{"tf":1.0},"419":{"tf":1.7320508075688772},"42":{"tf":1.0},"433":{"tf":1.0},"440":{"tf":2.23606797749979},"442":{"tf":1.0},"448":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":2.0},"522":{"tf":1.4142135623730951},"599":{"tf":1.0},"79":{"tf":1.0}}}}}},"s":{"c":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"538":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":7,"docs":{"112":{"tf":1.0},"136":{"tf":1.0},"221":{"tf":1.4142135623730951},"237":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"376":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}}}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"156":{"tf":1.4142135623730951},"469":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"c":{"df":12,"docs":{"136":{"tf":1.0},"230":{"tf":1.0},"235":{"tf":1.0},"302":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"363":{"tf":1.0},"41":{"tf":1.0},"419":{"tf":1.0},"599":{"tf":1.7320508075688772},"62":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"423":{"tf":1.0}}}},"n":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":50,"docs":{"118":{"tf":1.0},"127":{"tf":1.0},"156":{"tf":1.7320508075688772},"171":{"tf":1.0},"192":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"251":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.4142135623730951},"261":{"tf":1.4142135623730951},"263":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.7320508075688772},"288":{"tf":1.0},"292":{"tf":1.4142135623730951},"297":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"313":{"tf":1.0},"324":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":2.0},"399":{"tf":1.0},"405":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"478":{"tf":1.0},"54":{"tf":1.0},"542":{"tf":1.0}},"t":{"df":17,"docs":{"156":{"tf":1.4142135623730951},"185":{"tf":1.7320508075688772},"186":{"tf":1.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":2.0},"191":{"tf":1.4142135623730951},"192":{"tf":2.449489742783178},"336":{"tf":2.8284271247461903},"342":{"tf":1.7320508075688772},"412":{"tf":1.0},"462":{"tf":1.0},"504":{"tf":2.0},"555":{"tf":1.0},"599":{"tf":2.23606797749979},"62":{"tf":1.7320508075688772}},"s":{"=":{"0":{"df":0,"docs":{},"x":{"5":{"5":{"5":{"5":{"5":{"5":{"7":{"1":{"1":{"3":{"4":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"b":{"a":{"4":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":11,"docs":{"195":{"tf":1.0},"200":{"tf":1.0},"245":{"tf":1.0},"300":{"tf":1.0},"347":{"tf":1.0},"431":{"tf":1.7320508075688772},"448":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"49":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"361":{"tf":1.0}}}}},"y":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":2,"docs":{"231":{"tf":1.0},"300":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":9,"docs":{"174":{"tf":1.0},"184":{"tf":1.0},"264":{"tf":1.0},"534":{"tf":1.0},"600":{"tf":1.0},"601":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0},"8":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":12,"docs":{"156":{"tf":1.0},"217":{"tf":1.7320508075688772},"245":{"tf":1.0},"257":{"tf":1.0},"261":{"tf":1.0},"309":{"tf":1.0},"324":{"tf":1.4142135623730951},"457":{"tf":1.0},"504":{"tf":1.4142135623730951},"522":{"tf":1.0},"530":{"tf":1.0},"599":{"tf":1.7320508075688772}}}},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"156":{"tf":1.0},"408":{"tf":1.0},"421":{"tf":1.0},"538":{"tf":1.0}}}}}}}}},"i":{"d":{"df":5,"docs":{"162":{"tf":1.0},"28":{"tf":1.0},"36":{"tf":1.4142135623730951},"597":{"tf":1.0},"598":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":6,"docs":{"156":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"478":{"tf":1.0},"560":{"tf":1.0},"599":{"tf":1.0}}}}}},"x":{"a":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"380":{"tf":1.0},"431":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":13,"docs":{"218":{"tf":1.0},"258":{"tf":1.0},"322":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.4142135623730951},"40":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"481":{"tf":1.0},"49":{"tf":1.4142135623730951},"504":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"431":{"tf":1.0}}}},"p":{"df":0,"docs":{},"l":{"df":48,"docs":{"147":{"tf":1.0},"152":{"tf":1.0},"159":{"tf":1.0},"167":{"tf":1.0},"178":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"237":{"tf":1.0},"257":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"336":{"tf":1.0},"365":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"393":{"tf":1.0},"403":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.4142135623730951},"418":{"tf":1.7320508075688772},"419":{"tf":2.0},"421":{"tf":1.0},"422":{"tf":1.4142135623730951},"423":{"tf":1.4142135623730951},"433":{"tf":1.0},"436":{"tf":1.0},"440":{"tf":1.7320508075688772},"450":{"tf":1.0},"47":{"tf":1.0},"485":{"tf":1.0},"491":{"tf":1.0},"502":{"tf":1.0},"517":{"tf":1.0},"529":{"tf":1.0},"56":{"tf":1.0},"564":{"tf":1.0},"57":{"tf":1.0},"580":{"tf":1.4142135623730951},"581":{"tf":1.4142135623730951},"599":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.0}},"e":{"(":{"df":0,"docs":{},"x":{"df":1,"docs":{"564":{"tf":1.0}}}},"df":0,"docs":{},"s":{"/":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"8":{"4":{":":{"1":{"5":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"c":{"df":0,"docs":{},"e":{"df":2,"docs":{"347":{"tf":1.0},"431":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"111":{"tf":1.0}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"t":{"df":8,"docs":{"264":{"tf":1.0},"317":{"tf":1.0},"383":{"tf":1.0},"445":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0},"61":{"tf":1.0}}}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"t":{"df":19,"docs":{"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"41":{"tf":2.0},"478":{"tf":1.0},"497":{"tf":1.0},"510":{"tf":1.7320508075688772},"511":{"tf":1.4142135623730951},"512":{"tf":1.4142135623730951},"513":{"tf":1.4142135623730951},"528":{"tf":1.7320508075688772},"529":{"tf":1.4142135623730951},"530":{"tf":1.4142135623730951},"531":{"tf":1.4142135623730951},"542":{"tf":1.4142135623730951},"543":{"tf":1.4142135623730951},"544":{"tf":1.4142135623730951},"545":{"tf":1.4142135623730951},"65":{"tf":1.0},"87":{"tf":1.0}},"e":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"448":{"tf":1.0}}}}},"df":0,"docs":{}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":2,"docs":{"408":{"tf":1.0},"538":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":25,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.0},"178":{"tf":1.4142135623730951},"181":{"tf":1.0},"209":{"tf":1.7320508075688772},"211":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.0},"308":{"tf":1.0},"318":{"tf":1.0},"336":{"tf":2.0},"341":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"419":{"tf":1.0},"457":{"tf":2.23606797749979},"458":{"tf":1.0},"460":{"tf":1.4142135623730951},"462":{"tf":1.0},"463":{"tf":1.0},"470":{"tf":2.23606797749979},"502":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"462":{"tf":1.0}}},"df":35,"docs":{"156":{"tf":1.7320508075688772},"209":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.7320508075688772},"258":{"tf":1.4142135623730951},"268":{"tf":1.0},"326":{"tf":1.7320508075688772},"327":{"tf":1.0},"328":{"tf":2.23606797749979},"329":{"tf":1.0},"330":{"tf":2.23606797749979},"331":{"tf":1.0},"332":{"tf":1.0},"333":{"tf":1.4142135623730951},"336":{"tf":3.605551275463989},"341":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.4142135623730951},"349":{"tf":1.0},"359":{"tf":1.4142135623730951},"360":{"tf":1.0},"408":{"tf":1.4142135623730951},"462":{"tf":1.0},"470":{"tf":2.23606797749979},"480":{"tf":1.7320508075688772},"483":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"545":{"tf":2.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.7320508075688772},"549":{"tf":1.0},"599":{"tf":1.4142135623730951},"62":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}},"h":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"248":{"tf":1.0},"538":{"tf":1.0},"598":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":27,"docs":{"120":{"tf":1.0},"130":{"tf":1.4142135623730951},"14":{"tf":1.4142135623730951},"156":{"tf":1.4142135623730951},"192":{"tf":1.0},"204":{"tf":1.0},"211":{"tf":1.0},"22":{"tf":1.0},"235":{"tf":1.0},"276":{"tf":1.0},"315":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.0},"493":{"tf":1.0},"498":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"91":{"tf":1.0},"96":{"tf":1.4142135623730951}}}}},"p":{"a":{"df":0,"docs":{},"n":{"d":{"df":33,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"396":{"tf":1.0},"404":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"437":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"539":{"tf":1.0},"562":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":39,"docs":{"152":{"tf":1.0},"16":{"tf":1.0},"18":{"tf":1.0},"196":{"tf":1.4142135623730951},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"28":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"317":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"408":{"tf":1.7320508075688772},"41":{"tf":2.23606797749979},"417":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"485":{"tf":1.0},"487":{"tf":1.0},"497":{"tf":1.0},"51":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.4142135623730951},"547":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.0},"65":{"tf":2.0},"77":{"tf":1.4142135623730951},"82":{"tf":1.7320508075688772},"87":{"tf":1.7320508075688772},"9":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":5,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.0},"410":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":107,"docs":{"11":{"tf":1.4142135623730951},"127":{"tf":1.0},"136":{"tf":1.0},"153":{"tf":1.0},"154":{"tf":1.0},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"173":{"tf":1.0},"174":{"tf":1.0},"176":{"tf":1.4142135623730951},"183":{"tf":1.0},"186":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"205":{"tf":1.0},"208":{"tf":1.4142135623730951},"209":{"tf":1.0},"214":{"tf":1.0},"216":{"tf":1.4142135623730951},"218":{"tf":1.0},"220":{"tf":1.4142135623730951},"228":{"tf":1.0},"23":{"tf":2.0},"235":{"tf":1.0},"238":{"tf":1.0},"24":{"tf":1.0},"243":{"tf":1.0},"249":{"tf":1.0},"25":{"tf":1.7320508075688772},"250":{"tf":1.0},"254":{"tf":1.0},"256":{"tf":1.0},"259":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.4142135623730951},"264":{"tf":1.0},"267":{"tf":1.4142135623730951},"27":{"tf":1.0},"275":{"tf":1.4142135623730951},"278":{"tf":1.0},"283":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"295":{"tf":1.0},"299":{"tf":1.4142135623730951},"303":{"tf":1.0},"306":{"tf":1.4142135623730951},"316":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.4142135623730951},"327":{"tf":1.0},"331":{"tf":1.0},"333":{"tf":1.0},"335":{"tf":1.4142135623730951},"346":{"tf":1.4142135623730951},"353":{"tf":1.0},"355":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":2.0},"369":{"tf":1.4142135623730951},"379":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"382":{"tf":1.4142135623730951},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":2.8284271247461903},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.4142135623730951},"396":{"tf":1.4142135623730951},"403":{"tf":1.0},"407":{"tf":1.4142135623730951},"414":{"tf":1.0},"416":{"tf":1.4142135623730951},"421":{"tf":1.0},"430":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"439":{"tf":1.0},"443":{"tf":1.0},"447":{"tf":1.4142135623730951},"451":{"tf":1.0},"455":{"tf":1.0},"456":{"tf":1.0},"461":{"tf":1.0},"467":{"tf":1.4142135623730951},"47":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":1.0},"475":{"tf":2.0},"477":{"tf":1.4142135623730951},"49":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"597":{"tf":1.0},"79":{"tf":1.0},"8":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"n":{"c":{"df":16,"docs":{"221":{"tf":1.0},"272":{"tf":1.0},"289":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.4142135623730951},"339":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"376":{"tf":1.0},"389":{"tf":1.0},"393":{"tf":1.4142135623730951},"435":{"tf":1.0},"65":{"tf":1.4142135623730951},"71":{"tf":1.4142135623730951},"79":{"tf":1.0},"89":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"196":{"tf":1.4142135623730951},"209":{"tf":1.0},"357":{"tf":1.0},"392":{"tf":1.0}}}}}}},"t":{"df":7,"docs":{"127":{"tf":1.0},"153":{"tf":1.0},"209":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"245":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"218":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":23,"docs":{"178":{"tf":1.4142135623730951},"198":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.7320508075688772},"217":{"tf":1.0},"218":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"347":{"tf":1.0},"42":{"tf":1.0},"440":{"tf":1.0},"45":{"tf":1.0},"457":{"tf":1.4142135623730951},"458":{"tf":1.0},"48":{"tf":1.0},"480":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"583":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":6,"docs":{"211":{"tf":1.0},"250":{"tf":1.0},"252":{"tf":1.0},"380":{"tf":1.0},"421":{"tf":1.0},"460":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":6,"docs":{"178":{"tf":1.0},"199":{"tf":1.0},"268":{"tf":1.4142135623730951},"458":{"tf":1.0},"470":{"tf":1.0},"6":{"tf":1.0}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":8,"docs":{"11":{"tf":1.0},"268":{"tf":1.0},"330":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"460":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"s":{"df":4,"docs":{"300":{"tf":2.0},"336":{"tf":1.0},"349":{"tf":1.0},"507":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"359":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":8,"docs":{"136":{"tf":1.0},"211":{"tf":1.0},"231":{"tf":1.0},"292":{"tf":2.0},"458":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.0},"74":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":7,"docs":{"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"218":{"tf":1.0},"292":{"tf":1.4142135623730951},"330":{"tf":1.0},"511":{"tf":1.0},"65":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":5,"docs":{"177":{"tf":1.0},"3":{"tf":1.0},"389":{"tf":1.0},"503":{"tf":1.0},"59":{"tf":1.0}}},"t":{"df":1,"docs":{"352":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"df":15,"docs":{"185":{"tf":1.7320508075688772},"186":{"tf":1.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"240":{"tf":1.0},"256":{"tf":1.0},"3":{"tf":1.0},"336":{"tf":1.4142135623730951},"521":{"tf":1.0},"535":{"tf":1.0},"599":{"tf":1.0}}}}},"r":{"a":{"df":5,"docs":{"178":{"tf":1.0},"246":{"tf":1.0},"259":{"tf":1.0},"397":{"tf":1.0},"503":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":11,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"130":{"tf":1.0},"179":{"tf":1.0},"268":{"tf":1.0},"349":{"tf":1.0},"408":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0}}}}}}},"y":{"df":1,"docs":{"25":{"tf":1.0}}}},"f":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{")":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"a":{"c":{"a":{"d":{"df":1,"docs":{"515":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":40,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"237":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"9":{"tf":1.0}}},"t":{"df":9,"docs":{"137":{"tf":1.0},"237":{"tf":1.0},"268":{"tf":1.4142135623730951},"300":{"tf":1.0},"321":{"tf":1.0},"37":{"tf":1.0},"457":{"tf":1.0},"517":{"tf":1.0},"55":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"261":{"tf":1.0},"302":{"tf":1.0},"336":{"tf":1.0}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"16":{"tf":1.0},"29":{"tf":1.0},"42":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":9,"docs":{"153":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.4142135623730951},"457":{"tf":1.0},"470":{"tf":1.0},"9":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"127":{"tf":1.0}}}}},"r":{"df":3,"docs":{"18":{"tf":1.0},"256":{"tf":1.0},"521":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":8,"docs":{"171":{"tf":1.0},"177":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"317":{"tf":1.0},"442":{"tf":1.0},"475":{"tf":1.0},"530":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"l":{"df":3,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"289":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"214":{"tf":1.0}}}}},"s":{"df":1,"docs":{"470":{"tf":1.0}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"r":{"df":13,"docs":{"120":{"tf":1.0},"264":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"317":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.4142135623730951},"435":{"tf":1.0},"440":{"tf":1.0},"475":{"tf":1.0},"530":{"tf":1.0},"559":{"tf":1.0},"73":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"df":1,"docs":{"67":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"143":{"tf":1.0}}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"q":{"df":52,"docs":{"158":{"tf":1.0},"16":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"22":{"tf":1.7320508075688772},"220":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":2.449489742783178},"283":{"tf":1.0},"29":{"tf":1.4142135623730951},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"309":{"tf":1.0},"32":{"tf":1.0},"329":{"tf":1.0},"335":{"tf":1.0},"34":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"40":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":2.449489742783178},"416":{"tf":1.0},"42":{"tf":1.4142135623730951},"447":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.0},"467":{"tf":1.0},"47":{"tf":1.0},"477":{"tf":1.0},"48":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"492":{"tf":1.0},"50":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"59":{"tf":1.0}}},"r":{"df":13,"docs":{"111":{"tf":1.0},"197":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.0},"217":{"tf":1.0},"336":{"tf":1.0},"361":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.0},"599":{"tf":1.0}},"e":{"df":2,"docs":{"41":{"tf":2.0},"9":{"tf":1.0}}},"n":{"df":0,"docs":{},"z":{"df":1,"docs":{"602":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":5,"docs":{"153":{"tf":1.0},"201":{"tf":1.0},"522":{"tf":1.0},"545":{"tf":1.0},"9":{"tf":1.0}}}}}},"t":{"df":6,"docs":{"119":{"tf":1.0},"121":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"231":{"tf":1.0},"357":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"178":{"tf":1.0},"389":{"tf":1.0},"469":{"tf":1.0},"532":{"tf":1.0}},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":2,"docs":{"370":{"tf":1.0},"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":1,"docs":{"231":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":4,"docs":{"131":{"tf":1.0},"245":{"tf":1.0},"363":{"tf":1.0},"513":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"167":{"tf":1.0},"356":{"tf":1.0},"478":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"61":{"tf":1.0}}}}}}},"df":4,"docs":{"217":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"292":{"tf":2.6457513110645907},"380":{"tf":1.4142135623730951}},"e":{"a":{"df":0,"docs":{},"r":{"df":7,"docs":{"235":{"tf":1.0},"237":{"tf":1.0},"256":{"tf":1.0},"300":{"tf":1.0},"363":{"tf":1.0},"408":{"tf":1.0},"521":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":30,"docs":{"138":{"tf":1.0},"16":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.0},"230":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"239":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.0},"300":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"341":{"tf":2.449489742783178},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.7320508075688772},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"46":{"tf":1.0},"469":{"tf":1.0},"486":{"tf":1.4142135623730951},"509":{"tf":1.4142135623730951},"538":{"tf":1.0},"560":{"tf":1.0},"561":{"tf":1.0},"60":{"tf":1.0},"602":{"tf":1.0}},"e":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"_":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"d":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":7,"docs":{"15":{"tf":1.0},"17":{"tf":1.0},"209":{"tf":1.0},"24":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"547":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":71,"docs":{"152":{"tf":1.0},"156":{"tf":1.0},"158":{"tf":1.0},"159":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"17":{"tf":1.0},"176":{"tf":1.0},"178":{"tf":1.4142135623730951},"186":{"tf":1.0},"187":{"tf":1.0},"189":{"tf":1.4142135623730951},"194":{"tf":1.0},"197":{"tf":1.0},"2":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"221":{"tf":1.0},"261":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.7320508075688772},"28":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"306":{"tf":1.0},"329":{"tf":1.0},"33":{"tf":1.0},"331":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"35":{"tf":1.0},"359":{"tf":1.4142135623730951},"369":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.7320508075688772},"381":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0},"447":{"tf":1.0},"449":{"tf":1.0},"457":{"tf":1.4142135623730951},"467":{"tf":1.0},"47":{"tf":1.0},"477":{"tf":1.0},"485":{"tf":1.0},"487":{"tf":1.0},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"501":{"tf":1.0},"509":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.0},"537":{"tf":1.0},"556":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.0},"96":{"tf":1.0}}}},"l":{"df":0,"docs":{},"t":{"df":5,"docs":{"218":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":2.23606797749979}}}},"t":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"(":{"&":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"df":2,"docs":{"523":{"tf":1.7320508075688772},"535":{"tf":1.0}},"s":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"523":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":3,"docs":{"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"312":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":24,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"195":{"tf":1.0},"209":{"tf":1.0},"232":{"tf":1.0},"259":{"tf":1.4142135623730951},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"359":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.23606797749979},"389":{"tf":1.0},"397":{"tf":1.0},"410":{"tf":1.0},"431":{"tf":1.0},"486":{"tf":1.0},"516":{"tf":1.0},"556":{"tf":1.0},"79":{"tf":1.0},"9":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"284":{"tf":1.0},"377":{"tf":1.0}}}}}},"i":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"154":{"tf":1.0},"23":{"tf":1.0},"9":{"tf":1.0}}}}}}},"d":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"294":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":3,"docs":{"296":{"tf":1.0},"328":{"tf":1.0},"508":{"tf":1.0}}},"df":0,"docs":{}},"r":{"c":{"df":1,"docs":{"138":{"tf":1.0}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"110":{"tf":1.0},"370":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"r":{"df":22,"docs":{"178":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.4142135623730951},"251":{"tf":1.0},"268":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"317":{"tf":1.0},"347":{"tf":1.7320508075688772},"353":{"tf":1.0},"370":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"41":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"49":{"tf":1.4142135623730951},"499":{"tf":1.4142135623730951},"52":{"tf":1.0},"53":{"tf":1.0},"539":{"tf":1.0},"552":{"tf":1.0},"599":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"199":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"196":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"_":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"195":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"b":{"\"":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":4,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},":":{":":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"(":{"\"":{"a":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"\"":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"522":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"522":{"tf":2.23606797749979},"523":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":23,"docs":{"157":{"tf":1.4142135623730951},"16":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.4142135623730951},"199":{"tf":1.7320508075688772},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"21":{"tf":1.4142135623730951},"24":{"tf":1.0},"257":{"tf":2.0},"258":{"tf":1.0},"26":{"tf":1.4142135623730951},"279":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.4142135623730951},"44":{"tf":1.0},"489":{"tf":1.4142135623730951},"522":{"tf":2.8284271247461903},"523":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0}}},"l":{"df":3,"docs":{"458":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.4142135623730951}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"|":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"312":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"312":{"tf":2.23606797749979},"431":{"tf":1.0}}}}}},"n":{"a":{"df":0,"docs":{},"l":{"df":9,"docs":{"15":{"tf":1.0},"197":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"389":{"tf":1.0},"470":{"tf":1.0},"61":{"tf":1.0}}}},"d":{"df":70,"docs":{"140":{"tf":1.0},"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"175":{"tf":1.7320508075688772},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.7320508075688772},"179":{"tf":1.7320508075688772},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"190":{"tf":1.4142135623730951},"199":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":2.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"25":{"tf":1.4142135623730951},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"261":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"276":{"tf":2.0},"278":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"370":{"tf":2.23606797749979},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"397":{"tf":1.0},"401":{"tf":1.0},"408":{"tf":2.23606797749979},"410":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.7320508075688772},"436":{"tf":1.0},"458":{"tf":1.0},"46":{"tf":1.0},"469":{"tf":1.0},"493":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"510":{"tf":1.0},"512":{"tf":1.0},"528":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"543":{"tf":1.0},"55":{"tf":1.0},"559":{"tf":1.0},"57":{"tf":1.0},"96":{"tf":1.7320508075688772}}},"df":1,"docs":{"397":{"tf":1.0}},"e":{"df":10,"docs":{"137":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.7320508075688772},"268":{"tf":1.0},"309":{"tf":1.0},"336":{"tf":1.0},"458":{"tf":1.0},"511":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}},"i":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":14,"docs":{"189":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"374":{"tf":1.0},"521":{"tf":1.0},"558":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"309":{"tf":1.0},"448":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":56,"docs":{"136":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"187":{"tf":1.4142135623730951},"188":{"tf":1.0},"189":{"tf":1.4142135623730951},"196":{"tf":1.4142135623730951},"198":{"tf":1.0},"232":{"tf":1.7320508075688772},"233":{"tf":1.7320508075688772},"246":{"tf":1.0},"251":{"tf":1.0},"257":{"tf":1.7320508075688772},"259":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"300":{"tf":1.0},"312":{"tf":1.0},"328":{"tf":1.7320508075688772},"354":{"tf":1.7320508075688772},"355":{"tf":1.0},"356":{"tf":2.0},"357":{"tf":1.0},"358":{"tf":1.4142135623730951},"359":{"tf":1.4142135623730951},"360":{"tf":1.0},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":2.449489742783178},"386":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.7320508075688772},"457":{"tf":1.4142135623730951},"46":{"tf":1.0},"460":{"tf":1.0},"465":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"502":{"tf":1.0},"522":{"tf":2.0},"525":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951},"61":{"tf":1.0}}}},"t":{"df":1,"docs":{"470":{"tf":1.0}}}},"t":{"df":14,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"35":{"tf":1.7320508075688772},"370":{"tf":1.0},"383":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"435":{"tf":1.0},"515":{"tf":1.0},"527":{"tf":1.4142135623730951},"531":{"tf":1.0},"65":{"tf":1.0}}},"x":{"df":16,"docs":{"155":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.0},"174":{"tf":1.0},"2":{"tf":1.0},"234":{"tf":1.0},"237":{"tf":1.4142135623730951},"246":{"tf":1.0},"261":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.0},"431":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":1.0},"556":{"tf":1.7320508075688772},"84":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"g":{"df":4,"docs":{"178":{"tf":1.0},"244":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.0}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"209":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"110":{"tf":1.0},"336":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"8":{":":{"3":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"116":{"tf":1.0},"129":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"531":{"tf":1.0}}}}}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":1,"docs":{"177":{"tf":1.0}}}}}}}},"n":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":62,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.4142135623730951},"196":{"tf":1.7320508075688772},"197":{"tf":1.4142135623730951},"199":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.7320508075688772},"217":{"tf":2.8284271247461903},"221":{"tf":2.23606797749979},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.4142135623730951},"292":{"tf":3.7416573867739413},"307":{"tf":2.23606797749979},"308":{"tf":1.7320508075688772},"309":{"tf":2.0},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"313":{"tf":1.0},"320":{"tf":1.4142135623730951},"328":{"tf":2.449489742783178},"336":{"tf":2.6457513110645907},"341":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"370":{"tf":3.3166247903554},"375":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"418":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":3.1622776601683795},"448":{"tf":2.0},"450":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"522":{"tf":2.449489742783178},"523":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.4142135623730951},"564":{"tf":1.4142135623730951},"568":{"tf":1.4142135623730951},"573":{"tf":1.0},"575":{"tf":2.0},"576":{"tf":1.4142135623730951},"577":{"tf":1.0},"578":{"tf":1.4142135623730951},"579":{"tf":2.449489742783178},"580":{"tf":1.7320508075688772},"581":{"tf":1.4142135623730951},"582":{"tf":1.0},"583":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"(":{"&":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"s":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"c":{"df":0,"docs":{},"u":{"df":8,"docs":{"110":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.0},"16":{"tf":1.0},"41":{"tf":1.0},"46":{"tf":1.0},"472":{"tf":1.0},"77":{"tf":1.0}},"s":{"df":6,"docs":{"203":{"tf":1.0},"3":{"tf":1.4142135623730951},"389":{"tf":1.0},"402":{"tf":1.0},"435":{"tf":1.0},"551":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"36":{"tf":1.0}}}}},"df":0,"docs":{},"k":{"df":7,"docs":{"153":{"tf":1.0},"16":{"tf":1.0},"19":{"tf":1.0},"25":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.0},"572":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}},"o":{"df":0,"docs":{},"w":{"df":21,"docs":{"156":{"tf":1.0},"157":{"tf":1.0},"177":{"tf":1.0},"195":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"22":{"tf":1.0},"221":{"tf":1.7320508075688772},"230":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"357":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":2.23606797749979},"389":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"489":{"tf":1.0},"538":{"tf":1.0},"561":{"tf":1.0}}}},"w":{"df":1,"docs":{"370":{"tf":1.0}}},"y":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{":":{":":{"c":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"(":{"[":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"<":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"m":{"df":0,"docs":{},"o":{"df":1,"docs":{"363":{"tf":1.0}}}},"o":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"581":{"tf":1.0}}}}}}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"`":{"_":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{".":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"2":{"7":{"2":{"df":0,"docs":{},"e":{"2":{"b":{"5":{"df":0,"docs":{},"e":{"8":{"0":{"8":{"2":{"6":{"4":{"a":{"2":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"p":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"4":{"d":{"a":{"d":{"2":{"6":{"7":{"b":{"4":{"df":0,"docs":{},"f":{"1":{"0":{"5":{"3":{"5":{"d":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"c":{"$":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{".":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"d":{"6":{"2":{"d":{"2":{"a":{"2":{"4":{"1":{"7":{"c":{"0":{"df":0,"docs":{},"f":{"2":{"df":0,"docs":{},"e":{"a":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"p":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"4":{"8":{"2":{"df":0,"docs":{},"f":{"2":{"5":{"3":{"6":{"5":{"1":{"b":{"9":{"6":{"8":{"df":0,"docs":{},"e":{"6":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},".":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"f":{"5":{"b":{"2":{"9":{"5":{"df":0,"docs":{},"f":{"c":{"c":{"0":{"8":{"3":{"7":{"df":0,"docs":{},"f":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"1":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"2":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"df":0,"docs":{},"f":{"6":{"0":{"df":0,"docs":{},"f":{"0":{"5":{"df":0,"docs":{},"f":{"9":{"df":0,"docs":{},"e":{"9":{"d":{"6":{"df":0,"docs":{},"f":{"3":{"0":{"7":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{".":{".":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"a":{"2":{"4":{"7":{"2":{"a":{"9":{"a":{"5":{"4":{"df":0,"docs":{},"f":{"0":{"df":0,"docs":{},"e":{"5":{"0":{"4":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"m":{"a":{"df":0,"docs":{},"y":{"b":{"df":0,"docs":{},"e":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"y":{"b":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"d":{"b":{"6":{"d":{"b":{"4":{"0":{"c":{"2":{"b":{"3":{"df":0,"docs":{},"f":{"2":{"df":0,"docs":{},"f":{"1":{"b":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"t":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"1":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"a":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"c":{"5":{"5":{"9":{"b":{"1":{"df":0,"docs":{},"f":{"3":{"df":0,"docs":{},"f":{"7":{"0":{"8":{"a":{"7":{"b":{"0":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"b":{"a":{"8":{"6":{"a":{"df":0,"docs":{},"f":{"c":{"3":{"df":0,"docs":{},"f":{"8":{"1":{"9":{"7":{"5":{"6":{"1":{"(":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"6":{"1":{"7":{"d":{"4":{"9":{"d":{"0":{"8":{"4":{"1":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"0":{"d":{"(":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"6":{"4":{"5":{"9":{"0":{"8":{"6":{"df":0,"docs":{},"f":{"c":{"0":{"4":{"1":{"9":{"4":{"3":{"df":0,"docs":{},"f":{"(":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"d":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"2":{"4":{"c":{"5":{"8":{"c":{"d":{"1":{"df":0,"docs":{},"e":{"1":{"1":{"2":{"1":{"3":{"6":{"df":0,"docs":{},"f":{"df":1,"docs":{"404":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"a":{"8":{"6":{"9":{"4":{"b":{"c":{"6":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"5":{"1":{"8":{"2":{"c":{"d":{"(":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"9":{"6":{"5":{"c":{"2":{"8":{"c":{"9":{"c":{"df":0,"docs":{},"e":{"0":{"6":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"7":{"3":{"df":1,"docs":{"404":{"tf":2.23606797749979}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"_":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{":":{":":{"_":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"8":{"5":{"6":{"d":{"6":{"4":{"8":{"3":{"6":{"7":{"8":{"9":{"5":{"3":{"9":{"1":{"(":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{":":{":":{"df":0,"docs":{},"h":{"9":{"a":{"2":{"df":0,"docs":{},"f":{"7":{"0":{"c":{"5":{"c":{"8":{"df":0,"docs":{},"e":{"6":{"3":{"2":{"8":{"8":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"5":{"5":{"5":{"5":{"5":{"5":{"6":{"df":0,"docs":{},"e":{"2":{"a":{"4":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{":":{":":{"df":0,"docs":{},"h":{"1":{"2":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"d":{"0":{"9":{"0":{"6":{"b":{"9":{"4":{"d":{"0":{"9":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"5":{"5":{"5":{"5":{"5":{"5":{"6":{"df":0,"docs":{},"e":{"2":{"a":{"4":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"_":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"a":{"2":{"2":{"9":{"c":{"df":0,"docs":{},"f":{"a":{"0":{"c":{"1":{"a":{"2":{"df":0,"docs":{},"e":{"1":{"3":{"df":0,"docs":{},"f":{"(":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"7":{"c":{"0":{"6":{"7":{"1":{"2":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"b":{"df":0,"docs":{},"f":{"c":{"6":{"1":{"d":{"9":{"df":0,"docs":{},"f":{"7":{"4":{"7":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"7":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"3":{"3":{"b":{"2":{"7":{"0":{"a":{"df":0,"docs":{},"f":{"5":{"8":{"4":{"4":{"1":{"9":{"df":0,"docs":{},"f":{"1":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"0":{"7":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"4":{"a":{"9":{"c":{"2":{"6":{"0":{"2":{"df":0,"docs":{},"e":{"7":{"b":{"8":{"2":{"8":{"4":{"0":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"0":{"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"5":{"df":0,"docs":{},"f":{"6":{"b":{"a":{"d":{"d":{"2":{"d":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"a":{"d":{"df":0,"docs":{},"f":{"5":{"5":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"2":{"7":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"6":{"b":{"2":{"1":{"1":{"c":{"df":0,"docs":{},"e":{"1":{"9":{"d":{"b":{"8":{"9":{"8":{"9":{"d":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"2":{"8":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":4,"docs":{"404":{"tf":1.0},"504":{"tf":1.0},"576":{"tf":1.0},"579":{"tf":1.7320508075688772}},"t":{"df":1,"docs":{"472":{"tf":1.0}},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"156":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"111":{"tf":1.0}}}}}}}}},"r":{"<":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":1,"docs":{"440":{"tf":2.0}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"e":{"a":{"c":{"df":0,"docs":{},"h":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"r":{"df":1,"docs":{"440":{"tf":1.0}}}}},"df":1,"docs":{"440":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"a":{"df":0,"docs":{},"y":{"df":16,"docs":{"156":{"tf":1.0},"354":{"tf":1.7320508075688772},"355":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"360":{"tf":1.0},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"525":{"tf":1.0}}}},"c":{"df":10,"docs":{"136":{"tf":1.0},"218":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.0},"300":{"tf":1.0},"330":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":2,"docs":{"156":{"tf":1.0},"211":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"497":{"tf":1.0}}}},"v":{"df":2,"docs":{"200":{"tf":1.0},"284":{"tf":1.0}}}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"156":{"tf":1.0}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"292":{"tf":1.0}}}}}}}},"k":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}},"m":{"df":8,"docs":{"209":{"tf":1.0},"218":{"tf":1.0},"237":{"tf":1.0},"417":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.0},"478":{"tf":1.0},"600":{"tf":1.0}},"u":{"df":0,"docs":{},"l":{"a":{"df":1,"docs":{"469":{"tf":1.0}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":3,"docs":{"3":{"tf":1.0},"502":{"tf":1.0},"508":{"tf":1.4142135623730951}}},"u":{"df":0,"docs":{},"n":{"df":2,"docs":{"370":{"tf":1.0},"456":{"tf":1.7320508075688772}}}}},"u":{"df":0,"docs":{},"m":{"df":4,"docs":{"11":{"tf":1.0},"178":{"tf":1.4142135623730951},"292":{"tf":1.0},"380":{"tf":1.0}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":8,"docs":{"179":{"tf":1.0},"221":{"tf":1.0},"276":{"tf":1.0},"340":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"412":{"tf":1.0},"423":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"n":{"d":{"a":{"df":0,"docs":{},"t":{"df":10,"docs":{"0":{"tf":1.0},"116":{"tf":1.0},"16":{"tf":1.0},"24":{"tf":1.0},"25":{"tf":1.0},"3":{"tf":1.0},"383":{"tf":1.0},"4":{"tf":1.0},"557":{"tf":1.0},"8":{"tf":1.0}}}},"df":23,"docs":{"1":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.0},"16":{"tf":1.4142135623730951},"196":{"tf":1.0},"246":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"276":{"tf":1.0},"328":{"tf":1.4142135623730951},"340":{"tf":1.0},"356":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.4142135623730951},"394":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.4142135623730951},"470":{"tf":1.7320508075688772},"478":{"tf":1.0},"526":{"tf":1.0},"53":{"tf":1.0},"598":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":2,"docs":{"231":{"tf":1.0},"64":{"tf":1.0}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"156":{"tf":1.0},"258":{"tf":2.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"209":{"tf":1.7320508075688772},"278":{"tf":1.4142135623730951},"338":{"tf":1.0},"599":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"458":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":9,"docs":{"201":{"tf":1.0},"284":{"tf":1.4142135623730951},"313":{"tf":1.0},"399":{"tf":1.0},"404":{"tf":5.744562646538029},"456":{"tf":2.23606797749979},"457":{"tf":2.0},"458":{"tf":2.23606797749979},"469":{"tf":1.0}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":21,"docs":{"110":{"tf":1.0},"111":{"tf":1.0},"131":{"tf":1.0},"137":{"tf":1.0},"156":{"tf":1.0},"187":{"tf":1.0},"189":{"tf":1.0},"192":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.4142135623730951},"290":{"tf":1.7320508075688772},"291":{"tf":1.0},"292":{"tf":3.1622776601683795},"293":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.4142135623730951},"297":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"61":{"tf":1.0}}}}}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"431":{"tf":1.0}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"237":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"d":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":48,"docs":{"110":{"tf":1.0},"158":{"tf":1.0},"159":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"2":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"329":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0},"447":{"tf":1.0},"449":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0},"55":{"tf":1.0},"96":{"tf":1.0}}},"q":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":55,"docs":{"100":{"tf":1.4142135623730951},"109":{"tf":1.4142135623730951},"117":{"tf":1.4142135623730951},"126":{"tf":1.4142135623730951},"135":{"tf":1.4142135623730951},"144":{"tf":1.4142135623730951},"154":{"tf":1.4142135623730951},"160":{"tf":1.4142135623730951},"170":{"tf":1.4142135623730951},"180":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"202":{"tf":1.4142135623730951},"210":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"222":{"tf":1.4142135623730951},"236":{"tf":1.4142135623730951},"247":{"tf":1.4142135623730951},"260":{"tf":1.4142135623730951},"269":{"tf":1.4142135623730951},"277":{"tf":1.4142135623730951},"285":{"tf":1.4142135623730951},"293":{"tf":1.4142135623730951},"30":{"tf":1.4142135623730951},"301":{"tf":1.4142135623730951},"314":{"tf":1.4142135623730951},"329":{"tf":1.4142135623730951},"337":{"tf":1.4142135623730951},"348":{"tf":1.4142135623730951},"362":{"tf":1.4142135623730951},"371":{"tf":1.4142135623730951},"381":{"tf":1.4142135623730951},"390":{"tf":1.4142135623730951},"398":{"tf":1.4142135623730951},"409":{"tf":1.4142135623730951},"424":{"tf":1.4142135623730951},"43":{"tf":1.4142135623730951},"432":{"tf":1.4142135623730951},"441":{"tf":1.4142135623730951},"449":{"tf":1.4142135623730951},"459":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"471":{"tf":1.4142135623730951},"479":{"tf":1.4142135623730951},"487":{"tf":1.0},"492":{"tf":1.4142135623730951},"505":{"tf":1.4142135623730951},"524":{"tf":1.4142135623730951},"540":{"tf":1.4142135623730951},"582":{"tf":1.4142135623730951},"593":{"tf":1.4142135623730951},"66":{"tf":1.4142135623730951},"75":{"tf":1.4142135623730951},"80":{"tf":1.4142135623730951},"85":{"tf":1.4142135623730951},"90":{"tf":1.4142135623730951}}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"178":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"191":{"tf":1.0}}}}}}}}}}},"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"555":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":5,"docs":{"168":{"tf":1.4142135623730951},"276":{"tf":1.0},"370":{"tf":1.0},"544":{"tf":1.0},"583":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"389":{"tf":1.0},"52":{"tf":1.0},"566":{"tf":1.0}}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"m":{"<":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"<":{"[":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"307":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"310":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"504":{"tf":1.0},"61":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"408":{"tf":1.0},"561":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":8,"docs":{"136":{"tf":1.0},"178":{"tf":1.0},"213":{"tf":1.0},"276":{"tf":1.4142135623730951},"309":{"tf":1.0},"310":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"w":{"df":1,"docs":{"410":{"tf":1.0}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":12,"docs":{"110":{"tf":1.4142135623730951},"128":{"tf":1.4142135623730951},"156":{"tf":1.4142135623730951},"230":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"405":{"tf":1.0},"47":{"tf":1.0},"498":{"tf":1.0},"538":{"tf":1.0},"560":{"tf":1.0},"95":{"tf":1.0}},"i":{"df":12,"docs":{"195":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"270":{"tf":1.0},"324":{"tf":1.0},"360":{"tf":1.0},"470":{"tf":1.0},"487":{"tf":1.0},"51":{"tf":1.0},"62":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"217":{"tf":1.0}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"2":{"7":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"9":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":56,"docs":{"156":{"tf":1.4142135623730951},"167":{"tf":1.0},"169":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":1.7320508075688772},"209":{"tf":2.0},"214":{"tf":1.0},"217":{"tf":3.1622776601683795},"218":{"tf":2.449489742783178},"221":{"tf":1.4142135623730951},"245":{"tf":1.4142135623730951},"257":{"tf":1.7320508075688772},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":3.0},"300":{"tf":1.0},"307":{"tf":2.0},"308":{"tf":1.0},"309":{"tf":1.7320508075688772},"311":{"tf":1.4142135623730951},"320":{"tf":1.7320508075688772},"324":{"tf":1.7320508075688772},"336":{"tf":2.6457513110645907},"344":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":3.605551275463989},"372":{"tf":1.4142135623730951},"374":{"tf":1.0},"375":{"tf":1.7320508075688772},"380":{"tf":2.0},"383":{"tf":1.4142135623730951},"389":{"tf":1.0},"393":{"tf":1.0},"399":{"tf":1.0},"403":{"tf":1.0},"417":{"tf":1.0},"448":{"tf":2.449489742783178},"450":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"515":{"tf":1.0},"522":{"tf":1.4142135623730951},"526":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"553":{"tf":1.0},"566":{"tf":1.0},"573":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"61":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"374":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"d":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"319":{"tf":1.0},"342":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"df":7,"docs":{"190":{"tf":1.4142135623730951},"268":{"tf":1.0},"498":{"tf":1.4142135623730951},"64":{"tf":1.0},"74":{"tf":1.0},"96":{"tf":1.0},"99":{"tf":1.0}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":14,"docs":{"111":{"tf":1.0},"112":{"tf":1.0},"211":{"tf":1.0},"256":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.0},"420":{"tf":1.4142135623730951},"470":{"tf":1.0},"521":{"tf":1.0},"530":{"tf":1.0}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"526":{"tf":1.0}}}},"t":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"(":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"0":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"419":{"tf":1.4142135623730951}}},"1":{"df":1,"docs":{"419":{"tf":1.0}}},">":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"292":{"tf":3.1622776601683795},"421":{"tf":1.4142135623730951}},"u":{"df":0,"docs":{},"r":{"df":177,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"147":{"tf":1.0},"15":{"tf":1.7320508075688772},"156":{"tf":2.8284271247461903},"16":{"tf":1.7320508075688772},"167":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":1.0},"171":{"tf":2.449489742783178},"18":{"tf":1.0},"188":{"tf":1.0},"19":{"tf":1.0},"199":{"tf":2.6457513110645907},"204":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.0},"217":{"tf":2.6457513110645907},"218":{"tf":2.8284271247461903},"221":{"tf":2.0},"246":{"tf":2.449489742783178},"252":{"tf":1.7320508075688772},"258":{"tf":1.4142135623730951},"268":{"tf":2.449489742783178},"271":{"tf":1.0},"278":{"tf":1.4142135623730951},"284":{"tf":2.0},"292":{"tf":2.23606797749979},"294":{"tf":1.0},"307":{"tf":1.7320508075688772},"308":{"tf":1.0},"310":{"tf":1.0},"312":{"tf":1.0},"318":{"tf":1.4142135623730951},"320":{"tf":1.0},"322":{"tf":1.0},"325":{"tf":1.4142135623730951},"328":{"tf":3.0},"331":{"tf":1.4142135623730951},"334":{"tf":1.7320508075688772},"335":{"tf":1.0},"336":{"tf":5.916079783099616},"337":{"tf":1.0},"338":{"tf":2.449489742783178},"339":{"tf":1.0},"340":{"tf":2.0},"341":{"tf":4.358898943540674},"342":{"tf":2.8284271247461903},"343":{"tf":2.449489742783178},"344":{"tf":1.0},"347":{"tf":2.0},"37":{"tf":2.23606797749979},"370":{"tf":2.6457513110645907},"374":{"tf":1.4142135623730951},"38":{"tf":1.4142135623730951},"380":{"tf":5.916079783099616},"383":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.7320508075688772},"39":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"40":{"tf":2.6457513110645907},"41":{"tf":3.872983346207417},"415":{"tf":1.4142135623730951},"417":{"tf":1.4142135623730951},"419":{"tf":1.4142135623730951},"42":{"tf":1.4142135623730951},"421":{"tf":2.0},"423":{"tf":1.0},"426":{"tf":1.0},"43":{"tf":1.0},"431":{"tf":1.0},"433":{"tf":1.0},"44":{"tf":1.7320508075688772},"45":{"tf":1.7320508075688772},"456":{"tf":1.0},"457":{"tf":2.6457513110645907},"458":{"tf":2.0},"46":{"tf":2.23606797749979},"460":{"tf":1.4142135623730951},"47":{"tf":2.0},"48":{"tf":1.0},"484":{"tf":1.7320508075688772},"485":{"tf":1.4142135623730951},"486":{"tf":1.4142135623730951},"487":{"tf":1.0},"488":{"tf":1.0},"489":{"tf":2.449489742783178},"49":{"tf":2.0},"490":{"tf":1.7320508075688772},"491":{"tf":1.0},"492":{"tf":1.0},"493":{"tf":1.0},"494":{"tf":1.7320508075688772},"495":{"tf":1.7320508075688772},"496":{"tf":1.7320508075688772},"497":{"tf":1.4142135623730951},"498":{"tf":1.0},"499":{"tf":2.0},"50":{"tf":1.0},"500":{"tf":1.7320508075688772},"501":{"tf":1.7320508075688772},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.0},"505":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.4142135623730951},"509":{"tf":1.0},"51":{"tf":2.23606797749979},"510":{"tf":1.7320508075688772},"511":{"tf":1.7320508075688772},"512":{"tf":1.7320508075688772},"513":{"tf":1.7320508075688772},"514":{"tf":1.7320508075688772},"515":{"tf":2.0},"516":{"tf":2.0},"517":{"tf":1.7320508075688772},"518":{"tf":1.7320508075688772},"519":{"tf":1.7320508075688772},"52":{"tf":1.0},"520":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.4142135623730951},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"527":{"tf":1.7320508075688772},"528":{"tf":1.7320508075688772},"529":{"tf":2.0},"53":{"tf":1.4142135623730951},"530":{"tf":1.7320508075688772},"531":{"tf":1.7320508075688772},"532":{"tf":1.7320508075688772},"533":{"tf":2.0},"534":{"tf":2.0},"535":{"tf":1.7320508075688772},"536":{"tf":1.7320508075688772},"537":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.4142135623730951},"540":{"tf":1.0},"541":{"tf":1.0},"542":{"tf":1.7320508075688772},"543":{"tf":1.7320508075688772},"544":{"tf":1.7320508075688772},"545":{"tf":1.7320508075688772},"546":{"tf":1.7320508075688772},"547":{"tf":1.7320508075688772},"548":{"tf":1.7320508075688772},"549":{"tf":1.7320508075688772},"55":{"tf":1.0},"560":{"tf":1.0},"57":{"tf":2.23606797749979},"578":{"tf":1.7320508075688772},"579":{"tf":2.0},"58":{"tf":1.0},"580":{"tf":1.4142135623730951},"584":{"tf":1.7320508075688772},"59":{"tf":1.4142135623730951},"596":{"tf":1.7320508075688772},"598":{"tf":1.0},"599":{"tf":1.0},"600":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}},"e":{"'":{"df":2,"docs":{"347":{"tf":1.0},"457":{"tf":1.0}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"1":{"9":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":3,"docs":{"284":{"tf":1.0},"336":{"tf":1.0},"417":{"tf":1.0}}}}}},"df":0,"docs":{}},"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":11,"docs":{"199":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"309":{"tf":1.0},"328":{"tf":1.7320508075688772},"370":{"tf":2.23606797749979},"375":{"tf":1.0},"380":{"tf":1.4142135623730951},"579":{"tf":1.0},"580":{"tf":1.4142135623730951}}}}}}}}},"=":{"(":{"_":{"_":{"0":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":1.0}}}}},"s":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"(":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"380":{"tf":2.0}}},"df":0,"docs":{}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"_":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"_":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"df":1,"docs":{"380":{"tf":1.0}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"(":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{")":{")":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"_":{"df":1,"docs":{"380":{"tf":2.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"185":{"tf":1.4142135623730951},"189":{"tf":1.0}}}},"df":0,"docs":{}}}}}},":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"d":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"308":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"310":{"tf":1.7320508075688772},"380":{"tf":1.0},"440":{"tf":4.123105625617661}},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"383":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"383":{"tf":1.0}},"l":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"383":{"tf":1.0}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.0}}}}},"{":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"370":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"311":{"tf":1.4142135623730951},"312":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":2.449489742783178}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"<":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"440":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}}},"{":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"1":{"df":1,"docs":{"419":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"[":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"@":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"[":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"@":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"e":{"d":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"<":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}}}}}}}}}}},"g":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":8,"docs":{"217":{"tf":1.0},"218":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"408":{"tf":1.7320508075688772},"410":{"tf":1.0},"460":{"tf":1.0},"508":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"182":{"tf":1.0},"400":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"b":{"a":{"df":0,"docs":{},"g":{"df":4,"docs":{"136":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"df":1,"docs":{"599":{"tf":1.0}},"e":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":1,"docs":{"417":{"tf":1.0}}}}}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"172":{"tf":1.0},"209":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"538":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"153":{"tf":1.0},"9":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":5,"docs":{"246":{"tf":1.0},"383":{"tf":1.0},"469":{"tf":1.0},"552":{"tf":1.0},"599":{"tf":1.0}}}}},"c":{"'":{"d":{"df":6,"docs":{"241":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"347":{"tf":1.0},"463":{"tf":1.0},"65":{"tf":1.4142135623730951},"71":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"_":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"a":{"df":1,"docs":{"218":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"c":{"df":1,"docs":{"214":{"tf":1.4142135623730951}}},"d":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"504":{"tf":2.0}}},"df":5,"docs":{"209":{"tf":1.0},"218":{"tf":2.23606797749979},"239":{"tf":1.0},"431":{"tf":1.0},"65":{"tf":1.0}},"e":{"d":{"df":3,"docs":{"127":{"tf":1.0},"248":{"tf":1.0},"250":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"d":{"b":{"df":13,"docs":{"156":{"tf":1.0},"284":{"tf":2.6457513110645907},"289":{"tf":1.0},"446":{"tf":1.7320508075688772},"447":{"tf":1.0},"448":{"tf":2.8284271247461903},"449":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.4142135623730951},"453":{"tf":1.4142135623730951},"543":{"tf":1.0},"82":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"c":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"n":{"df":1,"docs":{"573":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"@":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":0,"docs":{},"}":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":1,"docs":{"440":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":43,"docs":{"114":{"tf":1.7320508075688772},"115":{"tf":1.0},"116":{"tf":1.0},"117":{"tf":1.0},"118":{"tf":1.0},"119":{"tf":1.4142135623730951},"120":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.4142135623730951},"201":{"tf":1.0},"211":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"27":{"tf":1.0},"319":{"tf":1.0},"321":{"tf":1.0},"33":{"tf":1.4142135623730951},"336":{"tf":1.0},"349":{"tf":1.4142135623730951},"359":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.4142135623730951},"385":{"tf":1.0},"393":{"tf":1.0},"421":{"tf":1.0},"47":{"tf":1.4142135623730951},"486":{"tf":1.0},"492":{"tf":1.0},"502":{"tf":1.0},"513":{"tf":1.0},"515":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":2.449489742783178},"576":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}},"y":{".":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"470":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"169":{"tf":1.0}},"e":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"167":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}}}},"df":34,"docs":{"129":{"tf":1.0},"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"168":{"tf":1.0},"2":{"tf":1.4142135623730951},"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"245":{"tf":1.0},"246":{"tf":1.0},"251":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"307":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.4142135623730951},"328":{"tf":1.0},"347":{"tf":1.0},"363":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":1.7320508075688772},"431":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"46":{"tf":1.0},"522":{"tf":1.0},"526":{"tf":1.0},"529":{"tf":1.4142135623730951},"560":{"tf":1.0},"599":{"tf":1.4142135623730951},"65":{"tf":1.7320508075688772},"79":{"tf":1.7320508075688772},"84":{"tf":1.0}}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":15,"docs":{"156":{"tf":1.4142135623730951},"415":{"tf":1.7320508075688772},"416":{"tf":1.0},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"419":{"tf":1.0},"420":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"423":{"tf":1.0},"424":{"tf":1.0},"425":{"tf":1.0},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0}},"l":{"/":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"421":{"tf":1.0},"423":{"tf":1.0}}}}},"df":0,"docs":{}},"q":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"427":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":1,"docs":{"178":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{"df":1,"docs":{"172":{"tf":1.0}}},"df":0,"docs":{}}}},"v":{"df":0,"docs":{},"e":{"df":40,"docs":{"152":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"179":{"tf":1.0},"19":{"tf":1.0},"191":{"tf":1.4142135623730951},"196":{"tf":1.0},"201":{"tf":1.4142135623730951},"209":{"tf":1.0},"217":{"tf":1.0},"261":{"tf":1.0},"27":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"322":{"tf":1.0},"33":{"tf":1.4142135623730951},"330":{"tf":1.0},"336":{"tf":1.7320508075688772},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"401":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":1.0},"442":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.0},"485":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"542":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.0},"58":{"tf":1.0},"9":{"tf":1.0},"99":{"tf":1.0}},"n":{"df":7,"docs":{"10":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"276":{"tf":1.0},"417":{"tf":1.0},"478":{"tf":1.0},"545":{"tf":1.0}}},"r":{"df":1,"docs":{"469":{"tf":1.0}}}}}},"l":{"a":{"d":{"df":2,"docs":{"113":{"tf":1.0},"51":{"tf":1.0}}},"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"217":{"tf":1.0},"460":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"b":{"a":{"df":0,"docs":{},"l":{"df":7,"docs":{"209":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"336":{"tf":1.7320508075688772},"504":{"tf":1.0},"507":{"tf":1.0},"62":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"433":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"u":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"8":{"0":{":":{"1":{"9":{"df":1,"docs":{"397":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"2":{"7":{":":{"5":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"5":{"1":{"9":{":":{"1":{"2":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"4":{"8":{":":{"9":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"2":{":":{"1":{"6":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"a":{"df":0,"docs":{},"l":{"df":19,"docs":{"11":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.0},"27":{"tf":1.7320508075688772},"276":{"tf":1.0},"29":{"tf":1.4142135623730951},"3":{"tf":1.4142135623730951},"40":{"tf":1.4142135623730951},"42":{"tf":1.0},"431":{"tf":1.0},"437":{"tf":1.0},"458":{"tf":1.0},"487":{"tf":1.0},"496":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"576":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"b":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{}},"df":46,"docs":{"127":{"tf":1.0},"139":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"18":{"tf":1.4142135623730951},"187":{"tf":1.7320508075688772},"203":{"tf":1.0},"209":{"tf":1.7320508075688772},"221":{"tf":1.0},"226":{"tf":1.0},"24":{"tf":1.0},"250":{"tf":1.0},"270":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.4142135623730951},"309":{"tf":1.0},"358":{"tf":1.4142135623730951},"38":{"tf":1.0},"389":{"tf":1.7320508075688772},"392":{"tf":1.0},"394":{"tf":1.0},"414":{"tf":1.0},"425":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"497":{"tf":1.4142135623730951},"506":{"tf":1.0},"51":{"tf":1.4142135623730951},"517":{"tf":1.0},"53":{"tf":1.0},"532":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0},"559":{"tf":1.4142135623730951},"573":{"tf":1.0},"599":{"tf":1.4142135623730951},"60":{"tf":1.0},"9":{"tf":1.7320508075688772}},"e":{"df":15,"docs":{"112":{"tf":1.0},"130":{"tf":1.0},"140":{"tf":1.0},"169":{"tf":1.0},"221":{"tf":1.0},"245":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.0},"417":{"tf":1.0},"457":{"tf":1.0},"478":{"tf":1.0}}},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":2,"docs":{"230":{"tf":1.0},"231":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"54":{"tf":1.0}}}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"e":{"df":2,"docs":{"221":{"tf":1.0},"309":{"tf":1.0}}}},"o":{"d":{"df":32,"docs":{"110":{"tf":1.0},"190":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"225":{"tf":1.0},"231":{"tf":1.0},"235":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"271":{"tf":1.0},"309":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"475":{"tf":1.0},"506":{"tf":1.0},"511":{"tf":1.0},"528":{"tf":1.4142135623730951},"529":{"tf":1.0},"559":{"tf":1.0},"56":{"tf":1.7320508075688772},"57":{"tf":1.7320508075688772}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":3,"docs":{"257":{"tf":1.0},"284":{"tf":1.4142135623730951},"555":{"tf":1.0}}}},"k":{"df":1,"docs":{"156":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"370":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"a":{"df":1,"docs":{"240":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":6,"docs":{"153":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"340":{"tf":1.0},"538":{"tf":1.0}}}},"o":{"df":0,"docs":{},"x":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}},"r":{"a":{"b":{"df":3,"docs":{"391":{"tf":1.0},"456":{"tf":1.0},"526":{"tf":1.0}}},"c":{"df":0,"docs":{},"e":{"'":{"df":7,"docs":{"41":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0}}},"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"b":{"a":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"157":{"tf":1.0}}},"df":0,"docs":{}}},"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"489":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":68,"docs":{"156":{"tf":2.6457513110645907},"192":{"tf":1.0},"206":{"tf":1.0},"214":{"tf":1.7320508075688772},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"226":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"429":{"tf":1.7320508075688772},"430":{"tf":1.0},"431":{"tf":2.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":2.0},"436":{"tf":1.0},"437":{"tf":1.7320508075688772},"438":{"tf":1.7320508075688772},"439":{"tf":1.0},"440":{"tf":1.7320508075688772},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.7320508075688772},"445":{"tf":1.0},"446":{"tf":1.7320508075688772},"447":{"tf":1.0},"448":{"tf":2.8284271247461903},"449":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.7320508075688772},"453":{"tf":1.4142135623730951},"454":{"tf":1.7320508075688772},"455":{"tf":1.0},"456":{"tf":3.0},"457":{"tf":2.6457513110645907},"458":{"tf":2.6457513110645907},"459":{"tf":1.0},"460":{"tf":1.4142135623730951},"461":{"tf":1.0},"462":{"tf":2.23606797749979},"463":{"tf":1.4142135623730951},"464":{"tf":2.0},"465":{"tf":1.7320508075688772},"470":{"tf":1.7320508075688772},"474":{"tf":1.7320508075688772},"475":{"tf":1.0},"511":{"tf":1.7320508075688772},"529":{"tf":1.7320508075688772},"543":{"tf":2.23606797749979},"65":{"tf":1.0},"67":{"tf":1.0},"78":{"tf":1.0},"79":{"tf":2.0},"80":{"tf":1.0},"81":{"tf":2.0},"82":{"tf":2.23606797749979},"9":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"111":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"61":{"tf":1.0}}}},"n":{"d":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"h":{"df":4,"docs":{"12":{"tf":1.0},"470":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"542":{"tf":1.0}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"z":{"df":1,"docs":{"539":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"p":{"df":3,"docs":{"246":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":13,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"209":{"tf":1.0},"211":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.0},"257":{"tf":1.0},"259":{"tf":1.0},"311":{"tf":1.0},"358":{"tf":1.0},"599":{"tf":1.4142135623730951},"65":{"tf":1.0},"77":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":5,"docs":{"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"560":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"469":{"tf":1.0}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"79":{"tf":1.0}}},"df":0,"docs":{}}}}}},"t":{"df":1,"docs":{"258":{"tf":1.0}}}},"w":{"df":1,"docs":{"389":{"tf":1.0}}}},"i":{"d":{"df":2,"docs":{"469":{"tf":2.0},"470":{"tf":1.0}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"599":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":7,"docs":{"1":{"tf":1.0},"12":{"tf":1.0},"15":{"tf":1.0},"16":{"tf":1.4142135623730951},"3":{"tf":1.7320508075688772},"470":{"tf":1.0},"557":{"tf":1.0}}}},"w":{"df":8,"docs":{"134":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"28":{"tf":1.0},"41":{"tf":1.0},"53":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}}}},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"199":{"tf":1.0}}}},"df":0,"docs":{}}}},"t":{";":{"b":{"df":1,"docs":{"12":{"tf":1.0}}},"c":{"df":1,"docs":{"12":{"tf":1.0}}},"d":{"df":1,"docs":{"12":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":1,"docs":{"539":{"tf":1.4142135623730951}}},"u":{"a":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":8,"docs":{"198":{"tf":1.0},"328":{"tf":1.4142135623730951},"410":{"tf":1.0},"422":{"tf":1.0},"456":{"tf":1.4142135623730951},"469":{"tf":1.0},"529":{"tf":1.0},"76":{"tf":1.0}}}}}},"d":{"df":4,"docs":{"268":{"tf":2.0},"270":{"tf":1.0},"272":{"tf":1.0},"565":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":4,"docs":{"209":{"tf":1.0},"48":{"tf":1.0},"486":{"tf":1.0},"599":{"tf":1.0}}}}},"i":{"d":{"a":{"df":0,"docs":{},"n":{"c":{"df":4,"docs":{"156":{"tf":1.0},"203":{"tf":1.0},"363":{"tf":1.0},"472":{"tf":1.0}}},"df":0,"docs":{}}},"df":4,"docs":{"522":{"tf":1.0},"526":{"tf":1.0},"572":{"tf":1.0},"64":{"tf":1.0}}},"df":1,"docs":{"192":{"tf":1.0}}},"r":{"df":0,"docs":{},"u":{"df":1,"docs":{"259":{"tf":1.0}}}},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}}},"h":{"a":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"367":{"tf":1.0},"417":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"431":{"tf":1.0},"79":{"tf":1.0}},"i":{"df":1,"docs":{"457":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{}}},"df":1,"docs":{"380":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"f":{"df":4,"docs":{"200":{"tf":1.0},"300":{"tf":1.0},"480":{"tf":1.4142135623730951},"53":{"tf":1.0}}},"v":{"df":1,"docs":{"276":{"tf":1.0}}}},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"516":{"tf":1.0}}}}}},"n":{"d":{"df":12,"docs":{"188":{"tf":1.0},"235":{"tf":1.0},"250":{"tf":1.0},"272":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"367":{"tf":1.4142135623730951},"433":{"tf":1.0},"440":{"tf":1.0},"453":{"tf":1.0},"517":{"tf":1.0}},"i":{"df":1,"docs":{"397":{"tf":1.0}}},"l":{"df":27,"docs":{"110":{"tf":1.0},"125":{"tf":1.0},"156":{"tf":1.4142135623730951},"175":{"tf":1.7320508075688772},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.4142135623730951},"309":{"tf":1.4142135623730951},"320":{"tf":1.0},"336":{"tf":2.8284271247461903},"340":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.4142135623730951},"347":{"tf":1.0},"380":{"tf":1.0},"412":{"tf":1.0},"418":{"tf":1.0},"470":{"tf":1.4142135623730951},"57":{"tf":1.0}},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"268":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}},".":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"d":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":2,"docs":{"309":{"tf":1.0},"320":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},":":{":":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"320":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"292":{"tf":1.0}}},"(":{"df":0,"docs":{},"s":{")":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},".":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":5,"docs":{"232":{"tf":1.4142135623730951},"268":{"tf":2.0},"292":{"tf":3.4641016151377544},"408":{"tf":1.0},"538":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":2.6457513110645907}}}}}}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.449489742783178}}}}}}}}}}}},"df":0,"docs":{},"g":{"df":13,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"189":{"tf":1.0},"200":{"tf":1.0},"282":{"tf":1.7320508075688772},"283":{"tf":1.0},"284":{"tf":1.7320508075688772},"285":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"431":{"tf":1.4142135623730951}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":35,"docs":{"140":{"tf":1.0},"156":{"tf":1.0},"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.0},"169":{"tf":1.4142135623730951},"170":{"tf":1.0},"171":{"tf":1.4142135623730951},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"178":{"tf":1.0},"217":{"tf":1.0},"234":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"309":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"408":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.0},"46":{"tf":1.0},"483":{"tf":1.0},"502":{"tf":1.4142135623730951},"509":{"tf":1.4142135623730951},"527":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"8":{"tf":1.0}}}},"i":{"df":27,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"188":{"tf":1.0},"21":{"tf":1.0},"214":{"tf":1.0},"221":{"tf":1.4142135623730951},"232":{"tf":1.0},"234":{"tf":1.0},"246":{"tf":1.0},"257":{"tf":1.4142135623730951},"259":{"tf":1.7320508075688772},"268":{"tf":1.7320508075688772},"311":{"tf":1.0},"315":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.4142135623730951},"389":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.4142135623730951},"529":{"tf":1.0},"530":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.7320508075688772},"59":{"tf":1.0},"82":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"54":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"522":{"tf":1.0},"538":{"tf":1.0}}}}}}},"r":{"d":{"df":38,"docs":{"110":{"tf":1.4142135623730951},"136":{"tf":1.0},"156":{"tf":3.0},"171":{"tf":1.0},"175":{"tf":1.7320508075688772},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"248":{"tf":1.0},"251":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"340":{"tf":1.0},"349":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.4142135623730951},"507":{"tf":1.0},"51":{"tf":1.0},"53":{"tf":1.0},"533":{"tf":1.0},"575":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":10,"docs":{"156":{"tf":1.0},"195":{"tf":1.0},"251":{"tf":1.0},"278":{"tf":1.0},"389":{"tf":1.0},"418":{"tf":1.0},"436":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.4142135623730951},"503":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"515":{"tf":1.0}}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":6,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"344":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"df":2,"docs":{"278":{"tf":1.0},"367":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"17":{"tf":1.4142135623730951}}}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":1,"docs":{"419":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"200":{"tf":1.0},"284":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":16,"docs":{"156":{"tf":1.4142135623730951},"193":{"tf":1.7320508075688772},"194":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.0},"202":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"258":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":29,"docs":{"110":{"tf":1.0},"112":{"tf":1.0},"116":{"tf":1.0},"129":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"178":{"tf":1.0},"190":{"tf":1.0},"225":{"tf":1.0},"231":{"tf":1.0},"237":{"tf":1.0},"245":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"289":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"357":{"tf":1.4142135623730951},"359":{"tf":1.4142135623730951},"367":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"421":{"tf":1.0},"436":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.4142135623730951},"46":{"tf":1.0},"462":{"tf":1.0},"538":{"tf":1.0},"64":{"tf":1.0}},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"451":{"tf":1.0},"488":{"tf":1.0}}}},"df":0,"docs":{}}}},"z":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"319":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":2,"docs":{"292":{"tf":1.4142135623730951},"470":{"tf":1.0}},"e":{"'":{"d":{"df":1,"docs":{"470":{"tf":1.0}}},"df":19,"docs":{"178":{"tf":1.4142135623730951},"195":{"tf":1.0},"196":{"tf":1.0},"198":{"tf":1.0},"221":{"tf":1.0},"230":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.7320508075688772},"284":{"tf":1.7320508075688772},"300":{"tf":1.0},"510":{"tf":1.0},"528":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.4142135623730951},"73":{"tf":1.7320508075688772},"74":{"tf":1.0},"76":{"tf":1.4142135623730951},"84":{"tf":1.7320508075688772},"86":{"tf":1.0}},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"209":{"tf":1.0},"268":{"tf":1.4142135623730951}}}}},"a":{"d":{"df":4,"docs":{"359":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.0},"460":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"552":{"tf":1.0}}}}}},"p":{"df":6,"docs":{"136":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"250":{"tf":1.0},"251":{"tf":1.4142135623730951},"380":{"tf":1.0}}},"r":{"d":{"df":7,"docs":{"217":{"tf":1.0},"284":{"tf":1.0},"287":{"tf":1.0},"307":{"tf":1.0},"357":{"tf":1.0},"428":{"tf":1.0},"74":{"tf":1.0}}},"df":3,"docs":{"245":{"tf":1.0},"268":{"tf":1.0},"538":{"tf":1.0}},"t":{"b":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"457":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"t":{"df":2,"docs":{"276":{"tf":1.0},"278":{"tf":1.0}}},"v":{"df":0,"docs":{},"i":{"df":1,"docs":{"189":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"462":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"347":{"tf":1.0},"349":{"tf":1.4142135623730951}}}}}}}}}}},"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"258":{"tf":1.0}}},"df":0,"docs":{}},"l":{"d":{"df":4,"docs":{"268":{"tf":2.0},"421":{"tf":1.4142135623730951},"555":{"tf":1.0},"564":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}},"p":{"df":59,"docs":{"110":{"tf":1.0},"12":{"tf":1.7320508075688772},"14":{"tf":1.4142135623730951},"152":{"tf":1.4142135623730951},"153":{"tf":1.4142135623730951},"16":{"tf":1.0},"168":{"tf":1.4142135623730951},"178":{"tf":1.7320508075688772},"181":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"23":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.7320508075688772},"268":{"tf":1.0},"284":{"tf":2.0},"286":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.4142135623730951},"33":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"37":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"374":{"tf":1.0},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"389":{"tf":1.4142135623730951},"391":{"tf":1.7320508075688772},"397":{"tf":1.0},"434":{"tf":1.0},"445":{"tf":1.0},"47":{"tf":1.0},"472":{"tf":1.0},"478":{"tf":1.0},"485":{"tf":1.4142135623730951},"493":{"tf":1.0},"496":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":2.23606797749979},"544":{"tf":1.4142135623730951},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.4142135623730951},"600":{"tf":1.0},"601":{"tf":1.0},"64":{"tf":1.0},"87":{"tf":1.0},"9":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":12,"docs":{"156":{"tf":2.449489742783178},"292":{"tf":1.4142135623730951},"368":{"tf":1.7320508075688772},"369":{"tf":1.0},"370":{"tf":1.7320508075688772},"371":{"tf":1.0},"372":{"tf":1.4142135623730951},"373":{"tf":1.0},"374":{"tf":1.7320508075688772},"375":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0}}}}}},"n":{"c":{"df":5,"docs":{"217":{"tf":1.0},"318":{"tf":1.0},"322":{"tf":1.0},"377":{"tf":1.0},"417":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":1,"docs":{"245":{"tf":1.0}},"e":{"'":{"df":1,"docs":{"539":{"tf":1.0}}},"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"271":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":51,"docs":{"10":{"tf":1.0},"122":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"159":{"tf":1.0},"16":{"tf":1.4142135623730951},"160":{"tf":1.0},"169":{"tf":1.0},"190":{"tf":1.0},"2":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"24":{"tf":1.0},"249":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"322":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"329":{"tf":1.0},"336":{"tf":1.7320508075688772},"38":{"tf":1.0},"380":{"tf":1.4142135623730951},"381":{"tf":1.0},"389":{"tf":1.0},"390":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.4142135623730951},"398":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.4142135623730951},"449":{"tf":1.0},"457":{"tf":1.0},"486":{"tf":1.0},"491":{"tf":1.0},"498":{"tf":1.4142135623730951},"499":{"tf":1.0},"511":{"tf":1.0},"538":{"tf":1.4142135623730951},"551":{"tf":1.0},"56":{"tf":1.4142135623730951},"57":{"tf":1.0},"583":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.0},"96":{"tf":1.4142135623730951},"99":{"tf":1.0}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":4,"docs":{"300":{"tf":1.4142135623730951},"328":{"tf":1.0},"370":{"tf":1.0},"448":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"300":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"321":{"tf":1.0}}}}}}}},"i":{"c":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"125":{"tf":1.0}}}}},"df":0,"docs":{}},"d":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"350":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"230":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":12,"docs":{"131":{"tf":1.0},"134":{"tf":1.0},"137":{"tf":1.0},"143":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"394":{"tf":1.0},"431":{"tf":1.0},"469":{"tf":1.0},"558":{"tf":1.4142135623730951},"599":{"tf":1.0},"76":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"119":{"tf":1.0},"156":{"tf":1.0},"214":{"tf":1.0},"292":{"tf":1.0},"450":{"tf":1.0},"9":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"61":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"125":{"tf":1.0},"129":{"tf":1.7320508075688772},"336":{"tf":1.0},"414":{"tf":1.0}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":4,"docs":{"164":{"tf":1.0},"28":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0}}}}}}}}},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"268":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0}}}}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"41":{"tf":1.0},"515":{"tf":1.4142135623730951},"533":{"tf":1.7320508075688772},"547":{"tf":1.4142135623730951}}}},"r":{"a":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"547":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"df":4,"docs":{"168":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.0},"380":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"417":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.7320508075688772}}}}}}},"t":{"df":23,"docs":{"209":{"tf":1.0},"214":{"tf":1.0},"244":{"tf":1.0},"25":{"tf":1.0},"321":{"tf":1.0},"351":{"tf":1.0},"408":{"tf":1.0},"418":{"tf":1.0},"429":{"tf":1.7320508075688772},"430":{"tf":1.0},"431":{"tf":1.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":2.449489742783178},"539":{"tf":1.7320508075688772},"564":{"tf":1.0}}}},"m":{"df":0,"docs":{},"m":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}},"o":{"b":{"b":{"df":0,"docs":{},"i":{"df":1,"docs":{"213":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"l":{"d":{"df":8,"docs":{"209":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"237":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":1.0},"4":{"tf":1.0},"421":{"tf":1.4142135623730951}}},"df":0,"docs":{},"e":{"df":3,"docs":{"258":{"tf":1.0},"300":{"tf":1.0},"458":{"tf":1.0}}},"i":{"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"230":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"/":{"a":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"n":{"/":{".":{"c":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":2,"docs":{"268":{"tf":1.0},"284":{"tf":4.358898943540674}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{".":{"c":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"246":{"tf":1.0}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"61":{"tf":1.0}}}}},"o":{"d":{"df":1,"docs":{"358":{"tf":1.0}}},"df":0,"docs":{},"k":{"df":3,"docs":{"457":{"tf":1.0},"546":{"tf":1.0},"61":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"df":10,"docs":{"140":{"tf":1.0},"188":{"tf":1.4142135623730951},"196":{"tf":1.4142135623730951},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"358":{"tf":1.0},"37":{"tf":1.0},"394":{"tf":1.0},"9":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"199":{"tf":1.0},"61":{"tf":1.0}}}}}}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"67":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"df":5,"docs":{"168":{"tf":1.0},"200":{"tf":1.0},"300":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{":":{"/":{"/":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"w":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{".":{"a":{"df":0,"docs":{},"p":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"221":{"tf":2.23606797749979}}}}}}}},"df":20,"docs":{"156":{"tf":1.4142135623730951},"167":{"tf":1.0},"169":{"tf":1.7320508075688772},"195":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.4142135623730951},"231":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.7320508075688772},"292":{"tf":1.7320508075688772},"298":{"tf":1.7320508075688772},"299":{"tf":1.0},"300":{"tf":3.3166247903554},"301":{"tf":1.0},"302":{"tf":2.0},"303":{"tf":1.4142135623730951},"304":{"tf":1.0},"370":{"tf":1.0}},"s":{":":{"/":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"365":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"279":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"o":{"c":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"365":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"349":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"/":{"b":{"9":{"df":0,"docs":{},"f":{"c":{"c":{"d":{"df":0,"docs":{},"e":{"0":{"0":{"df":0,"docs":{},"e":{"7":{"3":{"5":{"6":{"a":{"5":{"df":0,"docs":{},"e":{"3":{"3":{"6":{"6":{"6":{"5":{"a":{"7":{"df":0,"docs":{},"e":{"4":{"8":{"2":{"d":{"4":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"4":{"3":{"9":{"d":{"7":{"1":{"4":{"/":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"c":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"c":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"#":{"df":0,"docs":{},"l":{"1":{"2":{"1":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"2":{"6":{"9":{"1":{"b":{"a":{"b":{"9":{"2":{"8":{"2":{"3":{"a":{"8":{"5":{"9":{"5":{"d":{"1":{"d":{"4":{"5":{"6":{"df":0,"docs":{},"e":{"d":{"5":{"df":0,"docs":{},"f":{"a":{"9":{"6":{"8":{"3":{"6":{"4":{"1":{"d":{"7":{"6":{"#":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"279":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"d":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":1,"docs":{"279":{"tf":1.7320508075688772}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"196":{"tf":1.0},"380":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":0,"docs":{},"v":{"/":{"df":0,"docs":{},"y":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":1,"docs":{"331":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"365":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"/":{"1":{"3":{"7":{"0":{"1":{"4":{"3":{"0":{"2":{"2":{"8":{"0":{"1":{"8":{"4":{"6":{"2":{"7":{"5":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"5":{"7":{"2":{"6":{"0":{"5":{"6":{"7":{"3":{"8":{"8":{"1":{"7":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{},"j":{"c":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"/":{"1":{"3":{"5":{"9":{"8":{"2":{"0":{"4":{"3":{"1":{"1":{"5":{"1":{"2":{"6":{"7":{"8":{"4":{"3":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":2,"docs":{"302":{"tf":1.0},"442":{"tf":1.0}}}},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"'":{"df":1,"docs":{"503":{"tf":1.0}}},":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"504":{"tf":1.0}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"502":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"503":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"504":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":4,"docs":{"502":{"tf":1.7320508075688772},"503":{"tf":2.23606797749979},"504":{"tf":2.23606797749979},"511":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"15":{"tf":1.0},"59":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"217":{"tf":1.0},"284":{"tf":1.0}}}},"d":{"df":0,"docs":{},"r":{"df":2,"docs":{"139":{"tf":1.0},"380":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":1,"docs":{"431":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"40":{"tf":1.0}}}}},"y":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":11,"docs":{"156":{"tf":1.4142135623730951},"466":{"tf":1.7320508075688772},"467":{"tf":1.0},"468":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.4142135623730951},"474":{"tf":1.0},"475":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":1,"docs":{"470":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.7320508075688772}}}}}}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}}}}}},"i":{"'":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{},"m":{"df":5,"docs":{"281":{"tf":1.0},"296":{"tf":1.0},"34":{"tf":1.4142135623730951},"506":{"tf":1.0},"599":{"tf":1.0}}},"v":{"df":4,"docs":{"198":{"tf":1.0},"287":{"tf":1.0},"462":{"tf":1.0},"599":{"tf":1.0}}}},".":{"df":7,"docs":{"154":{"tf":1.0},"272":{"tf":1.0},"336":{"tf":1.0},"417":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0}}},"/":{"df":0,"docs":{},"o":{"df":17,"docs":{"209":{"tf":1.0},"218":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"3":{"tf":1.0},"331":{"tf":1.0},"408":{"tf":1.7320508075688772},"412":{"tf":1.0},"487":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"517":{"tf":1.4142135623730951},"522":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":2.0},"8":{"tf":1.0}}}},"6":{"4":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":0,"docs":{}},"d":{"df":12,"docs":{"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"453":{"tf":1.4142135623730951},"522":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0}},"e":{"'":{"df":1,"docs":{"453":{"tf":1.0}}},"/":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"542":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"a":{"df":26,"docs":{"157":{"tf":1.4142135623730951},"16":{"tf":1.7320508075688772},"24":{"tf":1.7320508075688772},"25":{"tf":1.4142135623730951},"26":{"tf":1.0},"268":{"tf":1.4142135623730951},"3":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.7320508075688772},"39":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.0},"46":{"tf":1.0},"487":{"tf":1.0},"49":{"tf":1.0},"497":{"tf":1.0},"50":{"tf":1.4142135623730951},"53":{"tf":1.0},"54":{"tf":1.4142135623730951},"55":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"560":{"tf":1.0},"59":{"tf":1.0},"79":{"tf":1.0}},"l":{"df":11,"docs":{"138":{"tf":1.0},"146":{"tf":1.0},"16":{"tf":1.0},"162":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"29":{"tf":1.0},"36":{"tf":1.0},"42":{"tf":1.0},"421":{"tf":1.0},"450":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"276":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":9,"docs":{"209":{"tf":1.7320508075688772},"213":{"tf":1.0},"284":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.0},"347":{"tf":1.0},"431":{"tf":1.7320508075688772},"526":{"tf":1.4142135623730951},"61":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}},"df":1,"docs":{"470":{"tf":1.0}}}}},"l":{"df":2,"docs":{"10":{"tf":1.0},"328":{"tf":1.7320508075688772}}},"x":{"df":1,"docs":{"380":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"190":{"tf":1.0},"199":{"tf":1.0},"336":{"tf":1.4142135623730951}}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"259":{"tf":1.4142135623730951}}}},"m":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"189":{"tf":1.0},"217":{"tf":2.23606797749979}},"i":{"df":0,"docs":{},"n":{"df":5,"docs":{"259":{"tf":1.4142135623730951},"380":{"tf":1.0},"508":{"tf":1.7320508075688772},"546":{"tf":1.0},"8":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"df":8,"docs":{"169":{"tf":1.0},"209":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"309":{"tf":1.0},"418":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"328":{"tf":1.0},"417":{"tf":1.0}}}}},"p":{"a":{"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"153":{"tf":1.0},"32":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.7320508075688772},"343":{"tf":1.4142135623730951},"376":{"tf":1.0},"470":{"tf":1.4142135623730951},"496":{"tf":1.4142135623730951},"54":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"127":{"tf":1.0},"196":{"tf":1.7320508075688772},"199":{"tf":1.4142135623730951}}}},"l":{"<":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.0}}},"t":{"df":2,"docs":{"418":{"tf":1.0},"421":{"tf":1.0}}}},"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"df":24,"docs":{"189":{"tf":1.0},"190":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":1.0},"204":{"tf":1.0},"221":{"tf":1.0},"268":{"tf":1.7320508075688772},"292":{"tf":1.7320508075688772},"294":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":2.23606797749979},"336":{"tf":1.0},"347":{"tf":1.7320508075688772},"370":{"tf":1.4142135623730951},"421":{"tf":1.0},"440":{"tf":7.0710678118654755},"458":{"tf":1.4142135623730951},"460":{"tf":1.0},"538":{"tf":1.4142135623730951},"578":{"tf":1.0},"579":{"tf":1.7320508075688772},"580":{"tf":1.7320508075688772}},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":60,"docs":{"141":{"tf":1.7320508075688772},"142":{"tf":1.0},"143":{"tf":1.4142135623730951},"144":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"150":{"tf":1.0},"156":{"tf":1.4142135623730951},"167":{"tf":1.4142135623730951},"190":{"tf":1.4142135623730951},"192":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.7320508075688772},"201":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"221":{"tf":2.6457513110645907},"223":{"tf":1.0},"224":{"tf":1.0},"276":{"tf":2.23606797749979},"278":{"tf":1.0},"292":{"tf":1.7320508075688772},"3":{"tf":1.0},"300":{"tf":2.23606797749979},"302":{"tf":1.0},"303":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":3.3166247903554},"340":{"tf":1.0},"347":{"tf":2.0},"370":{"tf":2.0},"380":{"tf":1.0},"389":{"tf":1.0},"399":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"450":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"504":{"tf":1.0},"51":{"tf":1.4142135623730951},"515":{"tf":1.0},"517":{"tf":1.0},"560":{"tf":1.0},"570":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}}},"i":{"c":{"df":1,"docs":{"358":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"268":{"tf":1.0},"292":{"tf":1.0},"419":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"188":{"tf":1.0},"389":{"tf":1.0}}}}}}},"df":21,"docs":{"110":{"tf":1.0},"120":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"129":{"tf":1.0},"199":{"tf":1.0},"21":{"tf":1.0},"211":{"tf":1.0},"261":{"tf":1.0},"278":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.0},"470":{"tf":1.0},"51":{"tf":1.0},"522":{"tf":1.0},"539":{"tf":1.0},"57":{"tf":1.0},"62":{"tf":1.4142135623730951},"76":{"tf":1.0},"91":{"tf":1.0}}}},"s":{"df":1,"docs":{"218":{"tf":1.0}},"s":{"df":8,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"294":{"tf":1.0},"324":{"tf":1.0},"359":{"tf":1.0},"470":{"tf":1.0},"51":{"tf":1.4142135623730951},"598":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"v":{"df":14,"docs":{"14":{"tf":1.0},"16":{"tf":1.4142135623730951},"17":{"tf":1.0},"181":{"tf":1.0},"209":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"37":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"54":{"tf":1.7320508075688772},"603":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.0}}}}}}},"n":{"/":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"a":{"c":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"16":{"tf":1.0}}}},"df":0,"docs":{}},"df":25,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"54":{"tf":1.0}}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"156":{"tf":1.0}}}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":21,"docs":{"156":{"tf":1.0},"213":{"tf":1.0},"22":{"tf":1.0},"261":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"392":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"41":{"tf":1.4142135623730951},"431":{"tf":1.0},"448":{"tf":1.0},"478":{"tf":1.0},"483":{"tf":1.0},"49":{"tf":1.0},"530":{"tf":1.0},"538":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0},"99":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":1,"docs":{"6":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"268":{"tf":1.0}},"p":{"a":{"df":0,"docs":{},"t":{"df":7,"docs":{"233":{"tf":1.4142135623730951},"234":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.0},"338":{"tf":1.0},"359":{"tf":1.0},"546":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":4,"docs":{"360":{"tf":1.0},"417":{"tf":1.0},"461":{"tf":1.0},"61":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"393":{"tf":1.0}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":6,"docs":{"223":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.4142135623730951},"470":{"tf":1.0},"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"41":{"tf":1.0},"516":{"tf":1.4142135623730951},"534":{"tf":1.4142135623730951},"548":{"tf":1.4142135623730951},"549":{"tf":1.0}}}}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"e":{"df":3,"docs":{"235":{"tf":1.0},"380":{"tf":1.4142135623730951},"448":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":8,"docs":{"146":{"tf":1.0},"325":{"tf":1.0},"370":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.0},"517":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}}},"x":{"df":1,"docs":{"470":{"tf":1.0}}}},"i":{"c":{"df":3,"docs":{"155":{"tf":1.0},"336":{"tf":1.0},"470":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"245":{"tf":1.0},"417":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"v":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"u":{"df":4,"docs":{"199":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"116":{"tf":1.0},"431":{"tf":1.0}}}}}}}},"df":1,"docs":{"140":{"tf":1.0}},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"470":{"tf":1.0},"472":{"tf":1.0}}}},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"359":{"tf":1.0}}},"df":0,"docs":{}}}}},"o":{"!":{"(":{"\"":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.7320508075688772},"539":{"tf":1.0}},"r":{"df":0,"docs":{},"m":{"df":12,"docs":{"178":{"tf":1.0},"196":{"tf":1.0},"261":{"tf":1.0},"309":{"tf":1.0},"328":{"tf":1.0},"342":{"tf":2.0},"357":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"440":{"tf":1.0},"456":{"tf":1.0},"9":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":20,"docs":{"114":{"tf":1.7320508075688772},"115":{"tf":1.0},"116":{"tf":1.0},"117":{"tf":1.0},"118":{"tf":1.0},"119":{"tf":1.0},"120":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"123":{"tf":1.7320508075688772},"124":{"tf":1.0},"125":{"tf":1.0},"126":{"tf":1.0},"127":{"tf":2.449489742783178},"128":{"tf":1.0},"129":{"tf":1.0},"130":{"tf":1.4142135623730951},"131":{"tf":1.0},"517":{"tf":1.0},"530":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"110":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"t":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"188":{"tf":1.0}}}}}},"df":7,"docs":{"217":{"tf":1.0},"328":{"tf":1.4142135623730951},"408":{"tf":1.0},"470":{"tf":1.4142135623730951},"502":{"tf":1.0},"538":{"tf":1.7320508075688772},"547":{"tf":1.0}}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"448":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"336":{"tf":2.0},"404":{"tf":2.449489742783178},"423":{"tf":1.0},"568":{"tf":1.0}}}}},"n":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"545":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"538":{"tf":1.0}}}}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"d":{"df":10,"docs":{"217":{"tf":1.0},"292":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"320":{"tf":1.0},"325":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"408":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}}}},"df":1,"docs":{"538":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":22,"docs":{"156":{"tf":1.0},"211":{"tf":1.4142135623730951},"271":{"tf":1.0},"309":{"tf":1.0},"406":{"tf":1.7320508075688772},"407":{"tf":1.0},"408":{"tf":1.7320508075688772},"409":{"tf":1.0},"410":{"tf":2.0},"411":{"tf":1.0},"412":{"tf":1.7320508075688772},"413":{"tf":1.4142135623730951},"414":{"tf":1.0},"431":{"tf":1.0},"538":{"tf":2.8284271247461903},"541":{"tf":1.0},"543":{"tf":1.4142135623730951},"544":{"tf":1.0},"545":{"tf":1.7320508075688772},"546":{"tf":1.4142135623730951},"547":{"tf":1.0},"548":{"tf":1.4142135623730951}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"268":{"tf":1.0},"284":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"110":{"tf":1.0}}}}},"t":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"245":{"tf":1.0},"284":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}}},"n":{"c":{"df":5,"docs":{"211":{"tf":1.0},"318":{"tf":1.7320508075688772},"421":{"tf":1.0},"422":{"tf":1.4142135623730951},"437":{"tf":1.0}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"522":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"380":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":26,"docs":{"110":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.0},"201":{"tf":1.0},"203":{"tf":1.0},"217":{"tf":1.0},"246":{"tf":1.0},"259":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"312":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":1.0},"422":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"55":{"tf":1.0},"82":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"152":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.4142135623730951},"169":{"tf":1.0},"2":{"tf":1.0},"24":{"tf":1.0},"38":{"tf":1.0},"485":{"tf":1.0},"489":{"tf":1.0},"559":{"tf":1.7320508075688772},"97":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":8,"docs":{"178":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"453":{"tf":1.0},"545":{"tf":1.4142135623730951},"546":{"tf":1.0},"547":{"tf":1.0}}}}}}}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"288":{"tf":1.0}}},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"294":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":31,"docs":{"110":{"tf":1.0},"156":{"tf":2.23606797749979},"192":{"tf":1.4142135623730951},"211":{"tf":1.0},"268":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"431":{"tf":1.0},"454":{"tf":1.7320508075688772},"455":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.0},"460":{"tf":1.4142135623730951},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"504":{"tf":2.0},"507":{"tf":1.0},"526":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"599":{"tf":1.4142135623730951},"62":{"tf":1.4142135623730951},"72":{"tf":1.0},"74":{"tf":1.0}}}},"l":{"df":1,"docs":{"461":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"j":{"df":1,"docs":{"414":{"tf":1.0}}}}}},"n":{"d":{"df":3,"docs":{"408":{"tf":1.0},"51":{"tf":1.0},"558":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":2,"docs":{"110":{"tf":1.0},"331":{"tf":1.0}}},"t":{"df":2,"docs":{"460":{"tf":1.0},"54":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"11":{"tf":1.0},"6":{"tf":1.0}}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"177":{"tf":1.0},"257":{"tf":1.0},"296":{"tf":1.0},"561":{"tf":1.0}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"470":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"422":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":11,"docs":{"2":{"tf":1.0},"276":{"tf":1.0},"353":{"tf":1.0},"380":{"tf":1.4142135623730951},"399":{"tf":1.0},"440":{"tf":1.0},"49":{"tf":1.0},"556":{"tf":1.0},"561":{"tf":1.4142135623730951},"81":{"tf":1.0},"84":{"tf":1.0}}}}},"f":{"a":{"c":{"df":16,"docs":{"112":{"tf":1.0},"209":{"tf":1.7320508075688772},"231":{"tf":1.0},"300":{"tf":2.23606797749979},"315":{"tf":1.0},"336":{"tf":2.6457513110645907},"41":{"tf":1.0},"418":{"tf":1.0},"423":{"tf":1.4142135623730951},"426":{"tf":1.0},"456":{"tf":2.449489742783178},"457":{"tf":1.0},"513":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.0},"542":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"57":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"341":{"tf":1.0},"417":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"v":{"df":1,"docs":{"456":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":6,"docs":{"276":{"tf":1.0},"307":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.4142135623730951},"403":{"tf":1.0},"458":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":14,"docs":{"129":{"tf":1.0},"190":{"tf":1.0},"198":{"tf":1.0},"224":{"tf":1.0},"268":{"tf":1.0},"323":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"393":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"549":{"tf":1.0},"565":{"tf":1.0},"571":{"tf":1.0}},"e":{"df":0,"docs":{},"t":{"df":3,"docs":{"127":{"tf":1.0},"385":{"tf":1.0},"52":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"278":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"156":{"tf":1.0},"278":{"tf":1.0},"457":{"tf":1.0},"535":{"tf":1.0},"61":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":3,"docs":{"110":{"tf":1.0},"336":{"tf":1.0},"344":{"tf":1.4142135623730951}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"313":{"tf":1.0}}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":2,"docs":{"365":{"tf":1.0},"9":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"v":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"559":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}}}}}}}},"r":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"237":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":1,"docs":{"79":{"tf":1.0}}}}},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":9,"docs":{"2":{"tf":1.0},"218":{"tf":1.0},"308":{"tf":1.4142135623730951},"360":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"513":{"tf":1.0},"79":{"tf":1.0}},"t":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"268":{"tf":1.4142135623730951},"380":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"171":{"tf":1.0},"218":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"516":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}},"y":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":9,"docs":{"134":{"tf":1.0},"209":{"tf":1.4142135623730951},"213":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":2.0},"389":{"tf":1.0},"420":{"tf":1.4142135623730951},"431":{"tf":1.0},"538":{"tf":1.0}}}}}}},"o":{"c":{"df":1,"docs":{"336":{"tf":1.0}}},"df":0,"docs":{},"k":{"df":8,"docs":{"156":{"tf":1.0},"178":{"tf":1.0},"286":{"tf":1.0},"320":{"tf":1.0},"336":{"tf":1.7320508075688772},"344":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}},"l":{"df":0,"docs":{},"v":{"df":13,"docs":{"11":{"tf":1.4142135623730951},"156":{"tf":1.0},"18":{"tf":1.0},"2":{"tf":1.4142135623730951},"221":{"tf":1.0},"225":{"tf":1.0},"300":{"tf":1.0},"375":{"tf":1.4142135623730951},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"478":{"tf":1.0},"499":{"tf":1.7320508075688772},"84":{"tf":1.0}}}}}}},"o":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"596":{"tf":1.0}}}}},"df":5,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"325":{"tf":1.0},"349":{"tf":1.0},"530":{"tf":1.0}}},"r":{"c":{"df":1,"docs":{"187":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":25,"docs":{"137":{"tf":1.0},"156":{"tf":1.0},"199":{"tf":1.4142135623730951},"221":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"304":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"312":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.4142135623730951},"404":{"tf":1.0},"41":{"tf":1.0},"423":{"tf":1.0},"448":{"tf":1.4142135623730951},"523":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"342":{"tf":1.0},"534":{"tf":1.0}}}},"s":{"df":0,"docs":{},"u":{"df":56,"docs":{"130":{"tf":1.0},"140":{"tf":1.0},"157":{"tf":1.4142135623730951},"16":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"192":{"tf":1.7320508075688772},"196":{"tf":1.4142135623730951},"211":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.4142135623730951},"226":{"tf":1.0},"234":{"tf":1.0},"24":{"tf":1.4142135623730951},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"25":{"tf":2.0},"252":{"tf":1.0},"256":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"271":{"tf":1.7320508075688772},"272":{"tf":1.4142135623730951},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":2.23606797749979},"286":{"tf":1.7320508075688772},"288":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.4142135623730951},"340":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"373":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.4142135623730951},"411":{"tf":1.0},"440":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"481":{"tf":1.0},"521":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0},"558":{"tf":3.0},"559":{"tf":1.7320508075688772},"560":{"tf":1.0},"562":{"tf":1.0},"564":{"tf":1.4142135623730951},"599":{"tf":1.0}}}}},"t":{"'":{"d":{"df":2,"docs":{"196":{"tf":1.0},"517":{"tf":1.0}}},"df":56,"docs":{"116":{"tf":1.0},"118":{"tf":1.0},"120":{"tf":1.0},"122":{"tf":1.0},"125":{"tf":1.0},"128":{"tf":1.0},"140":{"tf":1.0},"150":{"tf":1.0},"156":{"tf":2.6457513110645907},"181":{"tf":1.0},"198":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"217":{"tf":2.8284271247461903},"218":{"tf":2.6457513110645907},"225":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.0},"252":{"tf":1.7320508075688772},"258":{"tf":1.0},"259":{"tf":1.4142135623730951},"261":{"tf":1.0},"265":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.7320508075688772},"292":{"tf":1.0},"310":{"tf":1.4142135623730951},"312":{"tf":1.0},"321":{"tf":1.0},"324":{"tf":1.0},"347":{"tf":1.0},"356":{"tf":1.4142135623730951},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"391":{"tf":1.4142135623730951},"394":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"483":{"tf":1.0},"502":{"tf":1.4142135623730951},"538":{"tf":1.0},"54":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":1.7320508075688772},"62":{"tf":1.0},"8":{"tf":1.0},"82":{"tf":1.0},"96":{"tf":1.0}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.0}}}}},"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"157":{"tf":1.0},"489":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":9,"docs":{"196":{"tf":1.4142135623730951},"197":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"418":{"tf":1.0},"553":{"tf":1.4142135623730951},"557":{"tf":1.0},"568":{"tf":1.0},"599":{"tf":1.0}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"324":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":26,"docs":{"110":{"tf":1.0},"156":{"tf":1.7320508075688772},"207":{"tf":1.7320508075688772},"208":{"tf":1.0},"209":{"tf":1.0},"210":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"307":{"tf":1.7320508075688772},"308":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.7320508075688772},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"313":{"tf":1.4142135623730951},"315":{"tf":1.0},"322":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.4142135623730951},"458":{"tf":1.0},"573":{"tf":1.7320508075688772},"599":{"tf":1.0},"61":{"tf":1.4142135623730951}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":16,"docs":{"155":{"tf":1.4142135623730951},"156":{"tf":1.7320508075688772},"187":{"tf":1.0},"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"218":{"tf":1.4142135623730951},"312":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.0},"457":{"tf":1.0},"499":{"tf":1.4142135623730951},"538":{"tf":1.0},"560":{"tf":1.0},"62":{"tf":1.0}}}}}}}},"j":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"m":{"df":1,"docs":{"153":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"m":{"c":{"df":0,"docs":{},"m":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"198":{"tf":1.0}}}}}},"v":{"a":{"df":7,"docs":{"127":{"tf":1.0},"209":{"tf":2.8284271247461903},"213":{"tf":1.7320508075688772},"214":{"tf":1.0},"414":{"tf":1.0},"73":{"tf":2.23606797749979},"74":{"tf":1.0}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":10,"docs":{"196":{"tf":1.0},"205":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.7320508075688772},"232":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.7320508075688772},"394":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"r":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"602":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}},"o":{"b":{"df":4,"docs":{"221":{"tf":1.0},"268":{"tf":1.0},"358":{"tf":1.0},"502":{"tf":1.0}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"311":{"tf":1.7320508075688772},"380":{"tf":1.0}},"l":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"1":{":":{"1":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":8,"docs":{"268":{"tf":1.0},"292":{"tf":1.0},"312":{"tf":1.0},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.0},"587":{"tf":1.7320508075688772},"599":{"tf":1.0}}}},"n":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"603":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":4,"docs":{"136":{"tf":1.0},"268":{"tf":1.0},"356":{"tf":1.4142135623730951},"370":{"tf":1.0}}}}}}},"y":{"df":2,"docs":{"276":{"tf":1.0},"8":{"tf":1.0}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"213":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"s":{"df":2,"docs":{"280":{"tf":1.0},"380":{"tf":1.0}}},"u":{"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"76":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":2,"docs":{"217":{"tf":1.0},"245":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"m":{"df":1,"docs":{"73":{"tf":1.0}}}},"z":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"602":{"tf":1.0}}}}},"df":0,"docs":{}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":42,"docs":{"134":{"tf":1.4142135623730951},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"199":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"216":{"tf":1.0},"218":{"tf":1.0},"220":{"tf":1.0},"240":{"tf":1.0},"258":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.4142135623730951},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"9":{"tf":1.0}}}},"p":{"df":0,"docs":{},"t":{"df":4,"docs":{"127":{"tf":1.0},"320":{"tf":1.4142135623730951},"389":{"tf":1.0},"419":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"(":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"(":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":3,"docs":{"336":{"tf":4.47213595499958},"344":{"tf":1.0},"503":{"tf":1.0}}}}}},"y":{"df":13,"docs":{"154":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"268":{"tf":1.7320508075688772},"339":{"tf":1.0},"470":{"tf":1.0},"494":{"tf":1.4142135623730951},"507":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951},"538":{"tf":2.23606797749979},"552":{"tf":1.4142135623730951},"583":{"tf":1.0},"61":{"tf":1.4142135623730951}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":8,"docs":{"196":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.0},"385":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":1.0},"89":{"tf":1.0}}},"df":0,"docs":{}}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"167":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"a":{"df":1,"docs":{"473":{"tf":1.0}}},"df":0,"docs":{}}}}}},"n":{"d":{"df":18,"docs":{"156":{"tf":1.4142135623730951},"200":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"264":{"tf":1.0},"330":{"tf":1.0},"349":{"tf":1.4142135623730951},"370":{"tf":1.0},"389":{"tf":1.0},"412":{"tf":1.4142135623730951},"423":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"47":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"478":{"tf":1.0}}}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":3,"docs":{"218":{"tf":1.0},"246":{"tf":1.0},"389":{"tf":1.0}}}},"o":{"df":0,"docs":{},"w":{"df":71,"docs":{"118":{"tf":1.0},"130":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"171":{"tf":1.0},"181":{"tf":1.0},"188":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.4142135623730951},"230":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"246":{"tf":1.4142135623730951},"25":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.4142135623730951},"304":{"tf":1.0},"319":{"tf":1.0},"321":{"tf":1.0},"340":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.4142135623730951},"370":{"tf":1.0},"372":{"tf":1.0},"377":{"tf":1.0},"380":{"tf":2.449489742783178},"383":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"401":{"tf":1.0},"405":{"tf":1.0},"408":{"tf":2.0},"41":{"tf":1.0},"413":{"tf":1.0},"417":{"tf":1.0},"442":{"tf":1.0},"445":{"tf":1.0},"456":{"tf":1.4142135623730951},"458":{"tf":1.0},"465":{"tf":1.4142135623730951},"475":{"tf":1.4142135623730951},"48":{"tf":1.4142135623730951},"483":{"tf":1.0},"49":{"tf":1.7320508075688772},"499":{"tf":1.0},"50":{"tf":1.4142135623730951},"508":{"tf":1.4142135623730951},"511":{"tf":1.4142135623730951},"52":{"tf":1.0},"521":{"tf":1.0},"529":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"g":{"df":20,"docs":{"153":{"tf":1.0},"156":{"tf":1.0},"192":{"tf":1.0},"196":{"tf":1.0},"232":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"330":{"tf":1.0},"383":{"tf":1.0},"385":{"tf":1.0},"427":{"tf":1.0},"476":{"tf":1.7320508075688772},"477":{"tf":1.0},"478":{"tf":1.0},"479":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"559":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"271":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":7,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"276":{"tf":1.0},"402":{"tf":1.0},"436":{"tf":1.0},"469":{"tf":1.0},"54":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"/":{"df":0,"docs":{},"s":{"c":{"a":{"df":0,"docs":{},"l":{"a":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"73":{"tf":1.0},"74":{"tf":2.0}}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"249":{"tf":1.0}}}}}}}}},"u":{"b":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":3.7416573867739413}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"440":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"l":{"a":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"539":{"tf":2.0}}}}},"c":{"df":0,"docs":{},"k":{"df":16,"docs":{"156":{"tf":1.4142135623730951},"181":{"tf":1.0},"211":{"tf":1.0},"231":{"tf":1.0},"256":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"361":{"tf":1.0},"363":{"tf":1.0},"433":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"521":{"tf":1.0},"572":{"tf":1.0},"81":{"tf":1.0}}}},"df":0,"docs":{},"m":{"b":{"d":{"a":{"df":2,"docs":{"457":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}}},"n":{"d":{"df":1,"docs":{"156":{"tf":1.0}}},"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"271":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"/":{"c":{"df":0,"docs":{},"h":{"1":{"7":{"df":1,"docs":{"365":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":24,"docs":{"258":{"tf":1.0},"284":{"tf":1.0},"305":{"tf":1.7320508075688772},"306":{"tf":1.0},"307":{"tf":1.4142135623730951},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.4142135623730951},"323":{"tf":1.0},"324":{"tf":1.0},"325":{"tf":1.0},"523":{"tf":1.0}}}}}},"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"#":{"7":{"0":{"2":{"6":{"3":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"4":{"3":{"1":{"2":{"2":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"7":{"4":{"7":{"8":{"df":1,"docs":{"271":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"2":{"2":{"9":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":3,"docs":{"17":{"tf":1.0},"580":{"tf":1.0},"599":{"tf":1.0}},"u":{"a":{"df":0,"docs":{},"g":{"df":55,"docs":{"110":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.7320508075688772},"156":{"tf":1.7320508075688772},"173":{"tf":1.0},"183":{"tf":1.0},"192":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"223":{"tf":1.0},"230":{"tf":2.0},"239":{"tf":1.4142135623730951},"241":{"tf":1.7320508075688772},"248":{"tf":1.0},"250":{"tf":1.4142135623730951},"251":{"tf":1.0},"261":{"tf":1.4142135623730951},"265":{"tf":1.7320508075688772},"272":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.4142135623730951},"3":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"316":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.4142135623730951},"350":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"367":{"tf":1.7320508075688772},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"394":{"tf":1.4142135623730951},"403":{"tf":1.7320508075688772},"414":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"475":{"tf":1.0},"511":{"tf":1.0},"516":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.4142135623730951},"67":{"tf":1.0},"71":{"tf":1.4142135623730951},"72":{"tf":1.4142135623730951},"76":{"tf":1.0},"9":{"tf":1.0}},"e":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"df":1,"docs":{"480":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":3,"docs":{"309":{"tf":1.4142135623730951},"318":{"tf":1.7320508075688772},"347":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"g":{"df":17,"docs":{"116":{"tf":1.0},"127":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0},"156":{"tf":1.0},"209":{"tf":2.0},"211":{"tf":1.0},"214":{"tf":1.0},"245":{"tf":1.4142135623730951},"252":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":2.0},"358":{"tf":1.0},"392":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"209":{"tf":1.0},"245":{"tf":1.0},"515":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"_":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":7,"docs":{"217":{"tf":1.7320508075688772},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"356":{"tf":1.0},"380":{"tf":1.7320508075688772},"431":{"tf":1.0},"553":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":3,"docs":{"562":{"tf":1.4142135623730951},"72":{"tf":1.0},"89":{"tf":1.0}},"n":{"c":{"df":6,"docs":{"143":{"tf":1.0},"284":{"tf":1.0},"356":{"tf":1.0},"431":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":17,"docs":{"16":{"tf":1.0},"171":{"tf":1.0},"201":{"tf":1.0},"221":{"tf":1.0},"237":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"312":{"tf":1.0},"313":{"tf":1.0},"347":{"tf":1.0},"417":{"tf":1.0},"46":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":5,"docs":{"116":{"tf":1.0},"233":{"tf":1.0},"237":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"h":{"df":4,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"284":{"tf":1.0},"502":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}},"y":{"df":2,"docs":{"10":{"tf":1.0},"349":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"431":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0}}}}},"z":{"df":0,"docs":{},"i":{"df":1,"docs":{"380":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"421":{"tf":1.0},"422":{"tf":1.0}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":19,"docs":{"1":{"tf":1.7320508075688772},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"17":{"tf":1.4142135623730951},"183":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.4142135623730951},"270":{"tf":1.0},"278":{"tf":1.0},"319":{"tf":1.4142135623730951},"323":{"tf":1.0},"325":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"460":{"tf":1.0},"513":{"tf":1.0},"515":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":3,"docs":{"211":{"tf":1.0},"240":{"tf":1.0},"515":{"tf":1.0}}},"r":{"df":0,"docs":{},"n":{"df":40,"docs":{"136":{"tf":1.0},"153":{"tf":1.0},"18":{"tf":1.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"195":{"tf":1.4142135623730951},"199":{"tf":1.0},"221":{"tf":1.0},"240":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.0},"358":{"tf":1.7320508075688772},"360":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.4142135623730951},"382":{"tf":1.0},"383":{"tf":2.449489742783178},"389":{"tf":1.0},"397":{"tf":1.0},"440":{"tf":1.0},"445":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.7320508075688772},"502":{"tf":1.0},"503":{"tf":1.4142135623730951},"54":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.4142135623730951},"545":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.0},"86":{"tf":1.0}}}},"v":{"df":10,"docs":{"25":{"tf":1.0},"278":{"tf":1.0},"361":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"389":{"tf":1.0},"457":{"tf":1.0},"50":{"tf":1.4142135623730951},"54":{"tf":1.0},"57":{"tf":1.0}}}},"d":{"df":5,"docs":{"336":{"tf":1.0},"385":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0},"56":{"tf":1.0}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":8,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"302":{"tf":1.0},"408":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":1.0},"558":{"tf":1.0},"59":{"tf":1.0}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"380":{"tf":1.0},"458":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"s":{"df":7,"docs":{"138":{"tf":1.0},"196":{"tf":1.0},"209":{"tf":1.0},"304":{"tf":1.0},"319":{"tf":1.0},"333":{"tf":1.4142135623730951},"367":{"tf":1.0}}}},"t":{"'":{"df":4,"docs":{"200":{"tf":1.0},"300":{"tf":1.0},"408":{"tf":1.4142135623730951},"538":{"tf":1.0}}},"df":3,"docs":{"178":{"tf":1.0},"214":{"tf":1.0},"421":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":12,"docs":{"119":{"tf":1.0},"131":{"tf":1.0},"134":{"tf":1.0},"137":{"tf":1.7320508075688772},"156":{"tf":1.4142135623730951},"190":{"tf":1.0},"336":{"tf":1.0},"431":{"tf":1.0},"61":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.0}}},"r":{"a":{"df":0,"docs":{},"g":{"df":3,"docs":{"211":{"tf":1.0},"389":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"2":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"c":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{".":{"6":{"`":{"_":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"c":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":1,"docs":{"404":{"tf":1.0}}},"df":3,"docs":{"17":{"tf":1.0},"171":{"tf":1.0},"408":{"tf":1.0}},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":66,"docs":{"127":{"tf":1.0},"145":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":2.449489742783178},"179":{"tf":1.0},"218":{"tf":1.4142135623730951},"221":{"tf":2.23606797749979},"230":{"tf":1.0},"231":{"tf":1.0},"235":{"tf":1.4142135623730951},"240":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"261":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"300":{"tf":3.0},"302":{"tf":2.0},"303":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.4142135623730951},"336":{"tf":2.449489742783178},"344":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.7320508075688772},"360":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"399":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"431":{"tf":1.0},"438":{"tf":1.7320508075688772},"439":{"tf":1.0},"440":{"tf":1.7320508075688772},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"456":{"tf":2.449489742783178},"457":{"tf":1.4142135623730951},"460":{"tf":1.4142135623730951},"461":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"503":{"tf":1.0},"513":{"tf":1.0},"521":{"tf":1.4142135623730951},"523":{"tf":1.0},"526":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"535":{"tf":1.0},"56":{"tf":1.0},"599":{"tf":2.0},"61":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"61":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}}}},"y":{"'":{"df":2,"docs":{"268":{"tf":1.0},"349":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"d":{"df":1,"docs":{"41":{"tf":1.0}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":2,"docs":{"5":{"tf":2.6457513110645907},"6":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"y":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"595":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}},"df":39,"docs":{"122":{"tf":1.0},"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":10,"docs":{"217":{"tf":2.8284271247461903},"218":{"tf":3.0},"221":{"tf":1.4142135623730951},"259":{"tf":1.0},"292":{"tf":2.0},"375":{"tf":1.7320508075688772},"421":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"462":{"tf":1.0},"581":{"tf":1.4142135623730951}}}}}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"343":{"tf":1.0}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}}}}}}}}},"k":{"df":0,"docs":{},"e":{"df":4,"docs":{"417":{"tf":1.0},"531":{"tf":1.4142135623730951},"54":{"tf":1.0},"79":{"tf":1.0}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"475":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":8,"docs":{"189":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"370":{"tf":1.0},"391":{"tf":1.0},"478":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"e":{"df":10,"docs":{"168":{"tf":1.0},"217":{"tf":1.0},"232":{"tf":1.0},"284":{"tf":1.0},"383":{"tf":1.0},"397":{"tf":1.7320508075688772},"448":{"tf":2.0},"453":{"tf":1.0},"538":{"tf":2.23606797749979},"559":{"tf":1.0}}},"k":{"df":27,"docs":{"143":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.0},"159":{"tf":1.0},"162":{"tf":1.0},"196":{"tf":1.0},"245":{"tf":1.0},"276":{"tf":1.0},"28":{"tf":1.0},"336":{"tf":1.0},"343":{"tf":1.0},"36":{"tf":1.4142135623730951},"41":{"tf":1.4142135623730951},"419":{"tf":1.0},"481":{"tf":1.0},"486":{"tf":1.0},"489":{"tf":1.0},"491":{"tf":1.0},"493":{"tf":1.0},"498":{"tf":1.0},"516":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"560":{"tf":1.0},"562":{"tf":1.0},"597":{"tf":1.0}}},"t":{"df":6,"docs":{"171":{"tf":1.0},"526":{"tf":1.0},"563":{"tf":1.7320508075688772},"564":{"tf":1.0},"565":{"tf":1.0},"566":{"tf":1.4142135623730951}}},"u":{"df":0,"docs":{},"x":{"df":3,"docs":{"209":{"tf":1.0},"245":{"tf":1.0},"397":{"tf":2.8284271247461903}}}}},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"67":{"tf":1.0}}}}},"t":{"df":13,"docs":{"217":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"370":{"tf":1.0},"436":{"tf":1.0},"499":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":2.8284271247461903},"539":{"tf":1.4142135623730951},"558":{"tf":1.0},"598":{"tf":1.0},"61":{"tf":1.0},"95":{"tf":1.7320508075688772},"96":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"538":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"p":{"a":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"440":{"tf":4.242640687119285}},"s":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"325":{"tf":1.0},"419":{"tf":1.0}},"r":{"df":1,"docs":{"534":{"tf":1.0}}}},"t":{"df":0,"docs":{},"l":{"df":11,"docs":{"129":{"tf":1.0},"153":{"tf":1.0},"201":{"tf":1.0},"221":{"tf":1.4142135623730951},"336":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"413":{"tf":1.0},"456":{"tf":1.0},"522":{"tf":1.0},"544":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":8,"docs":{"156":{"tf":1.4142135623730951},"18":{"tf":1.7320508075688772},"217":{"tf":1.0},"284":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"51":{"tf":1.0},"562":{"tf":1.0}}}}},"l":{"d":{"b":{"df":2,"docs":{"289":{"tf":1.0},"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"v":{"df":0,"docs":{},"m":{"df":2,"docs":{"336":{"tf":1.0},"599":{"tf":1.0}}}}},"o":{"a":{"d":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"217":{"tf":1.7320508075688772}},"e":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"217":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":5,"docs":{"217":{"tf":1.7320508075688772},"268":{"tf":1.0},"307":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}},"c":{"a":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"4":{"8":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"2":{":":{"1":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":9,"docs":{"209":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"397":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.4142135623730951},"538":{"tf":1.0}}},"t":{"df":1,"docs":{"539":{"tf":1.0}}}},"df":0,"docs":{},"k":{"<":{"df":0,"docs":{},"u":{"3":{"2":{"df":1,"docs":{"564":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":16,"docs":{"156":{"tf":2.0},"266":{"tf":1.7320508075688772},"267":{"tf":1.0},"268":{"tf":3.4641016151377544},"269":{"tf":1.0},"270":{"tf":1.4142135623730951},"271":{"tf":1.0},"272":{"tf":1.4142135623730951},"273":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"341":{"tf":1.4142135623730951},"363":{"tf":1.0},"517":{"tf":1.4142135623730951},"565":{"tf":1.0},"599":{"tf":1.0}}}},"df":1,"docs":{"246":{"tf":1.0}},"g":{"!":{"(":{"\"":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"178":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"!":{"(":{"\"":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"{":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":7,"docs":{"178":{"tf":1.7320508075688772},"217":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"408":{"tf":2.0},"431":{"tf":2.6457513110645907},"538":{"tf":1.7320508075688772}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":1,"docs":{"412":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"i":{"c":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":9,"docs":{"112":{"tf":1.0},"139":{"tf":1.0},"200":{"tf":1.0},"232":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.0},"423":{"tf":1.0},"462":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"g":{"df":19,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"203":{"tf":1.0},"217":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"340":{"tf":1.0},"380":{"tf":2.6457513110645907},"383":{"tf":1.7320508075688772},"389":{"tf":1.0},"422":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.4142135623730951},"478":{"tf":1.0},"481":{"tf":1.0},"539":{"tf":1.0},"65":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"268":{"tf":1.0},"353":{"tf":1.0},"385":{"tf":1.0},"402":{"tf":1.0},"417":{"tf":1.0},"599":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"k":{"df":60,"docs":{"125":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.4142135623730951},"168":{"tf":1.0},"169":{"tf":1.0},"190":{"tf":2.0},"197":{"tf":1.0},"2":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":2.449489742783178},"217":{"tf":2.0},"224":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.4142135623730951},"25":{"tf":1.0},"268":{"tf":2.0},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"300":{"tf":1.0},"32":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"347":{"tf":1.7320508075688772},"357":{"tf":1.0},"358":{"tf":2.0},"363":{"tf":1.0},"37":{"tf":1.0},"380":{"tf":3.4641016151377544},"383":{"tf":1.0},"389":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"404":{"tf":1.0},"405":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.7320508075688772},"470":{"tf":1.0},"472":{"tf":1.0},"475":{"tf":1.0},"481":{"tf":1.0},"485":{"tf":1.0},"486":{"tf":1.0},"496":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"506":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0},"62":{"tf":1.0}}},"p":{"df":20,"docs":{"156":{"tf":1.7320508075688772},"185":{"tf":1.7320508075688772},"186":{"tf":1.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":2.0},"191":{"tf":1.0},"192":{"tf":2.23606797749979},"200":{"tf":2.0},"328":{"tf":2.0},"336":{"tf":1.0},"440":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.4142135623730951},"462":{"tf":1.0},"463":{"tf":1.0},"504":{"tf":2.0},"599":{"tf":2.23606797749979},"62":{"tf":1.7320508075688772}}},"s":{"df":1,"docs":{"11":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"389":{"tf":1.0},"9":{"tf":1.0}}},"s":{"df":2,"docs":{"457":{"tf":1.0},"572":{"tf":1.0}}},"t":{"df":9,"docs":{"156":{"tf":1.0},"215":{"tf":1.7320508075688772},"216":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"226":{"tf":1.0},"273":{"tf":1.0},"367":{"tf":1.0},"431":{"tf":1.0}}}},"t":{"df":40,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"264":{"tf":1.0},"268":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"313":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"338":{"tf":1.4142135623730951},"341":{"tf":1.4142135623730951},"365":{"tf":1.0},"367":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.4142135623730951},"399":{"tf":1.0},"402":{"tf":1.0},"418":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.0},"521":{"tf":1.0},"55":{"tf":1.0},"564":{"tf":1.0},"599":{"tf":1.4142135623730951},"65":{"tf":1.0},"79":{"tf":1.0},"86":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":10,"docs":{"230":{"tf":1.0},"41":{"tf":1.0},"457":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0},"92":{"tf":1.0}}}},"w":{"df":9,"docs":{"108":{"tf":1.0},"134":{"tf":1.0},"143":{"tf":1.0},"190":{"tf":1.0},"347":{"tf":1.0},"356":{"tf":1.0},"558":{"tf":1.4142135623730951},"79":{"tf":1.0},"82":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"156":{"tf":1.0},"319":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"408":{"tf":1.0}}}}},"u":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"271":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"k":{"df":2,"docs":{"174":{"tf":1.0},"244":{"tf":1.0}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"328":{"tf":1.0},"360":{"tf":1.0},"542":{"tf":1.0}}}}}}},"df":0,"docs":{}},"w":{"df":0,"docs":{},"p":{"df":1,"docs":{"284":{"tf":1.0}}}}},"m":{"a":{"c":{"df":1,"docs":{"187":{"tf":1.0}},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":6,"docs":{"197":{"tf":1.0},"199":{"tf":2.0},"200":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":2.0},"318":{"tf":1.7320508075688772}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"397":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"o":{"df":5,"docs":{"246":{"tf":1.7320508075688772},"252":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"392":{"tf":1.4142135623730951}}}}},"d":{"df":0,"docs":{},"e":{"df":13,"docs":{"169":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"235":{"tf":1.0},"246":{"tf":1.0},"268":{"tf":1.4142135623730951},"336":{"tf":1.0},"34":{"tf":1.0},"361":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"417":{"tf":1.4142135623730951},"423":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"1":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{":":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"df":1,"docs":{"404":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":34,"docs":{"177":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"233":{"tf":1.0},"244":{"tf":1.4142135623730951},"257":{"tf":2.0},"258":{"tf":1.7320508075688772},"284":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":2.449489742783178},"311":{"tf":1.0},"313":{"tf":1.0},"320":{"tf":1.0},"380":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":1.4142135623730951},"425":{"tf":1.0},"448":{"tf":2.449489742783178},"457":{"tf":1.0},"494":{"tf":1.0},"502":{"tf":2.0},"507":{"tf":1.0},"522":{"tf":2.449489742783178},"523":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.4142135623730951},"546":{"tf":1.0},"590":{"tf":1.7320508075688772},"591":{"tf":1.0},"592":{"tf":1.0},"593":{"tf":1.0},"599":{"tf":1.0}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":10,"docs":{"121":{"tf":1.0},"276":{"tf":2.0},"328":{"tf":1.0},"366":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"469":{"tf":1.0},"65":{"tf":1.0},"89":{"tf":1.0},"91":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":5,"docs":{"41":{"tf":1.0},"417":{"tf":1.0},"65":{"tf":1.0},"76":{"tf":1.0},"81":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":7,"docs":{"161":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"29":{"tf":1.0},"342":{"tf":1.0},"42":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}},"k":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"190":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}},"df":130,"docs":{"101":{"tf":1.4142135623730951},"110":{"tf":1.7320508075688772},"118":{"tf":1.4142135623730951},"122":{"tf":1.0},"127":{"tf":1.4142135623730951},"136":{"tf":1.4142135623730951},"145":{"tf":1.4142135623730951},"147":{"tf":1.0},"156":{"tf":2.6457513110645907},"158":{"tf":1.0},"16":{"tf":1.0},"166":{"tf":1.0},"167":{"tf":1.0},"173":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"186":{"tf":1.0},"188":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.4142135623730951},"216":{"tf":1.0},"217":{"tf":1.0},"22":{"tf":1.4142135623730951},"220":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"23":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"267":{"tf":1.0},"268":{"tf":1.7320508075688772},"275":{"tf":1.0},"278":{"tf":1.7320508075688772},"283":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.7320508075688772},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"303":{"tf":1.0},"304":{"tf":1.0},"306":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.0},"322":{"tf":1.0},"324":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"335":{"tf":1.0},"336":{"tf":1.7320508075688772},"34":{"tf":1.4142135623730951},"342":{"tf":1.0},"343":{"tf":1.0},"346":{"tf":1.0},"349":{"tf":1.4142135623730951},"352":{"tf":1.0},"354":{"tf":1.7320508075688772},"355":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.4142135623730951},"358":{"tf":1.0},"359":{"tf":2.0},"360":{"tf":1.0},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":1.7320508075688772},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.0},"370":{"tf":1.4142135623730951},"375":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.7320508075688772},"386":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"396":{"tf":1.0},"40":{"tf":1.4142135623730951},"407":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.4142135623730951},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"428":{"tf":1.0},"447":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":2.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"503":{"tf":1.4142135623730951},"515":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.4142135623730951},"525":{"tf":1.0},"53":{"tf":1.0},"536":{"tf":1.7320508075688772},"537":{"tf":1.4142135623730951},"538":{"tf":2.0},"539":{"tf":1.0},"540":{"tf":1.0},"541":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"55":{"tf":1.0},"558":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"64":{"tf":1.0},"8":{"tf":1.4142135623730951},"82":{"tf":1.0}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":1,"docs":{"209":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"n":{"a":{"df":0,"docs":{},"g":{"df":17,"docs":{"136":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"288":{"tf":1.0},"292":{"tf":1.0},"341":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.7320508075688772},"470":{"tf":1.4142135623730951},"538":{"tf":1.0},"599":{"tf":1.0}}}},"d":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"598":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"259":{"tf":2.0}},"i":{"df":49,"docs":{"110":{"tf":1.0},"118":{"tf":1.7320508075688772},"120":{"tf":1.0},"130":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.7320508075688772},"138":{"tf":1.0},"146":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.7320508075688772},"157":{"tf":1.0},"16":{"tf":1.0},"171":{"tf":1.0},"211":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.4142135623730951},"325":{"tf":1.4142135623730951},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"400":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.7320508075688772},"46":{"tf":1.0},"462":{"tf":1.0},"489":{"tf":1.0},"515":{"tf":1.4142135623730951},"517":{"tf":1.4142135623730951},"535":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951},"579":{"tf":1.0},"598":{"tf":1.0},"62":{"tf":1.0}},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"349":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"341":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"341":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0}}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":11,"docs":{"196":{"tf":1.0},"199":{"tf":1.0},"221":{"tf":1.4142135623730951},"24":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"26":{"tf":1.0},"284":{"tf":1.0},"38":{"tf":1.0},"417":{"tf":1.4142135623730951},"425":{"tf":1.0}}}},"df":0,"docs":{},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"456":{"tf":1.4142135623730951},"457":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"456":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"p":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":7,"docs":{"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"320":{"tf":1.0}}}}}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"5":{"7":{":":{"7":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"c":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":8,"docs":{"110":{"tf":1.0},"188":{"tf":1.0},"289":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"470":{"tf":1.0},"526":{"tf":1.0},"599":{"tf":1.0}}},"r":{"df":1,"docs":{"356":{"tf":1.4142135623730951}},"k":{"df":9,"docs":{"268":{"tf":1.0},"292":{"tf":1.0},"316":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":1.0},"558":{"tf":1.4142135623730951},"559":{"tf":1.0},"573":{"tf":1.4142135623730951},"599":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"356":{"tf":1.0}}},"df":1,"docs":{"389":{"tf":1.0}}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":11,"docs":{"110":{"tf":1.0},"16":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":2.23606797749979},"211":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":2.0},"328":{"tf":2.0},"440":{"tf":1.0},"46":{"tf":1.0},"517":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"367":{"tf":1.0}}}}},"h":{".":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"469":{"tf":1.0}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":8,"docs":{"217":{"tf":1.0},"237":{"tf":1.0},"349":{"tf":1.0},"445":{"tf":1.0},"480":{"tf":1.0},"513":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"213":{"tf":1.0},"230":{"tf":1.0},"470":{"tf":1.0}}}}},"x":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":2,"docs":{"315":{"tf":1.0},"517":{"tf":1.0}},"e":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"=":{"1":{"0":{"2":{"4":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"487":{"tf":1.0}}}}}}},"df":1,"docs":{"319":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"529":{"tf":1.0}}}}}}},"y":{"b":{"df":19,"docs":{"128":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"311":{"tf":1.0},"32":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"419":{"tf":1.7320508075688772},"421":{"tf":1.4142135623730951},"437":{"tf":1.0},"456":{"tf":1.0},"498":{"tf":1.0},"506":{"tf":1.0},"68":{"tf":1.0}},"e":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"9":{"5":{":":{"3":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"n":{"df":20,"docs":{"127":{"tf":1.0},"129":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":2.23606797749979},"169":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"197":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"240":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"418":{"tf":1.0},"47":{"tf":1.0},"552":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"350":{"tf":1.0}}}}},"t":{"df":52,"docs":{"118":{"tf":1.0},"128":{"tf":1.0},"152":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"18":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"259":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"343":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"460":{"tf":1.0},"467":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"485":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"561":{"tf":1.0},"598":{"tf":1.0},"94":{"tf":1.0}},"i":{"df":0,"docs":{},"m":{"df":4,"docs":{"18":{"tf":1.0},"209":{"tf":1.0},"256":{"tf":1.0},"521":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"276":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"211":{"tf":1.0},"268":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":9,"docs":{"156":{"tf":1.0},"259":{"tf":1.4142135623730951},"421":{"tf":1.4142135623730951},"508":{"tf":1.0},"513":{"tf":1.0},"516":{"tf":1.0},"573":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"i":{"a":{"df":2,"docs":{"276":{"tf":1.0},"538":{"tf":1.0}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"558":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":10,"docs":{"2":{"tf":1.4142135623730951},"211":{"tf":1.0},"431":{"tf":1.4142135623730951},"470":{"tf":1.0},"554":{"tf":1.7320508075688772},"555":{"tf":1.7320508075688772},"556":{"tf":1.4142135623730951},"557":{"tf":1.0},"558":{"tf":1.4142135623730951},"559":{"tf":1.0}}}},"m":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"16":{"tf":1.4142135623730951},"276":{"tf":1.0},"457":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.7320508075688772}}},"y":{"'":{"df":1,"docs":{"209":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":26,"docs":{"110":{"tf":1.0},"122":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"195":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":2.449489742783178},"213":{"tf":1.0},"218":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"451":{"tf":1.0},"456":{"tf":2.0},"460":{"tf":1.0},"462":{"tf":1.0},"511":{"tf":1.4142135623730951},"65":{"tf":1.4142135623730951},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.4142135623730951},"81":{"tf":1.4142135623730951},"9":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"189":{"tf":1.0},"211":{"tf":1.0},"460":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":11,"docs":{"221":{"tf":1.4142135623730951},"231":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"349":{"tf":1.4142135623730951},"358":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"549":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"556":{"tf":1.7320508075688772},"558":{"tf":1.0},"559":{"tf":3.4641016151377544}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"559":{"tf":1.0}}}}}}}}},"u":{"df":1,"docs":{"188":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"300":{"tf":1.0}}},"g":{"df":12,"docs":{"157":{"tf":1.0},"16":{"tf":2.23606797749979},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"16":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"108":{"tf":1.0}}},"s":{"a":{"df":0,"docs":{},"g":{"df":22,"docs":{"177":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"276":{"tf":2.23606797749979},"370":{"tf":1.4142135623730951},"380":{"tf":2.6457513110645907},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"408":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"469":{"tf":2.0},"470":{"tf":1.7320508075688772},"538":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":2,"docs":{"370":{"tf":1.0},"408":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"218":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"d":{"df":24,"docs":{"178":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951},"209":{"tf":2.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"276":{"tf":2.0},"284":{"tf":1.0},"309":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"344":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.0},"504":{"tf":1.0},"54":{"tf":1.7320508075688772},"572":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"431":{"tf":1.0},"539":{"tf":1.0}}},"df":0,"docs":{}}}}},"h":{"df":0,"docs":{},"z":{"df":1,"docs":{"503":{"tf":1.4142135623730951}}}},"i":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":3,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"336":{"tf":1.4142135623730951}}}}}}}}},"df":1,"docs":{"116":{"tf":1.0}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}}}}}}}},"d":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"m":{"b":{"df":1,"docs":{"603":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":3,"docs":{"231":{"tf":1.0},"232":{"tf":1.0},"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":19,"docs":{"227":{"tf":1.7320508075688772},"228":{"tf":1.0},"229":{"tf":1.0},"230":{"tf":1.4142135623730951},"231":{"tf":1.4142135623730951},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.4142135623730951},"235":{"tf":1.7320508075688772},"236":{"tf":1.0},"237":{"tf":1.0},"238":{"tf":1.0},"239":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0},"470":{"tf":1.0},"62":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"134":{"tf":1.0},"139":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"j":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"292":{"tf":2.0}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"n":{"d":{"df":32,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"503":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":6,"docs":{"156":{"tf":1.4142135623730951},"341":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.4142135623730951},"478":{"tf":1.0},"61":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"127":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"268":{"tf":1.0},"284":{"tf":1.0}}}}},"o":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"462":{"tf":1.0}}}}}},"s":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"261":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":2,"docs":{"361":{"tf":1.0},"599":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"m":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"s":{"df":8,"docs":{"169":{"tf":1.0},"203":{"tf":1.0},"336":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"522":{"tf":1.0},"526":{"tf":1.0},"89":{"tf":1.0}}},"t":{"a":{"df":0,"docs":{},"k":{"df":4,"docs":{"199":{"tf":1.0},"417":{"tf":1.0},"456":{"tf":1.0},"539":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"200":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"s":{"df":1,"docs":{"456":{"tf":1.0}}}}},"t":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}},"x":{"df":11,"docs":{"134":{"tf":1.0},"143":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"217":{"tf":1.0},"261":{"tf":1.0},"315":{"tf":1.0},"322":{"tf":1.4142135623730951},"323":{"tf":1.4142135623730951},"394":{"tf":1.0},"46":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"188":{"tf":1.0},"347":{"tf":1.0}}}},"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"5":{"2":{":":{"4":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"1":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"8":{"0":{":":{"1":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"448":{"tf":1.0}},"l":{"df":9,"docs":{"156":{"tf":1.0},"211":{"tf":1.7320508075688772},"350":{"tf":1.0},"389":{"tf":1.0},"393":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":1.0},"460":{"tf":1.4142135623730951},"469":{"tf":1.0}}},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"389":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":6,"docs":{"217":{"tf":1.0},"286":{"tf":1.0},"336":{"tf":1.4142135623730951},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"421":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":5,"docs":{"380":{"tf":1.4142135623730951},"397":{"tf":1.0},"526":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":1,"docs":{"573":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":6,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"380":{"tf":1.7320508075688772},"389":{"tf":1.0},"408":{"tf":1.0},"503":{"tf":1.0}}}}}},"n":{"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"246":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"0":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":1,"docs":{"419":{"tf":1.0}}},"1":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"419":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":1,"docs":{"419":{"tf":1.0}}},"df":5,"docs":{"121":{"tf":1.0},"125":{"tf":1.4142135623730951},"130":{"tf":1.4142135623730951},"419":{"tf":2.0},"545":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":10,"docs":{"106":{"tf":1.7320508075688772},"107":{"tf":1.0},"108":{"tf":1.4142135623730951},"109":{"tf":1.0},"110":{"tf":1.7320508075688772},"111":{"tf":2.0},"112":{"tf":1.7320508075688772},"113":{"tf":1.0},"515":{"tf":1.0},"546":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":5,"docs":{"235":{"tf":1.0},"259":{"tf":1.0},"292":{"tf":1.0},"389":{"tf":1.4142135623730951},"431":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"550":{"tf":1.0}}}}}}},"r":{"a":{"df":0,"docs":{},"l":{"df":38,"docs":{"154":{"tf":1.0},"161":{"tf":1.4142135623730951},"171":{"tf":1.4142135623730951},"181":{"tf":1.4142135623730951},"192":{"tf":1.0},"203":{"tf":1.4142135623730951},"211":{"tf":1.4142135623730951},"218":{"tf":1.0},"223":{"tf":1.4142135623730951},"237":{"tf":1.4142135623730951},"248":{"tf":1.4142135623730951},"261":{"tf":1.4142135623730951},"270":{"tf":1.4142135623730951},"278":{"tf":1.4142135623730951},"28":{"tf":1.0},"286":{"tf":1.4142135623730951},"294":{"tf":1.4142135623730951},"302":{"tf":1.4142135623730951},"315":{"tf":1.4142135623730951},"32":{"tf":1.0},"33":{"tf":1.0},"330":{"tf":1.4142135623730951},"338":{"tf":1.4142135623730951},"350":{"tf":1.4142135623730951},"363":{"tf":1.4142135623730951},"372":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"391":{"tf":1.4142135623730951},"399":{"tf":1.4142135623730951},"410":{"tf":1.4142135623730951},"425":{"tf":1.4142135623730951},"433":{"tf":1.4142135623730951},"442":{"tf":1.4142135623730951},"450":{"tf":1.4142135623730951},"460":{"tf":1.4142135623730951},"47":{"tf":1.0},"472":{"tf":1.4142135623730951},"480":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"e":{"df":102,"docs":{"112":{"tf":1.0},"12":{"tf":1.0},"129":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.4142135623730951},"160":{"tf":1.0},"171":{"tf":1.0},"179":{"tf":1.4142135623730951},"188":{"tf":1.0},"19":{"tf":1.0},"192":{"tf":1.0},"196":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.4142135623730951},"200":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"223":{"tf":1.0},"226":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.7320508075688772},"258":{"tf":1.0},"268":{"tf":2.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.4142135623730951},"280":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":2.0},"300":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":2.23606797749979},"310":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"329":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.4142135623730951},"359":{"tf":1.7320508075688772},"36":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":1.7320508075688772},"381":{"tf":1.0},"389":{"tf":1.7320508075688772},"390":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"394":{"tf":1.0},"398":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.4142135623730951},"418":{"tf":1.4142135623730951},"42":{"tf":1.4142135623730951},"431":{"tf":1.0},"440":{"tf":1.7320508075688772},"445":{"tf":1.0},"449":{"tf":1.0},"457":{"tf":1.4142135623730951},"460":{"tf":1.0},"469":{"tf":1.0},"481":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"492":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.4142135623730951},"504":{"tf":1.0},"506":{"tf":1.0},"516":{"tf":1.0},"521":{"tf":1.7320508075688772},"529":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.7320508075688772},"544":{"tf":1.0},"56":{"tf":1.4142135623730951},"560":{"tf":1.0},"562":{"tf":1.4142135623730951},"570":{"tf":1.0},"573":{"tf":1.0},"599":{"tf":1.4142135623730951},"64":{"tf":1.0},"65":{"tf":1.0},"69":{"tf":1.4142135623730951},"87":{"tf":1.0},"97":{"tf":1.0}},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"310":{"tf":1.0}}}}},"n":{"df":1,"docs":{"456":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":7,"docs":{"129":{"tf":1.0},"211":{"tf":1.0},"250":{"tf":1.0},"331":{"tf":1.0},"343":{"tf":1.0},"417":{"tf":1.0},"458":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":3,"docs":{"204":{"tf":1.0},"41":{"tf":1.0},"592":{"tf":1.4142135623730951}}}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"217":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}}}},"v":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":34,"docs":{"10":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":2.0},"211":{"tf":1.0},"214":{"tf":1.0},"221":{"tf":1.0},"268":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.7320508075688772},"292":{"tf":1.4142135623730951},"310":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":2.23606797749979},"375":{"tf":1.0},"380":{"tf":1.7320508075688772},"385":{"tf":1.4142135623730951},"408":{"tf":1.0},"419":{"tf":1.4142135623730951},"440":{"tf":1.0},"458":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.7320508075688772},"502":{"tf":1.0},"504":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"558":{"tf":1.0},"580":{"tf":1.0},"8":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"s":{"c":{"df":1,"docs":{"539":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"s":{"df":1,"docs":{"380":{"tf":1.7320508075688772}},"g":{"df":1,"docs":{"276":{"tf":1.7320508075688772}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":52,"docs":{"103":{"tf":1.4142135623730951},"112":{"tf":1.7320508075688772},"120":{"tf":1.4142135623730951},"129":{"tf":1.7320508075688772},"136":{"tf":1.0},"138":{"tf":1.4142135623730951},"147":{"tf":1.4142135623730951},"156":{"tf":1.0},"195":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"211":{"tf":1.0},"214":{"tf":1.0},"226":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"33":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"367":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.7320508075688772},"436":{"tf":1.4142135623730951},"445":{"tf":1.0},"448":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"478":{"tf":1.0},"480":{"tf":1.0},"521":{"tf":1.0},"53":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"319":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"318":{"tf":1.4142135623730951}}}}},"df":3,"docs":{"423":{"tf":1.0},"470":{"tf":1.0},"62":{"tf":1.0}},"p":{"df":0,"docs":{},"l":{"df":22,"docs":{"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"200":{"tf":1.4142135623730951},"23":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.4142135623730951},"284":{"tf":1.0},"32":{"tf":1.4142135623730951},"328":{"tf":1.7320508075688772},"336":{"tf":1.7320508075688772},"374":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"422":{"tf":1.0},"46":{"tf":1.4142135623730951},"507":{"tf":1.0},"521":{"tf":1.0},"599":{"tf":1.4142135623730951},"62":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":2,"docs":{"336":{"tf":1.0},"341":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"n":{"d":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"302":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"451":{"tf":1.0}}}},"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"566":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":4,"docs":{"328":{"tf":1.0},"341":{"tf":1.0},"417":{"tf":2.0},"421":{"tf":2.0}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"270":{"tf":1.0}}}},"df":26,"docs":{"156":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":1.7320508075688772},"217":{"tf":2.6457513110645907},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":2.6457513110645907},"312":{"tf":1.0},"328":{"tf":2.23606797749979},"336":{"tf":2.6457513110645907},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":2.449489742783178},"418":{"tf":1.7320508075688772},"419":{"tf":1.7320508075688772},"421":{"tf":4.242640687119285},"448":{"tf":1.0},"470":{"tf":1.0},"522":{"tf":2.6457513110645907},"523":{"tf":1.0},"568":{"tf":1.0}},"e":{"df":0,"docs":{},"x":{"df":7,"docs":{"268":{"tf":2.8284271247461903},"270":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.4142135623730951},"370":{"tf":1.0},"565":{"tf":1.0},"584":{"tf":2.0}},"g":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"r":{"d":{"df":3,"docs":{"270":{"tf":1.0},"564":{"tf":1.4142135623730951},"565":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"v":{"df":0,"docs":{},"p":{"df":1,"docs":{"8":{"tf":1.0}}}},"y":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"421":{"tf":1.4142135623730951}},"e":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"581":{"tf":1.0}}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"i":{"a":{"d":{"df":2,"docs":{"231":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"68":{"tf":1.4142135623730951},"69":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"580":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"n":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"292":{"tf":1.0}}},"i":{"df":0,"docs":{},"v":{"df":2,"docs":{"336":{"tf":1.0},"440":{"tf":1.0}}}},"m":{"df":0,"docs":{},"e":{"df":21,"docs":{"113":{"tf":1.4142135623730951},"157":{"tf":1.0},"163":{"tf":1.4142135623730951},"258":{"tf":1.0},"28":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.4142135623730951},"478":{"tf":1.0},"489":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"56":{"tf":1.0},"57":{"tf":1.4142135623730951},"578":{"tf":1.7320508075688772},"579":{"tf":1.0},"64":{"tf":1.0},"67":{"tf":1.4142135623730951},"97":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"153":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"431":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"599":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":4,"docs":{"116":{"tf":1.0},"211":{"tf":1.4142135623730951},"230":{"tf":1.0},"231":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":7,"docs":{"195":{"tf":1.0},"218":{"tf":1.0},"350":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0},"503":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":1,"docs":{"209":{"tf":1.0}}}}}},"b":{"df":1,"docs":{"492":{"tf":1.0}}},"d":{"a":{"df":1,"docs":{"598":{"tf":1.0}}},"df":0,"docs":{}},"df":1,"docs":{"370":{"tf":3.3166247903554}},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"276":{"tf":1.0}}}}},"t":{"df":1,"docs":{"360":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"360":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":5,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"417":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"218":{"tf":1.0},"273":{"tf":1.0},"404":{"tf":1.0},"460":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"d":{"df":102,"docs":{"110":{"tf":1.4142135623730951},"112":{"tf":1.0},"118":{"tf":1.0},"119":{"tf":1.0},"12":{"tf":1.4142135623730951},"121":{"tf":1.4142135623730951},"122":{"tf":1.0},"125":{"tf":1.0},"130":{"tf":1.4142135623730951},"139":{"tf":1.0},"152":{"tf":1.4142135623730951},"153":{"tf":1.0},"156":{"tf":3.1622776601683795},"177":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.4142135623730951},"199":{"tf":2.0},"2":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.4142135623730951},"217":{"tf":2.23606797749979},"218":{"tf":1.0},"219":{"tf":1.7320508075688772},"220":{"tf":1.0},"221":{"tf":1.4142135623730951},"222":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":1.7320508075688772},"226":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.4142135623730951},"265":{"tf":1.0},"266":{"tf":1.7320508075688772},"267":{"tf":1.0},"268":{"tf":1.7320508075688772},"269":{"tf":1.0},"270":{"tf":1.7320508075688772},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"300":{"tf":2.449489742783178},"307":{"tf":1.0},"309":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.4142135623730951},"330":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"341":{"tf":2.0},"347":{"tf":1.0},"349":{"tf":1.0},"359":{"tf":1.0},"368":{"tf":1.7320508075688772},"369":{"tf":1.0},"370":{"tf":2.0},"371":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"374":{"tf":1.0},"375":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"452":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":2.0},"480":{"tf":1.0},"485":{"tf":1.4142135623730951},"490":{"tf":1.0},"501":{"tf":1.0},"504":{"tf":1.0},"511":{"tf":1.0},"517":{"tf":1.4142135623730951},"519":{"tf":1.0},"521":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0},"549":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.4142135623730951},"57":{"tf":1.0},"571":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.7320508075688772},"68":{"tf":1.0},"8":{"tf":1.0},"96":{"tf":1.0},"99":{"tf":1.0}},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"g":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"29":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"df":5,"docs":{"259":{"tf":1.0},"370":{"tf":1.0},"496":{"tf":1.4142135623730951},"55":{"tf":1.0},"59":{"tf":1.0}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"469":{"tf":1.0}}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":2,"docs":{"313":{"tf":1.0},"544":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"156":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0}}}},"t":{"df":3,"docs":{"190":{"tf":1.0},"284":{"tf":1.0},"341":{"tf":1.0}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":14,"docs":{"116":{"tf":1.0},"125":{"tf":1.7320508075688772},"127":{"tf":2.23606797749979},"128":{"tf":1.0},"138":{"tf":1.0},"140":{"tf":1.0},"347":{"tf":2.0},"357":{"tf":1.4142135623730951},"360":{"tf":1.0},"433":{"tf":1.0},"503":{"tf":1.4142135623730951},"546":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":13,"docs":{"168":{"tf":1.0},"178":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.0},"502":{"tf":1.0}}}}},"w":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":6,"docs":{"278":{"tf":1.0},"303":{"tf":1.0},"359":{"tf":1.0},"360":{"tf":1.4142135623730951},"363":{"tf":1.0},"599":{"tf":1.0}}}}},"df":63,"docs":{"14":{"tf":1.4142135623730951},"143":{"tf":1.0},"156":{"tf":1.4142135623730951},"157":{"tf":1.7320508075688772},"16":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"189":{"tf":1.0},"196":{"tf":1.0},"200":{"tf":1.0},"21":{"tf":2.0},"218":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"231":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.4142135623730951},"258":{"tf":1.7320508075688772},"26":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.4142135623730951},"300":{"tf":1.4142135623730951},"309":{"tf":1.7320508075688772},"316":{"tf":1.0},"319":{"tf":1.7320508075688772},"331":{"tf":1.0},"332":{"tf":1.0},"336":{"tf":1.0},"339":{"tf":1.4142135623730951},"365":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"383":{"tf":1.4142135623730951},"389":{"tf":2.23606797749979},"39":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.0},"438":{"tf":1.7320508075688772},"439":{"tf":1.0},"440":{"tf":1.0},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":2.6457513110645907},"482":{"tf":1.0},"489":{"tf":1.7320508075688772},"497":{"tf":1.0},"538":{"tf":1.7320508075688772},"558":{"tf":1.0},"572":{"tf":1.0},"602":{"tf":1.0},"65":{"tf":2.23606797749979},"71":{"tf":1.4142135623730951},"79":{"tf":1.4142135623730951},"84":{"tf":1.4142135623730951},"86":{"tf":1.0},"97":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"237":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"268":{"tf":1.0}}}}},"x":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{".":{"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":1,"docs":{"458":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":1,"docs":{"457":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":26,"docs":{"139":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.4142135623730951},"200":{"tf":1.0},"211":{"tf":1.0},"259":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":2.0},"391":{"tf":1.4142135623730951},"446":{"tf":1.7320508075688772},"447":{"tf":1.0},"448":{"tf":2.449489742783178},"449":{"tf":1.0},"450":{"tf":2.449489742783178},"451":{"tf":1.4142135623730951},"452":{"tf":1.0},"453":{"tf":1.4142135623730951},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"470":{"tf":1.0},"483":{"tf":1.0},"486":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.0},"573":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"e":{"df":9,"docs":{"130":{"tf":1.0},"231":{"tf":1.0},"307":{"tf":1.0},"341":{"tf":1.4142135623730951},"365":{"tf":1.4142135623730951},"403":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.4142135623730951},"82":{"tf":1.0}},"r":{"df":2,"docs":{"380":{"tf":1.0},"599":{"tf":1.0}}}},"h":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"517":{"tf":1.0}}}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"245":{"tf":1.0},"380":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"u":{"df":41,"docs":{"156":{"tf":1.7320508075688772},"214":{"tf":1.0},"218":{"tf":1.0},"226":{"tf":1.4142135623730951},"240":{"tf":1.0},"251":{"tf":1.0},"273":{"tf":1.0},"340":{"tf":1.0},"353":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"436":{"tf":1.0},"463":{"tf":1.0},"466":{"tf":1.7320508075688772},"467":{"tf":1.0},"468":{"tf":1.0},"469":{"tf":2.449489742783178},"470":{"tf":3.1622776601683795},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":2.0},"475":{"tf":1.0},"476":{"tf":1.7320508075688772},"477":{"tf":1.0},"478":{"tf":3.0},"479":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.7320508075688772},"483":{"tf":1.0},"512":{"tf":1.7320508075688772},"530":{"tf":1.7320508075688772},"544":{"tf":2.449489742783178},"65":{"tf":1.0},"67":{"tf":1.0},"83":{"tf":1.0},"84":{"tf":1.7320508075688772},"85":{"tf":1.0},"86":{"tf":2.0},"87":{"tf":2.0}},"s":{"'":{"df":2,"docs":{"347":{"tf":1.0},"41":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"o":{"'":{"df":2,"docs":{"365":{"tf":1.0},"599":{"tf":1.0}}},"df":1,"docs":{"482":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":7,"docs":{"1":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"553":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0},"61":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":5,"docs":{"108":{"tf":1.0},"111":{"tf":1.0},"221":{"tf":1.7320508075688772},"340":{"tf":1.0},"546":{"tf":1.0}}},"df":0,"docs":{}}}},"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"533":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"j":{"df":4,"docs":{"189":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"72":{"tf":1.0}}}},"df":5,"docs":{"108":{"tf":1.0},"111":{"tf":1.0},"127":{"tf":1.0},"134":{"tf":1.0},"217":{"tf":2.23606797749979}},"j":{"df":2,"docs":{"231":{"tf":1.0},"280":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"199":{"tf":1.0}}}},"n":{"df":14,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.7320508075688772},"221":{"tf":1.0},"347":{"tf":1.0},"372":{"tf":1.0},"410":{"tf":1.0},"450":{"tf":1.0},"456":{"tf":1.0},"517":{"tf":1.0},"526":{"tf":1.0},"534":{"tf":1.0},"566":{"tf":1.0},"62":{"tf":1.4142135623730951}},"e":{"df":10,"docs":{"138":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"245":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.4142135623730951},"360":{"tf":1.0},"421":{"tf":1.0},"457":{"tf":1.4142135623730951},"568":{"tf":1.0}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"310":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":1,"docs":{"336":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"171":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":27,"docs":{"154":{"tf":1.0},"156":{"tf":1.4142135623730951},"18":{"tf":1.0},"196":{"tf":1.0},"209":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"292":{"tf":1.4142135623730951},"311":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"358":{"tf":1.0},"36":{"tf":1.0},"370":{"tf":2.449489742783178},"380":{"tf":1.7320508075688772},"397":{"tf":1.4142135623730951},"440":{"tf":5.656854249492381},"486":{"tf":1.0},"538":{"tf":1.4142135623730951},"560":{"tf":1.0},"596":{"tf":1.0},"597":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.4142135623730951},"96":{"tf":1.0}}},"h":{"df":4,"docs":{"217":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"408":{"tf":1.4142135623730951},"538":{"tf":1.7320508075688772}}},"i":{"c":{"df":21,"docs":{"167":{"tf":1.0},"168":{"tf":1.4142135623730951},"169":{"tf":1.0},"198":{"tf":1.4142135623730951},"199":{"tf":1.0},"257":{"tf":1.0},"268":{"tf":1.4142135623730951},"292":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"389":{"tf":1.0},"408":{"tf":1.0},"431":{"tf":1.4142135623730951},"448":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.4142135623730951},"487":{"tf":1.0},"538":{"tf":1.0}}},"df":0,"docs":{},"f":{"df":1,"docs":{"457":{"tf":1.0}},"i":{"df":1,"docs":{"328":{"tf":2.23606797749979}}}}}},"w":{"df":46,"docs":{"116":{"tf":1.0},"134":{"tf":1.0},"14":{"tf":1.7320508075688772},"155":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.7320508075688772},"233":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":2.0},"258":{"tf":1.7320508075688772},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.4142135623730951},"328":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":1.7320508075688772},"397":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.0},"421":{"tf":1.4142135623730951},"431":{"tf":1.0},"448":{"tf":1.4142135623730951},"456":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":2.0},"475":{"tf":1.0},"486":{"tf":1.0},"502":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":2.0},"538":{"tf":1.0},"546":{"tf":1.0},"552":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.0}}}},"p":{"df":0,"docs":{},"m":{"df":1,"docs":{"231":{"tf":1.0}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":2.23606797749979}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":18,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"234":{"tf":1.0},"276":{"tf":1.0},"307":{"tf":1.0},"319":{"tf":1.0},"341":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"389":{"tf":1.0},"392":{"tf":1.0},"412":{"tf":1.0},"419":{"tf":1.0},"470":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"538":{"tf":1.0},"73":{"tf":1.0},"79":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"392":{"tf":1.0}}}}}}}},"o":{"0":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"0":{"df":0,"docs":{},"o":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":13,"docs":{"198":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.0},"252":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"417":{"tf":1.7320508075688772},"418":{"tf":1.4142135623730951},"437":{"tf":1.4142135623730951},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"464":{"tf":1.4142135623730951},"470":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":5,"docs":{"178":{"tf":1.0},"188":{"tf":1.0},"319":{"tf":1.0},"380":{"tf":1.0},"538":{"tf":1.0}}}}},"t":{"a":{"c":{"df":0,"docs":{},"l":{"df":9,"docs":{"429":{"tf":1.7320508075688772},"430":{"tf":1.0},"431":{"tf":1.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"423":{"tf":1.0},"61":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":8,"docs":{"156":{"tf":1.4142135623730951},"218":{"tf":1.0},"276":{"tf":1.0},"419":{"tf":1.0},"442":{"tf":1.0},"445":{"tf":1.0},"460":{"tf":1.4142135623730951},"515":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}}}}}},"c":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"357":{"tf":1.0},"431":{"tf":1.0}}}}}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"336":{"tf":1.0}}}},"r":{"df":5,"docs":{"156":{"tf":1.0},"164":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"28":{"tf":1.0}}}}},"df":0,"docs":{}},"d":{"d":{"df":2,"docs":{"200":{"tf":1.0},"217":{"tf":1.0}}},"df":0,"docs":{}},"df":2,"docs":{"309":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"f":{"df":2,"docs":{"365":{"tf":1.0},"394":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":19,"docs":{"125":{"tf":1.0},"129":{"tf":1.0},"276":{"tf":1.0},"3":{"tf":1.0},"309":{"tf":1.0},"315":{"tf":1.0},"321":{"tf":2.0},"325":{"tf":2.449489742783178},"391":{"tf":1.4142135623730951},"393":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"503":{"tf":1.0},"511":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"542":{"tf":1.0},"73":{"tf":1.0}}}},"i":{"c":{"df":0,"docs":{},"i":{"df":2,"docs":{"230":{"tf":1.0},"284":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"417":{"tf":1.0}}}}}}},"h":{"df":7,"docs":{"199":{"tf":1.0},"217":{"tf":1.0},"300":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.4142135623730951},"522":{"tf":1.0},"538":{"tf":1.4142135623730951}}},"k":{"(":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}},"df":0,"docs":{}}}},"_":{"df":2,"docs":{"276":{"tf":1.0},"328":{"tf":1.7320508075688772}}},"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":1,"docs":{"196":{"tf":1.4142135623730951}}}}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.0}}}}},"o":{"df":1,"docs":{"440":{"tf":2.0}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"r":{"df":1,"docs":{"292":{"tf":1.0}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":2.0}}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"z":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"(":{"&":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{".":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"196":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},":":{":":{"<":{"_":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"y":{"df":2,"docs":{"217":{"tf":1.0},"328":{"tf":1.0}}}},"df":14,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"231":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"312":{"tf":1.0},"321":{"tf":1.0},"36":{"tf":1.0},"487":{"tf":1.0},"493":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}},"l":{"d":{"df":4,"docs":{"168":{"tf":1.4142135623730951},"217":{"tf":1.0},"268":{"tf":1.0},"89":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"237":{"tf":1.0}}}}},"df":0,"docs":{}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"218":{"tf":1.0},"336":{"tf":1.0},"397":{"tf":1.4142135623730951}}}}},"n":{"c":{"df":28,"docs":{"15":{"tf":1.0},"156":{"tf":2.23606797749979},"167":{"tf":1.0},"169":{"tf":1.0},"188":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"32":{"tf":1.0},"321":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.4142135623730951},"394":{"tf":1.0},"408":{"tf":1.0},"423":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"504":{"tf":1.0},"510":{"tf":1.0},"538":{"tf":1.0},"547":{"tf":1.0},"562":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"86":{"tf":1.0}}},"df":83,"docs":{"11":{"tf":1.0},"112":{"tf":1.0},"118":{"tf":1.0},"130":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"167":{"tf":1.0},"177":{"tf":1.0},"187":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"213":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.7320508075688772},"221":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.4142135623730951},"244":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"252":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":2.449489742783178},"278":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"309":{"tf":1.0},"313":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.4142135623730951},"35":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":2.23606797749979},"374":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":2.23606797749979},"389":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"405":{"tf":1.0},"41":{"tf":1.7320508075688772},"417":{"tf":1.0},"42":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"431":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.4142135623730951},"478":{"tf":1.0},"481":{"tf":1.0},"502":{"tf":1.4142135623730951},"516":{"tf":1.0},"522":{"tf":1.0},"527":{"tf":1.4142135623730951},"529":{"tf":1.0},"538":{"tf":2.0},"542":{"tf":1.0},"556":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":2.23606797749979},"601":{"tf":1.0},"61":{"tf":2.0},"62":{"tf":1.4142135623730951},"69":{"tf":1.4142135623730951},"8":{"tf":1.4142135623730951},"84":{"tf":1.0},"9":{"tf":1.0}},"e":{"'":{"df":2,"docs":{"211":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"370":{"tf":1.0},"457":{"tf":1.0},"538":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"o":{"df":5,"docs":{"217":{"tf":1.0},"421":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"562":{"tf":1.0}}}}},"o":{"df":1,"docs":{"365":{"tf":1.0}},"p":{"df":1,"docs":{"200":{"tf":1.0}}}},"p":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"42":{"tf":1.0}}},"q":{"df":0,"docs":{},"u":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":1,"docs":{"336":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":66,"docs":{"103":{"tf":1.4142135623730951},"112":{"tf":1.4142135623730951},"116":{"tf":1.0},"120":{"tf":1.4142135623730951},"129":{"tf":1.4142135623730951},"138":{"tf":1.4142135623730951},"143":{"tf":1.0},"147":{"tf":1.4142135623730951},"148":{"tf":1.0},"149":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.4142135623730951},"158":{"tf":1.0},"16":{"tf":2.0},"166":{"tf":1.0},"17":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.4142135623730951},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"21":{"tf":1.7320508075688772},"216":{"tf":1.0},"220":{"tf":1.0},"24":{"tf":1.4142135623730951},"25":{"tf":2.0},"257":{"tf":1.0},"26":{"tf":1.7320508075688772},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.4142135623730951},"283":{"tf":1.0},"284":{"tf":1.4142135623730951},"29":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"39":{"tf":1.7320508075688772},"391":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"416":{"tf":1.0},"44":{"tf":1.0},"447":{"tf":1.0},"453":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"485":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"522":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0},"55":{"tf":1.0},"603":{"tf":1.0},"84":{"tf":1.0}}},"r":{"df":23,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.4142135623730951},"143":{"tf":1.0},"156":{"tf":1.0},"178":{"tf":1.4142135623730951},"181":{"tf":1.0},"209":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"261":{"tf":1.0},"268":{"tf":1.0},"292":{"tf":1.4142135623730951},"309":{"tf":1.0},"312":{"tf":1.0},"336":{"tf":1.0},"391":{"tf":1.4142135623730951},"408":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"278":{"tf":1.4142135623730951},"357":{"tf":1.0},"363":{"tf":1.0},"487":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":2,"docs":{"54":{"tf":1.0},"55":{"tf":1.0}}}}}},"s":{"df":1,"docs":{"276":{"tf":1.0}}}}},"t":{"df":2,"docs":{"456":{"tf":1.0},"538":{"tf":1.0}},"i":{"df":0,"docs":{},"m":{"df":6,"docs":{"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"343":{"tf":1.0},"529":{"tf":1.0},"62":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"423":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{".":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"t":{"df":1,"docs":{"450":{"tf":1.0}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"457":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"568":{"tf":1.0}}}},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}}},"df":21,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.4142135623730951},"231":{"tf":1.4142135623730951},"239":{"tf":1.0},"245":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"321":{"tf":1.0},"370":{"tf":1.0},"377":{"tf":1.0},"389":{"tf":1.0},"41":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"458":{"tf":1.0},"499":{"tf":1.4142135623730951},"5":{"tf":1.0},"517":{"tf":1.0},"542":{"tf":1.0},"548":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951}}}}}}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":14,"docs":{"136":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"450":{"tf":1.0}}}}},"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"n":{"df":5,"docs":{"10":{"tf":1.0},"218":{"tf":1.0},"276":{"tf":1.0},"3":{"tf":1.0},"603":{"tf":1.0}}}},"df":1,"docs":{"47":{"tf":1.0}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"11":{"tf":1.0},"462":{"tf":1.0},"544":{"tf":1.0}}}}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":15,"docs":{"134":{"tf":1.0},"199":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"218":{"tf":1.4142135623730951},"246":{"tf":1.0},"276":{"tf":1.0},"279":{"tf":1.0},"280":{"tf":1.0},"320":{"tf":1.0},"361":{"tf":1.0},"389":{"tf":1.0},"440":{"tf":1.0},"539":{"tf":1.0}}}}}},"m":{"df":1,"docs":{"235":{"tf":1.0}}}},"s":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"/":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":6,"docs":{"190":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"344":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"192":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"56":{"tf":1.0}}}},"df":0,"docs":{}}},"df":18,"docs":{"101":{"tf":1.4142135623730951},"110":{"tf":1.4142135623730951},"118":{"tf":1.4142135623730951},"127":{"tf":1.7320508075688772},"136":{"tf":1.4142135623730951},"145":{"tf":1.4142135623730951},"147":{"tf":1.0},"155":{"tf":1.0},"157":{"tf":1.0},"22":{"tf":1.0},"23":{"tf":1.0},"25":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"400":{"tf":1.0},"421":{"tf":1.0},"53":{"tf":1.0},"598":{"tf":1.0}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":6,"docs":{"157":{"tf":1.0},"217":{"tf":1.0},"372":{"tf":1.0},"489":{"tf":1.0},"558":{"tf":1.0},"6":{"tf":1.0}}}}}}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"370":{"tf":1.0},"599":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":1,"docs":{"10":{"tf":1.0}}}}}}},"t":{"df":98,"docs":{"10":{"tf":1.0},"12":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"157":{"tf":1.0},"164":{"tf":1.7320508075688772},"174":{"tf":1.7320508075688772},"178":{"tf":1.0},"184":{"tf":1.7320508075688772},"19":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"195":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":1.0},"206":{"tf":1.4142135623730951},"209":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"226":{"tf":1.4142135623730951},"230":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"240":{"tf":1.4142135623730951},"241":{"tf":1.7320508075688772},"245":{"tf":2.23606797749979},"246":{"tf":1.0},"251":{"tf":1.7320508075688772},"258":{"tf":1.0},"264":{"tf":1.7320508075688772},"265":{"tf":1.7320508075688772},"268":{"tf":1.7320508075688772},"271":{"tf":1.0},"273":{"tf":1.4142135623730951},"276":{"tf":1.7320508075688772},"278":{"tf":1.0},"28":{"tf":1.4142135623730951},"281":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"289":{"tf":1.4142135623730951},"292":{"tf":2.0},"297":{"tf":1.4142135623730951},"300":{"tf":1.0},"302":{"tf":1.0},"310":{"tf":1.4142135623730951},"311":{"tf":1.4142135623730951},"317":{"tf":2.0},"32":{"tf":1.0},"333":{"tf":1.4142135623730951},"340":{"tf":1.4142135623730951},"347":{"tf":2.0},"353":{"tf":1.7320508075688772},"367":{"tf":1.4142135623730951},"370":{"tf":2.449489742783178},"377":{"tf":1.4142135623730951},"380":{"tf":1.0},"385":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"394":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"40":{"tf":1.0},"402":{"tf":1.4142135623730951},"408":{"tf":1.4142135623730951},"41":{"tf":1.0},"414":{"tf":1.4142135623730951},"428":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"436":{"tf":1.4142135623730951},"445":{"tf":1.4142135623730951},"453":{"tf":1.7320508075688772},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"463":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"475":{"tf":1.4142135623730951},"483":{"tf":1.4142135623730951},"487":{"tf":1.4142135623730951},"49":{"tf":1.4142135623730951},"498":{"tf":1.0},"499":{"tf":1.4142135623730951},"51":{"tf":1.7320508075688772},"515":{"tf":1.0},"516":{"tf":1.0},"52":{"tf":1.0},"53":{"tf":1.4142135623730951},"534":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.4142135623730951},"556":{"tf":1.0},"74":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"300":{"tf":1.0},"349":{"tf":1.0},"538":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":9,"docs":{"209":{"tf":1.0},"217":{"tf":1.0},"244":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"421":{"tf":2.0},"448":{"tf":1.0},"538":{"tf":1.4142135623730951},"544":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"539":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":5,"docs":{"110":{"tf":1.0},"199":{"tf":1.0},"226":{"tf":1.0},"418":{"tf":2.0},"47":{"tf":1.0}}},"df":0,"docs":{}},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"16":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":1,"docs":{"341":{"tf":1.0}}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"l":{"df":11,"docs":{"11":{"tf":1.0},"16":{"tf":1.0},"214":{"tf":1.0},"319":{"tf":1.0},"380":{"tf":1.0},"46":{"tf":1.0},"515":{"tf":1.0},"65":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"92":{"tf":1.0}}}},"df":44,"docs":{"143":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.7320508075688772},"188":{"tf":1.0},"190":{"tf":1.4142135623730951},"209":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"245":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"298":{"tf":1.7320508075688772},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"301":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"318":{"tf":1.4142135623730951},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"358":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.7320508075688772},"460":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"486":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0}},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":3,"docs":{"244":{"tf":1.4142135623730951},"245":{"tf":1.0},"370":{"tf":1.0}}}}}},"h":{"df":0,"docs":{},"e":{"a":{"d":{"df":11,"docs":{"209":{"tf":1.7320508075688772},"211":{"tf":1.4142135623730951},"259":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.0},"421":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0},"513":{"tf":1.4142135623730951},"543":{"tf":1.0},"61":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"278":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"308":{"tf":1.0}}},"o":{"a":{"d":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"417":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"190":{"tf":1.0}}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"m":{"df":4,"docs":{"231":{"tf":1.0},"363":{"tf":1.0},"397":{"tf":1.0},"86":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"336":{"tf":1.0}}}}}}}}},"w":{"df":0,"docs":{},"n":{"df":4,"docs":{"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"341":{"tf":1.0},"517":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"417":{"tf":2.0},"421":{"tf":3.605551275463989},"423":{"tf":1.0},"553":{"tf":1.0},"61":{"tf":1.0}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":6,"docs":{"156":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"389":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"599":{"tf":1.0}}}}}}}},"s":{"(":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"_":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"p":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"z":{"_":{"df":0,"docs":{},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"9":{"9":{"df":1,"docs":{"431":{"tf":1.0}}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"231":{"tf":1.0}}},"k":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"523":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"143":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":10,"docs":{"12":{"tf":1.0},"152":{"tf":1.4142135623730951},"157":{"tf":1.0},"177":{"tf":1.0},"19":{"tf":1.0},"198":{"tf":1.4142135623730951},"485":{"tf":1.4142135623730951},"489":{"tf":1.0},"539":{"tf":1.0},"550":{"tf":1.0}}}},"i":{"d":{"df":1,"docs":{"200":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":7,"docs":{"221":{"tf":1.0},"233":{"tf":1.0},"286":{"tf":1.0},"315":{"tf":1.0},"372":{"tf":1.0},"410":{"tf":1.0},"59":{"tf":1.0}}},"r":{"df":1,"docs":{"300":{"tf":1.0}}}},"n":{"df":1,"docs":{"389":{"tf":1.0}},"i":{"c":{"!":{"df":1,"docs":{"470":{"tf":1.0}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"3":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":14,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"234":{"tf":1.0},"309":{"tf":1.4142135623730951},"321":{"tf":1.4142135623730951},"323":{"tf":1.0},"325":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":2.449489742783178},"418":{"tf":1.0},"419":{"tf":1.0},"425":{"tf":1.0},"529":{"tf":1.0}},"k":{"df":4,"docs":{"233":{"tf":1.0},"258":{"tf":1.0},"309":{"tf":1.0},"397":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"3":{"4":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"7":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":1,"docs":{"153":{"tf":1.0}}}}},"r":{"a":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"m":{"df":1,"docs":{"360":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"<":{"df":1,"docs":{"579":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":8,"docs":{"156":{"tf":1.0},"336":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"469":{"tf":2.0},"470":{"tf":2.0},"472":{"tf":1.0},"475":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":6,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":2.0},"218":{"tf":2.8284271247461903},"458":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"a":{"df":1,"docs":{"359":{"tf":1.0}}},"d":{"df":1,"docs":{"359":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"s":{"df":1,"docs":{"217":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"235":{"tf":1.0}}}}},"t":{"df":64,"docs":{"116":{"tf":1.0},"12":{"tf":1.0},"134":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"195":{"tf":1.0},"204":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"245":{"tf":1.0},"252":{"tf":1.0},"254":{"tf":1.0},"259":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"343":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"355":{"tf":1.0},"358":{"tf":1.0},"366":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"383":{"tf":1.7320508075688772},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"448":{"tf":1.0},"455":{"tf":1.0},"457":{"tf":1.0},"467":{"tf":1.0},"47":{"tf":1.0},"474":{"tf":1.0},"477":{"tf":1.0},"481":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"503":{"tf":1.0},"516":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.0},"537":{"tf":1.0},"599":{"tf":1.0}},"i":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"363":{"tf":1.0},"393":{"tf":1.0}}}},"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":2,"docs":{"278":{"tf":1.4142135623730951},"601":{"tf":1.7320508075688772}}}},"l":{"df":1,"docs":{"469":{"tf":1.0}}},"u":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":22,"docs":{"156":{"tf":1.4142135623730951},"18":{"tf":1.0},"221":{"tf":1.0},"248":{"tf":1.0},"27":{"tf":1.0},"300":{"tf":1.0},"376":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"408":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.4142135623730951},"458":{"tf":1.0},"462":{"tf":1.4142135623730951},"478":{"tf":1.0},"487":{"tf":1.0},"527":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"561":{"tf":1.0},"62":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":1,"docs":{"221":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":7,"docs":{"110":{"tf":1.0},"143":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"286":{"tf":1.0},"315":{"tf":1.0},"350":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":2,"docs":{"221":{"tf":1.0},"380":{"tf":1.0}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"389":{"tf":1.0}}}}}}},"s":{"c":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":15,"docs":{"200":{"tf":1.0},"217":{"tf":2.23606797749979},"218":{"tf":1.0},"244":{"tf":1.0},"246":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.7320508075688772},"423":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.7320508075688772},"573":{"tf":1.0},"599":{"tf":1.0}}},"t":{"df":7,"docs":{"276":{"tf":1.0},"284":{"tf":1.0},"321":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.7320508075688772},"599":{"tf":1.0},"76":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"469":{"tf":2.8284271247461903},"470":{"tf":2.23606797749979}}}},"df":0,"docs":{},"h":{"df":10,"docs":{"156":{"tf":1.0},"286":{"tf":1.0},"394":{"tf":1.4142135623730951},"41":{"tf":1.0},"417":{"tf":1.0},"448":{"tf":1.4142135623730951},"458":{"tf":1.0},"463":{"tf":1.0},"470":{"tf":1.4142135623730951},"558":{"tf":1.0}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"363":{"tf":1.0}},"n":{"df":18,"docs":{"125":{"tf":1.0},"156":{"tf":2.0},"191":{"tf":1.0},"195":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.4142135623730951},"363":{"tf":1.0},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"372":{"tf":1.0},"389":{"tf":1.0},"450":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"#":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"d":{"df":1,"docs":{"365":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"y":{"df":4,"docs":{"110":{"tf":1.0},"213":{"tf":1.0},"340":{"tf":1.0},"515":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":1,"docs":{"214":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":3,"docs":{"470":{"tf":1.0},"539":{"tf":1.4142135623730951},"558":{"tf":2.449489742783178}},"e":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"131":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"370":{"tf":1.0}}}},"n":{"df":1,"docs":{"478":{"tf":1.0}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":63,"docs":{"154":{"tf":1.4142135623730951},"158":{"tf":1.0},"16":{"tf":1.0},"164":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"23":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.4142135623730951},"291":{"tf":1.0},"292":{"tf":1.0},"306":{"tf":1.0},"317":{"tf":1.0},"319":{"tf":1.0},"322":{"tf":1.4142135623730951},"323":{"tf":1.4142135623730951},"331":{"tf":1.4142135623730951},"333":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"357":{"tf":1.0},"36":{"tf":1.0},"361":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"42":{"tf":1.4142135623730951},"435":{"tf":1.0},"437":{"tf":1.0},"447":{"tf":1.0},"453":{"tf":1.0},"467":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.4142135623730951},"490":{"tf":1.4142135623730951},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"53":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"54":{"tf":1.0},"583":{"tf":1.4142135623730951},"597":{"tf":1.0},"60":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.4142135623730951},"64":{"tf":1.0},"9":{"tf":1.0}},"e":{"'":{"df":3,"docs":{"27":{"tf":1.0},"299":{"tf":1.0},"54":{"tf":1.0}}},"df":0,"docs":{}}}}},"r":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"336":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":8,"docs":{"319":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.0},"412":{"tf":1.7320508075688772},"421":{"tf":1.7320508075688772},"422":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"469":{"tf":1.0}},"f":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":21,"docs":{"305":{"tf":1.7320508075688772},"306":{"tf":1.0},"307":{"tf":1.4142135623730951},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.4142135623730951},"323":{"tf":1.0},"324":{"tf":1.0},"325":{"tf":1.0}}}}}}},"df":5,"docs":{"209":{"tf":2.6457513110645907},"214":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"543":{"tf":1.0},"82":{"tf":1.0}},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"110":{"tf":1.0},"35":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"137":{"tf":1.0},"217":{"tf":1.0},"380":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"221":{"tf":2.449489742783178}}}}}}}}}},"df":45,"docs":{"134":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"207":{"tf":1.7320508075688772},"208":{"tf":1.0},"209":{"tf":2.6457513110645907},"210":{"tf":1.0},"211":{"tf":2.449489742783178},"212":{"tf":1.0},"213":{"tf":1.4142135623730951},"214":{"tf":1.0},"223":{"tf":1.0},"256":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"292":{"tf":1.0},"308":{"tf":1.0},"312":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.7320508075688772},"345":{"tf":1.4142135623730951},"347":{"tf":1.0},"350":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"408":{"tf":1.7320508075688772},"41":{"tf":1.0},"431":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"510":{"tf":1.0},"521":{"tf":1.4142135623730951},"528":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.4142135623730951},"543":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.4142135623730951},"82":{"tf":1.0},"9":{"tf":1.7320508075688772}}}}}},"h":{"a":{"df":0,"docs":{},"p":{"df":13,"docs":{"156":{"tf":1.0},"200":{"tf":1.0},"252":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"359":{"tf":1.0},"365":{"tf":1.0},"389":{"tf":1.4142135623730951},"428":{"tf":1.0},"49":{"tf":1.0},"496":{"tf":1.0},"515":{"tf":1.0},"54":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"o":{"d":{"df":44,"docs":{"15":{"tf":2.23606797749979},"158":{"tf":1.0},"16":{"tf":2.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"457":{"tf":1.0},"46":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"58":{"tf":1.0},"60":{"tf":1.0}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"146":{"tf":1.0},"177":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"244":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":16,"docs":{"200":{"tf":1.0},"213":{"tf":1.0},"218":{"tf":1.0},"238":{"tf":1.0},"262":{"tf":1.0},"303":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"364":{"tf":1.0},"384":{"tf":1.0},"443":{"tf":1.0},"451":{"tf":1.0},"461":{"tf":1.0},"474":{"tf":1.0},"558":{"tf":1.0},"64":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"29":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"259":{"tf":1.0}}}}}},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"55":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"469":{"tf":1.0},"470":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":18,"docs":{"113":{"tf":1.4142135623730951},"156":{"tf":1.0},"231":{"tf":2.0},"232":{"tf":1.4142135623730951},"237":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"35":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"408":{"tf":1.0},"480":{"tf":1.7320508075688772},"483":{"tf":1.0},"538":{"tf":1.0},"61":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"15":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"e":{"c":{"df":3,"docs":{"246":{"tf":1.0},"248":{"tf":1.0},"374":{"tf":1.0}}},"df":0,"docs":{}},"n":{":":{":":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"370":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":1.0}}}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"d":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":6,"docs":{"197":{"tf":1.0},"217":{"tf":1.0},"336":{"tf":1.7320508075688772},"418":{"tf":1.0},"421":{"tf":2.0},"568":{"tf":1.0}}}}}},"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":6,"docs":{"199":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"328":{"tf":1.4142135623730951},"370":{"tf":1.0},"375":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"328":{"tf":1.0}}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":3,"docs":{"246":{"tf":2.23606797749979},"248":{"tf":1.0},"251":{"tf":1.0}}}}}},"df":19,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":2.0},"199":{"tf":1.7320508075688772},"203":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":2.449489742783178},"248":{"tf":1.0},"251":{"tf":1.7320508075688772},"252":{"tf":1.7320508075688772},"258":{"tf":1.0},"332":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.0},"383":{"tf":1.0},"394":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.4142135623730951}},"g":{"df":1,"docs":{"397":{"tf":1.7320508075688772}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"457":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"l":{"df":5,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"367":{"tf":1.0},"456":{"tf":1.0},"496":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"l":{"a":{"c":{"df":0,"docs":{},"e":{"df":13,"docs":{"2":{"tf":1.0},"251":{"tf":1.0},"40":{"tf":1.0},"402":{"tf":1.0},"421":{"tf":1.0},"442":{"tf":1.0},"465":{"tf":1.4142135623730951},"475":{"tf":1.0},"497":{"tf":1.4142135623730951},"52":{"tf":1.0},"539":{"tf":1.0},"562":{"tf":1.0},"598":{"tf":1.0}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"551":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"156":{"tf":1.0},"460":{"tf":1.0}}}},"n":{"df":14,"docs":{"11":{"tf":1.0},"16":{"tf":1.0},"18":{"tf":1.0},"19":{"tf":1.0},"328":{"tf":1.0},"40":{"tf":1.0},"46":{"tf":1.0},"486":{"tf":1.0},"49":{"tf":1.0},"532":{"tf":1.0},"550":{"tf":1.0},"552":{"tf":2.0},"553":{"tf":1.0},"61":{"tf":1.0}}},"y":{"df":51,"docs":{"130":{"tf":1.0},"156":{"tf":2.0},"164":{"tf":1.7320508075688772},"174":{"tf":1.7320508075688772},"184":{"tf":1.7320508075688772},"192":{"tf":1.4142135623730951},"206":{"tf":1.4142135623730951},"213":{"tf":1.0},"214":{"tf":1.4142135623730951},"218":{"tf":1.0},"226":{"tf":1.4142135623730951},"240":{"tf":1.4142135623730951},"241":{"tf":1.4142135623730951},"251":{"tf":1.4142135623730951},"259":{"tf":1.0},"264":{"tf":1.7320508075688772},"265":{"tf":1.4142135623730951},"273":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"281":{"tf":1.4142135623730951},"289":{"tf":1.4142135623730951},"297":{"tf":1.4142135623730951},"317":{"tf":1.4142135623730951},"32":{"tf":1.0},"333":{"tf":1.4142135623730951},"340":{"tf":1.4142135623730951},"353":{"tf":1.4142135623730951},"366":{"tf":1.0},"367":{"tf":1.4142135623730951},"377":{"tf":1.4142135623730951},"378":{"tf":1.7320508075688772},"379":{"tf":1.0},"380":{"tf":1.7320508075688772},"381":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.7320508075688772},"386":{"tf":1.0},"394":{"tf":1.4142135623730951},"402":{"tf":1.4142135623730951},"414":{"tf":1.4142135623730951},"428":{"tf":1.4142135623730951},"436":{"tf":1.4142135623730951},"445":{"tf":1.4142135623730951},"453":{"tf":1.4142135623730951},"463":{"tf":1.4142135623730951},"475":{"tf":1.4142135623730951},"483":{"tf":1.4142135623730951},"599":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"217":{"tf":1.0}}},".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":1,"docs":{"217":{"tf":1.0}}}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"356":{"tf":1.0},"380":{"tf":1.0}}}}},"df":9,"docs":{"113":{"tf":1.0},"21":{"tf":1.0},"23":{"tf":1.0},"25":{"tf":1.0},"26":{"tf":1.0},"37":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.0},"39":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":1,"docs":{"209":{"tf":1.0}},"g":{"df":2,"docs":{"300":{"tf":1.0},"458":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"217":{"tf":1.4142135623730951},"542":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}}},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":31,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.4142135623730951},"17":{"tf":1.0},"171":{"tf":1.0},"178":{"tf":1.4142135623730951},"200":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"230":{"tf":1.0},"257":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"271":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"325":{"tf":1.0},"336":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"419":{"tf":1.0},"469":{"tf":1.0},"49":{"tf":1.0},"498":{"tf":1.0},"507":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951},"559":{"tf":1.0},"56":{"tf":1.0},"562":{"tf":1.0},"583":{"tf":1.0},"61":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"190":{"tf":1.0},"198":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"458":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"380":{"tf":1.0}}}},"l":{"df":0,"docs":{},"l":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"217":{"tf":1.0},"336":{"tf":1.7320508075688772},"421":{"tf":2.0}}}}}}},":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":5,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"336":{"tf":2.0},"418":{"tf":1.0},"457":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":4,"docs":{"200":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"421":{"tf":1.4142135623730951}}},"y":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"418":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"k":{"(":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}},"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"v":{"df":1,"docs":{"200":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"568":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"t":{"df":1,"docs":{"418":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"197":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":3,"docs":{"217":{"tf":1.0},"336":{"tf":1.7320508075688772},"421":{"tf":2.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"197":{"tf":1.0},"418":{"tf":1.0}}}}}}},"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"572":{"tf":1.0}}}}}}}},"df":2,"docs":{"199":{"tf":1.0},"568":{"tf":1.0}}}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"328":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":29,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"171":{"tf":1.7320508075688772},"197":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"217":{"tf":1.0},"276":{"tf":1.0},"279":{"tf":1.0},"284":{"tf":1.4142135623730951},"328":{"tf":2.8284271247461903},"336":{"tf":3.1622776601683795},"342":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"353":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":2.23606797749979},"423":{"tf":1.4142135623730951},"456":{"tf":2.0},"457":{"tf":2.6457513110645907},"538":{"tf":1.0},"539":{"tf":1.0},"570":{"tf":1.4142135623730951},"62":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":1,"docs":{"276":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"325":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"331":{"tf":1.4142135623730951},"470":{"tf":1.0}}},"r":{"df":3,"docs":{"167":{"tf":1.0},"321":{"tf":1.0},"599":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"347":{"tf":1.0},"599":{"tf":1.0}}}}}},"p":{"df":4,"docs":{"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"258":{"tf":1.0},"397":{"tf":1.0}},"u":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":10,"docs":{"232":{"tf":1.0},"300":{"tf":1.0},"315":{"tf":1.0},"359":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"452":{"tf":1.0},"546":{"tf":1.0},"599":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"509":{"tf":1.0}}}},"df":0,"docs":{}},"df":7,"docs":{"209":{"tf":1.0},"408":{"tf":1.0},"532":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0},"546":{"tf":1.0},"73":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"116":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":5,"docs":{"15":{"tf":1.0},"217":{"tf":1.0},"421":{"tf":1.0},"487":{"tf":1.4142135623730951},"84":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":29,"docs":{"120":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.4142135623730951},"128":{"tf":1.0},"192":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"428":{"tf":1.0},"478":{"tf":1.0},"483":{"tf":1.0},"498":{"tf":1.0},"526":{"tf":1.4142135623730951},"61":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"t":{"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"271":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":23,"docs":{"162":{"tf":1.0},"192":{"tf":1.0},"199":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.4142135623730951},"28":{"tf":1.0},"284":{"tf":1.4142135623730951},"312":{"tf":1.0},"319":{"tf":1.0},"343":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.4142135623730951},"36":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"486":{"tf":1.0},"599":{"tf":2.8284271247461903},"60":{"tf":1.0},"9":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":9,"docs":{"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"268":{"tf":1.4142135623730951},"389":{"tf":1.7320508075688772},"42":{"tf":1.0},"496":{"tf":1.4142135623730951},"560":{"tf":1.0}}}}}}},"v":{"df":2,"docs":{"27":{"tf":1.0},"40":{"tf":1.0}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"108":{"tf":1.0},"127":{"tf":1.0},"259":{"tf":1.4142135623730951}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":9,"docs":{"203":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"302":{"tf":1.0},"341":{"tf":1.0},"401":{"tf":1.0},"513":{"tf":1.0},"564":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"8":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":59,"docs":{"14":{"tf":1.4142135623730951},"148":{"tf":1.0},"149":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.0},"158":{"tf":1.0},"16":{"tf":2.23606797749979},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"19":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"21":{"tf":1.7320508075688772},"216":{"tf":1.0},"217":{"tf":1.0},"22":{"tf":1.7320508075688772},"220":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.7320508075688772},"267":{"tf":1.0},"27":{"tf":1.4142135623730951},"275":{"tf":1.0},"28":{"tf":1.4142135623730951},"283":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.7320508075688772},"396":{"tf":1.0},"40":{"tf":2.0},"407":{"tf":1.0},"41":{"tf":1.4142135623730951},"416":{"tf":1.0},"42":{"tf":1.0},"44":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"481":{"tf":1.0},"485":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"55":{"tf":1.4142135623730951},"58":{"tf":1.0},"60":{"tf":1.0},"84":{"tf":1.0}},"e":{"c":{"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"566":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"s":{"df":4,"docs":{"19":{"tf":1.0},"29":{"tf":1.0},"336":{"tf":1.0},"49":{"tf":1.0}}}}},"d":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"51":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":8,"docs":{"21":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"347":{"tf":1.0},"37":{"tf":1.0},"417":{"tf":1.0},"61":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"408":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":10,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"251":{"tf":1.0},"27":{"tf":1.4142135623730951},"336":{"tf":1.0},"356":{"tf":1.0},"40":{"tf":1.0},"486":{"tf":1.0},"503":{"tf":1.0},"544":{"tf":1.0}}}},"r":{"df":0,"docs":{},"v":{"df":1,"docs":{"517":{"tf":1.4142135623730951}}}}},"s":{"df":2,"docs":{"284":{"tf":1.0},"336":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"478":{"tf":1.0},"539":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"i":{"df":15,"docs":{"156":{"tf":1.4142135623730951},"178":{"tf":1.0},"188":{"tf":1.0},"21":{"tf":1.0},"221":{"tf":1.4142135623730951},"259":{"tf":1.0},"264":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"502":{"tf":1.0},"510":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"599":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":9,"docs":{"110":{"tf":1.0},"125":{"tf":1.0},"167":{"tf":1.0},"218":{"tf":1.0},"263":{"tf":1.0},"284":{"tf":1.0},"319":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"487":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":6,"docs":{"360":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"418":{"tf":1.0},"440":{"tf":1.0}},"s":{"df":5,"docs":{"209":{"tf":1.0},"284":{"tf":1.0},"313":{"tf":1.0},"360":{"tf":1.4142135623730951},"469":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"140":{"tf":1.0},"474":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"462":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":2,"docs":{"156":{"tf":1.0},"61":{"tf":1.0}}}}}},"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"(":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":5,"docs":{"245":{"tf":1.0},"284":{"tf":1.0},"336":{"tf":3.1622776601683795},"380":{"tf":2.23606797749979},"448":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"336":{"tf":2.6457513110645907}}}}}}},"l":{"df":0,"docs":{},"n":{"!":{"(":{"\"":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"320":{"tf":1.0},"380":{"tf":3.3166247903554}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"458":{"tf":1.0}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":7,"docs":{"168":{"tf":1.0},"171":{"tf":1.0},"258":{"tf":1.0},"286":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"523":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"153":{"tf":1.0},"155":{"tf":2.0},"539":{"tf":1.0}},"i":{"df":5,"docs":{"328":{"tf":2.0},"331":{"tf":1.0},"41":{"tf":2.0},"64":{"tf":1.0},"65":{"tf":2.0}}}}}}},"v":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"187":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"b":{"a":{"b":{"df":0,"docs":{},"l":{"df":28,"docs":{"174":{"tf":1.4142135623730951},"214":{"tf":1.7320508075688772},"218":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"251":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"284":{"tf":1.0},"315":{"tf":1.0},"321":{"tf":1.0},"325":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"352":{"tf":1.0},"367":{"tf":1.0},"385":{"tf":1.0},"418":{"tf":1.0},"445":{"tf":1.0},"450":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"96":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":1,"docs":{"389":{"tf":1.0}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":80,"docs":{"155":{"tf":1.0},"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"161":{"tf":1.0},"164":{"tf":1.0},"177":{"tf":1.7320508075688772},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"181":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"233":{"tf":2.0},"234":{"tf":2.23606797749979},"244":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"251":{"tf":1.0},"256":{"tf":1.7320508075688772},"257":{"tf":1.0},"258":{"tf":2.23606797749979},"259":{"tf":1.0},"261":{"tf":1.0},"264":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"284":{"tf":1.0},"297":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"319":{"tf":1.0},"323":{"tf":1.4142135623730951},"328":{"tf":1.0},"331":{"tf":1.0},"345":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951},"370":{"tf":1.0},"375":{"tf":1.0},"377":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.0},"397":{"tf":1.0},"400":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"419":{"tf":1.4142135623730951},"42":{"tf":1.0},"421":{"tf":1.0},"425":{"tf":1.0},"431":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.4142135623730951},"46":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.4142135623730951},"469":{"tf":1.7320508075688772},"470":{"tf":2.0},"472":{"tf":1.4142135623730951},"475":{"tf":1.0},"478":{"tf":1.0},"490":{"tf":1.0},"499":{"tf":1.4142135623730951},"501":{"tf":1.0},"519":{"tf":1.0},"521":{"tf":1.7320508075688772},"537":{"tf":1.0},"539":{"tf":1.7320508075688772},"54":{"tf":1.0},"561":{"tf":1.0},"599":{"tf":1.0},"74":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"516":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"199":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":29,"docs":{"15":{"tf":1.0},"152":{"tf":1.0},"156":{"tf":1.0},"181":{"tf":1.0},"189":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.7320508075688772},"303":{"tf":1.0},"31":{"tf":1.4142135623730951},"312":{"tf":1.0},"330":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"410":{"tf":1.0},"42":{"tf":1.7320508075688772},"421":{"tf":1.0},"44":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"469":{"tf":1.4142135623730951},"485":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.7320508075688772},"62":{"tf":1.0}}}}}},"d":{"df":1,"docs":{"292":{"tf":2.449489742783178}},"u":{"c":{"df":4,"docs":{"214":{"tf":1.0},"276":{"tf":1.0},"350":{"tf":1.0},"599":{"tf":1.0}},"t":{"df":22,"docs":{"131":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.0},"168":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.0},"318":{"tf":2.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.0},"351":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"470":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":1.0},"9":{"tf":1.4142135623730951},"91":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{":":{":":{"<":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{">":{"(":{"&":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"276":{"tf":1.0},"469":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"469":{"tf":1.0}}}}}}},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"383":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":3,"docs":{"209":{"tf":1.7320508075688772},"248":{"tf":1.0},"435":{"tf":1.0}}}}},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":42,"docs":{"110":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.4142135623730951},"187":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.4142135623730951},"232":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"289":{"tf":1.0},"300":{"tf":1.0},"315":{"tf":1.0},"339":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":2.0},"408":{"tf":1.0},"436":{"tf":1.0},"448":{"tf":1.7320508075688772},"457":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.7320508075688772},"474":{"tf":1.4142135623730951},"483":{"tf":1.0},"510":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"528":{"tf":1.0},"538":{"tf":2.8284271247461903},"539":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"67":{"tf":1.0},"72":{"tf":1.0},"74":{"tf":1.0},"79":{"tf":1.4142135623730951},"84":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"286":{"tf":1.0}}}},"df":49,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"211":{"tf":1.0},"216":{"tf":1.0},"218":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"241":{"tf":1.0},"243":{"tf":1.0},"250":{"tf":1.4142135623730951},"254":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"339":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.4142135623730951},"467":{"tf":1.0},"469":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":10,"docs":{"156":{"tf":1.0},"18":{"tf":1.0},"268":{"tf":1.0},"342":{"tf":1.0},"380":{"tf":1.0},"412":{"tf":1.4142135623730951},"470":{"tf":1.0},"538":{"tf":1.4142135623730951},"558":{"tf":1.7320508075688772},"562":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":121,"docs":{"100":{"tf":1.0},"101":{"tf":1.7320508075688772},"102":{"tf":1.7320508075688772},"103":{"tf":1.7320508075688772},"104":{"tf":1.7320508075688772},"105":{"tf":1.7320508075688772},"106":{"tf":1.7320508075688772},"107":{"tf":1.4142135623730951},"108":{"tf":1.0},"109":{"tf":1.0},"110":{"tf":1.7320508075688772},"111":{"tf":1.0},"112":{"tf":1.7320508075688772},"113":{"tf":1.0},"114":{"tf":1.7320508075688772},"115":{"tf":1.4142135623730951},"116":{"tf":1.0},"117":{"tf":1.0},"118":{"tf":2.0},"119":{"tf":1.0},"120":{"tf":2.0},"121":{"tf":1.7320508075688772},"122":{"tf":1.7320508075688772},"123":{"tf":1.7320508075688772},"124":{"tf":1.4142135623730951},"125":{"tf":1.0},"126":{"tf":1.0},"127":{"tf":2.23606797749979},"128":{"tf":1.0},"129":{"tf":1.7320508075688772},"130":{"tf":1.7320508075688772},"131":{"tf":1.7320508075688772},"132":{"tf":1.7320508075688772},"133":{"tf":1.4142135623730951},"134":{"tf":1.0},"135":{"tf":1.0},"136":{"tf":1.0},"137":{"tf":1.0},"138":{"tf":1.7320508075688772},"139":{"tf":1.7320508075688772},"14":{"tf":1.0},"140":{"tf":1.7320508075688772},"141":{"tf":1.7320508075688772},"142":{"tf":1.4142135623730951},"143":{"tf":1.0},"144":{"tf":1.0},"145":{"tf":1.7320508075688772},"146":{"tf":1.7320508075688772},"147":{"tf":1.7320508075688772},"148":{"tf":1.7320508075688772},"149":{"tf":1.7320508075688772},"150":{"tf":1.0},"16":{"tf":1.4142135623730951},"187":{"tf":1.4142135623730951},"20":{"tf":1.7320508075688772},"209":{"tf":1.0},"21":{"tf":2.449489742783178},"213":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":2.23606797749979},"22":{"tf":1.7320508075688772},"221":{"tf":1.0},"224":{"tf":1.0},"230":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"244":{"tf":1.0},"249":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":2.0},"258":{"tf":1.7320508075688772},"276":{"tf":2.23606797749979},"278":{"tf":1.0},"292":{"tf":1.4142135623730951},"3":{"tf":1.0},"300":{"tf":1.7320508075688772},"315":{"tf":1.0},"341":{"tf":1.4142135623730951},"356":{"tf":1.7320508075688772},"357":{"tf":1.0},"360":{"tf":1.0},"366":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"389":{"tf":2.449489742783178},"392":{"tf":1.0},"41":{"tf":1.7320508075688772},"456":{"tf":2.0},"458":{"tf":1.0},"47":{"tf":1.7320508075688772},"496":{"tf":1.0},"499":{"tf":1.4142135623730951},"502":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.7320508075688772},"515":{"tf":2.23606797749979},"517":{"tf":1.4142135623730951},"521":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"532":{"tf":2.0},"533":{"tf":1.7320508075688772},"535":{"tf":1.4142135623730951},"546":{"tf":1.4142135623730951},"547":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951},"557":{"tf":1.7320508075688772},"558":{"tf":1.4142135623730951},"559":{"tf":1.0},"599":{"tf":1.0},"72":{"tf":1.4142135623730951},"79":{"tf":1.0},"89":{"tf":1.0},"91":{"tf":1.0},"93":{"tf":1.7320508075688772},"94":{"tf":1.7320508075688772},"95":{"tf":1.7320508075688772},"96":{"tf":2.8284271247461903},"97":{"tf":2.23606797749979},"98":{"tf":1.4142135623730951},"99":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":2,"docs":{"55":{"tf":1.0},"59":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"211":{"tf":1.0}}},"s":{"df":9,"docs":{"156":{"tf":1.0},"188":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"278":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.0},"599":{"tf":1.0},"76":{"tf":1.0}},"e":{".":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"n":{"df":0,"docs":{},"e":{"df":2,"docs":{"330":{"tf":1.0},"433":{"tf":1.0}}}},"o":{"df":0,"docs":{},"f":{"df":2,"docs":{"422":{"tf":1.4142135623730951},"431":{"tf":1.0}}}},"p":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"276":{"tf":1.0},"347":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"214":{"tf":1.0}}}},"s":{"df":10,"docs":{"14":{"tf":1.4142135623730951},"152":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.4142135623730951},"31":{"tf":1.4142135623730951},"319":{"tf":1.0},"44":{"tf":1.4142135623730951},"478":{"tf":1.0},"485":{"tf":1.0},"489":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"237":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0}}}}}}},"t":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"64":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"263":{"tf":1.0},"272":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"o":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":12,"docs":{"141":{"tf":1.7320508075688772},"142":{"tf":1.0},"143":{"tf":1.7320508075688772},"144":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"150":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":6,"docs":{"209":{"tf":1.7320508075688772},"349":{"tf":1.0},"370":{"tf":1.7320508075688772},"408":{"tf":1.0},"538":{"tf":1.0},"548":{"tf":1.0}},"e":{"_":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"538":{"tf":1.4142135623730951},"539":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"d":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"i":{"d":{"df":34,"docs":{"11":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"125":{"tf":1.0},"155":{"tf":1.4142135623730951},"156":{"tf":1.0},"168":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.4142135623730951},"241":{"tf":1.0},"245":{"tf":1.0},"252":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"457":{"tf":1.4142135623730951},"543":{"tf":1.0},"548":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"x":{"df":0,"docs":{},"i":{"df":1,"docs":{"268":{"tf":2.8284271247461903}}}}}},"u":{"b":{"(":{"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":7,"docs":{"217":{"tf":1.7320508075688772},"292":{"tf":2.23606797749979},"328":{"tf":2.8284271247461903},"380":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":2.0},"568":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"c":{"df":4,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"129":{"tf":1.0},"221":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":5,"docs":{"221":{"tf":1.0},"276":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"47":{"tf":1.0}}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":7,"docs":{"276":{"tf":2.23606797749979},"279":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"389":{"tf":1.0},"534":{"tf":1.0},"603":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"225":{"tf":1.0},"456":{"tf":1.0}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":3,"docs":{"119":{"tf":1.0},"310":{"tf":1.0},"421":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"h":{"df":7,"docs":{"173":{"tf":1.0},"209":{"tf":1.4142135623730951},"261":{"tf":1.0},"309":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0}}}},"t":{"df":14,"docs":{"195":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.4142135623730951},"258":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"53":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"55":{"tf":1.0},"562":{"tf":1.0}}},"z":{"df":0,"docs":{},"z":{"df":0,"docs":{},"l":{"df":3,"docs":{"234":{"tf":1.0},"284":{"tf":1.0},"599":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"347":{"tf":1.0}}},"df":1,"docs":{"347":{"tf":1.0}}}}}}}},"q":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"423":{"tf":1.0}}}}},"df":0,"docs":{}}},"{":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":3,"docs":{"417":{"tf":1.0},"421":{"tf":2.449489742783178},"422":{"tf":1.0}}}}}},"df":0,"docs":{},"t":{"df":2,"docs":{"192":{"tf":1.0},"599":{"tf":1.0}}},"u":{"a":{"d":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"311":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":7,"docs":{"110":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"328":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"599":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":4,"docs":{"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"209":{"tf":1.0},"347":{"tf":2.23606797749979}},"e":{"df":0,"docs":{},"s":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{":":{":":{"<":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"c":{"<":{"d":{"a":{"df":0,"docs":{},"t":{"a":{">":{">":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":79,"docs":{"100":{"tf":1.4142135623730951},"109":{"tf":1.4142135623730951},"117":{"tf":1.4142135623730951},"126":{"tf":1.4142135623730951},"135":{"tf":1.4142135623730951},"144":{"tf":1.4142135623730951},"154":{"tf":1.7320508075688772},"16":{"tf":1.0},"160":{"tf":1.4142135623730951},"164":{"tf":1.0},"170":{"tf":1.4142135623730951},"180":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"202":{"tf":1.4142135623730951},"210":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"222":{"tf":1.4142135623730951},"236":{"tf":1.4142135623730951},"247":{"tf":1.4142135623730951},"25":{"tf":1.0},"260":{"tf":1.4142135623730951},"269":{"tf":1.4142135623730951},"27":{"tf":1.0},"277":{"tf":1.4142135623730951},"28":{"tf":1.7320508075688772},"284":{"tf":1.0},"285":{"tf":1.4142135623730951},"29":{"tf":1.4142135623730951},"292":{"tf":1.0},"293":{"tf":1.4142135623730951},"30":{"tf":1.4142135623730951},"300":{"tf":2.23606797749979},"301":{"tf":1.4142135623730951},"314":{"tf":1.4142135623730951},"329":{"tf":1.4142135623730951},"337":{"tf":1.4142135623730951},"348":{"tf":1.4142135623730951},"362":{"tf":1.4142135623730951},"371":{"tf":1.4142135623730951},"381":{"tf":1.4142135623730951},"390":{"tf":1.4142135623730951},"398":{"tf":1.4142135623730951},"408":{"tf":1.0},"409":{"tf":1.4142135623730951},"41":{"tf":1.7320508075688772},"42":{"tf":1.4142135623730951},"424":{"tf":1.4142135623730951},"43":{"tf":1.4142135623730951},"432":{"tf":1.4142135623730951},"441":{"tf":1.4142135623730951},"449":{"tf":1.4142135623730951},"458":{"tf":1.0},"459":{"tf":1.4142135623730951},"471":{"tf":1.4142135623730951},"479":{"tf":1.4142135623730951},"487":{"tf":1.0},"492":{"tf":1.4142135623730951},"505":{"tf":1.4142135623730951},"506":{"tf":1.0},"509":{"tf":1.0},"524":{"tf":1.4142135623730951},"529":{"tf":1.0},"534":{"tf":1.4142135623730951},"538":{"tf":1.0},"540":{"tf":1.4142135623730951},"556":{"tf":1.0},"56":{"tf":1.7320508075688772},"566":{"tf":1.4142135623730951},"57":{"tf":1.7320508075688772},"572":{"tf":1.0},"573":{"tf":1.4142135623730951},"582":{"tf":1.4142135623730951},"593":{"tf":1.4142135623730951},"599":{"tf":1.0},"66":{"tf":1.4142135623730951},"75":{"tf":1.4142135623730951},"80":{"tf":1.4142135623730951},"85":{"tf":1.4142135623730951},"90":{"tf":1.4142135623730951}}}}}}},"u":{"df":0,"docs":{},"e":{"df":2,"docs":{"328":{"tf":1.0},"347":{"tf":1.0}}}}},"i":{"c":{"df":1,"docs":{"150":{"tf":1.0}},"k":{"df":5,"docs":{"195":{"tf":1.0},"24":{"tf":1.0},"284":{"tf":1.0},"38":{"tf":1.0},"538":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":16,"docs":{"130":{"tf":1.0},"195":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"389":{"tf":1.0},"391":{"tf":1.0},"397":{"tf":1.0},"457":{"tf":1.0}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"187":{"tf":1.0}}}},"t":{"df":25,"docs":{"156":{"tf":1.0},"190":{"tf":1.4142135623730951},"211":{"tf":1.0},"230":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.0},"270":{"tf":1.0},"307":{"tf":1.0},"330":{"tf":1.0},"347":{"tf":1.0},"356":{"tf":1.0},"359":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"475":{"tf":1.0},"512":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"599":{"tf":1.0}}}},"o":{"df":382,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"15":{"tf":1.7320508075688772},"151":{"tf":1.7320508075688772},"152":{"tf":1.4142135623730951},"153":{"tf":1.7320508075688772},"154":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.4142135623730951},"157":{"tf":2.449489742783178},"158":{"tf":2.0},"159":{"tf":1.0},"16":{"tf":1.7320508075688772},"160":{"tf":1.0},"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"165":{"tf":1.7320508075688772},"166":{"tf":2.0},"167":{"tf":1.0},"168":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":1.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"175":{"tf":1.7320508075688772},"176":{"tf":2.0},"177":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"185":{"tf":1.7320508075688772},"186":{"tf":2.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"19":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"193":{"tf":1.7320508075688772},"194":{"tf":2.0},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.0},"202":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"207":{"tf":1.7320508075688772},"208":{"tf":2.0},"209":{"tf":1.0},"21":{"tf":1.0},"210":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"215":{"tf":1.7320508075688772},"216":{"tf":2.0},"217":{"tf":1.0},"218":{"tf":1.0},"219":{"tf":1.7320508075688772},"220":{"tf":2.0},"221":{"tf":1.0},"222":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"227":{"tf":1.7320508075688772},"228":{"tf":1.4142135623730951},"229":{"tf":1.0},"23":{"tf":2.23606797749979},"230":{"tf":1.0},"231":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"236":{"tf":1.0},"237":{"tf":1.0},"238":{"tf":1.0},"239":{"tf":1.0},"24":{"tf":2.0},"240":{"tf":1.0},"241":{"tf":1.0},"242":{"tf":1.7320508075688772},"243":{"tf":1.4142135623730951},"244":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"247":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.0},"25":{"tf":1.7320508075688772},"250":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":1.4142135623730951},"255":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"26":{"tf":1.0},"260":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.7320508075688772},"267":{"tf":2.0},"268":{"tf":1.0},"269":{"tf":1.0},"27":{"tf":2.0},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"274":{"tf":1.7320508075688772},"275":{"tf":2.0},"276":{"tf":1.0},"277":{"tf":1.0},"278":{"tf":1.0},"279":{"tf":1.0},"28":{"tf":1.4142135623730951},"280":{"tf":1.0},"281":{"tf":1.0},"282":{"tf":1.7320508075688772},"283":{"tf":2.0},"284":{"tf":1.0},"285":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.7320508075688772},"290":{"tf":1.7320508075688772},"291":{"tf":2.0},"292":{"tf":1.0},"293":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"298":{"tf":1.7320508075688772},"299":{"tf":2.0},"30":{"tf":1.0},"300":{"tf":1.0},"301":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0},"305":{"tf":1.7320508075688772},"306":{"tf":2.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.0},"31":{"tf":1.7320508075688772},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"325":{"tf":1.0},"326":{"tf":1.7320508075688772},"327":{"tf":1.4142135623730951},"328":{"tf":1.0},"329":{"tf":1.0},"33":{"tf":1.0},"330":{"tf":1.0},"331":{"tf":1.0},"332":{"tf":1.0},"333":{"tf":1.0},"334":{"tf":1.7320508075688772},"335":{"tf":2.0},"336":{"tf":1.0},"337":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.0},"34":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0},"345":{"tf":1.7320508075688772},"346":{"tf":2.0},"347":{"tf":1.0},"348":{"tf":1.0},"349":{"tf":1.0},"35":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"354":{"tf":1.7320508075688772},"355":{"tf":1.4142135623730951},"356":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"36":{"tf":1.7320508075688772},"360":{"tf":1.0},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"368":{"tf":1.7320508075688772},"369":{"tf":2.0},"370":{"tf":1.0},"371":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"374":{"tf":1.0},"375":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.7320508075688772},"379":{"tf":2.0},"380":{"tf":1.0},"381":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"386":{"tf":1.0},"387":{"tf":1.7320508075688772},"388":{"tf":1.4142135623730951},"389":{"tf":1.0},"390":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"395":{"tf":1.7320508075688772},"396":{"tf":2.0},"397":{"tf":1.0},"398":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.0},"403":{"tf":1.0},"404":{"tf":1.0},"405":{"tf":1.0},"406":{"tf":1.7320508075688772},"407":{"tf":2.0},"408":{"tf":1.0},"409":{"tf":1.0},"41":{"tf":1.4142135623730951},"410":{"tf":1.0},"411":{"tf":1.0},"412":{"tf":1.0},"413":{"tf":1.0},"414":{"tf":1.0},"415":{"tf":1.0},"416":{"tf":2.0},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.4142135623730951},"420":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"424":{"tf":1.0},"425":{"tf":1.0},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0},"429":{"tf":1.7320508075688772},"430":{"tf":1.4142135623730951},"431":{"tf":1.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0},"438":{"tf":1.7320508075688772},"439":{"tf":1.4142135623730951},"440":{"tf":1.0},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"446":{"tf":1.7320508075688772},"447":{"tf":2.0},"448":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"454":{"tf":1.7320508075688772},"455":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.0},"46":{"tf":1.7320508075688772},"460":{"tf":1.0},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"466":{"tf":1.7320508075688772},"467":{"tf":2.0},"468":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":1.0},"475":{"tf":1.0},"476":{"tf":1.7320508075688772},"477":{"tf":2.0},"478":{"tf":1.0},"479":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"493":{"tf":1.7320508075688772},"506":{"tf":1.4142135623730951},"507":{"tf":1.4142135623730951},"525":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951},"53":{"tf":1.4142135623730951},"539":{"tf":1.0},"54":{"tf":1.0},"541":{"tf":1.4142135623730951},"55":{"tf":1.0},"551":{"tf":1.0},"56":{"tf":1.7320508075688772},"58":{"tf":1.0},"59":{"tf":1.4142135623730951},"597":{"tf":1.0},"598":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}}}}},"r":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}}}}},"a":{"b":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"258":{"tf":1.0},"300":{"tf":1.0}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":8,"docs":{"167":{"tf":1.4142135623730951},"178":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.4142135623730951},"374":{"tf":1.0},"469":{"tf":1.0},"521":{"tf":1.0}}},"k":{"df":2,"docs":{"125":{"tf":1.0},"127":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"259":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"134":{"tf":1.0},"72":{"tf":1.0}}},"s":{"df":3,"docs":{"154":{"tf":1.0},"292":{"tf":1.0},"57":{"tf":1.0}}}},"m":{"df":2,"docs":{"336":{"tf":2.0},"340":{"tf":1.0}}},"n":{"d":{"df":1,"docs":{"481":{"tf":1.4142135623730951}},"o":{"df":0,"docs":{},"m":{"df":2,"docs":{"27":{"tf":1.0},"370":{"tf":1.0}}}}},"df":1,"docs":{"470":{"tf":1.0}},"g":{"df":1,"docs":{"8":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"140":{"tf":1.0},"419":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":2,"docs":{"538":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"240":{"tf":1.0}}}},"df":0,"docs":{}}}}},"w":{"df":4,"docs":{"157":{"tf":1.0},"276":{"tf":1.0},"328":{"tf":1.0},"489":{"tf":1.0}},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"190":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":2,"docs":{"190":{"tf":1.0},"336":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"599":{"tf":1.0}}},"df":4,"docs":{"360":{"tf":1.0},"389":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}}},"c":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"423":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"0":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"1":{"_":{"df":0,"docs":{},"u":{"3":{"2":{"df":1,"docs":{"423":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"419":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"418":{"tf":1.0}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"_":{"df":1,"docs":{"419":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"418":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"422":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":3,"docs":{"421":{"tf":1.0},"423":{"tf":1.0},"470":{"tf":1.0}}},"df":3,"docs":{"292":{"tf":2.449489742783178},"370":{"tf":1.7320508075688772},"440":{"tf":2.0}},"e":{"a":{"c":{"df":0,"docs":{},"h":{"df":6,"docs":{"209":{"tf":1.0},"245":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"286":{"tf":1.0},"448":{"tf":1.0},"556":{"tf":1.0}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0}}}}}},"d":{"df":33,"docs":{"156":{"tf":2.23606797749979},"178":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.4142135623730951},"198":{"tf":1.4142135623730951},"199":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.4142135623730951},"249":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.7320508075688772},"357":{"tf":1.4142135623730951},"360":{"tf":1.0},"361":{"tf":1.0},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.4142135623730951},"402":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.7320508075688772},"486":{"tf":1.0},"527":{"tf":1.0},"565":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"481":{"tf":1.0},"538":{"tf":1.7320508075688772}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"478":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":3,"docs":{"195":{"tf":1.0},"196":{"tf":1.4142135623730951},"199":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"i":{"df":13,"docs":{"17":{"tf":1.0},"199":{"tf":1.4142135623730951},"230":{"tf":2.0},"232":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"380":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"551":{"tf":1.0},"560":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}},"m":{"df":3,"docs":{"221":{"tf":1.0},"538":{"tf":1.0},"543":{"tf":1.0}}},"y":{"!":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{"c":{"df":0,"docs":{},"x":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"(":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"c":{"df":0,"docs":{},"x":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"df":45,"docs":{"110":{"tf":1.0},"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"23":{"tf":1.4142135623730951},"233":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"278":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"322":{"tf":1.4142135623730951},"327":{"tf":1.0},"33":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"47":{"tf":1.0},"477":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":3,"docs":{"190":{"tf":1.0},"237":{"tf":1.0},"347":{"tf":1.0}}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"156":{"tf":1.0},"487":{"tf":1.0}}}},"z":{"df":38,"docs":{"178":{"tf":1.0},"195":{"tf":1.0},"198":{"tf":1.0},"201":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.0},"383":{"tf":1.0},"41":{"tf":1.4142135623730951},"421":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"47":{"tf":1.0},"470":{"tf":1.0},"487":{"tf":1.0},"497":{"tf":1.0},"499":{"tf":1.4142135623730951},"516":{"tf":1.7320508075688772},"517":{"tf":1.4142135623730951},"534":{"tf":1.4142135623730951},"535":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"548":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951}}}},"l":{"df":0,"docs":{},"i":{"df":30,"docs":{"148":{"tf":1.0},"149":{"tf":1.0},"156":{"tf":1.4142135623730951},"217":{"tf":1.0},"245":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"315":{"tf":1.0},"32":{"tf":1.0},"321":{"tf":1.4142135623730951},"340":{"tf":1.0},"35":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"408":{"tf":1.4142135623730951},"423":{"tf":1.0},"47":{"tf":1.0},"478":{"tf":1.7320508075688772},"481":{"tf":1.7320508075688772},"499":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.0},"534":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"461":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"110":{"tf":1.0}}}}}},"r":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"179":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":17,"docs":{"190":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"319":{"tf":1.0},"324":{"tf":1.0},"341":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"357":{"tf":1.0},"360":{"tf":1.4142135623730951},"370":{"tf":1.0},"404":{"tf":1.0},"440":{"tf":1.0},"45":{"tf":1.0},"512":{"tf":1.0},"61":{"tf":1.0},"82":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"c":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":9,"docs":{"120":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.7320508075688772},"292":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"380":{"tf":1.0},"481":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":3,"docs":{"259":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.0}}}},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":5,"docs":{"178":{"tf":1.0},"209":{"tf":1.7320508075688772},"217":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"470":{"tf":1.0},"522":{"tf":1.0}}}}}},"r":{"d":{"df":4,"docs":{"209":{"tf":1.4142135623730951},"392":{"tf":1.0},"448":{"tf":2.0},"598":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":4,"docs":{"156":{"tf":1.0},"245":{"tf":1.4142135623730951},"370":{"tf":2.6457513110645907},"375":{"tf":1.4142135623730951}}}}},"v":{"df":1,"docs":{"539":{"tf":1.0}}}},"d":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"258":{"tf":1.0},"27":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0}}}}},"df":3,"docs":{"218":{"tf":1.0},"245":{"tf":1.0},"538":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":2,"docs":{"336":{"tf":1.0},"389":{"tf":1.0}}}}}}},"o":{"df":1,"docs":{"599":{"tf":1.0}}},"u":{"c":{"df":5,"docs":{"209":{"tf":1.0},"336":{"tf":1.0},"397":{"tf":1.7320508075688772},"405":{"tf":1.0},"73":{"tf":1.0}},"t":{"df":1,"docs":{"341":{"tf":1.0}}}},"df":0,"docs":{}}},"df":9,"docs":{"192":{"tf":1.0},"200":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":3.1622776601683795},"336":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"517":{"tf":1.0},"599":{"tf":1.0}},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"258":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":3,"docs":{"417":{"tf":2.0},"422":{"tf":1.0},"425":{"tf":1.0}},"l":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"417":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":3,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"565":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":16,"docs":{"156":{"tf":1.0},"213":{"tf":1.4142135623730951},"217":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"268":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.4142135623730951},"328":{"tf":1.0},"417":{"tf":1.4142135623730951},"42":{"tf":1.0},"421":{"tf":1.0},"470":{"tf":1.0},"538":{"tf":1.4142135623730951},"598":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"154":{"tf":1.0},"94":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"198":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"336":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":40,"docs":{"155":{"tf":1.0},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"176":{"tf":1.4142135623730951},"186":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"208":{"tf":1.4142135623730951},"216":{"tf":1.4142135623730951},"220":{"tf":1.4142135623730951},"228":{"tf":1.0},"23":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"259":{"tf":1.0},"267":{"tf":1.4142135623730951},"275":{"tf":1.4142135623730951},"283":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"299":{"tf":1.4142135623730951},"306":{"tf":1.4142135623730951},"327":{"tf":1.0},"335":{"tf":1.4142135623730951},"346":{"tf":1.4142135623730951},"355":{"tf":1.0},"369":{"tf":1.4142135623730951},"37":{"tf":1.0},"379":{"tf":1.4142135623730951},"388":{"tf":1.0},"396":{"tf":1.4142135623730951},"407":{"tf":1.4142135623730951},"416":{"tf":1.4142135623730951},"430":{"tf":1.0},"439":{"tf":1.0},"444":{"tf":1.0},"447":{"tf":1.4142135623730951},"455":{"tf":1.0},"458":{"tf":1.0},"467":{"tf":1.4142135623730951},"477":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"g":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"278":{"tf":1.0},"496":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":3,"docs":{"316":{"tf":1.0},"321":{"tf":1.0},"341":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"469":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"200":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"r":{"df":2,"docs":{"203":{"tf":1.0},"292":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":9,"docs":{"156":{"tf":1.4142135623730951},"207":{"tf":1.7320508075688772},"208":{"tf":1.0},"209":{"tf":1.0},"210":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":5,"docs":{"110":{"tf":1.0},"195":{"tf":1.0},"217":{"tf":1.0},"310":{"tf":1.0},"457":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"18":{"tf":1.0},"51":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"190":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0}}}}}}}}}},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"417":{"tf":1.0}}}}}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":6,"docs":{"268":{"tf":1.0},"386":{"tf":1.4142135623730951},"460":{"tf":1.0},"480":{"tf":1.0},"538":{"tf":1.0},"566":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"338":{"tf":1.0}}}}}}}}}},"y":{"df":1,"docs":{"108":{"tf":1.0}}}},"df":9,"docs":{"246":{"tf":1.0},"248":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"370":{"tf":1.0},"495":{"tf":1.0},"502":{"tf":1.0},"507":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"s":{"df":6,"docs":{"218":{"tf":1.0},"328":{"tf":1.4142135623730951},"357":{"tf":1.0},"380":{"tf":1.0},"422":{"tf":1.0},"89":{"tf":1.0}}}},"df":0,"docs":{},"v":{"df":3,"docs":{"172":{"tf":1.0},"559":{"tf":1.0},"579":{"tf":1.0}}}},"i":{"a":{"b":{"df":0,"docs":{},"l":{"df":4,"docs":{"119":{"tf":1.0},"121":{"tf":1.0},"130":{"tf":1.4142135623730951},"72":{"tf":1.0}}}},"df":0,"docs":{}},"df":5,"docs":{"248":{"tf":1.0},"456":{"tf":1.4142135623730951},"462":{"tf":1.4142135623730951},"544":{"tf":1.0},"548":{"tf":1.0}},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"358":{"tf":1.0},"370":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"458":{"tf":1.0}}},"df":5,"docs":{"169":{"tf":1.0},"209":{"tf":1.0},"357":{"tf":1.0},"458":{"tf":1.0},"517":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":19,"docs":{"167":{"tf":1.0},"199":{"tf":1.0},"23":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":1.0},"25":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"311":{"tf":1.0},"37":{"tf":1.0},"380":{"tf":2.0},"385":{"tf":1.0},"419":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"89":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"231":{"tf":1.0},"448":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"v":{"df":7,"docs":{"131":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"380":{"tf":1.4142135623730951},"392":{"tf":1.0},"559":{"tf":1.0}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"391":{"tf":1.0},"538":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"217":{"tf":1.0},"542":{"tf":1.0}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":4,"docs":{"300":{"tf":1.0},"343":{"tf":1.0},"370":{"tf":1.0},"474":{"tf":1.0}},"e":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"328":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"l":{"a":{"c":{"df":9,"docs":{"157":{"tf":1.0},"279":{"tf":1.0},"310":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"470":{"tf":1.0},"489":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":2,"docs":{"300":{"tf":1.4142135623730951},"54":{"tf":1.0}}}},"o":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}}},":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"16":{"tf":1.0},"292":{"tf":2.449489742783178},"562":{"tf":1.0},"580":{"tf":1.0}},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"221":{"tf":1.0}}}},"r":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":8,"docs":{"209":{"tf":2.23606797749979},"214":{"tf":1.0},"221":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.7320508075688772},"400":{"tf":1.0},"404":{"tf":1.4142135623730951},"9":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"24":{"tf":1.0},"25":{"tf":1.0},"603":{"tf":1.0}}}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":8,"docs":{"155":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"280":{"tf":1.0},"328":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.0},"94":{"tf":1.0}}}},"o":{"'":{"df":1,"docs":{"286":{"tf":1.0}}},"d":{"df":0,"docs":{},"u":{"c":{"df":4,"docs":{"178":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"431":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"284":{"tf":1.0}}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"278":{"tf":1.0}}}}},"q":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"418":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"347":{"tf":1.4142135623730951},"579":{"tf":1.0},"580":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":26,"docs":{"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.0},"169":{"tf":2.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"217":{"tf":2.23606797749979},"221":{"tf":2.449489742783178},"232":{"tf":1.4142135623730951},"268":{"tf":3.7416573867739413},"276":{"tf":2.23606797749979},"279":{"tf":1.0},"292":{"tf":2.23606797749979},"300":{"tf":1.4142135623730951},"307":{"tf":1.4142135623730951},"315":{"tf":1.0},"347":{"tf":2.449489742783178},"349":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":2.0},"523":{"tf":1.7320508075688772},"603":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"r":{"df":60,"docs":{"102":{"tf":1.4142135623730951},"111":{"tf":1.4142135623730951},"112":{"tf":1.0},"119":{"tf":1.4142135623730951},"128":{"tf":1.4142135623730951},"129":{"tf":1.0},"137":{"tf":1.4142135623730951},"146":{"tf":1.4142135623730951},"153":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.7320508075688772},"171":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"268":{"tf":1.4142135623730951},"270":{"tf":1.0},"273":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.7320508075688772},"302":{"tf":1.0},"319":{"tf":1.4142135623730951},"328":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"351":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":2.6457513110645907},"380":{"tf":1.0},"41":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":2.23606797749979},"431":{"tf":1.0},"440":{"tf":6.708203932499369},"442":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.4142135623730951},"522":{"tf":1.0},"535":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951},"559":{"tf":1.0},"579":{"tf":1.7320508075688772},"598":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.4142135623730951}}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"323":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"258":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":7,"docs":{"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"237":{"tf":1.7320508075688772},"258":{"tf":1.0},"307":{"tf":1.0},"321":{"tf":2.0}}}}}}},"s":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"181":{"tf":1.0},"183":{"tf":1.0},"359":{"tf":1.0},"469":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":7,"docs":{"181":{"tf":1.0},"218":{"tf":1.0},"319":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.7320508075688772}}}},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"385":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"c":{"df":18,"docs":{"108":{"tf":1.0},"119":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.4142135623730951},"125":{"tf":1.0},"127":{"tf":1.0},"131":{"tf":1.0},"178":{"tf":1.0},"217":{"tf":1.0},"284":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"370":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"538":{"tf":2.8284271247461903},"539":{"tf":1.4142135623730951},"544":{"tf":1.0},"546":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"213":{"tf":1.0},"53":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"n":{"d":{"df":9,"docs":{"209":{"tf":1.0},"217":{"tf":1.0},"276":{"tf":1.0},"29":{"tf":1.0},"300":{"tf":1.4142135623730951},"336":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":20,"docs":{"167":{"tf":2.23606797749979},"168":{"tf":1.0},"169":{"tf":2.23606797749979},"189":{"tf":1.0},"195":{"tf":1.7320508075688772},"201":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":2.8284271247461903},"230":{"tf":1.0},"276":{"tf":1.7320508075688772},"28":{"tf":1.0},"292":{"tf":1.7320508075688772},"300":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":1.4142135623730951},"397":{"tf":1.0},"41":{"tf":1.0},"538":{"tf":1.4142135623730951},"580":{"tf":1.4142135623730951},"599":{"tf":1.0}},"e":{"<":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"284":{"tf":1.0},"448":{"tf":1.0}}}}},"df":4,"docs":{"357":{"tf":1.0},"389":{"tf":1.0},"457":{"tf":1.0},"92":{"tf":1.0}},"r":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"370":{"tf":1.0},"421":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"<":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"292":{"tf":1.0}},"e":{"<":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{":":{":":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"u":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"209":{"tf":1.0}}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"<":{"df":0,"docs":{},"u":{"8":{"df":2,"docs":{"196":{"tf":1.4142135623730951},"197":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":43,"docs":{"108":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":2.6457513110645907},"307":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"347":{"tf":2.6457513110645907},"374":{"tf":1.0},"377":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0},"431":{"tf":1.0},"445":{"tf":1.0},"448":{"tf":1.7320508075688772},"469":{"tf":1.0},"470":{"tf":2.0},"472":{"tf":1.0},"502":{"tf":1.4142135623730951},"521":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"561":{"tf":1.0},"578":{"tf":1.7320508075688772},"579":{"tf":1.0},"599":{"tf":1.4142135623730951},"79":{"tf":1.0}}}},"m":{"df":1,"docs":{"573":{"tf":1.0}},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":2.0}}}}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"11":{"tf":1.0},"179":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":7,"docs":{"40":{"tf":1.0},"41":{"tf":1.4142135623730951},"45":{"tf":1.0},"493":{"tf":1.4142135623730951},"506":{"tf":1.4142135623730951},"525":{"tf":1.4142135623730951},"541":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"336":{"tf":1.0}},"e":{"df":0,"docs":{},"v":{"df":2,"docs":{"336":{"tf":1.0},"342":{"tf":1.0}}}}},"y":{"_":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":2,"docs":{"457":{"tf":1.7320508075688772},"458":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":26,"docs":{"167":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":2.6457513110645907},"209":{"tf":1.4142135623730951},"217":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"246":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":2.0},"294":{"tf":1.0},"336":{"tf":3.1622776601683795},"341":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"418":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":2.0},"458":{"tf":1.7320508075688772},"465":{"tf":1.4142135623730951},"508":{"tf":1.0},"51":{"tf":1.0},"522":{"tf":1.0},"573":{"tf":1.7320508075688772}}}}}},"u":{"df":0,"docs":{},"s":{"df":4,"docs":{"196":{"tf":1.0},"205":{"tf":1.0},"571":{"tf":1.0},"96":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"399":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":1,"docs":{"463":{"tf":1.0}}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":9,"docs":{"15":{"tf":1.0},"16":{"tf":1.4142135623730951},"230":{"tf":1.0},"259":{"tf":1.0},"29":{"tf":1.7320508075688772},"347":{"tf":1.0},"370":{"tf":1.0},"42":{"tf":1.7320508075688772},"558":{"tf":2.6457513110645907}}}},"s":{"df":1,"docs":{"61":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"18":{"tf":1.0},"268":{"tf":1.0},"347":{"tf":1.0},"51":{"tf":1.0}}}}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":19,"docs":{"512":{"tf":1.0},"518":{"tf":1.7320508075688772},"519":{"tf":1.0},"520":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":6,"docs":{"134":{"tf":1.0},"209":{"tf":1.0},"313":{"tf":1.0},"370":{"tf":1.0},"431":{"tf":1.0},"460":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"370":{"tf":1.0}}}}}}}}}},"f":{"c":{"df":4,"docs":{"17":{"tf":1.0},"478":{"tf":1.0},"560":{"tf":1.0},"562":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":1,"docs":{"602":{"tf":1.0}}}}}}}}},"h":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"602":{"tf":1.0}}}}}}}}},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"542":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":29,"docs":{"129":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"268":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"300":{"tf":1.4142135623730951},"304":{"tf":1.0},"319":{"tf":1.0},"321":{"tf":1.0},"359":{"tf":1.0},"361":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"394":{"tf":1.0},"421":{"tf":1.7320508075688772},"431":{"tf":1.0},"472":{"tf":1.0},"475":{"tf":1.0},"522":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0},"552":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"460":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"401":{"tf":1.0}}},"k":{"df":1,"docs":{"538":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":2.23606797749979}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":1,"docs":{"380":{"tf":1.0}}}},"o":{"a":{"d":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"df":7,"docs":{"10":{"tf":1.0},"155":{"tf":1.0},"550":{"tf":1.7320508075688772},"551":{"tf":1.0},"552":{"tf":1.0},"553":{"tf":1.7320508075688772},"562":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"57":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}},"i":{"df":1,"docs":{"221":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":2,"docs":{"28":{"tf":1.4142135623730951},"41":{"tf":1.4142135623730951}}}},"m":{"df":1,"docs":{"156":{"tf":1.0}}},"o":{"df":0,"docs":{},"m":{"df":2,"docs":{"200":{"tf":1.0},"57":{"tf":1.0}}},"t":{"df":1,"docs":{"250":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"268":{"tf":1.0},"380":{"tf":1.0}}}}}},"t":{"df":6,"docs":{"195":{"tf":1.0},"201":{"tf":1.0},"268":{"tf":3.4641016151377544},"292":{"tf":1.0},"300":{"tf":1.0},"431":{"tf":1.7320508075688772}},"e":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"/":{"\"":{")":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"_":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"_":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"/":{"\"":{")":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"(":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"_":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"(":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":3,"docs":{"268":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0}}},"s":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"(":{"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":1.0}},"e":{")":{"?":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"230":{"tf":1.0},"502":{"tf":1.0}}}}}},"w":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}},"p":{"c":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":2,"docs":{"276":{"tf":2.6457513110645907},"359":{"tf":1.0}}},"df":0,"docs":{}},"s":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"349":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"279":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"df":2,"docs":{"440":{"tf":2.0},"602":{"tf":1.0}}},"t":{".":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"f":{"df":1,"docs":{"309":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"5":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"6":{"5":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{":":{"1":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":1,"docs":{"309":{"tf":1.0}},"l":{"d":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"b":{"d":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"503":{"tf":1.0}}},"i":{"df":2,"docs":{"134":{"tf":1.0},"72":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":1,"docs":{"218":{"tf":1.4142135623730951}}}}},"l":{"df":0,"docs":{},"e":{"df":5,"docs":{"156":{"tf":1.4142135623730951},"218":{"tf":1.0},"515":{"tf":1.0},"54":{"tf":1.0},"59":{"tf":1.0}}}},"m":{"df":0,"docs":{},"q":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":1,"docs":{"323":{"tf":1.0}}}}}},"n":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":61,"docs":{"112":{"tf":1.0},"121":{"tf":1.0},"125":{"tf":2.0},"127":{"tf":1.0},"128":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":2.0},"16":{"tf":1.0},"171":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.4142135623730951},"192":{"tf":1.0},"221":{"tf":1.0},"233":{"tf":1.4142135623730951},"234":{"tf":1.0},"242":{"tf":1.7320508075688772},"243":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":1.4142135623730951},"246":{"tf":1.0},"247":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.4142135623730951},"273":{"tf":1.0},"284":{"tf":1.7320508075688772},"309":{"tf":1.0},"318":{"tf":1.4142135623730951},"319":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.0},"347":{"tf":1.4142135623730951},"380":{"tf":2.449489742783178},"385":{"tf":1.0},"389":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"408":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"448":{"tf":1.7320508075688772},"453":{"tf":1.0},"504":{"tf":2.449489742783178},"508":{"tf":1.0},"509":{"tf":1.0},"510":{"tf":1.0},"517":{"tf":1.0},"522":{"tf":1.4142135623730951},"523":{"tf":1.0},"528":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.4142135623730951},"73":{"tf":1.0},"74":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":85,"docs":{"102":{"tf":1.4142135623730951},"111":{"tf":1.4142135623730951},"119":{"tf":2.0},"128":{"tf":1.7320508075688772},"137":{"tf":2.0},"146":{"tf":1.7320508075688772},"156":{"tf":3.1622776601683795},"167":{"tf":1.0},"189":{"tf":2.23606797749979},"190":{"tf":2.449489742783178},"191":{"tf":1.0},"192":{"tf":1.4142135623730951},"203":{"tf":1.0},"233":{"tf":2.0},"234":{"tf":1.7320508075688772},"235":{"tf":1.0},"237":{"tf":2.0},"240":{"tf":1.0},"241":{"tf":1.0},"256":{"tf":2.0},"257":{"tf":1.0},"258":{"tf":2.6457513110645907},"261":{"tf":2.0},"265":{"tf":1.0},"268":{"tf":1.0},"278":{"tf":1.4142135623730951},"284":{"tf":1.7320508075688772},"286":{"tf":1.0},"288":{"tf":1.4142135623730951},"300":{"tf":2.23606797749979},"302":{"tf":1.0},"309":{"tf":2.0},"319":{"tf":2.449489742783178},"323":{"tf":1.0},"325":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.7320508075688772},"349":{"tf":1.7320508075688772},"358":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":2.0},"372":{"tf":1.0},"380":{"tf":1.0},"399":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":2.0},"418":{"tf":1.4142135623730951},"421":{"tf":2.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"437":{"tf":1.7320508075688772},"462":{"tf":1.0},"464":{"tf":1.7320508075688772},"470":{"tf":1.4142135623730951},"500":{"tf":1.7320508075688772},"501":{"tf":1.0},"502":{"tf":3.0},"503":{"tf":1.4142135623730951},"504":{"tf":1.7320508075688772},"505":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":2.6457513110645907},"508":{"tf":1.7320508075688772},"509":{"tf":1.7320508075688772},"510":{"tf":1.0},"511":{"tf":1.7320508075688772},"512":{"tf":1.0},"513":{"tf":1.4142135623730951},"514":{"tf":1.4142135623730951},"515":{"tf":1.4142135623730951},"516":{"tf":1.4142135623730951},"517":{"tf":2.0},"521":{"tf":2.0},"526":{"tf":1.4142135623730951},"527":{"tf":2.0},"529":{"tf":1.7320508075688772},"532":{"tf":1.0},"533":{"tf":1.4142135623730951},"534":{"tf":1.7320508075688772},"564":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":2.23606797749979},"62":{"tf":1.7320508075688772}},"e":{"'":{"df":1,"docs":{"349":{"tf":1.0}}},".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{")":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"f":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"167":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"179":{"tf":1.0}}}}}},"t":{"'":{"df":19,"docs":{"156":{"tf":1.0},"181":{"tf":1.0},"211":{"tf":1.4142135623730951},"218":{"tf":1.0},"231":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"289":{"tf":1.0},"338":{"tf":1.0},"350":{"tf":1.0},"363":{"tf":1.4142135623730951},"367":{"tf":1.4142135623730951},"403":{"tf":1.0},"456":{"tf":1.4142135623730951},"469":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"502":{"tf":1.0},"76":{"tf":1.0}}},"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{"=":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":1,"docs":{"556":{"tf":1.0}}}}},"c":{"df":2,"docs":{"292":{"tf":1.0},"440":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"o":{"c":{"df":1,"docs":{"465":{"tf":1.0}}},"df":0,"docs":{}}},"df":195,"docs":{"108":{"tf":1.0},"11":{"tf":1.7320508075688772},"110":{"tf":1.7320508075688772},"118":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.4142135623730951},"15":{"tf":1.0},"153":{"tf":1.7320508075688772},"156":{"tf":3.7416573867739413},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"17":{"tf":1.0},"176":{"tf":1.4142135623730951},"178":{"tf":1.0},"183":{"tf":1.0},"186":{"tf":1.4142135623730951},"187":{"tf":1.7320508075688772},"188":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"195":{"tf":1.4142135623730951},"198":{"tf":1.0},"204":{"tf":1.0},"208":{"tf":1.4142135623730951},"209":{"tf":2.8284271247461903},"211":{"tf":2.0},"213":{"tf":1.0},"216":{"tf":1.4142135623730951},"217":{"tf":1.7320508075688772},"218":{"tf":1.4142135623730951},"220":{"tf":1.4142135623730951},"221":{"tf":1.7320508075688772},"227":{"tf":1.7320508075688772},"228":{"tf":1.7320508075688772},"229":{"tf":1.0},"23":{"tf":1.4142135623730951},"230":{"tf":2.6457513110645907},"231":{"tf":1.0},"232":{"tf":1.4142135623730951},"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":2.0},"236":{"tf":1.0},"237":{"tf":1.7320508075688772},"238":{"tf":1.0},"239":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"243":{"tf":1.4142135623730951},"244":{"tf":1.0},"245":{"tf":1.4142135623730951},"251":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":1.7320508075688772},"255":{"tf":1.0},"256":{"tf":2.0},"257":{"tf":1.4142135623730951},"258":{"tf":2.8284271247461903},"259":{"tf":2.23606797749979},"260":{"tf":1.0},"261":{"tf":2.23606797749979},"262":{"tf":1.0},"263":{"tf":1.4142135623730951},"264":{"tf":1.7320508075688772},"265":{"tf":1.0},"267":{"tf":1.4142135623730951},"268":{"tf":2.6457513110645907},"27":{"tf":1.0},"270":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"275":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"283":{"tf":1.4142135623730951},"284":{"tf":2.449489742783178},"289":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"299":{"tf":1.4142135623730951},"3":{"tf":1.0},"300":{"tf":2.0},"303":{"tf":1.0},"304":{"tf":1.0},"306":{"tf":1.4142135623730951},"316":{"tf":1.4142135623730951},"317":{"tf":1.0},"327":{"tf":1.4142135623730951},"332":{"tf":1.0},"333":{"tf":1.0},"335":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"338":{"tf":1.4142135623730951},"339":{"tf":1.4142135623730951},"340":{"tf":1.4142135623730951},"341":{"tf":1.7320508075688772},"343":{"tf":1.0},"346":{"tf":1.4142135623730951},"347":{"tf":1.7320508075688772},"349":{"tf":1.0},"350":{"tf":1.0},"355":{"tf":1.4142135623730951},"356":{"tf":2.23606797749979},"357":{"tf":1.4142135623730951},"358":{"tf":1.4142135623730951},"359":{"tf":1.4142135623730951},"363":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.4142135623730951},"37":{"tf":1.7320508075688772},"370":{"tf":1.7320508075688772},"376":{"tf":1.0},"379":{"tf":1.4142135623730951},"380":{"tf":4.47213595499958},"382":{"tf":1.0},"383":{"tf":2.0},"385":{"tf":1.0},"386":{"tf":1.0},"388":{"tf":1.4142135623730951},"389":{"tf":2.0},"393":{"tf":1.0},"394":{"tf":1.0},"396":{"tf":1.4142135623730951},"399":{"tf":1.0},"40":{"tf":1.0},"405":{"tf":1.4142135623730951},"407":{"tf":1.4142135623730951},"408":{"tf":1.7320508075688772},"41":{"tf":1.0},"416":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.0},"427":{"tf":1.0},"430":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"435":{"tf":1.0},"439":{"tf":1.4142135623730951},"447":{"tf":1.4142135623730951},"455":{"tf":1.4142135623730951},"456":{"tf":2.6457513110645907},"457":{"tf":1.4142135623730951},"458":{"tf":1.4142135623730951},"460":{"tf":2.23606797749979},"461":{"tf":1.0},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"467":{"tf":1.4142135623730951},"469":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"475":{"tf":1.0},"477":{"tf":1.4142135623730951},"478":{"tf":1.0},"483":{"tf":1.0},"490":{"tf":2.0},"499":{"tf":1.4142135623730951},"501":{"tf":2.0},"502":{"tf":1.4142135623730951},"512":{"tf":1.4142135623730951},"519":{"tf":2.0},"521":{"tf":1.7320508075688772},"522":{"tf":1.0},"523":{"tf":1.0},"525":{"tf":1.0},"530":{"tf":1.0},"537":{"tf":2.0},"538":{"tf":1.7320508075688772},"544":{"tf":1.0},"597":{"tf":1.0},"599":{"tf":2.449489742783178},"600":{"tf":1.0},"601":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.7320508075688772},"64":{"tf":1.0},"65":{"tf":2.23606797749979},"71":{"tf":1.4142135623730951},"72":{"tf":1.7320508075688772},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.4142135623730951},"79":{"tf":2.23606797749979},"8":{"tf":2.0},"81":{"tf":1.4142135623730951},"82":{"tf":1.0},"86":{"tf":1.4142135623730951},"87":{"tf":1.0},"89":{"tf":2.0},"9":{"tf":2.449489742783178},"91":{"tf":2.0},"92":{"tf":1.7320508075688772}},"f":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"245":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"i":{"df":1,"docs":{"156":{"tf":1.0}}},"u":{"df":0,"docs":{},"p":{"df":4,"docs":{"110":{"tf":1.0},"245":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"469":{"tf":1.0}}}}}}}},"w":{"<":{"'":{"a":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"x":{"df":1,"docs":{"448":{"tf":1.0}}},"y":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"224":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}},"s":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"579":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"131":{"tf":1.0}}},"df":0,"docs":{}}}}}},"d":{"df":1,"docs":{"221":{"tf":1.0}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":14,"docs":{"110":{"tf":1.0},"178":{"tf":1.0},"198":{"tf":1.0},"320":{"tf":1.0},"336":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"470":{"tf":1.0},"563":{"tf":1.7320508075688772},"564":{"tf":1.0},"565":{"tf":1.0},"566":{"tf":1.0}},"r":{"df":2,"docs":{"425":{"tf":1.0},"428":{"tf":1.0}}},"t":{"df":0,"docs":{},"i":{"df":20,"docs":{"171":{"tf":1.0},"190":{"tf":1.0},"218":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.0},"344":{"tf":1.4142135623730951},"41":{"tf":1.0},"456":{"tf":1.7320508075688772},"460":{"tf":1.4142135623730951},"469":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"511":{"tf":1.4142135623730951},"521":{"tf":1.0},"529":{"tf":1.0},"65":{"tf":1.4142135623730951},"76":{"tf":1.0},"79":{"tf":1.0},"81":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}}}}},"m":{"df":0,"docs":{},"e":{"df":55,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.0},"230":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":2.0},"237":{"tf":1.7320508075688772},"240":{"tf":1.0},"25":{"tf":1.0},"252":{"tf":1.4142135623730951},"257":{"tf":1.0},"261":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"321":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"331":{"tf":1.0},"341":{"tf":1.0},"358":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"393":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":1.0},"423":{"tf":1.4142135623730951},"437":{"tf":1.4142135623730951},"45":{"tf":1.0},"453":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"46":{"tf":1.4142135623730951},"463":{"tf":1.0},"464":{"tf":1.4142135623730951},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"512":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"61":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.4142135623730951},"96":{"tf":1.0}}},"p":{"df":0,"docs":{},"l":{"df":11,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.0},"142":{"tf":1.0},"209":{"tf":1.0},"336":{"tf":1.0},"496":{"tf":1.0},"94":{"tf":1.0},"98":{"tf":1.0}}}}},"n":{"d":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"315":{"tf":1.0},"321":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"389":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":7,"docs":{"246":{"tf":1.0},"258":{"tf":1.0},"330":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"470":{"tf":1.0},"57":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":5,"docs":{"122":{"tf":1.0},"199":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.4142135623730951},"417":{"tf":1.0}}}},"w":{"df":1,"docs":{"465":{"tf":1.0}}},"y":{"df":2,"docs":{"300":{"tf":1.0},"538":{"tf":1.0}}}},"c":{"a":{"df":0,"docs":{},"l":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":1,"docs":{"73":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":4,"docs":{"284":{"tf":1.0},"347":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0}}}},"n":{"df":1,"docs":{"408":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":3,"docs":{"156":{"tf":1.0},"300":{"tf":1.0},"450":{"tf":1.0}}}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"389":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":8,"docs":{"209":{"tf":1.0},"318":{"tf":1.0},"328":{"tf":3.7416573867739413},"418":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"529":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"=":{"0":{"df":0,"docs":{},"x":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"d":{"b":{"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"328":{"tf":1.0}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"531":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":3,"docs":{"178":{"tf":1.0},"389":{"tf":1.0},"47":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"458":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"330":{"tf":1.0},"460":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"198":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"217":{"tf":1.0},"539":{"tf":1.4142135623730951}}}}},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"538":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":4,"docs":{"292":{"tf":1.0},"328":{"tf":1.4142135623730951},"440":{"tf":2.8284271247461903},"470":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"507":{"tf":1.0}}}}}}}}},"n":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"r":{"c":{"df":0,"docs":{},"h":{"df":14,"docs":{"178":{"tf":1.7320508075688772},"181":{"tf":1.0},"195":{"tf":1.0},"232":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":2.449489742783178},"258":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.0},"440":{"tf":1.0},"458":{"tf":1.0},"475":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"237":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"433":{"tf":1.0}}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":15,"docs":{"130":{"tf":1.0},"16":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.4142135623730951},"259":{"tf":1.0},"284":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.7320508075688772},"431":{"tf":1.0},"458":{"tf":1.7320508075688772},"469":{"tf":1.0},"470":{"tf":2.23606797749979},"539":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"89":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":6,"docs":{"154":{"tf":1.7320508075688772},"380":{"tf":1.0},"551":{"tf":1.4142135623730951},"597":{"tf":1.4142135623730951},"598":{"tf":1.4142135623730951},"94":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"237":{"tf":1.0}}}}},"df":1,"docs":{"341":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"53":{"tf":1.0}}},"df":59,"docs":{"152":{"tf":1.4142135623730951},"156":{"tf":1.0},"157":{"tf":1.0},"161":{"tf":1.0},"178":{"tf":2.0},"188":{"tf":1.0},"190":{"tf":1.0},"196":{"tf":1.0},"209":{"tf":2.23606797749979},"217":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.4142135623730951},"27":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":2.23606797749979},"292":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"343":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.23606797749979},"393":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.4142135623730951},"408":{"tf":1.7320508075688772},"421":{"tf":1.4142135623730951},"440":{"tf":1.0},"463":{"tf":1.0},"485":{"tf":1.4142135623730951},"489":{"tf":1.0},"499":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"509":{"tf":1.0},"516":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":3.1622776601683795},"539":{"tf":1.4142135623730951},"542":{"tf":1.0},"543":{"tf":1.0},"551":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.4142135623730951},"580":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"68":{"tf":1.4142135623730951},"69":{"tf":1.4142135623730951},"73":{"tf":1.0},"95":{"tf":1.0},"97":{"tf":1.0}},"k":{"df":2,"docs":{"178":{"tf":1.0},"179":{"tf":1.0}}},"m":{"df":33,"docs":{"139":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":2.23606797749979},"276":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.7320508075688772},"319":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.4142135623730951},"389":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"450":{"tf":1.0},"458":{"tf":1.0},"478":{"tf":1.0},"57":{"tf":1.0},"599":{"tf":1.0}}},"n":{"df":7,"docs":{"198":{"tf":1.0},"245":{"tf":1.0},"284":{"tf":1.0},"347":{"tf":1.4142135623730951},"380":{"tf":1.0},"445":{"tf":1.4142135623730951},"502":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":13,"docs":{"15":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"192":{"tf":1.0},"211":{"tf":1.0},"246":{"tf":1.4142135623730951},"252":{"tf":1.0},"370":{"tf":1.0},"422":{"tf":1.0},"538":{"tf":1.0},"588":{"tf":1.7320508075688772},"60":{"tf":1.0}}}},"df":0,"docs":{}},"f":{"(":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},".":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"418":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":1,"docs":{"167":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"167":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":1,"docs":{"370":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"_":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}},"m":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"190":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"370":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"q":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"200":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":2.0},"200":{"tf":2.0}},"e":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"268":{"tf":2.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"o":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"580":{"tf":1.4142135623730951}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"221":{"tf":1.4142135623730951}}}}}}}}}},"df":0,"docs":{}},"=":{"0":{"df":0,"docs":{},"x":{"5":{"5":{"5":{"5":{"5":{"5":{"7":{"0":{"1":{"a":{"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"d":{"b":{"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"2":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"8":{"df":1,"docs":{"284":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"d":{"0":{"0":{"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"3":{"0":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":11,"docs":{"167":{"tf":1.0},"169":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":2.23606797749979},"217":{"tf":1.0},"292":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"418":{"tf":1.0},"421":{"tf":2.8284271247461903},"568":{"tf":1.4142135623730951}}},"l":{"df":1,"docs":{"235":{"tf":1.4142135623730951}}}},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"171":{"tf":1.0},"270":{"tf":1.0},"341":{"tf":1.0},"453":{"tf":1.0},"470":{"tf":1.0}}}}},"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"572":{"tf":1.0}}}}}},"n":{"d":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"189":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":20,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.4142135623730951},"195":{"tf":1.0},"268":{"tf":3.3166247903554},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.7320508075688772},"292":{"tf":2.8284271247461903},"328":{"tf":2.23606797749979},"341":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.4142135623730951},"470":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":2.0},"564":{"tf":1.0},"579":{"tf":2.449489742783178},"599":{"tf":1.0},"62":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"276":{"tf":1.0},"328":{"tf":1.0},"538":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":10,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"310":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.0},"352":{"tf":1.0},"389":{"tf":1.0}},"i":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"116":{"tf":1.0},"230":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":8,"docs":{"106":{"tf":1.7320508075688772},"107":{"tf":1.0},"108":{"tf":1.7320508075688772},"109":{"tf":1.0},"110":{"tf":1.0},"111":{"tf":1.4142135623730951},"112":{"tf":1.0},"113":{"tf":1.0}}}}},"t":{"df":2,"docs":{"169":{"tf":1.0},"276":{"tf":2.23606797749979}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":6,"docs":{"217":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"349":{"tf":1.0},"389":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"191":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"509":{"tf":1.0},"527":{"tf":1.0}}},"n":{"c":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"r":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"j":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"&":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"s":{")":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":2,"docs":{"182":{"tf":1.0},"400":{"tf":1.0}}}}},"i":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"292":{"tf":2.0},"347":{"tf":1.4142135623730951},"469":{"tf":1.0}},"i":{"df":0,"docs":{},"z":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"s":{"(":{"&":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":1,"docs":{"458":{"tf":1.0}}},"v":{"df":3,"docs":{"119":{"tf":1.0},"302":{"tf":1.0},"572":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":35,"docs":{"111":{"tf":1.4142135623730951},"116":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.0},"132":{"tf":1.7320508075688772},"133":{"tf":1.0},"134":{"tf":1.4142135623730951},"135":{"tf":1.0},"136":{"tf":2.449489742783178},"137":{"tf":1.4142135623730951},"138":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.4142135623730951},"195":{"tf":1.0},"209":{"tf":1.0},"227":{"tf":1.7320508075688772},"228":{"tf":1.0},"229":{"tf":1.0},"230":{"tf":1.7320508075688772},"231":{"tf":2.23606797749979},"232":{"tf":1.0},"233":{"tf":1.4142135623730951},"234":{"tf":1.0},"235":{"tf":1.4142135623730951},"236":{"tf":1.0},"237":{"tf":1.4142135623730951},"238":{"tf":1.0},"239":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"276":{"tf":2.0},"599":{"tf":1.0}}}},"i":{"c":{"df":30,"docs":{"116":{"tf":1.0},"125":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.4142135623730951},"167":{"tf":2.0},"209":{"tf":1.4142135623730951},"212":{"tf":1.0},"224":{"tf":1.0},"268":{"tf":2.0},"284":{"tf":2.23606797749979},"300":{"tf":1.0},"347":{"tf":2.23606797749979},"370":{"tf":1.0},"408":{"tf":1.7320508075688772},"429":{"tf":1.7320508075688772},"430":{"tf":1.0},"431":{"tf":2.23606797749979},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0},"538":{"tf":2.449489742783178},"579":{"tf":1.4142135623730951},"580":{"tf":2.0},"599":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"235":{"tf":1.0},"60":{"tf":1.0},"601":{"tf":1.7320508075688772},"79":{"tf":1.0}}}}}}},"t":{"df":25,"docs":{"156":{"tf":1.7320508075688772},"168":{"tf":1.0},"169":{"tf":1.7320508075688772},"199":{"tf":1.0},"209":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.0},"261":{"tf":1.0},"328":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"393":{"tf":1.0},"417":{"tf":1.0},"435":{"tf":1.0},"448":{"tf":1.7320508075688772},"450":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"490":{"tf":1.0},"501":{"tf":1.0},"516":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"l":{"df":1,"docs":{"199":{"tf":1.0}}}},"u":{"df":0,"docs":{},"p":{"df":4,"docs":{"156":{"tf":1.4142135623730951},"240":{"tf":1.0},"347":{"tf":1.0},"470":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":16,"docs":{"155":{"tf":1.0},"168":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"195":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.0},"408":{"tf":1.0},"419":{"tf":1.0},"538":{"tf":1.0},"91":{"tf":1.0}}}}}},"h":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"276":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"217":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"df":3,"docs":{"297":{"tf":1.0},"560":{"tf":1.0},"573":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"422":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"422":{"tf":1.4142135623730951}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"422":{"tf":1.0}}}}}}}}},"df":29,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"276":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.7320508075688772},"419":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"470":{"tf":2.23606797749979},"476":{"tf":1.7320508075688772},"477":{"tf":1.0},"478":{"tf":1.0},"479":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"548":{"tf":1.0},"79":{"tf":1.0},"8":{"tf":1.0},"92":{"tf":1.0}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"16":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"359":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"'":{"d":{"df":3,"docs":{"225":{"tf":1.0},"394":{"tf":1.0},"82":{"tf":1.0}}},"df":20,"docs":{"251":{"tf":1.4142135623730951},"268":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"321":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"393":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"413":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":2.23606797749979},"81":{"tf":1.0},"82":{"tf":1.0},"89":{"tf":1.0}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"308":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"129":{"tf":1.0},"370":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}}},"i":{"df":104,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"15":{"tf":1.7320508075688772},"16":{"tf":1.7320508075688772},"17":{"tf":1.0},"18":{"tf":1.0},"19":{"tf":1.0},"21":{"tf":1.0},"37":{"tf":2.0},"38":{"tf":1.4142135623730951},"39":{"tf":1.0},"40":{"tf":2.449489742783178},"41":{"tf":2.0},"42":{"tf":1.0},"43":{"tf":1.0},"44":{"tf":1.7320508075688772},"45":{"tf":1.7320508075688772},"46":{"tf":2.23606797749979},"47":{"tf":2.0},"48":{"tf":1.0},"484":{"tf":1.7320508075688772},"485":{"tf":1.4142135623730951},"486":{"tf":1.4142135623730951},"487":{"tf":1.0},"488":{"tf":1.0},"489":{"tf":2.449489742783178},"49":{"tf":2.0},"490":{"tf":2.0},"491":{"tf":1.0},"492":{"tf":1.0},"493":{"tf":1.0},"494":{"tf":1.7320508075688772},"495":{"tf":1.7320508075688772},"496":{"tf":1.0},"497":{"tf":1.4142135623730951},"498":{"tf":1.0},"499":{"tf":1.4142135623730951},"50":{"tf":1.0},"500":{"tf":1.7320508075688772},"501":{"tf":2.0},"502":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"505":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.0},"51":{"tf":2.0},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.7320508075688772},"517":{"tf":1.0},"518":{"tf":1.7320508075688772},"519":{"tf":2.0},"520":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.4142135623730951},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.7320508075688772},"535":{"tf":1.0},"536":{"tf":1.7320508075688772},"537":{"tf":2.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.4142135623730951},"540":{"tf":1.0},"541":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.7320508075688772},"549":{"tf":1.0},"55":{"tf":1.0},"57":{"tf":1.7320508075688772},"58":{"tf":1.0},"59":{"tf":1.4142135623730951},"602":{"tf":1.0},"603":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}}},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"39":{"tf":1.0},"489":{"tf":1.0}}}}}}}},"df":0,"docs":{}}},"p":{"df":3,"docs":{"168":{"tf":1.0},"268":{"tf":1.4142135623730951},"560":{"tf":1.0}}}},"o":{"df":0,"docs":{},"e":{"df":1,"docs":{"276":{"tf":1.0}}},"o":{"df":0,"docs":{},"t":{"df":1,"docs":{"573":{"tf":1.0}}}},"p":{"df":2,"docs":{"284":{"tf":1.0},"73":{"tf":1.0}}},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"558":{"tf":1.0}}}},"df":7,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"233":{"tf":1.0},"268":{"tf":1.4142135623730951},"270":{"tf":1.0},"276":{"tf":1.0},"598":{"tf":1.0}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"579":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"292":{"tf":1.0}}}}}},"t":{"df":2,"docs":{"284":{"tf":1.0},"538":{"tf":1.0}}},"u":{"df":0,"docs":{},"l":{"d":{"'":{"df":0,"docs":{},"v":{"df":1,"docs":{"365":{"tf":1.0}}}},"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"178":{"tf":1.0},"375":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"w":{"df":10,"docs":{"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"27":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"522":{"tf":1.0},"539":{"tf":1.7320508075688772}},"n":{"df":2,"docs":{"246":{"tf":1.0},"347":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"i":{"d":{"df":0,"docs":{},"e":{"b":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"95":{"tf":1.0}}}},"df":0,"docs":{}},"df":3,"docs":{"181":{"tf":1.0},"224":{"tf":1.0},"389":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"(":{"&":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":3,"docs":{"196":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":3,"docs":{"196":{"tf":1.0},"199":{"tf":2.449489742783178},"200":{"tf":2.23606797749979}},"h":{"df":1,"docs":{"370":{"tf":1.0}}},"n":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"196":{"tf":1.4142135623730951}}}}}},"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"336":{"tf":1.0},"344":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":5,"docs":{"195":{"tf":1.4142135623730951},"199":{"tf":2.23606797749979},"217":{"tf":1.0},"292":{"tf":1.0},"421":{"tf":1.7320508075688772}},"e":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"196":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":4,"docs":{"195":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.0},"230":{"tf":1.0}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":6,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"366":{"tf":1.0}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"199":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"197":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951}}}}}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":33,"docs":{"167":{"tf":1.0},"171":{"tf":1.0},"192":{"tf":1.4142135623730951},"195":{"tf":1.0},"196":{"tf":1.0},"204":{"tf":1.0},"206":{"tf":1.0},"218":{"tf":1.0},"22":{"tf":1.0},"233":{"tf":1.0},"25":{"tf":1.4142135623730951},"251":{"tf":1.0},"259":{"tf":1.0},"261":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"323":{"tf":1.4142135623730951},"333":{"tf":1.0},"347":{"tf":1.4142135623730951},"352":{"tf":1.0},"370":{"tf":1.0},"386":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.7320508075688772},"475":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":6,"docs":{"231":{"tf":1.0},"264":{"tf":1.0},"317":{"tf":1.0},"340":{"tf":1.0},"358":{"tf":1.0},"61":{"tf":1.0}}}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"l":{"df":12,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"321":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":1.4142135623730951},"523":{"tf":1.0},"61":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"389":{"tf":1.0},"460":{"tf":1.0}}}},"i":{"c":{"df":1,"docs":{"357":{"tf":1.0}}},"df":6,"docs":{"196":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"232":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"df":4,"docs":{"292":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"l":{"df":11,"docs":{"156":{"tf":1.4142135623730951},"466":{"tf":1.7320508075688772},"467":{"tf":1.0},"468":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.4142135623730951},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.4142135623730951},"474":{"tf":1.0},"475":{"tf":1.0}},"t":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":21,"docs":{"156":{"tf":1.0},"177":{"tf":1.0},"189":{"tf":1.4142135623730951},"195":{"tf":1.0},"318":{"tf":1.4142135623730951},"319":{"tf":1.0},"336":{"tf":2.0},"341":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"363":{"tf":1.0},"391":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.4142135623730951},"533":{"tf":1.0},"534":{"tf":1.0},"539":{"tf":1.4142135623730951},"564":{"tf":1.0},"62":{"tf":2.0}},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"177":{"tf":1.4142135623730951}}}}}}}},"k":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"599":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":11,"docs":{"156":{"tf":1.0},"274":{"tf":1.7320508075688772},"275":{"tf":1.0},"276":{"tf":2.449489742783178},"277":{"tf":1.0},"278":{"tf":1.7320508075688772},"279":{"tf":2.0},"280":{"tf":1.0},"281":{"tf":1.0},"589":{"tf":1.7320508075688772},"599":{"tf":1.4142135623730951}}}},"t":{"df":2,"docs":{"268":{"tf":1.0},"380":{"tf":1.0}},"e":{"df":4,"docs":{"138":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"232":{"tf":1.0}}},"u":{"a":{"df":0,"docs":{},"t":{"df":8,"docs":{"226":{"tf":1.0},"237":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"286":{"tf":1.0},"336":{"tf":1.0},"359":{"tf":1.0},"419":{"tf":1.0}}}},"df":0,"docs":{}}},"x":{"df":1,"docs":{"15":{"tf":1.0}}},"z":{"df":0,"docs":{},"e":{"=":{"<":{"df":0,"docs":{},"s":{"df":1,"docs":{"245":{"tf":1.0}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"568":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":15,"docs":{"11":{"tf":1.0},"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"245":{"tf":2.23606797749979},"258":{"tf":1.0},"292":{"tf":1.4142135623730951},"336":{"tf":2.0},"340":{"tf":1.0},"341":{"tf":2.23606797749979},"342":{"tf":1.7320508075688772},"343":{"tf":1.4142135623730951},"370":{"tf":1.0},"515":{"tf":1.0},"527":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"336":{"tf":1.0}}}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"498":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"192":{"tf":1.0},"221":{"tf":1.0}}}},"m":{"df":4,"docs":{"209":{"tf":1.0},"358":{"tf":1.0},"367":{"tf":1.0},"538":{"tf":1.4142135623730951}}},"p":{"df":2,"docs":{"41":{"tf":1.0},"448":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"457":{"tf":1.0}}}}}},"df":2,"docs":{"380":{"tf":1.0},"566":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"375":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"[":{"1":{".":{".":{"]":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"375":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"375":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"259":{"tf":1.0},"419":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"300":{"tf":1.0},"386":{"tf":1.0},"458":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"g":{"df":1,"docs":{"292":{"tf":1.0}}},"w":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"}":{"df":0,"docs":{},"}":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"df":13,"docs":{"141":{"tf":1.7320508075688772},"142":{"tf":1.0},"143":{"tf":1.4142135623730951},"144":{"tf":1.0},"145":{"tf":1.4142135623730951},"146":{"tf":1.4142135623730951},"147":{"tf":1.4142135623730951},"148":{"tf":1.0},"149":{"tf":1.0},"150":{"tf":2.0},"156":{"tf":1.0},"397":{"tf":1.0},"532":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}}}}},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":13,"docs":{"209":{"tf":1.4142135623730951},"302":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.0},"356":{"tf":1.0},"380":{"tf":1.0},"458":{"tf":1.0},"474":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"245":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"252":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":1,"docs":{"188":{"tf":1.0}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"3":{"tf":1.0},"370":{"tf":1.0}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"341":{"tf":1.0}}}}}}}}},"n":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"c":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"276":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":11,"docs":{"195":{"tf":1.0},"274":{"tf":1.7320508075688772},"275":{"tf":1.0},"276":{"tf":2.23606797749979},"277":{"tf":1.0},"278":{"tf":1.0},"279":{"tf":1.0},"280":{"tf":1.0},"281":{"tf":1.0},"408":{"tf":1.0},"431":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":6,"docs":{"110":{"tf":1.0},"112":{"tf":1.0},"127":{"tf":1.0},"130":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"e":{"df":2,"docs":{"539":{"tf":1.4142135623730951},"543":{"tf":1.0}}},"i":{"d":{"df":2,"docs":{"181":{"tf":1.0},"363":{"tf":1.0}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":4,"docs":{"256":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"521":{"tf":1.0}}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":34,"docs":{"129":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"179":{"tf":1.7320508075688772},"181":{"tf":1.0},"183":{"tf":1.0},"190":{"tf":1.0},"200":{"tf":1.0},"223":{"tf":1.0},"226":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.7320508075688772},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"279":{"tf":1.0},"286":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.7320508075688772},"370":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"410":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":1.7320508075688772},"469":{"tf":2.6457513110645907},"470":{"tf":2.449489742783178},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"560":{"tf":1.4142135623730951},"570":{"tf":1.0}}}},"v":{"df":19,"docs":{"179":{"tf":1.0},"278":{"tf":1.4142135623730951},"328":{"tf":1.0},"349":{"tf":1.0},"440":{"tf":1.0},"445":{"tf":1.7320508075688772},"457":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"478":{"tf":1.0},"490":{"tf":1.0},"499":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"54":{"tf":1.0},"561":{"tf":1.0},"579":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"470":{"tf":1.0},"473":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"(":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"167":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"195":{"tf":1.0},"196":{"tf":1.0}}}}}},"x":{".":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"457":{"tf":1.7320508075688772},"458":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.7320508075688772}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}}}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}},"df":0,"docs":{}},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":3,"docs":{"19":{"tf":1.4142135623730951},"50":{"tf":1.4142135623730951},"54":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"217":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":18,"docs":{"153":{"tf":1.0},"178":{"tf":1.0},"192":{"tf":1.0},"24":{"tf":1.0},"251":{"tf":1.0},"292":{"tf":1.0},"302":{"tf":1.0},"339":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"421":{"tf":1.4142135623730951},"450":{"tf":1.0},"452":{"tf":1.0},"460":{"tf":1.0},"474":{"tf":1.0},"498":{"tf":1.0},"55":{"tf":1.0},"559":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":51,"docs":{"129":{"tf":1.0},"130":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.0},"181":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"221":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"276":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"312":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.7320508075688772},"336":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"397":{"tf":1.4142135623730951},"402":{"tf":1.0},"408":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"469":{"tf":1.0},"480":{"tf":1.0},"489":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"55":{"tf":1.0},"558":{"tf":1.0},"562":{"tf":1.0},"564":{"tf":1.0},"573":{"tf":1.0},"579":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"564":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"m":{"df":29,"docs":{"156":{"tf":2.6457513110645907},"16":{"tf":1.0},"168":{"tf":1.0},"177":{"tf":1.0},"218":{"tf":1.0},"27":{"tf":1.0},"278":{"tf":1.0},"319":{"tf":1.0},"324":{"tf":1.0},"347":{"tf":1.7320508075688772},"372":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"47":{"tf":1.0},"478":{"tf":1.4142135623730951},"487":{"tf":1.0},"51":{"tf":1.0},"539":{"tf":1.4142135623730951},"571":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.4142135623730951},"73":{"tf":1.0},"74":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"t":{"df":9,"docs":{"167":{"tf":1.0},"205":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"251":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"457":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"284":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"380":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"n":{"df":6,"docs":{"190":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"328":{"tf":1.0},"431":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"453":{"tf":1.0}}}}},"o":{"df":1,"docs":{"599":{"tf":1.0}}}},"p":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"110":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"i":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}},"df":10,"docs":{"200":{"tf":1.0},"25":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"40":{"tf":1.0},"526":{"tf":1.0},"539":{"tf":1.0},"61":{"tf":1.0}}}},"u":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"284":{"tf":1.0},"393":{"tf":1.0}}},"df":0,"docs":{}},"p":{"df":2,"docs":{"292":{"tf":1.0},"294":{"tf":1.0}}},"r":{"c":{"df":56,"docs":{"103":{"tf":1.4142135623730951},"112":{"tf":1.7320508075688772},"120":{"tf":1.4142135623730951},"129":{"tf":1.4142135623730951},"138":{"tf":1.4142135623730951},"140":{"tf":1.0},"143":{"tf":1.0},"147":{"tf":1.4142135623730951},"154":{"tf":1.0},"157":{"tf":1.0},"162":{"tf":1.4142135623730951},"172":{"tf":1.7320508075688772},"178":{"tf":1.4142135623730951},"182":{"tf":1.4142135623730951},"192":{"tf":1.0},"204":{"tf":1.4142135623730951},"209":{"tf":2.8284271247461903},"212":{"tf":1.4142135623730951},"218":{"tf":1.0},"224":{"tf":1.4142135623730951},"238":{"tf":1.4142135623730951},"245":{"tf":1.0},"249":{"tf":1.4142135623730951},"262":{"tf":1.4142135623730951},"27":{"tf":1.4142135623730951},"271":{"tf":1.4142135623730951},"276":{"tf":1.0},"278":{"tf":1.4142135623730951},"279":{"tf":1.4142135623730951},"28":{"tf":1.0},"287":{"tf":1.4142135623730951},"292":{"tf":1.0},"295":{"tf":1.4142135623730951},"303":{"tf":1.4142135623730951},"321":{"tf":1.0},"331":{"tf":1.4142135623730951},"351":{"tf":1.4142135623730951},"364":{"tf":1.4142135623730951},"373":{"tf":1.4142135623730951},"384":{"tf":1.4142135623730951},"392":{"tf":1.4142135623730951},"399":{"tf":1.0},"400":{"tf":1.4142135623730951},"408":{"tf":1.0},"411":{"tf":1.4142135623730951},"426":{"tf":1.4142135623730951},"434":{"tf":1.4142135623730951},"440":{"tf":1.0},"443":{"tf":1.4142135623730951},"451":{"tf":1.4142135623730951},"461":{"tf":1.4142135623730951},"473":{"tf":1.4142135623730951},"481":{"tf":1.4142135623730951},"489":{"tf":1.0},"538":{"tf":1.0},"598":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"a":{"c":{"df":0,"docs":{},"e":{"df":6,"docs":{"156":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"561":{"tf":1.0},"89":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}},"w":{"df":0,"docs":{},"n":{"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":6,"docs":{"310":{"tf":2.23606797749979},"320":{"tf":1.0},"322":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"349":{"tf":1.7320508075688772},"360":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{"(":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"<":{"df":0,"docs":{},"f":{">":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":1,"docs":{"217":{"tf":2.0}}},"df":0,"docs":{}}}},"df":21,"docs":{"178":{"tf":1.0},"181":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"310":{"tf":1.7320508075688772},"322":{"tf":1.4142135623730951},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"341":{"tf":1.4142135623730951},"344":{"tf":1.0},"347":{"tf":2.0},"349":{"tf":1.0},"403":{"tf":1.0},"408":{"tf":1.0},"412":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.7320508075688772},"538":{"tf":1.0},"599":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{},"e":{"c":{"df":1,"docs":{"156":{"tf":1.0}},"i":{"a":{"df":0,"docs":{},"l":{"df":9,"docs":{"112":{"tf":1.0},"129":{"tf":1.0},"156":{"tf":1.0},"218":{"tf":1.0},"330":{"tf":1.0},"341":{"tf":1.0},"403":{"tf":1.0},"579":{"tf":1.0},"61":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"f":{"df":28,"docs":{"156":{"tf":1.0},"164":{"tf":1.0},"182":{"tf":1.0},"187":{"tf":1.0},"192":{"tf":1.0},"201":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"232":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"33":{"tf":1.7320508075688772},"336":{"tf":1.0},"34":{"tf":1.4142135623730951},"347":{"tf":1.0},"349":{"tf":1.0},"36":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"417":{"tf":1.4142135623730951},"431":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.7320508075688772},"486":{"tf":1.0},"496":{"tf":1.0},"538":{"tf":1.0},"543":{"tf":1.0},"56":{"tf":1.0}},"i":{"df":4,"docs":{"276":{"tf":1.0},"380":{"tf":1.0},"470":{"tf":1.0},"49":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"d":{"df":3,"docs":{"336":{"tf":1.0},"347":{"tf":1.0},"478":{"tf":1.0}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"380":{"tf":1.0},"40":{"tf":1.0}}}},"n":{"d":{"df":9,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"458":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}},"i":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"259":{"tf":2.8284271247461903}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"59":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"209":{"tf":1.0},"276":{"tf":1.7320508075688772}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}},"t":{"df":1,"docs":{"259":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"372":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"l":{"df":3,"docs":{"370":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"365":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":1,"docs":{"336":{"tf":1.7320508075688772}}}}}}}},"q":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"178":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"s":{"df":0,"docs":{},"q":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{"\"":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":2,"docs":{"177":{"tf":1.4142135623730951},"259":{"tf":1.4142135623730951}}}}},"x":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"a":{"df":0,"docs":{},"s":{"(":{"\"":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"177":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"z":{"df":2,"docs":{"256":{"tf":1.0},"521":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"522":{"tf":1.0}}}}}}}},"r":{"c":{"/":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"7":{"8":{"7":{":":{"9":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{":":{"2":{"7":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"1":{":":{"1":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{":":{"9":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"5":{"df":2,"docs":{"221":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{":":{"5":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{":":{"1":{"4":{"df":1,"docs":{"307":{"tf":1.0}}},"7":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{":":{"5":{"df":1,"docs":{"397":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"1":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":1,"docs":{"522":{"tf":1.4142135623730951}}},"2":{"2":{":":{"1":{"4":{"df":1,"docs":{"310":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{":":{"2":{"7":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"4":{"1":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"5":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{":":{"5":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{":":{"2":{"5":{"df":1,"docs":{"522":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"9":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"2":{":":{"2":{"6":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"1":{":":{"4":{"3":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"\\":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"3":{":":{"7":{"1":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{":":{"3":{"1":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"4":{":":{"3":{"1":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"a":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":4,"docs":{"156":{"tf":1.0},"292":{"tf":1.0},"572":{"tf":1.0},"91":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"230":{"tf":1.0}}}}}},"l":{"df":4,"docs":{"237":{"tf":1.4142135623730951},"239":{"tf":1.0},"310":{"tf":1.0},"380":{"tf":1.0}}}},"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"c":{"7":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":34,"docs":{"112":{"tf":1.0},"128":{"tf":1.0},"136":{"tf":1.0},"138":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"209":{"tf":1.7320508075688772},"218":{"tf":1.7320508075688772},"221":{"tf":1.0},"230":{"tf":1.0},"242":{"tf":1.7320508075688772},"243":{"tf":1.0},"244":{"tf":1.7320508075688772},"245":{"tf":2.6457513110645907},"246":{"tf":1.7320508075688772},"247":{"tf":1.0},"248":{"tf":1.4142135623730951},"249":{"tf":1.0},"250":{"tf":1.4142135623730951},"251":{"tf":1.7320508075688772},"252":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"313":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":2.449489742783178},"399":{"tf":1.4142135623730951},"402":{"tf":1.4142135623730951},"403":{"tf":1.0},"412":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":3,"docs":{"27":{"tf":1.0},"284":{"tf":1.4142135623730951},"470":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":12,"docs":{"156":{"tf":1.4142135623730951},"395":{"tf":1.7320508075688772},"396":{"tf":1.0},"397":{"tf":1.0},"398":{"tf":1.0},"399":{"tf":1.0},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.0},"403":{"tf":1.4142135623730951},"404":{"tf":1.0},"405":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"s":{"c":{"a":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":5,"docs":{"192":{"tf":1.0},"209":{"tf":1.0},"470":{"tf":1.0},"561":{"tf":1.7320508075688772},"562":{"tf":1.4142135623730951}}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"487":{"tf":1.0}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"422":{"tf":2.23606797749979},"423":{"tf":1.0},"426":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"347":{"tf":1.0}}}},"n":{"d":{"a":{"df":0,"docs":{},"r":{"d":{"df":28,"docs":{"127":{"tf":1.0},"156":{"tf":1.4142135623730951},"160":{"tf":1.0},"221":{"tf":1.0},"223":{"tf":1.0},"231":{"tf":1.0},"240":{"tf":1.0},"257":{"tf":1.4142135623730951},"268":{"tf":1.0},"28":{"tf":1.0},"3":{"tf":1.0},"329":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"381":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"390":{"tf":1.0},"397":{"tf":1.0},"398":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"449":{"tf":1.0},"47":{"tf":1.4142135623730951},"523":{"tf":1.0},"530":{"tf":1.0},"599":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":1,"docs":{"245":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"300":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"478":{"tf":1.0}}}},"t":{".":{"c":{":":{"3":{"0":{"8":{":":{"1":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":75,"docs":{"14":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":2.0},"157":{"tf":1.0},"160":{"tf":1.0},"171":{"tf":1.0},"197":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":1.0},"255":{"tf":1.0},"256":{"tf":1.7320508075688772},"257":{"tf":1.4142135623730951},"258":{"tf":1.7320508075688772},"259":{"tf":1.4142135623730951},"260":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.4142135623730951},"29":{"tf":1.0},"300":{"tf":2.0},"309":{"tf":1.4142135623730951},"311":{"tf":1.4142135623730951},"324":{"tf":1.4142135623730951},"329":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.4142135623730951},"366":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":2.0},"38":{"tf":1.0},"380":{"tf":2.0},"381":{"tf":1.0},"383":{"tf":1.0},"386":{"tf":1.0},"389":{"tf":1.4142135623730951},"390":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.4142135623730951},"398":{"tf":1.0},"408":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.7320508075688772},"449":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0},"472":{"tf":1.0},"475":{"tf":1.0},"480":{"tf":1.0},"489":{"tf":1.0},"516":{"tf":1.0},"521":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"525":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.0},"556":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0},"9":{"tf":1.0}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"284":{"tf":1.0}}}}},"v":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}},"df":2,"docs":{"122":{"tf":1.0},"349":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"s":{"c":{"a":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"h":{"df":0,"docs":{},"y":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},":":{":":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"199":{"tf":1.7320508075688772},"200":{"tf":1.7320508075688772}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"_":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"200":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{".":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":27,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":4.123105625617661},"200":{"tf":1.7320508075688772},"206":{"tf":1.0},"217":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":4.69041575982343},"309":{"tf":1.0},"328":{"tf":3.3166247903554},"336":{"tf":1.7320508075688772},"365":{"tf":1.0},"380":{"tf":1.0},"391":{"tf":1.0},"410":{"tf":1.0},"412":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"458":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"539":{"tf":1.0},"545":{"tf":1.0},"549":{"tf":1.0},"6":{"tf":1.0},"8":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"232":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"178":{"tf":1.4142135623730951},"343":{"tf":1.0},"450":{"tf":1.0}}}}}}},"i":{"c":{"df":16,"docs":{"136":{"tf":1.4142135623730951},"217":{"tf":2.449489742783178},"218":{"tf":1.7320508075688772},"268":{"tf":1.0},"292":{"tf":2.6457513110645907},"328":{"tf":1.7320508075688772},"336":{"tf":2.449489742783178},"347":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":2.6457513110645907},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"428":{"tf":1.0},"448":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"u":{"df":390,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"15":{"tf":1.7320508075688772},"151":{"tf":1.7320508075688772},"152":{"tf":1.4142135623730951},"153":{"tf":1.7320508075688772},"154":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.4142135623730951},"157":{"tf":2.449489742783178},"158":{"tf":2.449489742783178},"159":{"tf":1.0},"16":{"tf":1.7320508075688772},"160":{"tf":1.0},"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"165":{"tf":1.7320508075688772},"166":{"tf":2.449489742783178},"167":{"tf":1.0},"168":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":1.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"175":{"tf":1.7320508075688772},"176":{"tf":2.449489742783178},"177":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"185":{"tf":1.7320508075688772},"186":{"tf":2.449489742783178},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"19":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"193":{"tf":1.7320508075688772},"194":{"tf":2.449489742783178},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.0},"202":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"207":{"tf":1.7320508075688772},"208":{"tf":2.449489742783178},"209":{"tf":1.0},"21":{"tf":1.0},"210":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"215":{"tf":1.7320508075688772},"216":{"tf":2.449489742783178},"217":{"tf":1.0},"218":{"tf":1.0},"219":{"tf":1.7320508075688772},"220":{"tf":2.449489742783178},"221":{"tf":1.0},"222":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"227":{"tf":1.7320508075688772},"228":{"tf":2.0},"229":{"tf":1.0},"23":{"tf":2.23606797749979},"230":{"tf":1.0},"231":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"236":{"tf":1.0},"237":{"tf":1.0},"238":{"tf":1.0},"239":{"tf":1.0},"24":{"tf":2.0},"240":{"tf":1.0},"241":{"tf":1.0},"242":{"tf":1.7320508075688772},"243":{"tf":2.0},"244":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"247":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.0},"25":{"tf":1.7320508075688772},"250":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":2.0},"255":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"26":{"tf":1.0},"260":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.7320508075688772},"267":{"tf":2.449489742783178},"268":{"tf":1.0},"269":{"tf":1.0},"27":{"tf":2.0},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"274":{"tf":1.7320508075688772},"275":{"tf":2.449489742783178},"276":{"tf":1.0},"277":{"tf":1.0},"278":{"tf":1.0},"279":{"tf":1.0},"28":{"tf":1.4142135623730951},"280":{"tf":1.0},"281":{"tf":1.0},"282":{"tf":1.7320508075688772},"283":{"tf":2.449489742783178},"284":{"tf":1.0},"285":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.7320508075688772},"290":{"tf":1.7320508075688772},"291":{"tf":2.449489742783178},"292":{"tf":1.0},"293":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"298":{"tf":1.7320508075688772},"299":{"tf":2.449489742783178},"30":{"tf":1.0},"300":{"tf":1.0},"301":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0},"305":{"tf":1.7320508075688772},"306":{"tf":2.449489742783178},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.0},"31":{"tf":1.7320508075688772},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"325":{"tf":1.0},"326":{"tf":1.7320508075688772},"327":{"tf":2.0},"328":{"tf":1.0},"329":{"tf":1.0},"33":{"tf":1.0},"330":{"tf":1.0},"331":{"tf":1.0},"332":{"tf":1.0},"333":{"tf":1.0},"334":{"tf":1.7320508075688772},"335":{"tf":2.449489742783178},"336":{"tf":1.0},"337":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.0},"34":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0},"345":{"tf":1.7320508075688772},"346":{"tf":2.449489742783178},"347":{"tf":1.0},"348":{"tf":1.0},"349":{"tf":1.0},"35":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"354":{"tf":1.7320508075688772},"355":{"tf":2.0},"356":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"36":{"tf":1.7320508075688772},"360":{"tf":1.0},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"368":{"tf":1.7320508075688772},"369":{"tf":2.449489742783178},"370":{"tf":1.0},"371":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"374":{"tf":1.0},"375":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.7320508075688772},"379":{"tf":2.449489742783178},"380":{"tf":1.0},"381":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"386":{"tf":1.0},"387":{"tf":1.7320508075688772},"388":{"tf":2.0},"389":{"tf":1.0},"390":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"395":{"tf":1.7320508075688772},"396":{"tf":2.449489742783178},"397":{"tf":1.0},"398":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.0},"403":{"tf":1.0},"404":{"tf":1.0},"405":{"tf":1.0},"406":{"tf":1.7320508075688772},"407":{"tf":2.449489742783178},"408":{"tf":1.0},"409":{"tf":1.0},"41":{"tf":1.4142135623730951},"410":{"tf":1.0},"411":{"tf":1.0},"412":{"tf":1.0},"413":{"tf":1.0},"414":{"tf":1.0},"415":{"tf":1.0},"416":{"tf":2.449489742783178},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.4142135623730951},"420":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"424":{"tf":1.0},"425":{"tf":1.0},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0},"429":{"tf":1.7320508075688772},"430":{"tf":2.0},"431":{"tf":1.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0},"438":{"tf":1.7320508075688772},"439":{"tf":2.0},"440":{"tf":1.0},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"446":{"tf":1.7320508075688772},"447":{"tf":2.449489742783178},"448":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"454":{"tf":1.7320508075688772},"455":{"tf":2.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.0},"46":{"tf":1.7320508075688772},"460":{"tf":1.0},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"466":{"tf":1.7320508075688772},"467":{"tf":2.449489742783178},"468":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":1.0},"475":{"tf":1.0},"476":{"tf":1.7320508075688772},"477":{"tf":2.449489742783178},"478":{"tf":1.0},"479":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"490":{"tf":1.4142135623730951},"493":{"tf":1.7320508075688772},"501":{"tf":1.4142135623730951},"506":{"tf":1.4142135623730951},"507":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"525":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951},"53":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"54":{"tf":1.0},"541":{"tf":1.4142135623730951},"55":{"tf":1.0},"551":{"tf":1.0},"553":{"tf":1.0},"56":{"tf":1.7320508075688772},"562":{"tf":1.0},"58":{"tf":1.0},"59":{"tf":1.4142135623730951},"597":{"tf":1.0},"598":{"tf":1.0},"61":{"tf":1.4142135623730951},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}},"s":{"_":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"o":{"df":2,"docs":{"157":{"tf":1.0},"26":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"y":{"df":2,"docs":{"125":{"tf":1.0},"417":{"tf":1.0}}}},"d":{"'":{"df":1,"docs":{"167":{"tf":1.0}}},"/":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"/":{"6":{"3":{"1":{"df":1,"docs":{"349":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},":":{":":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":1,"docs":{"526":{"tf":1.0}}}},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"522":{"tf":1.7320508075688772},"523":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"522":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":2,"docs":{"502":{"tf":1.0},"503":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"502":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"502":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"419":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":5,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"502":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"f":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":1,"docs":{"522":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"383":{"tf":1.0}},"e":{"<":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}}}},"df":0,"docs":{}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":2,"docs":{"380":{"tf":2.23606797749979},"383":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"=":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"307":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"310":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"+":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{">":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":1,"docs":{"440":{"tf":3.4641016151377544}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"440":{"tf":4.242640687119285}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"323":{"tf":1.0}}}}}}},"p":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"c":{":":{":":{"c":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{":":{":":{"df":0,"docs":{},"h":{"8":{"3":{"6":{"6":{"7":{"1":{"9":{"d":{"1":{"df":0,"docs":{},"f":{"6":{"1":{"5":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{":":{"d":{"df":0,"docs":{},"o":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"6":{"b":{"0":{"df":0,"docs":{},"f":{"4":{"3":{"0":{"d":{"4":{"8":{"1":{"2":{"2":{"d":{"d":{"df":0,"docs":{},"f":{"df":1,"docs":{"404":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"6":{"b":{"a":{"4":{"2":{"0":{"df":0,"docs":{},"e":{"2":{"df":0,"docs":{},"e":{"2":{"1":{"b":{"5":{"a":{"df":0,"docs":{},"f":{"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":1,"docs":{"198":{"tf":1.0}}}}},"r":{"c":{":":{":":{"df":0,"docs":{},"r":{"c":{"df":2,"docs":{"419":{"tf":1.0},"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"268":{"tf":1.0}},"g":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"r":{"d":{"<":{"'":{"_":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"457":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"<":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"397":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"397":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"383":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"v":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"y":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"<":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":24,"docs":{"156":{"tf":1.4142135623730951},"233":{"tf":1.0},"276":{"tf":1.4142135623730951},"3":{"tf":1.0},"325":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.0},"483":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.7320508075688772},"509":{"tf":1.4142135623730951},"513":{"tf":1.4142135623730951},"515":{"tf":2.0},"516":{"tf":1.0},"517":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"535":{"tf":1.0},"544":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"b":{"df":3,"docs":{"399":{"tf":1.0},"478":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"319":{"tf":1.0},"328":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":3,"docs":{"156":{"tf":1.0},"261":{"tf":1.0},"470":{"tf":1.0}}}},"p":{"df":16,"docs":{"181":{"tf":1.0},"199":{"tf":1.0},"336":{"tf":2.23606797749979},"386":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.4142135623730951},"41":{"tf":1.0},"417":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"516":{"tf":1.7320508075688772},"534":{"tf":1.4142135623730951},"548":{"tf":1.4142135623730951},"549":{"tf":1.0},"56":{"tf":1.0}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"54":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"481":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":4,"docs":{"258":{"tf":1.0},"278":{"tf":1.0},"361":{"tf":1.0},"456":{"tf":1.4142135623730951}}},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":40,"docs":{"134":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.0},"178":{"tf":1.4142135623730951},"225":{"tf":1.0},"237":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.4142135623730951},"300":{"tf":1.0},"310":{"tf":1.0},"315":{"tf":1.0},"328":{"tf":1.0},"358":{"tf":1.0},"361":{"tf":1.0},"365":{"tf":1.0},"380":{"tf":1.4142135623730951},"401":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"413":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"456":{"tf":1.0},"48":{"tf":1.0},"485":{"tf":1.0},"49":{"tf":1.0},"538":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"558":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":1.7320508075688772},"62":{"tf":1.0},"74":{"tf":1.0},"89":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":10,"docs":{"2":{"tf":1.0},"217":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.0},"341":{"tf":1.0},"404":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.7320508075688772},"451":{"tf":1.0},"521":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"221":{"tf":1.0}}}}}},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"571":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":9,"docs":{"167":{"tf":1.0},"169":{"tf":1.0},"199":{"tf":1.4142135623730951},"209":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"380":{"tf":1.0},"572":{"tf":1.0}}},"i":{"df":316,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.7320508075688772},"142":{"tf":1.0},"15":{"tf":2.23606797749979},"151":{"tf":1.4142135623730951},"152":{"tf":1.4142135623730951},"153":{"tf":2.0},"154":{"tf":2.449489742783178},"155":{"tf":2.23606797749979},"156":{"tf":2.449489742783178},"157":{"tf":2.0},"158":{"tf":2.0},"159":{"tf":1.7320508075688772},"16":{"tf":2.6457513110645907},"161":{"tf":1.4142135623730951},"162":{"tf":1.7320508075688772},"163":{"tf":1.7320508075688772},"164":{"tf":1.4142135623730951},"165":{"tf":1.4142135623730951},"166":{"tf":1.7320508075688772},"167":{"tf":1.4142135623730951},"17":{"tf":1.0},"171":{"tf":1.4142135623730951},"172":{"tf":1.7320508075688772},"173":{"tf":1.4142135623730951},"174":{"tf":1.7320508075688772},"175":{"tf":1.4142135623730951},"176":{"tf":2.0},"18":{"tf":1.0},"181":{"tf":2.0},"182":{"tf":1.7320508075688772},"183":{"tf":1.4142135623730951},"184":{"tf":1.7320508075688772},"185":{"tf":1.4142135623730951},"186":{"tf":2.0},"187":{"tf":1.4142135623730951},"192":{"tf":2.23606797749979},"193":{"tf":1.4142135623730951},"194":{"tf":2.0},"195":{"tf":1.4142135623730951},"203":{"tf":1.4142135623730951},"204":{"tf":1.7320508075688772},"205":{"tf":1.4142135623730951},"206":{"tf":1.7320508075688772},"207":{"tf":1.4142135623730951},"208":{"tf":2.0},"209":{"tf":1.4142135623730951},"21":{"tf":1.0},"211":{"tf":1.4142135623730951},"212":{"tf":1.4142135623730951},"213":{"tf":1.4142135623730951},"214":{"tf":1.4142135623730951},"215":{"tf":1.4142135623730951},"216":{"tf":2.0},"217":{"tf":1.4142135623730951},"218":{"tf":2.449489742783178},"219":{"tf":1.4142135623730951},"220":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"223":{"tf":1.4142135623730951},"224":{"tf":1.4142135623730951},"225":{"tf":2.23606797749979},"226":{"tf":1.4142135623730951},"227":{"tf":1.4142135623730951},"228":{"tf":1.0},"229":{"tf":1.4142135623730951},"23":{"tf":2.23606797749979},"233":{"tf":1.0},"237":{"tf":1.4142135623730951},"238":{"tf":1.4142135623730951},"239":{"tf":1.4142135623730951},"24":{"tf":2.23606797749979},"240":{"tf":1.4142135623730951},"241":{"tf":1.7320508075688772},"242":{"tf":1.4142135623730951},"243":{"tf":1.0},"248":{"tf":1.4142135623730951},"249":{"tf":2.0},"25":{"tf":2.6457513110645907},"250":{"tf":2.0},"251":{"tf":1.4142135623730951},"253":{"tf":1.4142135623730951},"254":{"tf":1.0},"255":{"tf":1.4142135623730951},"258":{"tf":1.0},"26":{"tf":1.0},"261":{"tf":1.4142135623730951},"262":{"tf":1.4142135623730951},"263":{"tf":1.4142135623730951},"264":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"266":{"tf":1.4142135623730951},"267":{"tf":2.0},"268":{"tf":1.4142135623730951},"27":{"tf":2.23606797749979},"270":{"tf":1.4142135623730951},"271":{"tf":1.4142135623730951},"272":{"tf":1.4142135623730951},"273":{"tf":1.4142135623730951},"274":{"tf":1.4142135623730951},"275":{"tf":2.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.4142135623730951},"279":{"tf":1.4142135623730951},"28":{"tf":2.6457513110645907},"280":{"tf":1.4142135623730951},"281":{"tf":1.4142135623730951},"282":{"tf":1.4142135623730951},"283":{"tf":2.0},"284":{"tf":1.4142135623730951},"286":{"tf":1.4142135623730951},"287":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"289":{"tf":1.4142135623730951},"29":{"tf":2.0},"290":{"tf":1.4142135623730951},"291":{"tf":2.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.4142135623730951},"295":{"tf":1.4142135623730951},"296":{"tf":1.4142135623730951},"297":{"tf":1.4142135623730951},"298":{"tf":1.4142135623730951},"299":{"tf":2.0},"30":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.4142135623730951},"303":{"tf":1.4142135623730951},"304":{"tf":1.4142135623730951},"305":{"tf":1.4142135623730951},"306":{"tf":2.0},"307":{"tf":1.4142135623730951},"31":{"tf":1.7320508075688772},"315":{"tf":1.4142135623730951},"316":{"tf":1.7320508075688772},"317":{"tf":1.4142135623730951},"32":{"tf":2.23606797749979},"325":{"tf":1.4142135623730951},"326":{"tf":1.4142135623730951},"327":{"tf":1.0},"328":{"tf":1.4142135623730951},"33":{"tf":1.7320508075688772},"330":{"tf":1.4142135623730951},"331":{"tf":1.7320508075688772},"332":{"tf":1.7320508075688772},"333":{"tf":1.7320508075688772},"334":{"tf":1.4142135623730951},"335":{"tf":2.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.4142135623730951},"339":{"tf":1.7320508075688772},"34":{"tf":1.0},"340":{"tf":1.4142135623730951},"345":{"tf":1.4142135623730951},"346":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"349":{"tf":1.0},"35":{"tf":1.7320508075688772},"350":{"tf":1.4142135623730951},"351":{"tf":1.4142135623730951},"352":{"tf":1.7320508075688772},"353":{"tf":1.4142135623730951},"354":{"tf":1.4142135623730951},"355":{"tf":1.0},"36":{"tf":1.7320508075688772},"363":{"tf":1.7320508075688772},"364":{"tf":1.4142135623730951},"365":{"tf":1.4142135623730951},"366":{"tf":2.23606797749979},"367":{"tf":1.7320508075688772},"368":{"tf":1.4142135623730951},"369":{"tf":2.0},"37":{"tf":2.449489742783178},"370":{"tf":1.4142135623730951},"372":{"tf":1.4142135623730951},"373":{"tf":1.4142135623730951},"376":{"tf":1.4142135623730951},"377":{"tf":1.4142135623730951},"378":{"tf":1.4142135623730951},"379":{"tf":2.0},"38":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"382":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"384":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"386":{"tf":1.7320508075688772},"387":{"tf":1.4142135623730951},"388":{"tf":1.0},"389":{"tf":1.4142135623730951},"39":{"tf":1.0},"391":{"tf":1.4142135623730951},"392":{"tf":1.7320508075688772},"393":{"tf":1.4142135623730951},"394":{"tf":1.4142135623730951},"395":{"tf":1.4142135623730951},"396":{"tf":2.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.4142135623730951},"40":{"tf":2.449489742783178},"400":{"tf":1.4142135623730951},"401":{"tf":1.4142135623730951},"402":{"tf":1.4142135623730951},"406":{"tf":1.4142135623730951},"407":{"tf":2.0},"408":{"tf":1.4142135623730951},"41":{"tf":2.449489742783178},"410":{"tf":1.4142135623730951},"411":{"tf":1.4142135623730951},"413":{"tf":1.4142135623730951},"414":{"tf":1.7320508075688772},"416":{"tf":2.0},"417":{"tf":1.4142135623730951},"42":{"tf":1.7320508075688772},"425":{"tf":1.4142135623730951},"426":{"tf":1.4142135623730951},"427":{"tf":1.4142135623730951},"428":{"tf":1.4142135623730951},"429":{"tf":1.4142135623730951},"43":{"tf":1.0},"430":{"tf":1.0},"431":{"tf":1.4142135623730951},"433":{"tf":1.4142135623730951},"434":{"tf":1.4142135623730951},"435":{"tf":1.7320508075688772},"436":{"tf":1.4142135623730951},"437":{"tf":1.4142135623730951},"438":{"tf":1.4142135623730951},"439":{"tf":1.0},"44":{"tf":1.7320508075688772},"440":{"tf":1.4142135623730951},"442":{"tf":1.4142135623730951},"443":{"tf":1.4142135623730951},"444":{"tf":1.4142135623730951},"445":{"tf":1.4142135623730951},"447":{"tf":2.0},"448":{"tf":1.4142135623730951},"45":{"tf":2.0},"450":{"tf":1.4142135623730951},"451":{"tf":1.4142135623730951},"452":{"tf":1.4142135623730951},"453":{"tf":1.4142135623730951},"454":{"tf":1.4142135623730951},"455":{"tf":1.0},"456":{"tf":1.4142135623730951},"46":{"tf":2.23606797749979},"460":{"tf":1.4142135623730951},"461":{"tf":1.4142135623730951},"462":{"tf":1.4142135623730951},"463":{"tf":1.7320508075688772},"466":{"tf":1.4142135623730951},"467":{"tf":2.0},"468":{"tf":1.4142135623730951},"47":{"tf":2.449489742783178},"472":{"tf":1.4142135623730951},"473":{"tf":1.7320508075688772},"474":{"tf":1.7320508075688772},"475":{"tf":1.7320508075688772},"476":{"tf":1.4142135623730951},"477":{"tf":2.0},"478":{"tf":1.4142135623730951},"48":{"tf":1.0},"480":{"tf":1.7320508075688772},"481":{"tf":1.4142135623730951},"482":{"tf":1.4142135623730951},"483":{"tf":1.4142135623730951},"485":{"tf":1.4142135623730951},"487":{"tf":1.0},"488":{"tf":1.4142135623730951},"489":{"tf":2.0},"49":{"tf":1.0},"490":{"tf":2.0},"491":{"tf":1.7320508075688772},"492":{"tf":1.0},"493":{"tf":1.7320508075688772},"497":{"tf":2.23606797749979},"498":{"tf":2.6457513110645907},"499":{"tf":1.0},"50":{"tf":1.0},"500":{"tf":1.4142135623730951},"501":{"tf":2.0},"502":{"tf":1.4142135623730951},"506":{"tf":2.0},"507":{"tf":1.4142135623730951},"509":{"tf":1.0},"51":{"tf":2.0},"518":{"tf":1.4142135623730951},"519":{"tf":2.0},"520":{"tf":1.4142135623730951},"525":{"tf":2.0},"526":{"tf":1.4142135623730951},"527":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.0},"534":{"tf":1.4142135623730951},"536":{"tf":1.4142135623730951},"537":{"tf":2.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.7320508075688772},"54":{"tf":2.6457513110645907},"541":{"tf":2.0},"55":{"tf":1.7320508075688772},"56":{"tf":1.7320508075688772},"57":{"tf":1.7320508075688772},"59":{"tf":2.449489742783178},"601":{"tf":1.0},"602":{"tf":1.7320508075688772},"603":{"tf":1.0},"64":{"tf":1.4142135623730951},"9":{"tf":2.0},"94":{"tf":1.0},"96":{"tf":1.4142135623730951},"98":{"tf":1.0}}},"y":{"'":{"df":2,"docs":{"29":{"tf":1.0},"42":{"tf":1.0}}},"]":{"[":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"v":{"df":0,"docs":{},"s":{"df":0,"docs":{},"q":{"df":3,"docs":{"166":{"tf":1.0},"220":{"tf":1.0},"346":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"179":{"tf":1.0}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"423":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"331":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":2,"docs":{"209":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}}},"y":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":2,"docs":{"309":{"tf":1.0},"375":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"m":{"'":{"df":1,"docs":{"199":{"tf":1.0}}},":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":2,"docs":{"458":{"tf":1.4142135623730951},"465":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":2,"docs":{"191":{"tf":1.0},"458":{"tf":1.0}}}}}}},"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"(":{"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":1,"docs":{"458":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":44,"docs":{"156":{"tf":2.0},"188":{"tf":1.0},"193":{"tf":1.7320508075688772},"194":{"tf":1.0},"195":{"tf":2.23606797749979},"196":{"tf":1.7320508075688772},"197":{"tf":2.23606797749979},"198":{"tf":1.0},"199":{"tf":1.0},"2":{"tf":1.0},"200":{"tf":1.4142135623730951},"201":{"tf":1.4142135623730951},"202":{"tf":1.0},"203":{"tf":1.4142135623730951},"204":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.7320508075688772},"313":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":2.6457513110645907},"387":{"tf":1.7320508075688772},"388":{"tf":1.0},"389":{"tf":2.8284271247461903},"390":{"tf":1.0},"391":{"tf":2.23606797749979},"392":{"tf":1.7320508075688772},"393":{"tf":1.7320508075688772},"394":{"tf":2.0},"4":{"tf":1.0},"418":{"tf":1.7320508075688772},"458":{"tf":2.23606797749979},"460":{"tf":1.7320508075688772},"462":{"tf":1.0},"567":{"tf":1.7320508075688772},"568":{"tf":1.4142135623730951},"569":{"tf":1.0},"570":{"tf":1.0},"571":{"tf":2.0},"572":{"tf":1.0},"573":{"tf":1.4142135623730951},"599":{"tf":1.7320508075688772},"61":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":2,"docs":{"276":{"tf":1.0},"572":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"418":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"s":{"/":{"#":{"df":0,"docs":{},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"279":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"431":{"tf":1.0},"62":{"tf":2.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"62":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"347":{"tf":1.0}}}},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"[":{"0":{".":{".":{"1":{"df":1,"docs":{"375":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":7,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"217":{"tf":1.7320508075688772},"268":{"tf":2.0},"276":{"tf":1.4142135623730951},"375":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"156":{"tf":1.0}}}}}}},"p":{"df":1,"docs":{"292":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"156":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":10,"docs":{"110":{"tf":1.0},"341":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"456":{"tf":1.0},"529":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"77":{"tf":1.0},"87":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"414":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":16,"docs":{"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.0},"245":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":2.0},"336":{"tf":1.0},"380":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":2.6457513110645907},"458":{"tf":1.0},"508":{"tf":1.4142135623730951},"599":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":4,"docs":{"199":{"tf":1.0},"419":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":8,"docs":{"134":{"tf":1.0},"189":{"tf":1.0},"218":{"tf":1.0},"240":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"340":{"tf":1.0},"463":{"tf":1.0}}}}}}},"u":{"c":{"df":0,"docs":{},"k":{"df":7,"docs":{"246":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"35":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"469":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"o":{"'":{"df":1,"docs":{"284":{"tf":1.0}}},"df":1,"docs":{"414":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":12,"docs":{"157":{"tf":1.0},"190":{"tf":1.0},"198":{"tf":1.0},"273":{"tf":1.0},"307":{"tf":1.4142135623730951},"308":{"tf":1.4142135623730951},"309":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"40":{"tf":1.0},"417":{"tf":1.0},"489":{"tf":1.0},"522":{"tf":1.0}}}},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"358":{"tf":1.0}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":7,"docs":{"199":{"tf":1.0},"218":{"tf":1.0},"344":{"tf":1.0},"393":{"tf":1.0},"423":{"tf":1.0},"440":{"tf":1.4142135623730951},"462":{"tf":1.0}}}}}},"u":{"b":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"469":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"271":{"tf":1.0},"475":{"tf":1.0},"598":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":41,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"17":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"58":{"tf":1.0},"6":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"d":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"359":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"159":{"tf":1.0},"491":{"tf":1.0}}}},"df":0,"docs":{},"t":{"df":3,"docs":{"155":{"tf":1.0},"156":{"tf":1.0},"515":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"l":{"df":6,"docs":{"156":{"tf":2.0},"251":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"372":{"tf":1.0},"539":{"tf":1.4142135623730951}},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"272":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"538":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"c":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}}}}},"c":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"209":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":6,"docs":{"129":{"tf":1.0},"256":{"tf":1.0},"380":{"tf":1.0},"521":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":5,"docs":{"169":{"tf":1.0},"268":{"tf":1.0},"322":{"tf":1.4142135623730951},"380":{"tf":1.0},"431":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{},"h":{"df":23,"docs":{"127":{"tf":1.4142135623730951},"190":{"tf":1.0},"209":{"tf":1.0},"218":{"tf":1.0},"252":{"tf":1.0},"268":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"338":{"tf":1.0},"451":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"472":{"tf":1.0},"499":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"62":{"tf":1.0},"82":{"tf":1.0}}}},"d":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"217":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"539":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}},"i":{"c":{"df":0,"docs":{},"i":{"df":3,"docs":{"360":{"tf":1.0},"457":{"tf":1.0},"546":{"tf":1.0}}}},"df":0,"docs":{}}}},"g":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"370":{"tf":1.0},"457":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":14,"docs":{"16":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"279":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.0},"389":{"tf":1.0},"522":{"tf":1.4142135623730951},"572":{"tf":1.0},"59":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":5,"docs":{"336":{"tf":1.0},"338":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.4142135623730951},"527":{"tf":1.0}}}},"df":0,"docs":{}},"df":1,"docs":{"470":{"tf":1.0}}}},"m":{"(":{"df":0,"docs":{},"n":{"df":1,"docs":{"370":{"tf":3.4641016151377544}}}},"df":1,"docs":{"15":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"z":{"df":1,"docs":{"598":{"tf":1.0}}}},"r":{"df":2,"docs":{"156":{"tf":1.0},"494":{"tf":1.0}},"i":{"df":2,"docs":{"154":{"tf":1.4142135623730951},"597":{"tf":1.0}}},"y":{".":{"df":0,"docs":{},"m":{"d":{"df":10,"docs":{"157":{"tf":1.0},"16":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"296":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"357":{"tf":1.0}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"259":{"tf":1.0}}}}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"218":{"tf":1.0},"508":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":35,"docs":{"110":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"209":{"tf":1.0},"221":{"tf":1.7320508075688772},"230":{"tf":1.4142135623730951},"232":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.7320508075688772},"340":{"tf":1.0},"341":{"tf":1.7320508075688772},"370":{"tf":1.4142135623730951},"389":{"tf":1.0},"405":{"tf":1.4142135623730951},"41":{"tf":1.0},"421":{"tf":1.0},"474":{"tf":1.0},"502":{"tf":1.0},"509":{"tf":2.0},"53":{"tf":1.4142135623730951},"544":{"tf":1.0},"545":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.4142135623730951}}}},"s":{"df":2,"docs":{"310":{"tf":1.0},"522":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":21,"docs":{"131":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"22":{"tf":1.0},"23":{"tf":1.0},"276":{"tf":1.0},"281":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"296":{"tf":1.0},"300":{"tf":1.0},"36":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.4142135623730951},"421":{"tf":1.0},"456":{"tf":1.0},"487":{"tf":1.0},"506":{"tf":1.0},"62":{"tf":1.0}}},"f":{"a":{"c":{"df":3,"docs":{"156":{"tf":1.0},"347":{"tf":1.0},"394":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":12,"docs":{"231":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"272":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.4142135623730951},"448":{"tf":1.0},"481":{"tf":1.0},"497":{"tf":1.4142135623730951},"529":{"tf":1.0},"59":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"408":{"tf":1.0},"538":{"tf":1.0}}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"276":{"tf":1.0},"359":{"tf":1.0}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"284":{"tf":1.0},"297":{"tf":1.0},"546":{"tf":1.0}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"156":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}}}},"w":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"538":{"tf":1.0},"539":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":34,"docs":{"209":{"tf":1.0},"233":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.4142135623730951},"359":{"tf":1.0},"380":{"tf":1.0},"422":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"500":{"tf":1.7320508075688772},"501":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"505":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.4142135623730951},"512":{"tf":1.0},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"y":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":3,"docs":{"397":{"tf":1.0},"399":{"tf":1.0},"401":{"tf":1.0}}}}},"df":0,"docs":{}},"n":{"c":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"302":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":37,"docs":{"156":{"tf":2.23606797749979},"191":{"tf":1.0},"218":{"tf":1.7320508075688772},"292":{"tf":1.4142135623730951},"300":{"tf":2.6457513110645907},"305":{"tf":1.7320508075688772},"306":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.7320508075688772},"311":{"tf":1.4142135623730951},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":2.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":2.23606797749979},"322":{"tf":1.0},"323":{"tf":1.7320508075688772},"324":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"365":{"tf":1.0},"408":{"tf":1.7320508075688772},"423":{"tf":1.0},"448":{"tf":1.4142135623730951},"531":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":19,"docs":{"156":{"tf":1.7320508075688772},"179":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"232":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"308":{"tf":1.0},"309":{"tf":1.0},"313":{"tf":1.0},"320":{"tf":1.4142135623730951},"321":{"tf":2.23606797749979},"323":{"tf":1.0},"324":{"tf":1.4142135623730951},"344":{"tf":1.0},"389":{"tf":1.4142135623730951},"502":{"tf":1.0},"522":{"tf":1.0},"61":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{},"x":{"df":10,"docs":{"196":{"tf":1.4142135623730951},"218":{"tf":1.0},"292":{"tf":1.7320508075688772},"336":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"570":{"tf":1.0},"573":{"tf":1.7320508075688772},"74":{"tf":1.0},"89":{"tf":1.0}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":1,"docs":{"502":{"tf":1.0}}}}}}},"s":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"v":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"c":{":":{"3":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":39,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.4142135623730951},"199":{"tf":1.0},"211":{"tf":1.0},"273":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.4142135623730951},"318":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"339":{"tf":1.0},"347":{"tf":1.7320508075688772},"356":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.7320508075688772},"394":{"tf":1.4142135623730951},"408":{"tf":1.0},"410":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.0},"436":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"522":{"tf":1.0},"539":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":2.449489742783178},"65":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"79":{"tf":1.7320508075688772},"8":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"192":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"t":{"0":{"df":1,"docs":{"440":{"tf":2.0}}},"1":{"df":1,"docs":{"440":{"tf":2.0}}},"=":{"0":{"df":0,"docs":{},"x":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"a":{"df":0,"docs":{},"f":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},">":{"(":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"b":{"df":1,"docs":{"397":{"tf":1.0}},"l":{"df":3,"docs":{"156":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}},"d":{"a":{"df":1,"docs":{"558":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":2,"docs":{"24":{"tf":1.0},"25":{"tf":1.0}}},"i":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}},"l":{"df":1,"docs":{"431":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":7,"docs":{"102":{"tf":1.4142135623730951},"111":{"tf":1.4142135623730951},"119":{"tf":1.4142135623730951},"128":{"tf":1.4142135623730951},"137":{"tf":1.4142135623730951},"146":{"tf":1.4142135623730951},"511":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"y":{"df":3,"docs":{"154":{"tf":1.0},"161":{"tf":1.0},"28":{"tf":1.0}}}},"df":0,"docs":{}}},"df":42,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.0},"157":{"tf":1.0},"190":{"tf":1.4142135623730951},"2":{"tf":1.4142135623730951},"217":{"tf":1.0},"230":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"271":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"292":{"tf":2.0},"303":{"tf":1.0},"310":{"tf":1.0},"318":{"tf":1.4142135623730951},"319":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.4142135623730951},"374":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"393":{"tf":1.0},"40":{"tf":1.0},"418":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0},"47":{"tf":1.0},"48":{"tf":1.0},"481":{"tf":1.0},"517":{"tf":1.0},"53":{"tf":1.0},"552":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"560":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.0}},"n":{"df":7,"docs":{"17":{"tf":1.0},"353":{"tf":1.0},"402":{"tf":1.0},"440":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"599":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"k":{"df":16,"docs":{"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"268":{"tf":1.0},"279":{"tf":1.0},"28":{"tf":1.7320508075688772},"32":{"tf":1.0},"35":{"tf":1.0},"359":{"tf":1.0},"41":{"tf":1.4142135623730951},"47":{"tf":1.0},"49":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.0},"68":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"419":{"tf":1.0}}}}},"p":{"df":1,"docs":{"538":{"tf":1.7320508075688772}}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"/":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"\\":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"\\":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"244":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":7,"docs":{"211":{"tf":1.0},"284":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0},"532":{"tf":1.0},"573":{"tf":1.0},"94":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"k":{"(":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"539":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"(":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"(":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"542":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"566":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"457":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"320":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":33,"docs":{"156":{"tf":1.7320508075688772},"178":{"tf":1.7320508075688772},"189":{"tf":1.4142135623730951},"190":{"tf":1.7320508075688772},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"230":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":3.4641016151377544},"288":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"328":{"tf":5.385164807134504},"330":{"tf":1.4142135623730951},"331":{"tf":1.0},"347":{"tf":2.23606797749979},"349":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":2.449489742783178},"412":{"tf":3.0},"460":{"tf":1.0},"470":{"tf":2.8284271247461903},"475":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.7320508075688772},"538":{"tf":4.358898943540674},"539":{"tf":2.8284271247461903},"544":{"tf":1.0},"599":{"tf":1.0},"62":{"tf":2.6457513110645907}},"s":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0}}}}}}},"b":{"d":{"df":1,"docs":{"19":{"tf":1.0}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}},"p":{"df":4,"docs":{"143":{"tf":1.0},"276":{"tf":1.0},"503":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"d":{"df":2,"docs":{"12":{"tf":1.0},"539":{"tf":1.0}}},"df":6,"docs":{"199":{"tf":1.0},"211":{"tf":1.0},"268":{"tf":1.0},"380":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":2.8284271247461903}},"e":{"a":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"358":{"tf":1.4142135623730951},"359":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":20,"docs":{"110":{"tf":1.0},"120":{"tf":1.0},"134":{"tf":1.4142135623730951},"15":{"tf":1.0},"17":{"tf":1.4142135623730951},"249":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.0},"392":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":2.23606797749979},"457":{"tf":2.6457513110645907},"458":{"tf":1.4142135623730951},"460":{"tf":1.7320508075688772},"463":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"580":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"457":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"599":{"tf":1.0},"84":{"tf":1.0}},"n":{"df":0,"docs":{},"i":{"c":{"df":7,"docs":{"192":{"tf":1.0},"221":{"tf":1.0},"278":{"tf":1.0},"363":{"tf":1.0},"499":{"tf":1.0},"513":{"tf":1.0},"57":{"tf":1.4142135623730951}}},"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":3,"docs":{"156":{"tf":1.0},"319":{"tf":1.0},"417":{"tf":1.7320508075688772}}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":3,"docs":{"116":{"tf":1.0},"120":{"tf":1.0},"217":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":52,"docs":{"148":{"tf":1.0},"149":{"tf":1.0},"163":{"tf":1.4142135623730951},"173":{"tf":1.4142135623730951},"183":{"tf":1.4142135623730951},"192":{"tf":1.0},"205":{"tf":1.4142135623730951},"213":{"tf":1.4142135623730951},"218":{"tf":1.0},"225":{"tf":1.4142135623730951},"239":{"tf":1.4142135623730951},"248":{"tf":1.0},"250":{"tf":1.4142135623730951},"256":{"tf":1.0},"263":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"272":{"tf":1.7320508075688772},"28":{"tf":1.0},"280":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"296":{"tf":1.4142135623730951},"304":{"tf":1.4142135623730951},"316":{"tf":1.4142135623730951},"332":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"339":{"tf":1.4142135623730951},"352":{"tf":1.4142135623730951},"366":{"tf":1.4142135623730951},"376":{"tf":1.4142135623730951},"380":{"tf":1.0},"382":{"tf":1.4142135623730951},"393":{"tf":1.4142135623730951},"401":{"tf":1.4142135623730951},"408":{"tf":1.0},"413":{"tf":1.4142135623730951},"427":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"435":{"tf":1.4142135623730951},"444":{"tf":1.4142135623730951},"452":{"tf":1.4142135623730951},"462":{"tf":1.4142135623730951},"47":{"tf":1.0},"474":{"tf":1.4142135623730951},"482":{"tf":1.4142135623730951},"486":{"tf":1.0},"521":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"56":{"tf":1.0},"89":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"394":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":37,"docs":{"100":{"tf":1.0},"101":{"tf":1.0},"102":{"tf":1.0},"103":{"tf":1.0},"104":{"tf":1.0},"105":{"tf":1.0},"157":{"tf":2.23606797749979},"158":{"tf":1.0},"159":{"tf":1.0},"16":{"tf":1.4142135623730951},"160":{"tf":1.0},"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"458":{"tf":1.4142135623730951},"489":{"tf":2.23606797749979},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"493":{"tf":1.0},"494":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"498":{"tf":1.0},"499":{"tf":1.0},"97":{"tf":1.4142135623730951},"98":{"tf":1.0},"99":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"450":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"417":{"tf":1.0},"421":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"t":{"df":4,"docs":{"278":{"tf":1.0},"300":{"tf":1.0},"452":{"tf":1.0},"456":{"tf":1.0}}}}},"n":{"d":{"df":3,"docs":{"153":{"tf":1.0},"319":{"tf":1.0},"62":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":2,"docs":{"61":{"tf":2.449489742783178},"62":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"m":{"df":8,"docs":{"218":{"tf":1.0},"231":{"tf":1.0},"393":{"tf":1.0},"450":{"tf":1.0},"511":{"tf":1.0},"560":{"tf":1.0},"6":{"tf":1.0},"65":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"538":{"tf":2.23606797749979},"539":{"tf":1.4142135623730951},"542":{"tf":1.0}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":1,"docs":{"417":{"tf":1.0}}}}}}}}}},"s":{"df":0,"docs":{},"t":{"(":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"312":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"217":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"y":{"(":{"df":0,"docs":{},"|":{"a":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":9,"docs":{"110":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"417":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.7320508075688772},"62":{"tf":2.0}}}},"x":{"df":0,"docs":{},"t":{"df":4,"docs":{"258":{"tf":1.0},"397":{"tf":1.7320508075688772},"523":{"tf":1.0},"538":{"tf":1.0}}}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":7,"docs":{"397":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"600":{"tf":1.0},"601":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"199":{"tf":1.0}}}}}}}}},"t":{"'":{"df":14,"docs":{"156":{"tf":1.0},"217":{"tf":1.4142135623730951},"237":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"352":{"tf":1.0},"36":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"487":{"tf":1.0},"493":{"tf":1.0},"504":{"tf":1.0},"65":{"tf":1.4142135623730951}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":1,"docs":{"603":{"tf":1.0}}}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":10,"docs":{"138":{"tf":1.0},"156":{"tf":1.0},"211":{"tf":1.0},"226":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"391":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"559":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"284":{"tf":1.0},"389":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"67":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"'":{"df":11,"docs":{"122":{"tf":1.0},"200":{"tf":1.0},"278":{"tf":1.4142135623730951},"300":{"tf":1.0},"309":{"tf":1.0},"336":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"410":{"tf":1.0},"475":{"tf":1.0},"558":{"tf":1.0}}},"df":1,"docs":{"599":{"tf":1.0}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":5,"docs":{"138":{"tf":1.0},"195":{"tf":1.0},"323":{"tf":1.0},"336":{"tf":1.0},"456":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":1,"docs":{"356":{"tf":1.0}}}},"y":{"'":{"df":0,"docs":{},"r":{"df":10,"docs":{"129":{"tf":1.0},"131":{"tf":1.0},"134":{"tf":1.0},"225":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"8":{"tf":1.0}}},"v":{"df":3,"docs":{"134":{"tf":1.0},"284":{"tf":1.0},"361":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"456":{"tf":1.4142135623730951}},"g":{"df":67,"docs":{"125":{"tf":1.0},"129":{"tf":1.0},"131":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":2.6457513110645907},"16":{"tf":1.0},"167":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"190":{"tf":1.0},"195":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":2.8284271247461903},"223":{"tf":1.0},"231":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.4142135623730951},"311":{"tf":1.0},"315":{"tf":1.0},"317":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.0},"412":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":1.0},"428":{"tf":1.0},"456":{"tf":1.0},"46":{"tf":1.0},"47":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"499":{"tf":1.4142135623730951},"504":{"tf":1.4142135623730951},"509":{"tf":1.0},"51":{"tf":1.0},"511":{"tf":1.0},"521":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"552":{"tf":1.0},"562":{"tf":1.0},"565":{"tf":1.0},"59":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.4142135623730951},"86":{"tf":1.0}}},"k":{"df":53,"docs":{"10":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"159":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.0},"258":{"tf":1.0},"264":{"tf":1.0},"266":{"tf":1.7320508075688772},"267":{"tf":1.0},"268":{"tf":1.0},"269":{"tf":1.0},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.7320508075688772},"284":{"tf":1.7320508075688772},"300":{"tf":1.7320508075688772},"307":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.0},"331":{"tf":1.0},"333":{"tf":1.0},"347":{"tf":1.4142135623730951},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.0},"389":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.7320508075688772},"41":{"tf":2.0},"421":{"tf":1.4142135623730951},"456":{"tf":1.0},"487":{"tf":1.4142135623730951},"491":{"tf":1.0},"498":{"tf":1.7320508075688772},"506":{"tf":1.0},"522":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"56":{"tf":1.0},"570":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.4142135623730951}}}},"r":{"d":{"df":4,"docs":{"221":{"tf":1.0},"276":{"tf":1.0},"279":{"tf":1.0},"458":{"tf":1.0}}},"df":0,"docs":{}},"s":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"(":{")":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"(":{"\"":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":1,"docs":{"408":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"367":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":40,"docs":{"118":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.7320508075688772},"190":{"tf":1.0},"192":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"213":{"tf":1.0},"218":{"tf":1.4142135623730951},"256":{"tf":1.0},"276":{"tf":1.0},"288":{"tf":1.0},"32":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"33":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.4142135623730951},"36":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.0},"423":{"tf":1.0},"448":{"tf":1.0},"458":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"480":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"538":{"tf":1.4142135623730951},"54":{"tf":1.0},"562":{"tf":1.0},"62":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":25,"docs":{"154":{"tf":1.0},"192":{"tf":1.0},"2":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"263":{"tf":1.0},"292":{"tf":1.0},"313":{"tf":1.0},"321":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.7320508075688772},"389":{"tf":1.0},"399":{"tf":1.0},"451":{"tf":1.0},"503":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"96":{"tf":1.0}},"t":{"df":9,"docs":{"156":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"328":{"tf":1.4142135623730951},"343":{"tf":1.4142135623730951},"389":{"tf":1.0},"408":{"tf":1.0},"470":{"tf":1.4142135623730951},"599":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"6":{"3":{":":{"5":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"380":{"tf":1.0}}}}}},"df":41,"docs":{"189":{"tf":1.7320508075688772},"190":{"tf":1.0},"191":{"tf":1.0},"233":{"tf":1.0},"244":{"tf":1.4142135623730951},"256":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.7320508075688772},"284":{"tf":3.3166247903554},"309":{"tf":1.7320508075688772},"318":{"tf":2.0},"319":{"tf":2.8284271247461903},"328":{"tf":2.0},"331":{"tf":1.7320508075688772},"336":{"tf":2.23606797749979},"344":{"tf":2.0},"347":{"tf":1.4142135623730951},"357":{"tf":1.0},"361":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.7320508075688772},"404":{"tf":1.0},"412":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"423":{"tf":2.0},"431":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"469":{"tf":1.7320508075688772},"470":{"tf":2.6457513110645907},"504":{"tf":1.0},"521":{"tf":1.0},"561":{"tf":1.0},"564":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":2.449489742783178},"62":{"tf":2.23606797749979}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"517":{"tf":1.0}}}}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"125":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"218":{"tf":1.0},"422":{"tf":1.0}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"319":{"tf":1.0}}},"df":0,"docs":{}}}}}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":4,"docs":{"230":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"545":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":23,"docs":{"168":{"tf":1.0},"169":{"tf":1.0},"190":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.0},"245":{"tf":1.7320508075688772},"276":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"303":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":2.0},"421":{"tf":1.0},"448":{"tf":1.7320508075688772},"450":{"tf":1.0},"515":{"tf":1.0}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"47":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":5,"docs":{"143":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"268":{"tf":1.4142135623730951},"431":{"tf":1.0}}}}}}}},"w":{"df":2,"docs":{"157":{"tf":1.0},"268":{"tf":1.0}},"n":{"df":1,"docs":{"261":{"tf":1.0}}}}}},"u":{"df":4,"docs":{"129":{"tf":1.0},"169":{"tf":1.0},"218":{"tf":1.0},"453":{"tf":1.0}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"232":{"tf":1.4142135623730951}}}}}},"d":{"df":0,"docs":{},"e":{"df":4,"docs":{"231":{"tf":1.0},"233":{"tf":1.0},"237":{"tf":1.0},"276":{"tf":1.4142135623730951}}}},"df":5,"docs":{"156":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"370":{"tf":1.0},"9":{"tf":1.0}},"e":{"df":2,"docs":{"431":{"tf":1.0},"62":{"tf":1.0}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"389":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"286":{"tf":1.0},"288":{"tf":1.0}}}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"14":{"tf":1.7320508075688772}}}},"m":{"df":0,"docs":{},"e":{"df":75,"docs":{"110":{"tf":1.7320508075688772},"131":{"tf":1.0},"138":{"tf":1.0},"156":{"tf":1.7320508075688772},"174":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"189":{"tf":1.4142135623730951},"190":{"tf":2.0},"2":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":2.0},"214":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"226":{"tf":1.0},"230":{"tf":1.7320508075688772},"235":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"246":{"tf":1.0},"248":{"tf":1.0},"25":{"tf":1.0},"251":{"tf":1.4142135623730951},"261":{"tf":1.0},"268":{"tf":1.4142135623730951},"273":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"286":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"319":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"332":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":1.0},"347":{"tf":2.23606797749979},"359":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"389":{"tf":1.0},"393":{"tf":1.0},"397":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"417":{"tf":1.7320508075688772},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"431":{"tf":1.0},"436":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":2.6457513110645907},"469":{"tf":1.4142135623730951},"470":{"tf":1.7320508075688772},"472":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"515":{"tf":1.0},"538":{"tf":1.7320508075688772},"551":{"tf":1.4142135623730951},"555":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"9":{"tf":1.0}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"=":{"4":{"9":{"1":{"5":{"2":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"167":{"tf":1.0},"181":{"tf":1.0},"284":{"tf":1.4142135623730951}}}}},"r":{"df":3,"docs":{"300":{"tf":1.0},"336":{"tf":1.4142135623730951},"457":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"259":{"tf":1.0}}}},"i":{"df":1,"docs":{"380":{"tf":1.0}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"72":{"tf":1.0}}}}}},"p":{"df":1,"docs":{"153":{"tf":1.0}}}},"l":{";":{"d":{"df":0,"docs":{},"r":{"df":2,"docs":{"24":{"tf":1.4142135623730951},"38":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.7320508075688772}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"421":{"tf":1.0}}}}}},"df":0,"docs":{}},"<":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"m":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"1":{"tf":1.0},"603":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"o":{"_":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"<":{"df":0,"docs":{},"h":{"df":1,"docs":{"292":{"tf":1.0}}}},"_":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"292":{"tf":1.7320508075688772}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"<":{"df":0,"docs":{},"f":{">":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"344":{"tf":1.0}}}},"d":{"a":{"df":0,"docs":{},"y":{"df":41,"docs":{"153":{"tf":1.0},"156":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"495":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":3,"docs":{"328":{"tf":1.0},"336":{"tf":2.0},"601":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"261":{"tf":1.0},"84":{"tf":1.0}}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":8,"docs":{"156":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"531":{"tf":1.0},"599":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"'":{"df":5,"docs":{"167":{"tf":1.0},"209":{"tf":1.0},"252":{"tf":1.0},"268":{"tf":1.4142135623730951},"309":{"tf":1.7320508075688772}}},":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{":":{":":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"h":{"4":{"1":{"0":{"d":{"c":{"df":0,"docs":{},"e":{"d":{"2":{"a":{"7":{"d":{"df":0,"docs":{},"f":{"3":{"df":0,"docs":{},"e":{"c":{"8":{"(":{"df":0,"docs":{},"f":{"=":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"_":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"h":{"c":{"d":{"4":{"7":{"7":{"7":{"3":{"4":{"d":{"4":{"9":{"7":{"0":{"df":0,"docs":{},"e":{"d":{"5":{"(":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"=":{"(":{"_":{"_":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"<":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":6,"docs":{"258":{"tf":1.0},"309":{"tf":1.4142135623730951},"320":{"tf":1.0},"380":{"tf":1.0},"448":{"tf":1.7320508075688772},"450":{"tf":1.0}}}}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"a":{",":{"b":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{">":{":":{":":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":2.0}}}}}}}}}},"df":1,"docs":{"284":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"_":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"r":{"d":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{":":{":":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"309":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"284":{"tf":1.0},"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"309":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":4,"docs":{"268":{"tf":1.4142135623730951},"347":{"tf":1.0},"349":{"tf":1.0},"448":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"310":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"310":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"310":{"tf":1.0},"347":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"310":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"383":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"(":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":31,"docs":{"156":{"tf":1.4142135623730951},"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"233":{"tf":1.4142135623730951},"234":{"tf":2.23606797749979},"258":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"3":{"tf":1.0},"309":{"tf":1.7320508075688772},"318":{"tf":1.4142135623730951},"320":{"tf":1.0},"325":{"tf":1.4142135623730951},"347":{"tf":2.23606797749979},"359":{"tf":1.7320508075688772},"360":{"tf":1.4142135623730951},"365":{"tf":1.0},"370":{"tf":2.8284271247461903},"372":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":3.3166247903554},"383":{"tf":1.7320508075688772},"397":{"tf":1.4142135623730951},"431":{"tf":1.0},"434":{"tf":1.0},"437":{"tf":1.0},"470":{"tf":2.0},"517":{"tf":1.0},"544":{"tf":1.0},"548":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"l":{"d":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"240":{"tf":1.0}}}}},"n":{"df":1,"docs":{"370":{"tf":1.0}}},"o":{"df":0,"docs":{},"k":{"df":2,"docs":{"389":{"tf":1.4142135623730951},"59":{"tf":1.0}}},"l":{"'":{"df":1,"docs":{"544":{"tf":1.0}}},"b":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"453":{"tf":1.0}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"110":{"tf":1.0},"245":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":28,"docs":{"110":{"tf":1.4142135623730951},"130":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.7320508075688772},"213":{"tf":1.4142135623730951},"230":{"tf":1.0},"251":{"tf":1.0},"288":{"tf":1.0},"347":{"tf":1.0},"403":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"414":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"433":{"tf":1.0},"436":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"475":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.4142135623730951},"545":{"tf":1.0},"65":{"tf":1.0},"73":{"tf":1.0},"77":{"tf":1.0},"82":{"tf":1.4142135623730951}}}},"p":{"df":11,"docs":{"125":{"tf":1.0},"128":{"tf":1.0},"189":{"tf":1.0},"258":{"tf":1.0},"347":{"tf":1.0},"41":{"tf":2.0},"421":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"599":{"tf":1.0},"65":{"tf":2.0}},"i":{"c":{"df":2,"docs":{"16":{"tf":1.0},"480":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"a":{"d":{"d":{"df":0,"docs":{},"r":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"300":{"tf":1.0},"341":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"367":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":7,"docs":{"360":{"tf":1.0},"41":{"tf":1.0},"462":{"tf":1.0},"487":{"tf":1.0},"516":{"tf":1.4142135623730951},"534":{"tf":1.4142135623730951},"548":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}},"y":{"df":2,"docs":{"380":{"tf":1.4142135623730951},"448":{"tf":1.0}}}},"r":{"a":{"c":{"df":0,"docs":{},"e":{"df":13,"docs":{"209":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.7320508075688772},"399":{"tf":1.4142135623730951},"402":{"tf":1.4142135623730951},"403":{"tf":1.0},"410":{"tf":1.4142135623730951},"412":{"tf":1.4142135623730951},"453":{"tf":1.0},"470":{"tf":1.0},"545":{"tf":1.0},"548":{"tf":1.4142135623730951}},"r":{"df":1,"docs":{"469":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"289":{"tf":1.0}}}}}}}}}}}}},"df":0,"docs":{}}}},"k":{"df":9,"docs":{"18":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"271":{"tf":1.0},"470":{"tf":1.0},"552":{"tf":1.0},"557":{"tf":1.0},"560":{"tf":1.0},"562":{"tf":1.4142135623730951}}}},"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":7,"docs":{"111":{"tf":1.0},"156":{"tf":1.0},"251":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.4142135623730951},"347":{"tf":1.0},"349":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"t":{"df":11,"docs":{"132":{"tf":1.7320508075688772},"133":{"tf":1.0},"134":{"tf":1.0},"135":{"tf":1.0},"136":{"tf":1.0},"137":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"408":{"tf":1.0},"91":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":4,"docs":{"125":{"tf":1.7320508075688772},"134":{"tf":1.0},"209":{"tf":1.4142135623730951},"213":{"tf":1.0}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":9,"docs":{"123":{"tf":1.7320508075688772},"124":{"tf":1.0},"125":{"tf":2.23606797749979},"126":{"tf":1.0},"127":{"tf":1.7320508075688772},"128":{"tf":2.23606797749979},"129":{"tf":1.7320508075688772},"130":{"tf":1.4142135623730951},"131":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"t":{"'":{"df":1,"docs":{"209":{"tf":1.0}}},"df":59,"docs":{"156":{"tf":2.23606797749979},"195":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":2.8284271247461903},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"219":{"tf":1.7320508075688772},"220":{"tf":1.0},"221":{"tf":4.58257569495584},"222":{"tf":1.0},"223":{"tf":1.7320508075688772},"224":{"tf":1.4142135623730951},"225":{"tf":1.0},"226":{"tf":1.4142135623730951},"276":{"tf":1.7320508075688772},"278":{"tf":1.4142135623730951},"279":{"tf":1.0},"292":{"tf":2.23606797749979},"300":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.7320508075688772},"370":{"tf":3.3166247903554},"380":{"tf":2.0},"421":{"tf":1.7320508075688772},"440":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"47":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.4142135623730951},"535":{"tf":1.0},"553":{"tf":1.0},"567":{"tf":1.7320508075688772},"568":{"tf":2.0},"569":{"tf":1.0},"570":{"tf":1.4142135623730951},"571":{"tf":1.0},"572":{"tf":1.0},"574":{"tf":1.7320508075688772},"575":{"tf":2.0},"576":{"tf":1.4142135623730951},"577":{"tf":1.0},"578":{"tf":1.4142135623730951},"579":{"tf":1.7320508075688772},"580":{"tf":1.7320508075688772},"581":{"tf":1.4142135623730951},"582":{"tf":1.0},"583":{"tf":1.0},"589":{"tf":1.7320508075688772},"599":{"tf":2.0}},"s":{"/":{"a":{"d":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"394":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"51":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"342":{"tf":1.4142135623730951},"417":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":5,"docs":{"201":{"tf":1.0},"209":{"tf":1.0},"259":{"tf":1.0},"442":{"tf":1.0},"458":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"300":{"tf":1.4142135623730951}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"62":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}}}}},"p":{"df":1,"docs":{"214":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"191":{"tf":1.0}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"431":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"a":{"df":0,"docs":{},"g":{"df":8,"docs":{"2":{"tf":1.0},"397":{"tf":1.0},"554":{"tf":1.7320508075688772},"555":{"tf":1.4142135623730951},"556":{"tf":1.4142135623730951},"557":{"tf":1.4142135623730951},"558":{"tf":2.23606797749979},"559":{"tf":1.0}}}},"c":{"df":0,"docs":{},"k":{"df":9,"docs":{"153":{"tf":1.0},"156":{"tf":1.0},"321":{"tf":1.0},"41":{"tf":1.0},"460":{"tf":1.4142135623730951},"511":{"tf":1.4142135623730951},"516":{"tf":1.0},"517":{"tf":1.0},"529":{"tf":1.0}},"i":{"df":5,"docs":{"156":{"tf":1.0},"347":{"tf":1.0},"456":{"tf":1.4142135623730951},"52":{"tf":1.0},"552":{"tf":1.0}}}}},"df":105,"docs":{"153":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":2.23606797749979},"16":{"tf":1.0},"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":1.4142135623730951},"168":{"tf":1.4142135623730951},"169":{"tf":1.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"178":{"tf":1.0},"183":{"tf":1.0},"192":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.7320508075688772},"209":{"tf":2.23606797749979},"217":{"tf":1.0},"221":{"tf":1.7320508075688772},"223":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.4142135623730951},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"274":{"tf":1.7320508075688772},"275":{"tf":1.0},"276":{"tf":2.6457513110645907},"277":{"tf":1.0},"278":{"tf":1.4142135623730951},"279":{"tf":1.0},"280":{"tf":1.0},"281":{"tf":1.0},"282":{"tf":1.7320508075688772},"283":{"tf":1.0},"284":{"tf":1.7320508075688772},"285":{"tf":1.0},"286":{"tf":1.7320508075688772},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.7320508075688772},"300":{"tf":1.4142135623730951},"307":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.7320508075688772},"311":{"tf":1.4142135623730951},"333":{"tf":1.0},"336":{"tf":1.4142135623730951},"34":{"tf":1.4142135623730951},"340":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.4142135623730951},"357":{"tf":1.4142135623730951},"360":{"tf":1.0},"370":{"tf":2.6457513110645907},"380":{"tf":3.3166247903554},"385":{"tf":1.0},"387":{"tf":1.7320508075688772},"388":{"tf":1.0},"389":{"tf":1.4142135623730951},"390":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.4142135623730951},"397":{"tf":1.0},"402":{"tf":1.0},"421":{"tf":1.0},"426":{"tf":1.0},"438":{"tf":1.7320508075688772},"439":{"tf":1.0},"440":{"tf":1.4142135623730951},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"448":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"461":{"tf":1.0},"470":{"tf":1.7320508075688772},"486":{"tf":1.0},"494":{"tf":1.0},"507":{"tf":1.4142135623730951},"521":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"526":{"tf":1.4142135623730951},"538":{"tf":1.0},"54":{"tf":1.0},"543":{"tf":1.0},"559":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"9":{"tf":1.0}},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"173":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"286":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0}}}}}},"m":{"df":12,"docs":{"156":{"tf":1.0},"395":{"tf":1.7320508075688772},"396":{"tf":1.0},"397":{"tf":1.0},"398":{"tf":1.0},"399":{"tf":1.0},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.4142135623730951},"403":{"tf":1.0},"404":{"tf":1.0},"405":{"tf":1.7320508075688772}}},"p":{"df":2,"docs":{"272":{"tf":1.0},"393":{"tf":1.0}}},"v":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":6,"docs":{"156":{"tf":1.0},"221":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"410":{"tf":1.0},"517":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"l":{"df":15,"docs":{"156":{"tf":1.0},"242":{"tf":1.7320508075688772},"243":{"tf":1.0},"244":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"247":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.0},"276":{"tf":1.0},"372":{"tf":1.0},"53":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"258":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"e":{"df":7,"docs":{"154":{"tf":1.7320508075688772},"270":{"tf":1.0},"300":{"tf":1.0},"456":{"tf":1.0},"54":{"tf":1.0},"578":{"tf":1.0},"61":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":39,"docs":{"156":{"tf":1.4142135623730951},"230":{"tf":1.0},"233":{"tf":1.0},"241":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":1.0},"255":{"tf":1.0},"256":{"tf":2.449489742783178},"257":{"tf":1.0},"258":{"tf":2.0},"259":{"tf":1.0},"260":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"383":{"tf":1.0},"386":{"tf":1.0},"389":{"tf":1.0},"512":{"tf":1.0},"518":{"tf":1.7320508075688772},"519":{"tf":1.0},"520":{"tf":1.0},"521":{"tf":2.449489742783178},"522":{"tf":1.0},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.4142135623730951},"526":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"487":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"t":{"c":{"df":0,"docs":{},"p":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"i":{"df":1,"docs":{"448":{"tf":1.0}}},"n":{"df":0,"docs":{},"e":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"129":{"tf":1.0}}}},"df":0,"docs":{}},"df":5,"docs":{"125":{"tf":1.0},"129":{"tf":1.0},"209":{"tf":1.4142135623730951},"319":{"tf":1.0},"502":{"tf":1.0}}}},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"r":{"b":{"df":0,"docs":{},"o":{"df":1,"docs":{"503":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"67":{"tf":1.0}}},"n":{"df":19,"docs":{"156":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.4142135623730951},"199":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"257":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"359":{"tf":1.0},"389":{"tf":1.0},"417":{"tf":1.0},"470":{"tf":1.0},"498":{"tf":1.4142135623730951},"51":{"tf":1.7320508075688772}}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"343":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":4,"docs":{"359":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0}}}}}}},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"df":4,"docs":{"138":{"tf":1.0},"209":{"tf":1.0},"342":{"tf":1.4142135623730951},"73":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":8,"docs":{"162":{"tf":1.0},"28":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"36":{"tf":1.0},"361":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"e":{"df":5,"docs":{"235":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"389":{"tf":1.0}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"201":{"tf":1.0},"583":{"tf":1.4142135623730951},"599":{"tf":1.7320508075688772}}}}}}},"o":{"df":18,"docs":{"15":{"tf":1.0},"167":{"tf":1.0},"209":{"tf":1.7320508075688772},"218":{"tf":1.0},"276":{"tf":1.4142135623730951},"29":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"42":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0},"522":{"tf":1.0},"599":{"tf":1.0}}}},"x":{"df":1,"docs":{"448":{"tf":1.0}}},"y":{"df":1,"docs":{"221":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"214":{"tf":1.0}}},"df":52,"docs":{"110":{"tf":1.0},"136":{"tf":1.4142135623730951},"197":{"tf":1.0},"198":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951},"209":{"tf":2.23606797749979},"211":{"tf":1.4142135623730951},"214":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"221":{"tf":1.4142135623730951},"245":{"tf":2.23606797749979},"268":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":3.1622776601683795},"294":{"tf":1.0},"307":{"tf":2.0},"310":{"tf":2.0},"317":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":3.0},"422":{"tf":1.4142135623730951},"423":{"tf":1.4142135623730951},"440":{"tf":4.242640687119285},"448":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":3.0},"460":{"tf":1.4142135623730951},"465":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"472":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.7320508075688772},"564":{"tf":1.0},"565":{"tf":1.7320508075688772},"566":{"tf":1.0},"568":{"tf":1.0},"579":{"tf":1.4142135623730951},"580":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":3,"docs":{"230":{"tf":1.0},"231":{"tf":1.0},"280":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"i":{"c":{"df":7,"docs":{"111":{"tf":1.0},"153":{"tf":1.0},"237":{"tf":1.0},"421":{"tf":1.0},"478":{"tf":1.0},"564":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"u":{"1":{"6":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"3":{"2":{"df":1,"docs":{"522":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"6":{"4":{"df":1,"docs":{"328":{"tf":2.0}}},"df":0,"docs":{}},"8":{"df":2,"docs":{"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772}}},"a":{"df":0,"docs":{},"z":{"df":0,"docs":{},"u":{"df":1,"docs":{"602":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"p":{"df":1,"docs":{"143":{"tf":1.0}}}},"df":0,"docs":{},"h":{"df":3,"docs":{"148":{"tf":1.0},"149":{"tf":1.0},"217":{"tf":1.0}}},"i":{"df":5,"docs":{"188":{"tf":1.0},"189":{"tf":1.0},"191":{"tf":1.4142135623730951},"192":{"tf":1.0},"403":{"tf":1.0}},"e":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"191":{"tf":1.0}}}}}}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":10,"docs":{"171":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"302":{"tf":1.0},"321":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"445":{"tf":1.0},"470":{"tf":1.0},"9":{"tf":1.0}}}}}},"n":{"a":{"b":{"df":0,"docs":{},"l":{"df":3,"docs":{"289":{"tf":1.0},"336":{"tf":1.4142135623730951},"391":{"tf":1.0}}}},"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"338":{"tf":1.0}}},"df":0,"docs":{}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":3,"docs":{"340":{"tf":1.0},"367":{"tf":1.0},"428":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"558":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":3,"docs":{"408":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"558":{"tf":1.0}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":3,"docs":{"18":{"tf":1.0},"40":{"tf":1.0},"487":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":3,"docs":{"252":{"tf":1.0},"278":{"tf":1.0},"370":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"65":{"tf":1.0},"84":{"tf":1.4142135623730951}}}}}}},"v":{"df":2,"docs":{"497":{"tf":1.0},"561":{"tf":1.0}}}}},"d":{"df":1,"docs":{"192":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":14,"docs":{"12":{"tf":1.4142135623730951},"152":{"tf":1.4142135623730951},"218":{"tf":1.0},"221":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"324":{"tf":1.0},"347":{"tf":1.0},"358":{"tf":1.0},"457":{"tf":1.4142135623730951},"470":{"tf":1.0},"485":{"tf":1.4142135623730951},"5":{"tf":1.0},"522":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":8,"docs":{"140":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"347":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.4142135623730951},"460":{"tf":1.4142135623730951},"502":{"tf":1.0}}}},"n":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"370":{"tf":1.0},"394":{"tf":1.0}}}}},"df":0,"docs":{}}},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"391":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":39,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"171":{"tf":1.0},"173":{"tf":1.0},"178":{"tf":1.0},"181":{"tf":1.0},"183":{"tf":1.0},"195":{"tf":1.0},"211":{"tf":1.0},"226":{"tf":1.0},"246":{"tf":1.0},"248":{"tf":1.4142135623730951},"251":{"tf":1.0},"258":{"tf":1.4142135623730951},"261":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.4142135623730951},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"288":{"tf":1.0},"33":{"tf":1.0},"336":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.4142135623730951},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"394":{"tf":1.0},"421":{"tf":1.0},"427":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"463":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.4142135623730951},"54":{"tf":2.449489742783178},"544":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"389":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"df":1,"docs":{"559":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":2,"docs":{"300":{"tf":1.0},"380":{"tf":1.0}}}}},"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":5,"docs":{"181":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"497":{"tf":1.4142135623730951},"59":{"tf":1.0}},"e":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"f":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"197":{"tf":1.0},"383":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"458":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":1,"docs":{"465":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":9,"docs":{"168":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"196":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.4142135623730951},"538":{"tf":1.0}}}}}}}},"i":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"460":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"1":{"0":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"380":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"218":{"tf":1.0}}}}}}},"q":{"df":0,"docs":{},"u":{"df":3,"docs":{"112":{"tf":1.0},"118":{"tf":1.0},"264":{"tf":1.0}}}},"t":{"df":3,"docs":{"394":{"tf":1.0},"470":{"tf":1.0},"573":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":3,"docs":{"356":{"tf":1.0},"386":{"tf":1.0},"469":{"tf":1.0}}}}}},"x":{"df":4,"docs":{"336":{"tf":1.0},"344":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}}}},"k":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"319":{"tf":1.0}},"n":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}}}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"367":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":5,"docs":{"16":{"tf":1.0},"321":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"6":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"k":{"df":3,"docs":{"112":{"tf":1.0},"214":{"tf":1.0},"61":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"338":{"tf":1.0},"54":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"363":{"tf":1.0}}}}}},"r":{"d":{"df":1,"docs":{"156":{"tf":1.0}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"198":{"tf":1.0},"370":{"tf":2.449489742783178},"380":{"tf":1.0},"440":{"tf":4.0}}}}},"r":{"df":0,"docs":{},"e":{"a":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"328":{"tf":1.0}}}},"d":{"df":1,"docs":{"470":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"59":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"s":{"a":{"df":0,"docs":{},"f":{"df":4,"docs":{"190":{"tf":1.0},"198":{"tf":1.4142135623730951},"328":{"tf":2.449489742783178},"336":{"tf":1.4142135623730951}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":3,"docs":{"457":{"tf":1.0},"460":{"tf":1.0},"543":{"tf":1.0}}}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"344":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"458":{"tf":1.0}}}}}},"df":0,"docs":{}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}},"r":{"df":4,"docs":{"197":{"tf":1.0},"268":{"tf":1.0},"361":{"tf":1.0},"456":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"245":{"tf":1.0}}}},"i":{"df":0,"docs":{},"l":{"df":13,"docs":{"15":{"tf":1.7320508075688772},"16":{"tf":1.0},"167":{"tf":1.0},"234":{"tf":1.0},"237":{"tf":1.0},"357":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.0},"559":{"tf":1.4142135623730951},"562":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"200":{"tf":1.0}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":3,"docs":{"258":{"tf":1.0},"320":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":10,"docs":{"18":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.0},"550":{"tf":1.0},"553":{"tf":1.0},"561":{"tf":1.0}}}},"df":0,"docs":{}},"df":68,"docs":{"112":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.7320508075688772},"167":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"189":{"tf":1.0},"191":{"tf":1.4142135623730951},"196":{"tf":1.0},"201":{"tf":1.4142135623730951},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"232":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"272":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":2.0},"292":{"tf":1.4142135623730951},"307":{"tf":1.0},"309":{"tf":1.0},"322":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"389":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":2.0},"460":{"tf":1.0},"462":{"tf":1.0},"478":{"tf":1.4142135623730951},"48":{"tf":1.0},"504":{"tf":1.0},"510":{"tf":1.0},"522":{"tf":1.0},"528":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"538":{"tf":2.449489742783178},"539":{"tf":2.0},"552":{"tf":1.0},"559":{"tf":1.0},"565":{"tf":1.0},"599":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"462":{"tf":1.0}}}}}}},"g":{"df":0,"docs":{},"r":{"a":{"d":{"df":1,"docs":{"237":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"218":{"tf":1.0}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"n":{"df":5,"docs":{"201":{"tf":1.0},"209":{"tf":1.0},"27":{"tf":1.0},"358":{"tf":1.0},"470":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"292":{"tf":1.0},"347":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"r":{"df":1,"docs":{"156":{"tf":1.0}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"l":{":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":9,"docs":{"217":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"307":{"tf":2.23606797749979},"308":{"tf":1.7320508075688772},"309":{"tf":1.4142135623730951},"310":{"tf":2.0},"311":{"tf":1.4142135623730951},"312":{"tf":2.0},"320":{"tf":1.4142135623730951}},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"309":{"tf":1.0},"320":{"tf":1.0}}}}},"df":0,"docs":{}}}},"s":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"530":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":11,"docs":{"127":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.4142135623730951},"340":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"450":{"tf":1.0},"469":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.0}}}},"df":221,"docs":{"10":{"tf":1.0},"107":{"tf":1.0},"108":{"tf":1.4142135623730951},"110":{"tf":1.0},"115":{"tf":1.0},"116":{"tf":1.0},"118":{"tf":1.4142135623730951},"124":{"tf":1.0},"127":{"tf":1.7320508075688772},"133":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.0},"142":{"tf":1.0},"143":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.4142135623730951},"15":{"tf":1.0},"153":{"tf":1.4142135623730951},"154":{"tf":1.0},"155":{"tf":1.4142135623730951},"156":{"tf":2.0},"16":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"168":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"179":{"tf":1.0},"181":{"tf":1.0},"185":{"tf":1.4142135623730951},"187":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.4142135623730951},"192":{"tf":1.0},"195":{"tf":2.0},"198":{"tf":1.0},"200":{"tf":1.4142135623730951},"203":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":2.6457513110645907},"21":{"tf":1.0},"211":{"tf":1.0},"213":{"tf":1.7320508075688772},"217":{"tf":1.7320508075688772},"218":{"tf":2.449489742783178},"221":{"tf":3.3166247903554},"224":{"tf":1.0},"225":{"tf":1.0},"23":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.7320508075688772},"233":{"tf":1.0},"234":{"tf":2.0},"237":{"tf":2.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.7320508075688772},"248":{"tf":1.4142135623730951},"250":{"tf":1.0},"251":{"tf":1.7320508075688772},"252":{"tf":1.7320508075688772},"256":{"tf":1.0},"257":{"tf":2.449489742783178},"258":{"tf":2.0},"259":{"tf":1.0},"26":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":2.8284271247461903},"27":{"tf":1.4142135623730951},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"274":{"tf":1.7320508075688772},"275":{"tf":1.0},"276":{"tf":4.0},"277":{"tf":1.0},"278":{"tf":1.7320508075688772},"279":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"280":{"tf":1.0},"281":{"tf":1.0},"284":{"tf":2.8284271247461903},"288":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":3.872983346207417},"300":{"tf":2.8284271247461903},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":2.449489742783178},"31":{"tf":1.0},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":2.449489742783178},"323":{"tf":1.7320508075688772},"325":{"tf":1.0},"328":{"tf":1.7320508075688772},"336":{"tf":3.0},"338":{"tf":1.4142135623730951},"340":{"tf":1.0},"341":{"tf":2.0},"344":{"tf":1.0},"347":{"tf":3.872983346207417},"349":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":2.23606797749979},"358":{"tf":1.4142135623730951},"359":{"tf":2.0},"360":{"tf":1.0},"370":{"tf":3.3166247903554},"380":{"tf":3.1622776601683795},"383":{"tf":1.4142135623730951},"389":{"tf":2.0},"39":{"tf":1.0},"391":{"tf":1.7320508075688772},"392":{"tf":1.4142135623730951},"394":{"tf":1.4142135623730951},"397":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.4142135623730951},"41":{"tf":1.4142135623730951},"414":{"tf":1.7320508075688772},"415":{"tf":1.7320508075688772},"416":{"tf":1.0},"417":{"tf":2.449489742783178},"418":{"tf":1.0},"419":{"tf":1.7320508075688772},"420":{"tf":1.0},"421":{"tf":3.4641016151377544},"422":{"tf":2.449489742783178},"423":{"tf":1.0},"424":{"tf":1.0},"425":{"tf":1.4142135623730951},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0},"431":{"tf":2.0},"435":{"tf":1.0},"437":{"tf":1.7320508075688772},"44":{"tf":1.0},"440":{"tf":1.7320508075688772},"445":{"tf":1.0},"448":{"tf":1.0},"45":{"tf":1.7320508075688772},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.7320508075688772},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.7320508075688772},"463":{"tf":1.4142135623730951},"464":{"tf":1.7320508075688772},"465":{"tf":1.4142135623730951},"469":{"tf":2.0},"47":{"tf":1.0},"470":{"tf":3.3166247903554},"474":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.4142135623730951},"483":{"tf":1.0},"487":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":2.449489742783178},"504":{"tf":2.0},"507":{"tf":1.4142135623730951},"511":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.7320508075688772},"519":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":3.0},"523":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951},"529":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.4142135623730951},"542":{"tf":1.0},"543":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"557":{"tf":1.0},"56":{"tf":1.0},"561":{"tf":1.0},"564":{"tf":1.4142135623730951},"565":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":1.0},"580":{"tf":1.4142135623730951},"581":{"tf":1.4142135623730951},"597":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":2.6457513110645907},"61":{"tf":2.0},"62":{"tf":1.4142135623730951},"64":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.4142135623730951},"77":{"tf":1.0},"8":{"tf":1.7320508075688772},"82":{"tf":1.4142135623730951},"89":{"tf":1.0},"9":{"tf":1.7320508075688772},"91":{"tf":1.0},"98":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"397":{"tf":1.0}}},"df":71,"docs":{"11":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.0},"139":{"tf":1.0},"155":{"tf":1.4142135623730951},"156":{"tf":2.23606797749979},"158":{"tf":1.0},"166":{"tf":1.0},"168":{"tf":1.0},"171":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"221":{"tf":2.23606797749979},"228":{"tf":1.0},"23":{"tf":1.0},"237":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"261":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":2.23606797749979},"302":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"331":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"376":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":2.0},"392":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.7320508075688772},"407":{"tf":1.0},"412":{"tf":1.4142135623730951},"416":{"tf":1.0},"430":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"450":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"508":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}}},"df":0,"docs":{},"p":{"a":{"c":{"df":1,"docs":{"344":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"z":{"df":5,"docs":{"217":{"tf":1.7320508075688772},"370":{"tf":3.872983346207417},"419":{"tf":1.0},"421":{"tf":1.0},"568":{"tf":1.0}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":13,"docs":{"127":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"245":{"tf":1.0},"272":{"tf":1.0},"284":{"tf":1.0},"347":{"tf":1.0},"360":{"tf":1.0},"383":{"tf":1.0},"42":{"tf":1.0},"45":{"tf":1.0},"469":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":9,"docs":{"116":{"tf":1.0},"120":{"tf":1.0},"125":{"tf":1.0},"156":{"tf":1.0},"284":{"tf":1.0},"372":{"tf":1.4142135623730951},"517":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"234":{"tf":1.0},"300":{"tf":1.0}}}}}}}}},"v":{"0":{".":{"1":{".":{"0":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"1":{".":{"2":{"df":1,"docs":{"234":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"df":1,"docs":{"234":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{"df":1,"docs":{"234":{"tf":1.0}}},"3":{".":{"3":{".":{"2":{"df":1,"docs":{"234":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"c":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"552":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":4,"docs":{"268":{"tf":1.0},"321":{"tf":1.0},"380":{"tf":1.0},"560":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"178":{"tf":1.0},"217":{"tf":1.0},"54":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":21,"docs":{"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"246":{"tf":1.0},"268":{"tf":1.0},"271":{"tf":1.0},"292":{"tf":1.4142135623730951},"307":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"380":{"tf":1.0},"389":{"tf":1.0},"440":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.7320508075688772},"495":{"tf":1.0},"496":{"tf":1.0},"573":{"tf":1.4142135623730951},"599":{"tf":1.0},"86":{"tf":1.0},"9":{"tf":1.0},"92":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"a":{"b":{"df":0,"docs":{},"l":{"df":4,"docs":{"217":{"tf":1.4142135623730951},"336":{"tf":1.0},"397":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":10,"docs":{"199":{"tf":1.0},"209":{"tf":2.0},"214":{"tf":1.0},"320":{"tf":1.0},"323":{"tf":1.0},"325":{"tf":1.4142135623730951},"522":{"tf":1.0},"72":{"tf":1.4142135623730951},"73":{"tf":1.4142135623730951},"74":{"tf":1.4142135623730951}}}},"t":{"df":2,"docs":{"392":{"tf":1.0},"498":{"tf":2.23606797749979}}}},"df":2,"docs":{"174":{"tf":1.0},"560":{"tf":1.0}},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"146":{"tf":1.0},"389":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"u":{"df":26,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"142":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"19":{"tf":1.0},"300":{"tf":1.4142135623730951},"307":{"tf":1.0},"358":{"tf":1.0},"365":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":1.7320508075688772},"498":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.0},"557":{"tf":1.0},"58":{"tf":1.0},"584":{"tf":1.0},"82":{"tf":1.0},"89":{"tf":1.0},"9":{"tf":1.0},"94":{"tf":1.0},"98":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"231":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"!":{"[":{"1":{",":{"3":{",":{"5":{",":{"3":{"1":{",":{"2":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"380":{"tf":2.23606797749979}}}}}},"df":0,"docs":{}},"<":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":7,"docs":{"307":{"tf":2.0},"308":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":2.23606797749979},"311":{"tf":1.0},"312":{"tf":1.7320508075688772},"320":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}}}}}}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"309":{"tf":1.0}}}}},"u":{"8":{"df":1,"docs":{"199":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"380":{"tf":2.0}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"125":{"tf":1.0},"209":{"tf":1.0},"312":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"r":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":3,"docs":{"397":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0}}}}},"df":0,"docs":{},"g":{"df":1,"docs":{"139":{"tf":1.0}}},"i":{"df":41,"docs":{"108":{"tf":1.4142135623730951},"110":{"tf":1.4142135623730951},"111":{"tf":1.0},"130":{"tf":1.0},"156":{"tf":2.449489742783178},"190":{"tf":1.0},"192":{"tf":1.0},"195":{"tf":1.0},"203":{"tf":1.0},"211":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.0},"233":{"tf":1.0},"235":{"tf":1.0},"241":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.7320508075688772},"302":{"tf":1.0},"309":{"tf":1.0},"316":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.4142135623730951},"356":{"tf":1.0},"372":{"tf":1.4142135623730951},"380":{"tf":2.449489742783178},"408":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.4142135623730951},"51":{"tf":1.0},"533":{"tf":1.0},"549":{"tf":1.0},"566":{"tf":1.0},"599":{"tf":1.0},"73":{"tf":1.0}},"f":{"df":1,"docs":{"178":{"tf":1.0}},"i":{"df":3,"docs":{"237":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0}}}}},"s":{"a":{"df":1,"docs":{"321":{"tf":1.0}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":19,"docs":{"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"224":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":2.0},"237":{"tf":2.0},"257":{"tf":1.0},"276":{"tf":1.0},"323":{"tf":1.0},"336":{"tf":1.7320508075688772},"358":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"41":{"tf":1.0},"470":{"tf":1.4142135623730951},"483":{"tf":1.0},"5":{"tf":1.0},"522":{"tf":1.0},"599":{"tf":1.7320508075688772}}}}},"u":{"df":1,"docs":{"211":{"tf":1.0}}}}}},"i":{"a":{"df":12,"docs":{"110":{"tf":1.0},"209":{"tf":1.4142135623730951},"213":{"tf":1.0},"214":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"422":{"tf":1.0},"453":{"tf":1.0},"503":{"tf":1.0},"539":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0}}},"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"530":{"tf":1.0}}}}},"df":0,"docs":{}}},"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"321":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":1,"docs":{"113":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"258":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":6,"docs":{"380":{"tf":1.0},"404":{"tf":1.4142135623730951},"448":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.0},"542":{"tf":1.0}}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":547,"docs":{"10":{"tf":2.23606797749979},"100":{"tf":1.0},"101":{"tf":1.0},"102":{"tf":1.0},"103":{"tf":1.0},"104":{"tf":1.0},"105":{"tf":1.0},"106":{"tf":1.0},"107":{"tf":1.0},"108":{"tf":1.0},"109":{"tf":1.0},"11":{"tf":1.7320508075688772},"110":{"tf":1.0},"111":{"tf":1.0},"112":{"tf":1.0},"113":{"tf":1.0},"114":{"tf":1.0},"115":{"tf":1.0},"116":{"tf":1.0},"117":{"tf":1.0},"118":{"tf":1.0},"119":{"tf":1.0},"12":{"tf":1.4142135623730951},"120":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"123":{"tf":1.0},"124":{"tf":1.0},"125":{"tf":1.0},"126":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.0},"129":{"tf":1.0},"13":{"tf":2.0},"130":{"tf":1.0},"131":{"tf":1.0},"132":{"tf":1.0},"133":{"tf":1.0},"134":{"tf":1.0},"135":{"tf":1.0},"136":{"tf":1.0},"137":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.0},"14":{"tf":1.4142135623730951},"140":{"tf":1.0},"141":{"tf":1.0},"142":{"tf":1.0},"143":{"tf":1.0},"144":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"15":{"tf":1.7320508075688772},"150":{"tf":1.0},"151":{"tf":1.0},"152":{"tf":1.7320508075688772},"153":{"tf":1.0},"154":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.4142135623730951},"158":{"tf":1.0},"159":{"tf":1.0},"16":{"tf":1.4142135623730951},"160":{"tf":1.0},"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"165":{"tf":1.0},"166":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":2.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"175":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"18":{"tf":1.4142135623730951},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"185":{"tf":1.0},"186":{"tf":1.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"19":{"tf":1.4142135623730951},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"193":{"tf":1.0},"194":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"20":{"tf":2.0},"200":{"tf":1.0},"201":{"tf":1.0},"202":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"207":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.4142135623730951},"210":{"tf":1.0},"211":{"tf":1.4142135623730951},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"215":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"219":{"tf":1.0},"22":{"tf":1.4142135623730951},"220":{"tf":1.0},"221":{"tf":1.0},"222":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"227":{"tf":1.0},"228":{"tf":1.0},"229":{"tf":1.0},"23":{"tf":2.23606797749979},"230":{"tf":1.0},"231":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"236":{"tf":1.0},"237":{"tf":1.0},"238":{"tf":1.0},"239":{"tf":1.0},"24":{"tf":1.4142135623730951},"240":{"tf":1.0},"241":{"tf":1.0},"242":{"tf":1.0},"243":{"tf":1.0},"244":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"247":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.0},"25":{"tf":1.4142135623730951},"250":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.0},"254":{"tf":1.0},"255":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"26":{"tf":1.4142135623730951},"260":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.0},"267":{"tf":1.0},"268":{"tf":1.0},"269":{"tf":1.0},"27":{"tf":1.4142135623730951},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"274":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.0},"277":{"tf":1.0},"278":{"tf":1.0},"279":{"tf":1.0},"28":{"tf":1.4142135623730951},"280":{"tf":1.0},"281":{"tf":1.0},"282":{"tf":1.0},"283":{"tf":1.0},"284":{"tf":1.0},"285":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.4142135623730951},"290":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"293":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"298":{"tf":1.0},"299":{"tf":1.0},"30":{"tf":1.4142135623730951},"300":{"tf":1.0},"301":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0},"305":{"tf":1.0},"306":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.0},"31":{"tf":1.4142135623730951},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.4142135623730951},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"325":{"tf":1.0},"326":{"tf":1.0},"327":{"tf":1.0},"328":{"tf":1.0},"329":{"tf":1.0},"33":{"tf":1.4142135623730951},"330":{"tf":1.0},"331":{"tf":1.0},"332":{"tf":1.0},"333":{"tf":1.0},"334":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"337":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.0},"34":{"tf":1.4142135623730951},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0},"345":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"348":{"tf":1.0},"349":{"tf":1.0},"35":{"tf":1.4142135623730951},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"354":{"tf":1.0},"355":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"36":{"tf":1.4142135623730951},"360":{"tf":1.0},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"368":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":2.23606797749979},"370":{"tf":1.0},"371":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"374":{"tf":1.0},"375":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.0},"379":{"tf":1.0},"38":{"tf":1.4142135623730951},"380":{"tf":1.0},"381":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"386":{"tf":1.0},"387":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":1.0},"39":{"tf":1.4142135623730951},"390":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"395":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"398":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.0},"403":{"tf":1.0},"404":{"tf":1.0},"405":{"tf":1.0},"406":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"409":{"tf":1.0},"41":{"tf":1.4142135623730951},"410":{"tf":1.0},"411":{"tf":1.0},"412":{"tf":1.0},"413":{"tf":1.0},"414":{"tf":1.0},"415":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.4142135623730951},"420":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"424":{"tf":1.0},"425":{"tf":1.0},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0},"429":{"tf":1.0},"43":{"tf":1.4142135623730951},"430":{"tf":1.0},"431":{"tf":1.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0},"438":{"tf":1.0},"439":{"tf":1.0},"44":{"tf":1.4142135623730951},"440":{"tf":1.0},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"446":{"tf":1.0},"447":{"tf":1.0},"448":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.4142135623730951},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"454":{"tf":1.0},"455":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.0},"46":{"tf":1.4142135623730951},"460":{"tf":1.0},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"466":{"tf":1.0},"467":{"tf":1.0},"468":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":2.0},"470":{"tf":1.0},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":1.0},"475":{"tf":1.0},"476":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.0},"479":{"tf":1.0},"48":{"tf":1.4142135623730951},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"484":{"tf":1.0},"485":{"tf":1.7320508075688772},"486":{"tf":1.0},"487":{"tf":1.0},"488":{"tf":1.0},"489":{"tf":1.4142135623730951},"49":{"tf":1.4142135623730951},"490":{"tf":1.4142135623730951},"491":{"tf":1.0},"492":{"tf":1.0},"493":{"tf":1.0},"494":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"498":{"tf":1.0},"499":{"tf":1.0},"50":{"tf":1.4142135623730951},"500":{"tf":1.0},"501":{"tf":1.4142135623730951},"502":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"505":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.0},"51":{"tf":2.0},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"518":{"tf":1.0},"519":{"tf":1.4142135623730951},"52":{"tf":2.0},"520":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.4142135623730951},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"536":{"tf":1.0},"537":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.4142135623730951},"540":{"tf":1.0},"541":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"55":{"tf":1.4142135623730951},"550":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"553":{"tf":1.0},"56":{"tf":1.4142135623730951},"57":{"tf":1.4142135623730951},"58":{"tf":2.0},"59":{"tf":1.4142135623730951},"60":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0},"63":{"tf":1.0},"64":{"tf":1.0},"65":{"tf":1.0},"66":{"tf":1.0},"67":{"tf":1.0},"68":{"tf":1.0},"69":{"tf":1.0},"7":{"tf":1.7320508075688772},"70":{"tf":1.0},"71":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"75":{"tf":1.0},"76":{"tf":1.0},"77":{"tf":1.0},"78":{"tf":1.0},"79":{"tf":1.0},"8":{"tf":1.4142135623730951},"80":{"tf":1.0},"81":{"tf":1.0},"82":{"tf":1.0},"83":{"tf":1.0},"84":{"tf":1.0},"85":{"tf":1.0},"86":{"tf":1.0},"87":{"tf":1.0},"88":{"tf":1.0},"89":{"tf":1.0},"9":{"tf":1.7320508075688772},"90":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.0},"93":{"tf":1.0},"94":{"tf":1.0},"95":{"tf":1.0},"96":{"tf":1.0},"97":{"tf":1.0},"98":{"tf":1.0},"99":{"tf":1.0}}}},"t":{"df":1,"docs":{"27":{"tf":1.0}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"284":{"tf":1.0},"414":{"tf":1.0},"504":{"tf":1.0}},"v":{"df":0,"docs":{},"m":{"df":1,"docs":{"213":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"l":{"a":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"1":{"0":{"0":{"0":{"df":1,"docs":{"602":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"m":{"df":1,"docs":{"414":{"tf":1.0}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"559":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":4,"docs":{"14":{"tf":1.0},"16":{"tf":1.0},"58":{"tf":1.0},"60":{"tf":1.7320508075688772}}}},"w":{"df":1,"docs":{"276":{"tf":1.0}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"195":{"tf":1.4142135623730951}}}}}},"s":{"c":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":4,"docs":{"136":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.0},"300":{"tf":1.0}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"53":{"tf":1.0}}}}}}}},"w":{".":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"t":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{}}},"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":23,"docs":{"156":{"tf":1.0},"19":{"tf":1.4142135623730951},"2":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":2.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"380":{"tf":2.6457513110645907},"408":{"tf":1.0},"412":{"tf":1.0},"446":{"tf":1.7320508075688772},"447":{"tf":1.0},"448":{"tf":1.4142135623730951},"449":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.7320508075688772},"457":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.4142135623730951},"556":{"tf":1.0}}}},"k":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}}},"/":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"b":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":8,"docs":{"200":{"tf":1.0},"284":{"tf":1.0},"328":{"tf":2.6457513110645907},"336":{"tf":2.0},"342":{"tf":1.4142135623730951},"412":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":2.0}},"r":{".":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"b":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"w":{"a":{"df":0,"docs":{},"k":{"df":2,"docs":{"336":{"tf":1.7320508075688772},"342":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":9,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"200":{"tf":2.0},"203":{"tf":1.0},"258":{"tf":1.0},"328":{"tf":2.449489742783178},"332":{"tf":1.0},"336":{"tf":2.23606797749979},"457":{"tf":1.7320508075688772}}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"336":{"tf":2.0}}}}}},"l":{"df":0,"docs":{},"k":{"df":2,"docs":{"276":{"tf":1.0},"448":{"tf":1.4142135623730951}}},"l":{"df":2,"docs":{"347":{"tf":1.0},"440":{"tf":1.0}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"503":{"tf":1.0}}}}},"df":0,"docs":{},"n":{"a":{"df":1,"docs":{"483":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":57,"docs":{"11":{"tf":1.0},"118":{"tf":1.0},"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"190":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"23":{"tf":1.0},"24":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.7320508075688772},"315":{"tf":1.0},"331":{"tf":1.0},"349":{"tf":1.0},"359":{"tf":1.0},"360":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"38":{"tf":1.0},"405":{"tf":1.0},"412":{"tf":1.4142135623730951},"437":{"tf":1.0},"450":{"tf":1.0},"458":{"tf":1.0},"46":{"tf":1.0},"462":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.4142135623730951},"484":{"tf":1.4142135623730951},"498":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"517":{"tf":1.4142135623730951},"52":{"tf":1.0},"527":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"55":{"tf":1.4142135623730951},"556":{"tf":1.4142135623730951},"566":{"tf":1.0},"573":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.7320508075688772},"76":{"tf":1.4142135623730951},"8":{"tf":1.0},"81":{"tf":1.4142135623730951},"86":{"tf":1.4142135623730951},"91":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"n":{"!":{"(":{"\"":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"w":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":41,"docs":{"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"176":{"tf":1.4142135623730951},"186":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"203":{"tf":1.0},"208":{"tf":1.4142135623730951},"216":{"tf":1.4142135623730951},"220":{"tf":1.4142135623730951},"228":{"tf":1.4142135623730951},"243":{"tf":1.4142135623730951},"254":{"tf":1.4142135623730951},"267":{"tf":1.4142135623730951},"275":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"283":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"299":{"tf":1.4142135623730951},"306":{"tf":1.4142135623730951},"327":{"tf":1.4142135623730951},"335":{"tf":1.4142135623730951},"346":{"tf":1.4142135623730951},"355":{"tf":1.4142135623730951},"369":{"tf":1.4142135623730951},"379":{"tf":1.4142135623730951},"388":{"tf":1.4142135623730951},"396":{"tf":1.4142135623730951},"407":{"tf":1.4142135623730951},"416":{"tf":1.4142135623730951},"430":{"tf":1.4142135623730951},"439":{"tf":1.4142135623730951},"447":{"tf":1.4142135623730951},"455":{"tf":1.4142135623730951},"467":{"tf":1.4142135623730951},"477":{"tf":1.4142135623730951},"490":{"tf":1.4142135623730951},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"522":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"p":{"df":2,"docs":{"276":{"tf":1.0},"370":{"tf":1.7320508075688772}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"357":{"tf":1.0}}},"m":{"df":1,"docs":{"217":{"tf":1.0}}},"n":{"'":{"df":0,"docs":{},"t":{"df":4,"docs":{"199":{"tf":1.0},"245":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"402":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"113":{"tf":1.0},"258":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.0},"392":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":3.7416573867739413}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"y":{"df":69,"docs":{"118":{"tf":1.0},"146":{"tf":1.0},"153":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.0},"171":{"tf":1.4142135623730951},"178":{"tf":1.0},"179":{"tf":1.0},"181":{"tf":1.0},"187":{"tf":1.0},"191":{"tf":1.4142135623730951},"195":{"tf":1.0},"197":{"tf":1.0},"203":{"tf":1.0},"213":{"tf":1.0},"224":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"296":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.0},"309":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.4142135623730951},"322":{"tf":1.0},"323":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"344":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"370":{"tf":1.4142135623730951},"372":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.4142135623730951},"408":{"tf":1.4142135623730951},"410":{"tf":1.4142135623730951},"413":{"tf":1.0},"417":{"tf":1.7320508075688772},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.7320508075688772},"445":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.7320508075688772},"460":{"tf":1.0},"470":{"tf":1.0},"487":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"515":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"57":{"tf":1.0},"599":{"tf":1.7320508075688772},"61":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{},"e":{"'":{"d":{"df":3,"docs":{"16":{"tf":1.0},"487":{"tf":1.0},"508":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":14,"docs":{"155":{"tf":1.0},"157":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0},"493":{"tf":1.0},"499":{"tf":1.4142135623730951},"506":{"tf":1.0},"58":{"tf":1.0}}}},"r":{"df":7,"docs":{"155":{"tf":1.0},"49":{"tf":1.0},"53":{"tf":1.0},"55":{"tf":1.0},"550":{"tf":1.4142135623730951},"551":{"tf":1.4142135623730951},"60":{"tf":1.0}}},"v":{"df":7,"docs":{"153":{"tf":1.0},"18":{"tf":1.0},"21":{"tf":1.0},"481":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"96":{"tf":1.0}}}},"b":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":1,"docs":{"217":{"tf":1.0}}},"y":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"509":{"tf":1.0},"62":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":32,"docs":{"156":{"tf":1.4142135623730951},"195":{"tf":1.0},"212":{"tf":1.0},"227":{"tf":1.7320508075688772},"228":{"tf":1.0},"229":{"tf":1.0},"230":{"tf":3.0},"231":{"tf":2.23606797749979},"232":{"tf":1.0},"233":{"tf":1.4142135623730951},"234":{"tf":2.0},"235":{"tf":1.7320508075688772},"236":{"tf":1.0},"237":{"tf":2.449489742783178},"238":{"tf":1.0},"239":{"tf":1.4142135623730951},"240":{"tf":1.0},"241":{"tf":1.0},"290":{"tf":1.7320508075688772},"291":{"tf":1.0},"292":{"tf":2.8284271247461903},"293":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.4142135623730951},"297":{"tf":1.0},"300":{"tf":1.0},"307":{"tf":1.4142135623730951},"315":{"tf":1.0},"370":{"tf":1.0},"523":{"tf":1.7320508075688772},"542":{"tf":1.0}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"0":{"tf":1.0},"134":{"tf":1.0},"27":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":3,"docs":{"156":{"tf":1.0},"276":{"tf":2.8284271247461903},"279":{"tf":1.4142135623730951}},"s":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"1":{"5":{"#":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"279":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"/":{"1":{"7":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"k":{"df":6,"docs":{"15":{"tf":1.4142135623730951},"168":{"tf":1.0},"195":{"tf":1.0},"276":{"tf":1.0},"380":{"tf":1.0},"456":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"246":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"2":{"tf":1.0},"555":{"tf":1.0},"558":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":1,"docs":{"300":{"tf":1.0}},"t":{"df":3,"docs":{"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"343":{"tf":1.0}}}}},"r":{"d":{"df":1,"docs":{"199":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":9,"docs":{"0":{"tf":2.0},"1":{"tf":1.0},"2":{"tf":1.0},"276":{"tf":1.0},"3":{"tf":1.0},"4":{"tf":1.0},"437":{"tf":1.0},"5":{"tf":1.0},"6":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"df":44,"docs":{"143":{"tf":1.0},"156":{"tf":1.4142135623730951},"177":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"199":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.0},"259":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"352":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"41":{"tf":1.0},"436":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"502":{"tf":1.0},"508":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.0},"515":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"542":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"246":{"tf":1.0},"27":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.0}}}},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}}}},"g":{"df":6,"docs":{"0":{"tf":1.0},"16":{"tf":1.0},"17":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"4":{"tf":1.0}}},"h":{"a":{"df":0,"docs":{},"t":{"'":{"df":9,"docs":{"261":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"328":{"tf":1.0},"383":{"tf":1.7320508075688772},"431":{"tf":1.0},"502":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":11,"docs":{"159":{"tf":1.0},"217":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"300":{"tf":1.0},"41":{"tf":1.0},"453":{"tf":1.0},"491":{"tf":1.0},"578":{"tf":1.0},"8":{"tf":1.0},"99":{"tf":1.0}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"62":{"tf":1.0}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"217":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":1,"docs":{"341":{"tf":1.0}}},"b":{"df":0,"docs":{},"i":{"df":1,"docs":{"417":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":13,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"235":{"tf":1.0},"25":{"tf":1.0},"252":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.4142135623730951},"423":{"tf":1.0},"529":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0}}}}}}},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"507":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":11,"docs":{"11":{"tf":1.4142135623730951},"200":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.4142135623730951},"226":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"311":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"538":{"tf":1.4142135623730951}}}},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"399":{"tf":1.0},"483":{"tf":1.0}}}}}},"i":{"d":{"df":0,"docs":{},"e":{"df":2,"docs":{"116":{"tf":1.0},"156":{"tf":1.0}}}},"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":1,"docs":{"192":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"559":{"tf":1.0}}}}}}},"n":{"d":{"df":3,"docs":{"156":{"tf":1.4142135623730951},"322":{"tf":1.0},"504":{"tf":1.0}},"o":{"df":0,"docs":{},"w":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":5,"docs":{"188":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.4142135623730951},"538":{"tf":1.7320508075688772},"539":{"tf":1.0}}}}},"df":2,"docs":{"389":{"tf":1.0},"60":{"tf":1.0}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"15":{"tf":1.0},"60":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"456":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"108":{"tf":1.0}}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"67":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"360":{"tf":1.0}}}},"h":{"4":{"df":7,"docs":{"538":{"tf":2.23606797749979},"539":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.4142135623730951},"546":{"tf":1.4142135623730951},"547":{"tf":1.0}}},"df":45,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"309":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.4142135623730951},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"536":{"tf":1.7320508075688772},"537":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.0},"540":{"tf":1.0},"541":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"565":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":24,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"142":{"tf":1.0},"209":{"tf":1.0},"231":{"tf":1.0},"276":{"tf":1.4142135623730951},"309":{"tf":1.0},"310":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"359":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"440":{"tf":4.47213595499958},"448":{"tf":1.0},"504":{"tf":1.0},"522":{"tf":1.0},"545":{"tf":1.0},"98":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"b":{"df":0,"docs":{},"o":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"365":{"tf":1.0}}}},"df":0,"docs":{}}},"df":34,"docs":{"108":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.0},"171":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.4142135623730951},"239":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"294":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"343":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"457":{"tf":1.4142135623730951},"462":{"tf":1.0},"480":{"tf":1.4142135623730951},"502":{"tf":1.0},"526":{"tf":1.0},"530":{"tf":1.0},"579":{"tf":1.0},"6":{"tf":1.0},"61":{"tf":1.0},"9":{"tf":1.0}}}}}}}},"l":{"df":1,"docs":{"245":{"tf":1.0}}},"o":{"df":0,"docs":{},"e":{"df":1,"docs":{"360":{"tf":1.4142135623730951}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"342":{"tf":1.0}},"n":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}}}},"n":{"'":{"df":0,"docs":{},"t":{"df":9,"docs":{"125":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"237":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"521":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":11,"docs":{"198":{"tf":1.4142135623730951},"199":{"tf":1.0},"217":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"361":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"423":{"tf":1.0},"543":{"tf":1.0}}}}},"df":0,"docs":{}},"r":{"d":{"df":2,"docs":{"249":{"tf":1.0},"336":{"tf":1.0}}},"df":0,"docs":{},"k":{"a":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"423":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":6,"docs":{"153":{"tf":1.0},"181":{"tf":1.0},"218":{"tf":1.0},"278":{"tf":1.0},"370":{"tf":1.0},"442":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":115,"docs":{"1":{"tf":1.0},"10":{"tf":1.4142135623730951},"12":{"tf":1.4142135623730951},"127":{"tf":1.0},"128":{"tf":1.0},"129":{"tf":1.7320508075688772},"130":{"tf":1.0},"131":{"tf":1.0},"136":{"tf":1.0},"15":{"tf":1.4142135623730951},"153":{"tf":1.0},"156":{"tf":3.1622776601683795},"16":{"tf":1.4142135623730951},"167":{"tf":1.4142135623730951},"168":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"188":{"tf":1.0},"192":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"221":{"tf":2.6457513110645907},"225":{"tf":1.0},"232":{"tf":1.0},"244":{"tf":1.4142135623730951},"249":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"276":{"tf":3.0},"278":{"tf":1.0},"279":{"tf":1.0},"284":{"tf":2.0},"289":{"tf":1.0},"292":{"tf":2.23606797749979},"3":{"tf":2.0},"300":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.7320508075688772},"311":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"317":{"tf":1.0},"319":{"tf":1.4142135623730951},"320":{"tf":1.4142135623730951},"321":{"tf":1.0},"322":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":2.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":2.0},"349":{"tf":2.0},"353":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":2.8284271247461903},"380":{"tf":2.6457513110645907},"383":{"tf":1.4142135623730951},"389":{"tf":1.0},"394":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"408":{"tf":2.0},"41":{"tf":1.0},"421":{"tf":1.4142135623730951},"423":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"442":{"tf":1.0},"457":{"tf":1.0},"464":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":2.0},"472":{"tf":1.0},"474":{"tf":1.4142135623730951},"475":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"487":{"tf":1.4142135623730951},"49":{"tf":1.0},"50":{"tf":1.4142135623730951},"502":{"tf":1.4142135623730951},"504":{"tf":1.4142135623730951},"507":{"tf":1.0},"511":{"tf":1.4142135623730951},"522":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"545":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"556":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.4142135623730951},"559":{"tf":1.0},"566":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":2.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.0},"73":{"tf":1.7320508075688772},"79":{"tf":1.0},"82":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":7,"docs":{"268":{"tf":1.0},"276":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"347":{"tf":1.0},"412":{"tf":1.0},"470":{"tf":2.23606797749979}}}},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":2,"docs":{"435":{"tf":1.0},"475":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":4,"docs":{"128":{"tf":1.0},"349":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"l":{"d":{"!":{"\"":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"522":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"<":{"'":{"_":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"a":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":13,"docs":{"130":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.0},"215":{"tf":1.7320508075688772},"216":{"tf":1.0},"217":{"tf":3.872983346207417},"218":{"tf":1.4142135623730951},"284":{"tf":1.0},"363":{"tf":1.0},"389":{"tf":1.0},"448":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"523":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"i":{"df":7,"docs":{"198":{"tf":1.0},"221":{"tf":1.4142135623730951},"245":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"365":{"tf":1.0},"552":{"tf":1.0}}}},"s":{"df":2,"docs":{"328":{"tf":1.0},"367":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"221":{"tf":1.0}}}},"t":{"df":5,"docs":{"190":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":4,"docs":{"268":{"tf":1.0},"309":{"tf":1.0},"341":{"tf":1.4142135623730951},"37":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"d":{"'":{"df":0,"docs":{},"v":{"df":2,"docs":{"340":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":5,"docs":{"217":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.4142135623730951},"324":{"tf":1.4142135623730951},"428":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"d":{"df":1,"docs":{"533":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":4,"docs":{"259":{"tf":1.0},"268":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"259":{"tf":1.0},"292":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.7320508075688772},"504":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":1,"docs":{"214":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":96,"docs":{"110":{"tf":1.0},"138":{"tf":1.0},"15":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":3.3166247903554},"157":{"tf":1.0},"159":{"tf":1.0},"16":{"tf":1.0},"167":{"tf":1.0},"17":{"tf":1.0},"19":{"tf":1.0},"193":{"tf":1.7320508075688772},"194":{"tf":1.0},"195":{"tf":1.4142135623730951},"196":{"tf":1.4142135623730951},"197":{"tf":1.7320508075688772},"198":{"tf":1.4142135623730951},"199":{"tf":1.7320508075688772},"200":{"tf":1.0},"201":{"tf":1.0},"202":{"tf":1.0},"203":{"tf":1.7320508075688772},"204":{"tf":1.4142135623730951},"205":{"tf":1.0},"206":{"tf":1.4142135623730951},"217":{"tf":1.0},"23":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"239":{"tf":1.0},"24":{"tf":1.7320508075688772},"25":{"tf":1.4142135623730951},"258":{"tf":1.0},"26":{"tf":1.0},"268":{"tf":2.0},"27":{"tf":1.0},"284":{"tf":1.0},"290":{"tf":1.7320508075688772},"291":{"tf":1.0},"292":{"tf":1.7320508075688772},"293":{"tf":1.0},"294":{"tf":1.7320508075688772},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":1.0},"307":{"tf":1.0},"312":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.7320508075688772},"344":{"tf":1.0},"347":{"tf":1.0},"351":{"tf":1.0},"37":{"tf":1.7320508075688772},"370":{"tf":2.0},"38":{"tf":1.0},"380":{"tf":2.6457513110645907},"389":{"tf":1.0},"39":{"tf":1.0},"41":{"tf":1.4142135623730951},"423":{"tf":1.0},"433":{"tf":1.0},"456":{"tf":1.7320508075688772},"457":{"tf":2.449489742783178},"458":{"tf":2.0},"46":{"tf":1.0},"460":{"tf":1.7320508075688772},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.0},"480":{"tf":1.0},"491":{"tf":1.0},"497":{"tf":2.0},"498":{"tf":1.7320508075688772},"502":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"51":{"tf":1.7320508075688772},"513":{"tf":1.0},"522":{"tf":1.7320508075688772},"523":{"tf":1.0},"53":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.7320508075688772},"551":{"tf":1.0},"559":{"tf":1.4142135623730951},"565":{"tf":1.0},"573":{"tf":1.0},"599":{"tf":1.0},"601":{"tf":2.0},"61":{"tf":2.0},"79":{"tf":1.0},"9":{"tf":1.4142135623730951}},"r":{"df":1,"docs":{"84":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":25,"docs":{"108":{"tf":1.0},"118":{"tf":1.0},"125":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.4142135623730951},"147":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":1.0},"211":{"tf":1.0},"257":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"320":{"tf":1.0},"332":{"tf":1.0},"347":{"tf":1.4142135623730951},"356":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.0},"488":{"tf":1.0},"498":{"tf":1.4142135623730951},"509":{"tf":1.0},"599":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":43,"docs":{"130":{"tf":1.0},"140":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"196":{"tf":1.4142135623730951},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"328":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"359":{"tf":1.7320508075688772},"363":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"440":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"51":{"tf":1.4142135623730951},"519":{"tf":1.0},"53":{"tf":1.0},"537":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"e":{"df":14,"docs":{"246":{"tf":1.0},"248":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.4142135623730951},"408":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"502":{"tf":1.0},"538":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.4142135623730951},"603":{"tf":1.0}}}}}},"s":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"276":{"tf":2.23606797749979}},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"df":0,"docs":{},"r":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":1,"docs":{"276":{"tf":2.449489742783178}}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}}}}},"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"276":{"tf":1.7320508075688772}}}},"x":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"564":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"8":{"6":{"_":{"6":{"4":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"42":{"tf":1.0},"448":{"tf":1.0},"56":{"tf":1.0},"57":{"tf":1.4142135623730951}},"m":{"a":{"df":1,"docs":{"230":{"tf":1.0}}},"df":0,"docs":{}}},"y":{"2":{"1":{"df":1,"docs":{"602":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"h":{"df":2,"docs":{"217":{"tf":1.0},"69":{"tf":1.0}}},"r":{"df":15,"docs":{"10":{"tf":1.0},"171":{"tf":1.0},"332":{"tf":1.0},"356":{"tf":1.0},"380":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"40":{"tf":1.0},"457":{"tf":1.0},"486":{"tf":1.4142135623730951},"72":{"tf":1.0},"79":{"tf":1.0},"9":{"tf":1.0}},"n":{"df":1,"docs":{"503":{"tf":1.0}}}}},"df":10,"docs":{"111":{"tf":1.0},"120":{"tf":1.0},"19":{"tf":1.0},"320":{"tf":1.0},"322":{"tf":1.0},"405":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.4142135623730951},"89":{"tf":1.0}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":11,"docs":{"196":{"tf":2.23606797749979},"214":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"310":{"tf":1.0},"563":{"tf":1.7320508075688772},"564":{"tf":1.4142135623730951},"565":{"tf":1.0},"566":{"tf":1.0},"573":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"89":{"tf":1.0}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"602":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"u":{"'":{"d":{"df":4,"docs":{"21":{"tf":1.0},"26":{"tf":1.0},"39":{"tf":1.0},"96":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"417":{"tf":1.0},"487":{"tf":1.0}}}},"r":{"df":8,"docs":{"157":{"tf":1.0},"2":{"tf":1.0},"25":{"tf":1.0},"300":{"tf":1.0},"321":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"556":{"tf":1.0}}},"v":{"df":3,"docs":{"156":{"tf":1.0},"292":{"tf":1.0},"417":{"tf":1.0}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":14,"docs":{"132":{"tf":1.7320508075688772},"133":{"tf":1.0},"134":{"tf":2.23606797749979},"135":{"tf":1.0},"136":{"tf":2.0},"137":{"tf":2.0},"138":{"tf":2.0},"139":{"tf":1.7320508075688772},"140":{"tf":1.0},"177":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.4142135623730951},"532":{"tf":1.0}}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"96":{"tf":1.4142135623730951}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"2":{"tf":1.0}}}}}}}}}},"z":{"b":{"df":0,"docs":{},"u":{"df":2,"docs":{"224":{"tf":1.0},"323":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":1,"docs":{"602":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"224":{"tf":1.0}}}},"df":0,"docs":{}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"232":{"tf":1.0}}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"o":{"df":4,"docs":{"343":{"tf":2.6457513110645907},"422":{"tf":1.4142135623730951},"513":{"tf":1.0},"62":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":1,"docs":{"110":{"tf":1.0}}}},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"200":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"245":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"245":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":9,"docs":{"1":{"tf":1.0},"16":{"tf":1.0},"2":{"tf":1.0},"25":{"tf":1.0},"35":{"tf":1.0},"4":{"tf":1.7320508075688772},"555":{"tf":1.0},"556":{"tf":1.0},"68":{"tf":1.0}}}}}}}}},"title":{"root":{"0":{"2":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"1":{"2":{"df":1,"docs":{"599":{"tf":1.0}}},"df":1,"docs":{"418":{"tf":1.0}}},"2":{"0":{"2":{"1":{"df":2,"docs":{"550":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"419":{"tf":1.0}}},"a":{"b":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"343":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":4,"docs":{"252":{"tf":1.0},"437":{"tf":1.0},"464":{"tf":1.0},"49":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"600":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"t":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"349":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"313":{"tf":1.0}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":1,"docs":{"320":{"tf":1.0}}}}}}},"l":{"a":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"518":{"tf":1.0}}},"/":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":1,"docs":{"296":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":37,"docs":{"165":{"tf":1.0},"173":{"tf":1.0},"175":{"tf":1.0},"183":{"tf":1.0},"185":{"tf":1.0},"188":{"tf":1.0},"193":{"tf":1.0},"205":{"tf":1.0},"207":{"tf":1.0},"213":{"tf":1.0},"215":{"tf":1.0},"219":{"tf":1.0},"225":{"tf":1.0},"227":{"tf":1.0},"235":{"tf":1.0},"239":{"tf":1.0},"241":{"tf":1.0},"242":{"tf":1.0},"250":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.0},"263":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.0},"272":{"tf":1.0},"274":{"tf":1.0},"280":{"tf":1.0},"282":{"tf":1.0},"288":{"tf":1.0},"290":{"tf":1.0},"500":{"tf":1.0},"510":{"tf":1.0},"528":{"tf":1.0},"542":{"tf":1.0},"71":{"tf":1.0},"76":{"tf":1.0},"77":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":1,"docs":{"242":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"498":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"539":{"tf":1.0}}}}}},"w":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"165":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"298":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":5,"docs":{"241":{"tf":1.0},"252":{"tf":1.0},"265":{"tf":1.0},"437":{"tf":1.0},"464":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"22":{"tf":1.0},"50":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":13,"docs":{"497":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"i":{"df":4,"docs":{"252":{"tf":1.0},"321":{"tf":1.0},"454":{"tf":1.0},"508":{"tf":1.0}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"132":{"tf":1.0},"136":{"tf":1.0}}},"df":2,"docs":{"32":{"tf":1.0},"565":{"tf":1.0}}}}}},"r":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"34":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"341":{"tf":1.0}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"581":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"k":{"df":52,"docs":{"100":{"tf":1.0},"109":{"tf":1.0},"117":{"tf":1.0},"126":{"tf":1.0},"135":{"tf":1.0},"144":{"tf":1.0},"160":{"tf":1.0},"170":{"tf":1.0},"180":{"tf":1.0},"192":{"tf":1.0},"202":{"tf":1.0},"210":{"tf":1.0},"218":{"tf":1.0},"222":{"tf":1.0},"236":{"tf":1.0},"247":{"tf":1.0},"260":{"tf":1.0},"269":{"tf":1.0},"277":{"tf":1.0},"285":{"tf":1.0},"293":{"tf":1.0},"30":{"tf":1.0},"301":{"tf":1.0},"314":{"tf":1.0},"329":{"tf":1.0},"337":{"tf":1.0},"348":{"tf":1.0},"362":{"tf":1.0},"371":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"398":{"tf":1.0},"409":{"tf":1.0},"424":{"tf":1.0},"43":{"tf":1.0},"432":{"tf":1.0},"441":{"tf":1.0},"449":{"tf":1.0},"459":{"tf":1.0},"471":{"tf":1.0},"479":{"tf":1.0},"492":{"tf":1.0},"505":{"tf":1.0},"524":{"tf":1.0},"540":{"tf":1.0},"582":{"tf":1.0},"593":{"tf":1.0},"66":{"tf":1.0},"75":{"tf":1.0},"80":{"tf":1.0},"85":{"tf":1.0},"90":{"tf":1.0}}},"y":{"df":0,"docs":{},"n":{"c":{"df":30,"docs":{"219":{"tf":1.0},"253":{"tf":1.0},"257":{"tf":1.0},"266":{"tf":1.0},"305":{"tf":1.0},"309":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"326":{"tf":1.0},"354":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"368":{"tf":1.0},"375":{"tf":1.0},"378":{"tf":1.0},"387":{"tf":1.0},"406":{"tf":1.0},"522":{"tf":1.0},"575":{"tf":1.0},"585":{"tf":1.0},"586":{"tf":1.0},"590":{"tf":1.0},"594":{"tf":1.0},"595":{"tf":1.0},"61":{"tf":1.0},"76":{"tf":1.0},"81":{"tf":1.0},"86":{"tf":1.0},"91":{"tf":1.0}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"574":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"574":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"571":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"494":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":3,"docs":{"19":{"tf":1.0},"58":{"tf":1.0},"59":{"tf":1.0}}},"df":2,"docs":{"584":{"tf":1.0},"585":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"84":{"tf":1.0}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":1,"docs":{"405":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"b":{"a":{"df":0,"docs":{},"r":{"a":{"'":{"df":3,"docs":{"341":{"tf":1.0},"344":{"tf":1.0},"356":{"tf":1.0}}},"df":36,"docs":{"298":{"tf":1.0},"304":{"tf":1.0},"305":{"tf":1.0},"316":{"tf":1.0},"318":{"tf":1.0},"321":{"tf":1.0},"324":{"tf":1.0},"326":{"tf":1.0},"332":{"tf":1.0},"334":{"tf":1.0},"339":{"tf":1.0},"345":{"tf":1.0},"352":{"tf":1.0},"354":{"tf":1.0},"366":{"tf":1.0},"368":{"tf":1.0},"376":{"tf":1.0},"378":{"tf":1.0},"382":{"tf":1.0},"387":{"tf":1.0},"393":{"tf":1.0},"395":{"tf":1.0},"401":{"tf":1.0},"404":{"tf":1.0},"406":{"tf":1.0},"413":{"tf":1.0},"415":{"tf":1.0},"420":{"tf":1.0},"427":{"tf":1.0},"513":{"tf":1.0},"531":{"tf":1.0},"536":{"tf":1.0},"545":{"tf":1.0},"89":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":3,"docs":{"154":{"tf":1.0},"570":{"tf":1.0},"596":{"tf":1.0}}}}},"df":1,"docs":{"73":{"tf":1.0}},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"313":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"514":{"tf":1.0},"532":{"tf":1.0},"546":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"499":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":3,"docs":{"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"g":{"df":4,"docs":{"15":{"tf":1.0},"356":{"tf":1.0},"359":{"tf":1.0},"487":{"tf":1.4142135623730951}}}},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"308":{"tf":1.0},"325":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"o":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"557":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"415":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"235":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"16":{"tf":1.0}}}}}}}}}},"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"305":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":4,"docs":{"77":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"92":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"168":{"tf":1.0},"556":{"tf":1.0}}},"i":{"df":0,"docs":{},"l":{"d":{"df":2,"docs":{"326":{"tf":1.0},"466":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":6,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0}}}}}}},"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"165":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"150":{"tf":1.0}}}},"m":{"df":0,"docs":{},"e":{"df":2,"docs":{"241":{"tf":1.0},"265":{"tf":1.0}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"581":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"334":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":3,"docs":{"564":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0}}},"t":{"df":5,"docs":{"63":{"tf":1.0},"70":{"tf":1.0},"78":{"tf":1.0},"83":{"tf":1.0},"88":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"59":{"tf":1.0}}}}}}}}},"df":2,"docs":{"454":{"tf":1.0},"74":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"415":{"tf":1.0}}}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"585":{"tf":1.0}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":42,"docs":{"164":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"206":{"tf":1.0},"214":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"251":{"tf":1.0},"264":{"tf":1.0},"273":{"tf":1.0},"281":{"tf":1.0},"289":{"tf":1.0},"297":{"tf":1.0},"317":{"tf":1.0},"32":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"35":{"tf":1.0},"353":{"tf":1.0},"365":{"tf":1.0},"367":{"tf":1.0},"377":{"tf":1.0},"385":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"414":{"tf":1.0},"428":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"45":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"483":{"tf":1.0},"63":{"tf":1.0},"65":{"tf":1.0},"68":{"tf":1.0},"69":{"tf":1.0},"70":{"tf":1.0},"78":{"tf":1.0},"83":{"tf":1.0},"88":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"191":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"34":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"s":{"df":31,"docs":{"163":{"tf":1.0},"173":{"tf":1.0},"183":{"tf":1.0},"205":{"tf":1.0},"213":{"tf":1.0},"225":{"tf":1.0},"239":{"tf":1.0},"250":{"tf":1.0},"263":{"tf":1.0},"272":{"tf":1.0},"280":{"tf":1.0},"288":{"tf":1.0},"296":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.0},"332":{"tf":1.0},"339":{"tf":1.0},"352":{"tf":1.0},"366":{"tf":1.0},"376":{"tf":1.0},"382":{"tf":1.0},"393":{"tf":1.0},"401":{"tf":1.0},"413":{"tf":1.0},"427":{"tf":1.0},"435":{"tf":1.0},"444":{"tf":1.0},"452":{"tf":1.0},"462":{"tf":1.0},"474":{"tf":1.0},"482":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"586":{"tf":1.0}}}}}}},"o":{"d":{"df":0,"docs":{},"e":{"df":4,"docs":{"322":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"345":{"tf":1.0}}}},"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"572":{"tf":1.0},"587":{"tf":1.0},"588":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"67":{"tf":1.0}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"50":{"tf":1.0},"52":{"tf":1.0},"54":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"571":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"345":{"tf":1.0},"403":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":4,"docs":{"253":{"tf":1.0},"256":{"tf":1.0},"518":{"tf":1.0},"521":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"596":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":6,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0}}}}}},"n":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"422":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"df":12,"docs":{"104":{"tf":1.0},"105":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"569":{"tf":1.0},"577":{"tf":1.0}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"361":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"498":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"12":{"tf":1.0},"152":{"tf":1.0},"485":{"tf":1.0},"52":{"tf":1.0}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"6":{"tf":1.0},"603":{"tf":1.0}}}}},"df":0,"docs":{}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":1,"docs":{"597":{"tf":1.0}}}},"y":{"df":2,"docs":{"507":{"tf":1.0},"526":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"349":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"341":{"tf":1.0},"343":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":6,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"508":{"tf":1.0},"77":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"92":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":7,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.0},"123":{"tf":1.0},"128":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0}}}}}}},"y":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"313":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"175":{"tf":1.0}}}},"df":0,"docs":{}},"df":2,"docs":{"155":{"tf":1.0},"419":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"318":{"tf":1.0},"319":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":1,"docs":{"189":{"tf":1.0}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"282":{"tf":1.0}},"g":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"357":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":1,"docs":{"359":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"568":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"429":{"tf":1.0}}}}}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":1,"docs":{"36":{"tf":1.0}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":6,"docs":{"108":{"tf":1.0},"116":{"tf":1.0},"125":{"tf":1.0},"134":{"tf":1.0},"143":{"tf":1.0},"99":{"tf":1.0}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":6,"docs":{"342":{"tf":1.0},"560":{"tf":1.0},"561":{"tf":1.0},"562":{"tf":1.0},"570":{"tf":1.0},"61":{"tf":1.0}}}},"r":{"df":1,"docs":{"571":{"tf":1.0}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":3,"docs":{"33":{"tf":1.0},"47":{"tf":1.0},"48":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"71":{"tf":1.0},"89":{"tf":1.0}}}}}}}},"i":{"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"321":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":39,"docs":{"101":{"tf":1.0},"110":{"tf":1.0},"118":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"145":{"tf":1.0},"164":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"206":{"tf":1.0},"214":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"251":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"273":{"tf":1.0},"281":{"tf":1.0},"289":{"tf":1.0},"297":{"tf":1.0},"317":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"353":{"tf":1.0},"367":{"tf":1.0},"375":{"tf":1.0},"377":{"tf":1.0},"385":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"414":{"tf":1.0},"428":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"483":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}}}},"df":0,"docs":{}}},"s":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":12,"docs":{"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0}}}}}}}}},"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"25":{"tf":1.0},"602":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"334":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"u":{"a":{"d":{"df":1,"docs":{"54":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":3,"docs":{"114":{"tf":1.0},"118":{"tf":1.0},"119":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"c":{"df":2,"docs":{"561":{"tf":1.0},"562":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"18":{"tf":1.0},"365":{"tf":1.0},"560":{"tf":1.0}}}}}}}},"df":2,"docs":{"458":{"tf":1.0},"550":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":3,"docs":{"165":{"tf":1.0},"404":{"tf":1.0},"405":{"tf":1.0}}}},"df":0,"docs":{}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"97":{"tf":1.0}}}}},"df":0,"docs":{}},"n":{"'":{"df":0,"docs":{},"t":{"df":6,"docs":{"341":{"tf":1.0},"48":{"tf":1.0},"50":{"tf":1.0},"509":{"tf":1.0},"68":{"tf":1.0},"96":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"b":{"df":0,"docs":{},"t":{"df":1,"docs":{"356":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":37,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"188":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"10":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"175":{"tf":1.0},"594":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"365":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"72":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"561":{"tf":1.0}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"342":{"tf":1.0}}}}}}},"m":{"b":{"df":0,"docs":{},"e":{"d":{"df":3,"docs":{"106":{"tf":1.0},"110":{"tf":1.0},"334":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"d":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"232":{"tf":1.0}}}}}}}},"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"77":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"92":{"tf":1.0}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"185":{"tf":1.0},"504":{"tf":1.0}}}},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"324":{"tf":1.0}}}}}}},"i":{"d":{"df":1,"docs":{"36":{"tf":1.0}}},"df":0,"docs":{}}},"x":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"49":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":5,"docs":{"412":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":12,"docs":{"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"326":{"tf":1.0},"344":{"tf":1.0}}}}}}},"df":0,"docs":{}},"h":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"598":{"tf":1.0}}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"77":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"92":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"25":{"tf":1.0},"323":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"71":{"tf":1.0},"89":{"tf":1.0}}},"df":0,"docs":{}}}},"t":{"df":1,"docs":{"79":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"185":{"tf":1.0}}}}}}}},"f":{"a":{"df":0,"docs":{},"q":{"df":3,"docs":{"22":{"tf":1.0},"28":{"tf":1.0},"41":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"341":{"tf":1.0},"509":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"499":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"312":{"tf":1.0}}}}}},"n":{"d":{"df":5,"docs":{"175":{"tf":1.0},"179":{"tf":1.0},"246":{"tf":1.0},"25":{"tf":1.0},"96":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":9,"docs":{"189":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"257":{"tf":1.0},"354":{"tf":1.0},"356":{"tf":1.0},"457":{"tf":1.0},"465":{"tf":1.0},"522":{"tf":1.0}}}}},"t":{"df":2,"docs":{"35":{"tf":1.0},"527":{"tf":1.0}}},"x":{"df":1,"docs":{"556":{"tf":1.0}}}},"n":{"df":1,"docs":{"575":{"tf":1.0}}},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"354":{"tf":1.0}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"508":{"tf":1.0}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"423":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"258":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"290":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":52,"docs":{"100":{"tf":1.0},"109":{"tf":1.0},"117":{"tf":1.0},"126":{"tf":1.0},"135":{"tf":1.0},"144":{"tf":1.0},"160":{"tf":1.0},"170":{"tf":1.0},"180":{"tf":1.0},"192":{"tf":1.0},"202":{"tf":1.0},"210":{"tf":1.0},"218":{"tf":1.0},"222":{"tf":1.0},"236":{"tf":1.0},"247":{"tf":1.0},"260":{"tf":1.0},"269":{"tf":1.0},"277":{"tf":1.0},"285":{"tf":1.0},"293":{"tf":1.0},"30":{"tf":1.0},"301":{"tf":1.0},"314":{"tf":1.0},"329":{"tf":1.0},"337":{"tf":1.0},"348":{"tf":1.0},"362":{"tf":1.0},"371":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"398":{"tf":1.0},"409":{"tf":1.0},"424":{"tf":1.0},"43":{"tf":1.0},"432":{"tf":1.0},"441":{"tf":1.0},"449":{"tf":1.0},"459":{"tf":1.0},"471":{"tf":1.0},"479":{"tf":1.0},"492":{"tf":1.0},"505":{"tf":1.0},"524":{"tf":1.0},"540":{"tf":1.0},"582":{"tf":1.0},"593":{"tf":1.0},"66":{"tf":1.0},"75":{"tf":1.0},"80":{"tf":1.0},"85":{"tf":1.0},"90":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"583":{"tf":1.0}}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"320":{"tf":1.0},"375":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"374":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"d":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"342":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"190":{"tf":1.0},"498":{"tf":1.0}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"420":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":52,"docs":{"258":{"tf":1.0},"334":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"37":{"tf":1.0},"40":{"tf":1.0},"415":{"tf":1.0},"44":{"tf":1.0},"45":{"tf":1.0},"46":{"tf":1.0},"484":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"494":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"499":{"tf":1.0},"500":{"tf":1.0},"51":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"518":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"536":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"57":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"584":{"tf":1.0},"596":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"185":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"g":{"c":{"'":{"d":{"df":3,"docs":{"241":{"tf":1.0},"265":{"tf":1.0},"71":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"d":{"b":{"df":1,"docs":{"446":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"114":{"tf":1.0},"573":{"tf":1.0},"576":{"tf":1.0}}}}},"t":{"df":1,"docs":{"2":{"tf":1.0}}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"415":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":3,"docs":{"201":{"tf":1.0},"33":{"tf":1.0},"47":{"tf":1.0}}}}},"o":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"27":{"tf":1.0},"3":{"tf":1.0},"40":{"tf":1.0},"576":{"tf":1.0}}}},"df":2,"docs":{"497":{"tf":1.0},"9":{"tf":1.0}},"o":{"d":{"df":2,"docs":{"56":{"tf":1.0},"57":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"a":{"c":{"df":0,"docs":{},"e":{"df":18,"docs":{"429":{"tf":1.0},"435":{"tf":1.0},"437":{"tf":1.0},"438":{"tf":1.0},"444":{"tf":1.0},"446":{"tf":1.0},"452":{"tf":1.0},"454":{"tf":1.0},"462":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"474":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"543":{"tf":1.0},"79":{"tf":1.0},"81":{"tf":1.0},"82":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":2,"docs":{"175":{"tf":1.0},"344":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":1,"docs":{"282":{"tf":1.0}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"165":{"tf":1.0},"509":{"tf":1.0}}}}}},"r":{"d":{"df":1,"docs":{"175":{"tf":1.0}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"17":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"193":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"p":{"df":4,"docs":{"12":{"tf":1.0},"14":{"tf":1.0},"152":{"tf":1.0},"485":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"368":{"tf":1.0},"374":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"96":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"515":{"tf":1.0},"533":{"tf":1.0},"547":{"tf":1.0}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"539":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"429":{"tf":1.0}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"188":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":1,"docs":{"298":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"y":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"466":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"i":{"'":{"df":0,"docs":{},"m":{"df":1,"docs":{"34":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"a":{"df":1,"docs":{"50":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"508":{"tf":1.0}}}}}},"df":0,"docs":{},"p":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"342":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"196":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"141":{"tf":1.0},"197":{"tf":1.0},"51":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"51":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"54":{"tf":1.0}}}}}}},"n":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"233":{"tf":1.0},"234":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"516":{"tf":1.0},"534":{"tf":1.0},"548":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"114":{"tf":1.0},"123":{"tf":1.0},"127":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"406":{"tf":1.0},"412":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":2,"docs":{"454":{"tf":1.0},"504":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":1,"docs":{"308":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":1,"docs":{"420":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":4,"docs":{"11":{"tf":1.0},"2":{"tf":1.0},"375":{"tf":1.0},"499":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":1,"docs":{"25":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"553":{"tf":1.0}}},"r":{"df":1,"docs":{"207":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"155":{"tf":1.0},"499":{"tf":1.0}}}}}}}},"j":{"a":{"df":0,"docs":{},"v":{"a":{"df":1,"docs":{"73":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"311":{"tf":1.0}}}},"df":0,"docs":{}},"df":1,"docs":{"587":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":1,"docs":{"356":{"tf":1.0}}}}}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"320":{"tf":1.0}}}},"y":{"df":4,"docs":{"494":{"tf":1.0},"507":{"tf":1.0},"526":{"tf":1.0},"552":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"412":{"tf":1.0}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":5,"docs":{"465":{"tf":1.0},"48":{"tf":1.0},"49":{"tf":1.0},"50":{"tf":1.0},"508":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"476":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"74":{"tf":1.0}}}}}}}},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":1,"docs":{"305":{"tf":1.0}}}}}},"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"g":{"df":5,"docs":{"241":{"tf":1.0},"265":{"tf":1.0},"403":{"tf":1.0},"71":{"tf":1.0},"72":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"318":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"562":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"1":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":2,"docs":{"358":{"tf":1.0},"503":{"tf":1.0}}}},"v":{"df":1,"docs":{"50":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"438":{"tf":1.0}}}}},"df":0,"docs":{}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"y":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"595":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":2,"docs":{"375":{"tf":1.0},"581":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"563":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"95":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"18":{"tf":1.0}}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"266":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"185":{"tf":1.0},"504":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"215":{"tf":1.0}}}},"t":{"df":1,"docs":{"341":{"tf":1.0}}}}},"m":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"309":{"tf":1.0},"590":{"tf":1.0}}}},"k":{"df":0,"docs":{},"e":{"df":11,"docs":{"101":{"tf":1.0},"110":{"tf":1.0},"118":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"145":{"tf":1.0},"324":{"tf":1.0},"34":{"tf":1.0},"354":{"tf":1.0},"523":{"tf":1.0},"536":{"tf":1.0}}}},"n":{"d":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"598":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"259":{"tf":1.0}},"i":{"df":5,"docs":{"325":{"tf":1.0},"458":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0}}}},"r":{"df":1,"docs":{"356":{"tf":1.0}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"554":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"559":{"tf":1.0}}}}}},"t":{"a":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"227":{"tf":1.0},"235":{"tf":1.0}}}},"df":0,"docs":{}}},"x":{"df":2,"docs":{"322":{"tf":1.0},"323":{"tf":1.0}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":3,"docs":{"106":{"tf":1.0},"110":{"tf":1.0},"111":{"tf":1.0}}}}}}}}}}},"r":{"a":{"df":0,"docs":{},"l":{"df":31,"docs":{"161":{"tf":1.0},"171":{"tf":1.0},"181":{"tf":1.0},"203":{"tf":1.0},"211":{"tf":1.0},"223":{"tf":1.0},"237":{"tf":1.0},"248":{"tf":1.0},"261":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"286":{"tf":1.0},"294":{"tf":1.0},"302":{"tf":1.0},"315":{"tf":1.0},"330":{"tf":1.0},"338":{"tf":1.0},"350":{"tf":1.0},"363":{"tf":1.0},"372":{"tf":1.0},"383":{"tf":1.0},"391":{"tf":1.0},"399":{"tf":1.0},"410":{"tf":1.0},"425":{"tf":1.0},"433":{"tf":1.0},"442":{"tf":1.0},"450":{"tf":1.0},"460":{"tf":1.0},"472":{"tf":1.0},"480":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"503":{"tf":1.0},"69":{"tf":1.0}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"592":{"tf":1.0}}}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":8,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0},"33":{"tf":1.0},"47":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"32":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"584":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"68":{"tf":1.0},"69":{"tf":1.0}}}}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":5,"docs":{"113":{"tf":1.0},"163":{"tf":1.0},"578":{"tf":1.0},"67":{"tf":1.0},"97":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"d":{"df":6,"docs":{"12":{"tf":1.0},"152":{"tf":1.0},"219":{"tf":1.0},"266":{"tf":1.0},"368":{"tf":1.0},"485":{"tf":1.0}}},"df":0,"docs":{}},"g":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"54":{"tf":1.0}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"127":{"tf":1.0}}}}}}},"w":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"360":{"tf":1.0}}}}},"df":4,"docs":{"438":{"tf":1.0},"71":{"tf":1.0},"79":{"tf":1.0},"84":{"tf":1.0}}},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"446":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"k":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"u":{"df":10,"docs":{"466":{"tf":1.0},"474":{"tf":1.0},"476":{"tf":1.0},"482":{"tf":1.0},"512":{"tf":1.0},"530":{"tf":1.0},"544":{"tf":1.0},"84":{"tf":1.0},"86":{"tf":1.0},"87":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":1,"docs":{"35":{"tf":1.0}}}}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"252":{"tf":1.0},"418":{"tf":1.0},"437":{"tf":1.0},"464":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"429":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"k":{"df":1,"docs":{"231":{"tf":1.0}}},"n":{"df":2,"docs":{"527":{"tf":1.0},"69":{"tf":1.0}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":10,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0},"21":{"tf":1.0},"25":{"tf":1.0},"26":{"tf":1.0},"39":{"tf":1.0}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"25":{"tf":1.0},"499":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":7,"docs":{"101":{"tf":1.0},"110":{"tf":1.0},"118":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"145":{"tf":1.0},"25":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"t":{"df":37,"docs":{"164":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"191":{"tf":1.0},"206":{"tf":1.0},"214":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"251":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"273":{"tf":1.0},"281":{"tf":1.0},"289":{"tf":1.0},"297":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"317":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"353":{"tf":1.0},"367":{"tf":1.0},"377":{"tf":1.0},"385":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"414":{"tf":1.0},"428":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"483":{"tf":1.0},"499":{"tf":1.0},"51":{"tf":1.0}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"418":{"tf":1.0}}},"df":0,"docs":{}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"190":{"tf":1.0},"298":{"tf":1.0}}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"601":{"tf":1.0}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":3,"docs":{"322":{"tf":1.0},"323":{"tf":1.0},"583":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"305":{"tf":1.0}}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":2,"docs":{"207":{"tf":1.0},"345":{"tf":1.0}}}}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"113":{"tf":1.0},"231":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"15":{"tf":1.0}}}}}},"df":0,"docs":{},"n":{"df":1,"docs":{"198":{"tf":1.0}}},"t":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"496":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"a":{"c":{"df":0,"docs":{},"e":{"df":2,"docs":{"465":{"tf":1.0},"497":{"tf":1.0}}}},"df":0,"docs":{},"y":{"df":33,"docs":{"164":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"206":{"tf":1.0},"214":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"251":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"273":{"tf":1.0},"281":{"tf":1.0},"289":{"tf":1.0},"297":{"tf":1.0},"317":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"353":{"tf":1.0},"367":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.0},"385":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"414":{"tf":1.0},"428":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"483":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"507":{"tf":1.0},"526":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"457":{"tf":1.0},"570":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"496":{"tf":1.0}}}}}}}},"r":{"df":6,"docs":{"21":{"tf":1.0},"22":{"tf":1.0},"26":{"tf":1.0},"27":{"tf":1.0},"39":{"tf":1.0},"40":{"tf":1.0}},"e":{"c":{"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"566":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"319":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"155":{"tf":1.4142135623730951}}}}}}},"o":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":9,"docs":{"177":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"244":{"tf":1.0},"323":{"tf":1.0},"345":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":5,"docs":{"29":{"tf":1.0},"31":{"tf":1.0},"42":{"tf":1.0},"44":{"tf":1.0},"558":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"318":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"79":{"tf":1.0}},"m":{"df":1,"docs":{"84":{"tf":1.0}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":46,"docs":{"101":{"tf":1.0},"102":{"tf":1.0},"103":{"tf":1.0},"104":{"tf":1.0},"105":{"tf":1.0},"106":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"114":{"tf":1.0},"120":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"123":{"tf":1.0},"127":{"tf":1.0},"129":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0},"132":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"141":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"20":{"tf":1.0},"257":{"tf":1.0},"356":{"tf":1.0},"499":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"517":{"tf":1.0},"522":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"535":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"549":{"tf":1.0},"557":{"tf":1.0},"93":{"tf":1.0},"95":{"tf":1.0},"96":{"tf":1.0},"97":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"422":{"tf":1.0}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":2,"docs":{"31":{"tf":1.0},"44":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"141":{"tf":1.0}}}}},"df":0,"docs":{}}},"v":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"155":{"tf":1.0}}},"df":0,"docs":{}}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":55,"docs":{"100":{"tf":1.0},"109":{"tf":1.0},"117":{"tf":1.0},"126":{"tf":1.0},"135":{"tf":1.0},"144":{"tf":1.0},"160":{"tf":1.0},"170":{"tf":1.0},"180":{"tf":1.0},"192":{"tf":1.0},"202":{"tf":1.0},"210":{"tf":1.0},"218":{"tf":1.0},"222":{"tf":1.0},"236":{"tf":1.0},"247":{"tf":1.0},"260":{"tf":1.0},"269":{"tf":1.0},"277":{"tf":1.0},"285":{"tf":1.0},"293":{"tf":1.0},"30":{"tf":1.0},"301":{"tf":1.0},"314":{"tf":1.0},"329":{"tf":1.0},"337":{"tf":1.0},"348":{"tf":1.0},"362":{"tf":1.0},"371":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"398":{"tf":1.0},"409":{"tf":1.0},"424":{"tf":1.0},"43":{"tf":1.0},"432":{"tf":1.0},"441":{"tf":1.0},"449":{"tf":1.0},"459":{"tf":1.0},"471":{"tf":1.0},"479":{"tf":1.0},"492":{"tf":1.0},"505":{"tf":1.0},"524":{"tf":1.0},"540":{"tf":1.0},"56":{"tf":1.0},"566":{"tf":1.0},"57":{"tf":1.0},"582":{"tf":1.0},"593":{"tf":1.0},"66":{"tf":1.0},"75":{"tf":1.0},"80":{"tf":1.0},"85":{"tf":1.0},"90":{"tf":1.0}}}}}}}},"o":{"df":45,"docs":{"151":{"tf":1.0},"157":{"tf":1.0},"165":{"tf":1.0},"175":{"tf":1.0},"185":{"tf":1.0},"193":{"tf":1.0},"207":{"tf":1.0},"215":{"tf":1.0},"219":{"tf":1.0},"227":{"tf":1.0},"23":{"tf":1.0},"242":{"tf":1.0},"253":{"tf":1.0},"266":{"tf":1.0},"27":{"tf":1.0},"274":{"tf":1.0},"282":{"tf":1.0},"290":{"tf":1.0},"298":{"tf":1.0},"305":{"tf":1.0},"31":{"tf":1.0},"326":{"tf":1.0},"334":{"tf":1.0},"345":{"tf":1.0},"354":{"tf":1.0},"36":{"tf":1.0},"368":{"tf":1.0},"378":{"tf":1.0},"387":{"tf":1.0},"395":{"tf":1.0},"406":{"tf":1.0},"429":{"tf":1.0},"438":{"tf":1.0},"446":{"tf":1.0},"454":{"tf":1.0},"46":{"tf":1.0},"466":{"tf":1.0},"476":{"tf":1.0},"493":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"541":{"tf":1.0},"56":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"365":{"tf":1.0}},"i":{"df":1,"docs":{"230":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":1,"docs":{"322":{"tf":1.0}},"i":{"df":0,"docs":{},"z":{"df":7,"docs":{"499":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":1,"docs":{"375":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"207":{"tf":1.0}}}}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"386":{"tf":1.0},"566":{"tf":1.0}}}},"df":0,"docs":{}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"165":{"tf":1.0},"523":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"r":{"df":10,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.0},"128":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0},"579":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"321":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"53":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"578":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":4,"docs":{"493":{"tf":1.0},"506":{"tf":1.0},"525":{"tf":1.0},"541":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"465":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":2,"docs":{"29":{"tf":1.0},"42":{"tf":1.0}}}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"518":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"o":{"a":{"d":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"550":{"tf":1.0},"553":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":2,"docs":{"28":{"tf":1.0},"41":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"242":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":17,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.0},"128":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0},"189":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"319":{"tf":1.0},"418":{"tf":1.0},"437":{"tf":1.0},"464":{"tf":1.0},"500":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.0},"527":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":14,"docs":{"227":{"tf":1.0},"230":{"tf":1.0},"235":{"tf":1.0},"253":{"tf":1.0},"356":{"tf":1.0},"405":{"tf":1.0},"499":{"tf":1.0},"71":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.0},"81":{"tf":1.0},"86":{"tf":1.0},"89":{"tf":1.0},"91":{"tf":1.0}}}}}},"s":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":1,"docs":{"563":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"344":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"df":4,"docs":{"234":{"tf":1.0},"252":{"tf":1.0},"437":{"tf":1.0},"464":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"198":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"178":{"tf":1.0},"245":{"tf":1.0}}}},"df":0,"docs":{}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"234":{"tf":1.0},"458":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"68":{"tf":1.0},"69":{"tf":1.0}}},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"588":{"tf":1.0}}}},"df":0,"docs":{}},"l":{"df":1,"docs":{"235":{"tf":1.0}}}},"n":{"d":{"df":1,"docs":{"579":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"106":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"132":{"tf":1.0},"136":{"tf":1.0},"227":{"tf":1.0},"231":{"tf":1.0}}}},"i":{"c":{"df":2,"docs":{"429":{"tf":1.0},"580":{"tf":1.0}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"601":{"tf":1.0}}}}}}}},"h":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":3,"docs":{"418":{"tf":1.0},"419":{"tf":1.0},"476":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":18,"docs":{"37":{"tf":1.0},"40":{"tf":1.0},"44":{"tf":1.0},"45":{"tf":1.0},"46":{"tf":1.0},"484":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"494":{"tf":1.0},"495":{"tf":1.0},"500":{"tf":1.0},"51":{"tf":1.0},"516":{"tf":1.0},"518":{"tf":1.0},"534":{"tf":1.0},"536":{"tf":1.0},"548":{"tf":1.0},"57":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"25":{"tf":1.0},"323":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"466":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"274":{"tf":1.0},"589":{"tf":1.0}}}},"z":{"df":0,"docs":{},"e":{"df":2,"docs":{"342":{"tf":1.0},"527":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":2,"docs":{"141":{"tf":1.0},"150":{"tf":1.0}}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"274":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":7,"docs":{"169":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"349":{"tf":1.0},"470":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":2,"docs":{"19":{"tf":1.0},"50":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"c":{"df":35,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0},"162":{"tf":1.0},"172":{"tf":1.0},"182":{"tf":1.0},"204":{"tf":1.0},"212":{"tf":1.0},"224":{"tf":1.0},"238":{"tf":1.0},"249":{"tf":1.0},"262":{"tf":1.0},"271":{"tf":1.0},"279":{"tf":1.0},"287":{"tf":1.0},"295":{"tf":1.0},"303":{"tf":1.0},"331":{"tf":1.0},"351":{"tf":1.0},"364":{"tf":1.0},"373":{"tf":1.0},"384":{"tf":1.0},"392":{"tf":1.0},"400":{"tf":1.0},"411":{"tf":1.0},"426":{"tf":1.0},"434":{"tf":1.0},"443":{"tf":1.0},"451":{"tf":1.0},"461":{"tf":1.0},"473":{"tf":1.0},"481":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"310":{"tf":1.0},"322":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"322":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":3,"docs":{"33":{"tf":1.0},"34":{"tf":1.0},"47":{"tf":1.0}}}}},"df":0,"docs":{}},"i":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"259":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"242":{"tf":1.0}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":1,"docs":{"395":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":2,"docs":{"561":{"tf":1.0},"562":{"tf":1.0}}}},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"253":{"tf":1.0},"324":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"199":{"tf":1.0}}},"u":{"df":82,"docs":{"151":{"tf":1.0},"157":{"tf":1.0},"158":{"tf":1.0},"165":{"tf":1.0},"166":{"tf":1.0},"175":{"tf":1.0},"176":{"tf":1.0},"185":{"tf":1.0},"186":{"tf":1.0},"193":{"tf":1.0},"194":{"tf":1.0},"207":{"tf":1.0},"208":{"tf":1.0},"215":{"tf":1.0},"216":{"tf":1.0},"219":{"tf":1.0},"220":{"tf":1.0},"227":{"tf":1.0},"228":{"tf":1.0},"23":{"tf":1.0},"242":{"tf":1.0},"243":{"tf":1.0},"253":{"tf":1.0},"254":{"tf":1.0},"266":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.0},"274":{"tf":1.0},"275":{"tf":1.0},"282":{"tf":1.0},"283":{"tf":1.0},"290":{"tf":1.0},"291":{"tf":1.0},"298":{"tf":1.0},"299":{"tf":1.0},"305":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"326":{"tf":1.0},"327":{"tf":1.0},"334":{"tf":1.0},"335":{"tf":1.0},"345":{"tf":1.0},"346":{"tf":1.0},"354":{"tf":1.0},"355":{"tf":1.0},"36":{"tf":1.0},"368":{"tf":1.0},"369":{"tf":1.0},"378":{"tf":1.0},"379":{"tf":1.0},"387":{"tf":1.0},"388":{"tf":1.0},"395":{"tf":1.0},"396":{"tf":1.0},"406":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"429":{"tf":1.0},"430":{"tf":1.0},"438":{"tf":1.0},"439":{"tf":1.0},"446":{"tf":1.0},"447":{"tf":1.0},"454":{"tf":1.0},"455":{"tf":1.0},"46":{"tf":1.0},"466":{"tf":1.0},"467":{"tf":1.0},"476":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"493":{"tf":1.0},"501":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"519":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"537":{"tf":1.0},"541":{"tf":1.0},"56":{"tf":1.0}}}}},"d":{"df":2,"docs":{"508":{"tf":1.0},"509":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":3,"docs":{"516":{"tf":1.0},"534":{"tf":1.0},"548":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":221,"docs":{"151":{"tf":1.0},"154":{"tf":1.0},"155":{"tf":1.0},"157":{"tf":1.0},"159":{"tf":1.0},"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"165":{"tf":1.0},"167":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"175":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"185":{"tf":1.0},"187":{"tf":1.0},"193":{"tf":1.0},"195":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"207":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"215":{"tf":1.0},"217":{"tf":1.0},"219":{"tf":1.0},"221":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"227":{"tf":1.0},"229":{"tf":1.0},"23":{"tf":1.0},"237":{"tf":1.0},"238":{"tf":1.0},"239":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"242":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.0},"25":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.0},"253":{"tf":1.0},"255":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"274":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"279":{"tf":1.0},"280":{"tf":1.0},"281":{"tf":1.0},"282":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"290":{"tf":1.0},"292":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"298":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0},"305":{"tf":1.0},"307":{"tf":1.0},"31":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"32":{"tf":1.0},"326":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"331":{"tf":1.0},"332":{"tf":1.0},"333":{"tf":1.0},"334":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.0},"340":{"tf":1.0},"345":{"tf":1.0},"347":{"tf":1.0},"35":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"354":{"tf":1.0},"36":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"368":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.0},"380":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"386":{"tf":1.0},"387":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"395":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.0},"406":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.0},"411":{"tf":1.0},"413":{"tf":1.0},"414":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0},"429":{"tf":1.0},"431":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"438":{"tf":1.0},"44":{"tf":1.0},"440":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"448":{"tf":1.0},"45":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"454":{"tf":1.0},"456":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"466":{"tf":1.0},"468":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":1.0},"475":{"tf":1.0},"476":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"488":{"tf":1.0},"489":{"tf":1.0},"491":{"tf":1.0},"493":{"tf":1.0},"497":{"tf":1.4142135623730951},"498":{"tf":1.4142135623730951},"500":{"tf":1.0},"502":{"tf":1.0},"506":{"tf":1.4142135623730951},"507":{"tf":1.0},"51":{"tf":1.0},"518":{"tf":1.0},"520":{"tf":1.0},"525":{"tf":1.4142135623730951},"526":{"tf":1.0},"536":{"tf":1.0},"538":{"tf":1.0},"541":{"tf":1.4142135623730951},"55":{"tf":1.0},"56":{"tf":1.0},"57":{"tf":1.0},"602":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":5,"docs":{"193":{"tf":1.0},"197":{"tf":1.0},"387":{"tf":1.0},"567":{"tf":1.0},"571":{"tf":1.0}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"62":{"tf":1.0}}}}}}},"u":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"322":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":3,"docs":{"405":{"tf":1.0},"509":{"tf":1.4142135623730951},"53":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"497":{"tf":1.0}}}}}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"309":{"tf":1.0},"500":{"tf":1.0}}}},"df":0,"docs":{}}}},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"305":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.0}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"320":{"tf":1.0}}}}}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"573":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"79":{"tf":1.0}}}}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":6,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.0},"128":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":31,"docs":{"163":{"tf":1.0},"173":{"tf":1.0},"183":{"tf":1.0},"205":{"tf":1.0},"213":{"tf":1.0},"225":{"tf":1.0},"239":{"tf":1.0},"250":{"tf":1.0},"263":{"tf":1.0},"272":{"tf":1.0},"280":{"tf":1.0},"288":{"tf":1.0},"296":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.0},"332":{"tf":1.0},"339":{"tf":1.0},"352":{"tf":1.0},"366":{"tf":1.0},"376":{"tf":1.0},"382":{"tf":1.0},"393":{"tf":1.0},"401":{"tf":1.0},"413":{"tf":1.0},"427":{"tf":1.0},"435":{"tf":1.0},"444":{"tf":1.0},"452":{"tf":1.0},"462":{"tf":1.0},"474":{"tf":1.0},"482":{"tf":1.0}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"157":{"tf":1.0},"489":{"tf":1.0}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"61":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"62":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":2,"docs":{"412":{"tf":1.0},"499":{"tf":1.0}}},"k":{"df":3,"docs":{"266":{"tf":1.0},"487":{"tf":1.0},"498":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"341":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"343":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":2,"docs":{"344":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":5,"docs":{"189":{"tf":1.0},"190":{"tf":1.0},"359":{"tf":1.0},"458":{"tf":1.0},"551":{"tf":1.0}}}}},"l":{";":{"d":{"df":0,"docs":{},"r":{"df":2,"docs":{"24":{"tf":1.0},"38":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":3,"docs":{"516":{"tf":1.0},"534":{"tf":1.0},"548":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"r":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"342":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"132":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"123":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"t":{"df":7,"docs":{"219":{"tf":1.0},"341":{"tf":1.0},"567":{"tf":1.0},"568":{"tf":1.0},"574":{"tf":1.0},"575":{"tf":1.0},"589":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"554":{"tf":1.0},"558":{"tf":1.0}}}},"df":10,"docs":{"165":{"tf":1.0},"274":{"tf":1.0},"282":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"34":{"tf":1.0},"387":{"tf":1.0},"438":{"tf":1.0},"507":{"tf":1.0},"526":{"tf":1.0}},"m":{"df":2,"docs":{"395":{"tf":1.0},"405":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"242":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"e":{"df":1,"docs":{"154":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":5,"docs":{"253":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"518":{"tf":1.0},"521":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"51":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"342":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"583":{"tf":1.0},"599":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":2,"docs":{"465":{"tf":1.0},"565":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"84":{"tf":1.0}}}}}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"12":{"tf":1.0},"152":{"tf":1.0},"485":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"54":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"497":{"tf":1.0}}}},"df":0,"docs":{}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"465":{"tf":1.0}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"344":{"tf":1.0}}},"df":0,"docs":{}}}}}},"p":{"df":2,"docs":{"201":{"tf":1.0},"457":{"tf":1.0}}},"s":{"df":14,"docs":{"155":{"tf":1.0},"185":{"tf":1.0},"252":{"tf":1.0},"274":{"tf":1.0},"321":{"tf":1.0},"357":{"tf":1.0},"415":{"tf":1.0},"437":{"tf":1.0},"45":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"564":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"412":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"325":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}}},"t":{"df":1,"docs":{"498":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"234":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"404":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":8,"docs":{"10":{"tf":1.0},"13":{"tf":1.0},"20":{"tf":1.0},"23":{"tf":1.0},"37":{"tf":1.0},"52":{"tf":1.0},"58":{"tf":1.0},"7":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"60":{"tf":1.0}}}}}},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"19":{"tf":1.0},"446":{"tf":1.0}}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"457":{"tf":1.0}},"r":{"df":1,"docs":{"200":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"t":{"df":8,"docs":{"412":{"tf":1.0},"484":{"tf":1.0},"55":{"tf":1.0},"556":{"tf":1.0},"76":{"tf":1.0},"81":{"tf":1.0},"86":{"tf":1.0},"91":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"df":37,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}}}},"y":{"df":5,"docs":{"191":{"tf":1.0},"320":{"tf":1.0},"323":{"tf":1.0},"342":{"tf":1.0},"423":{"tf":1.0}}}},"df":0,"docs":{},"e":{"'":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"499":{"tf":1.0}}}},"r":{"df":1,"docs":{"550":{"tf":1.0}}}},"b":{"df":5,"docs":{"227":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"290":{"tf":1.0},"523":{"tf":1.0}}},"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"0":{"tf":1.0}}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"536":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"e":{"df":1,"docs":{"360":{"tf":1.0}}},"r":{"df":0,"docs":{},"k":{"df":3,"docs":{"10":{"tf":1.0},"3":{"tf":1.0},"50":{"tf":1.0}}},"l":{"d":{"df":1,"docs":{"215":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"341":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"324":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":7,"docs":{"193":{"tf":1.0},"290":{"tf":1.0},"497":{"tf":1.0},"498":{"tf":1.0},"51":{"tf":1.0},"55":{"tf":1.0},"601":{"tf":1.0}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"498":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":2,"docs":{"196":{"tf":1.0},"359":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"563":{"tf":1.0}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":3,"docs":{"132":{"tf":1.0},"136":{"tf":1.0},"137":{"tf":1.0}}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"96":{"tf":1.0}}}}}},"z":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"343":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"4":{"tf":1.0}}}}}}}}}},"lang":"English","pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5"},"results_options":{"limit_results":30,"teaser_word_count":30},"search_options":{"bool":"OR","expand":true,"fields":{"body":{"boost":1},"breadcrumbs":{"boost":1},"title":{"boost":2}}}}); \ No newline at end of file diff --git a/docs/searchindex.json b/docs/searchindex.json new file mode 100644 index 00000000..a4ddc62b --- /dev/null +++ b/docs/searchindex.json @@ -0,0 +1 @@ +{"doc_urls":["welcome.html#-welcome","welcome.html#leads","welcome.html#getting-involved","welcome.html#what-is-the-goal-of-this-working-group","welcome.html#zulip","welcome.html#license","welcome.html#contribution","vision.html#-the-vision","vision.html#what-is-this","vision.html#where-we-are-and-where-we-are-going","vision.html#the-vision-drives-the-work","vision.html#involving-the-whole-community","vision.html#-under-construction-help-needed-","vision/how_to_vision.html#-how-to-vision","vision/how_to_vision.html#how-you-can-help","vision/how_to_vision.html#the-big-picture","vision/how_to_vision.html#brainstorming","vision/how_to_vision.html#harmonizing","vision/how_to_vision.html#living-document","vision/how_to_vision.html#wait-did-somebody-say-awards","vision/how_to_vision/projects.html#-how-to-vision-projects","vision/how_to_vision/projects.html#how-to-open-a-pr","vision/how_to_vision/projects.html#faqs-to-answer-in-your-pr","vision/how_to_vision/status_quo.html#-how-to-vision-status-quo-stories","vision/how_to_vision/status_quo.html#tldr","vision/how_to_vision/status_quo.html#optional-open-an-issue-to-discuss-your-story-or-find-others-with-similar-experiences","vision/how_to_vision/status_quo.html#how-to-open-a-pr","vision/how_to_vision/status_quo.html#goals-of-a-status-quo-pr","vision/how_to_vision/status_quo.html#the-role-of-the-faq","vision/how_to_vision/status_quo.html#the-review-process","vision/how_to_vision/status_quo.html#-frequently-asked-questions","vision/how_to_vision/status_quo.html#what-is-the-process-to-propose-a-status-quo-story","vision/how_to_vision/status_quo.html#what-if-my-story-applies-to-multiple-characters","vision/how_to_vision/status_quo.html#how-much-detail-should-i-give-how-specific-should-i-be","vision/how_to_vision/status_quo.html#what-should-i-do-when-im-trying-to-be-specific-but-i-have-to-make-an-arbitrary-choice","vision/how_to_vision/status_quo.html#none-of-the-characters-are-a-fit-for-my-story","vision/how_to_vision/status_quo.html#how-should-i-describe-the-evidence-for-my-status-quo-story","vision/how_to_vision/shiny_future.html#-how-to-vision-shiny-future-stories","vision/how_to_vision/shiny_future.html#tldr","vision/how_to_vision/shiny_future.html#how-to-open-a-pr","vision/how_to_vision/shiny_future.html#goals-of-a-shiny-future-pr","vision/how_to_vision/shiny_future.html#the-role-of-the-faq","vision/how_to_vision/shiny_future.html#the-review-process","vision/how_to_vision/shiny_future.html#-frequently-asked-questions","vision/how_to_vision/shiny_future.html#what-is-the-process-to-propose-a-shiny-future-story","vision/how_to_vision/shiny_future.html#what-character-should-i-use-for-my-shiny-future-story","vision/how_to_vision/shiny_future.html#what-do-i-do-if-there-is-no-status-quo-story-for-my-shiny-future","vision/how_to_vision/shiny_future.html#how-much-detail-should-i-give-how-specific-should-i-be","vision/how_to_vision/shiny_future.html#what-do-i-do-when-i-get-to-details-that-i-dont-know-yet","vision/how_to_vision/shiny_future.html#do-we-have-to-know-exactly-how-we-will-achieve-the-shiny-future","vision/how_to_vision/shiny_future.html#what-do-i-do-if-somebody-leaves-a-comment-about-how-my-idea-will-work-and-i-dont-know-the-answer","vision/how_to_vision/shiny_future.html#what-if-we-write-a-shiny-future-story-but-it-turns-out-to-be-impossible-to-implement","vision/how_to_vision/comment.html#-how-to-vision-constructive-comments","vision/how_to_vision/comment.html#be-respectful-and-supportive","vision/how_to_vision/comment.html#comment-to-understand-or-improve-not-to-negate-or-dissuade","vision/how_to_vision/comment.html#you-might-just-want-to-write-your-own-story","vision/how_to_vision/comment.html#good-questions-for-status-quo-stories","vision/how_to_vision/comment.html#good-questions-for-shiny-future-stories","vision/how_to_vision/awards.html#-how-to-vision-awards","vision/how_to_vision/awards.html#award-categories","vision/how_to_vision/awards.html#voting","vision/tenets.html#-design-tenets-for-async","vision/tenets.html#stress-tests","vision/characters.html#-cast-of-characters","vision/characters.html#what-is-this","vision/characters.html#the-characters","vision/characters.html#-frequently-asked-questions","vision/characters.html#where-do-the-names-come-from","vision/characters.html#i-dont-see-myself-in-these-characters-what-should-i-do","vision/characters.html#i-see-myself-in-more-than-one-of-these-characters","vision/characters/alan.html#-cast-of-characters","vision/characters/alan.html#alan-the-experienced-gcd-language-developer-new-to-rust","vision/characters/alan.html#variant-a-dynamic-languages","vision/characters/alan.html#variant-b-java","vision/characters/alan.html#variant-c-kotlin","vision/characters/alan.html#-frequently-asked-questions","vision/characters/alan.html#what-does-alan-want-most-from-async-rust","vision/characters/alan.html#what-expectations-does-alan-bring-from-his-current-environment","vision/characters/grace.html#-cast-of-characters","vision/characters/grace.html#grace-the-systems-programming-expert-new-to-rust","vision/characters/grace.html#-frequently-asked-questions","vision/characters/grace.html#what-does-grace-want-most-from-async-rust","vision/characters/grace.html#what-expectations-does-grace-bring-from-her-current-environment","vision/characters/niklaus.html#-cast-of-characters","vision/characters/niklaus.html#niklaus-new-programmer-from-an-unconventional-background","vision/characters/niklaus.html#-frequently-asked-questions","vision/characters/niklaus.html#what-does-niklaus-want-most-from-async-rust","vision/characters/niklaus.html#what-expectations-does-niklaus-bring-from-his-current-environment","vision/characters/barbara.html#-cast-of-characters","vision/characters/barbara.html#barbara-the-experienced-rust-developer","vision/characters/barbara.html#-frequently-asked-questions","vision/characters/barbara.html#what-does-barbara-want-most-from-async-rust","vision/characters/barbara.html#what-expectations-does-barbara-bring-from-her-current-environment","vision/projects.html#-projects","vision/projects.html#what-is-this","vision/projects.html#list-of-projects","vision/projects.html#dont-find-a-project-like-yours-here","vision/projects/template.html#-projects-name-domain","vision/projects/template.html#what-is-this","vision/projects/template.html#description","vision/projects/template.html#-frequently-asked-questions","vision/projects/template.html#what-makes-this-project-different-from-others","vision/projects/template.html#does-this-project-require-a-custom-tailored-runtime","vision/projects/template.html#how-much-of-this-project-is-likely-to-be-built-with-open-source-components-from-cratesio","vision/projects/template.html#what-is-of-most-concern-to-this-project","vision/projects/template.html#what-is-of-least-concern-to-this-project","vision/projects/MonsterMesh.html#-projects-monstermesh-embedded-sensors","vision/projects/MonsterMesh.html#what-is-this","vision/projects/MonsterMesh.html#description","vision/projects/MonsterMesh.html#-frequently-asked-questions","vision/projects/MonsterMesh.html#what-makes-embedded-projects-like-monstermesh-different-from-others","vision/projects/MonsterMesh.html#does-monstermesh-require-a-custom-tailored-runtime","vision/projects/MonsterMesh.html#how-much-of-this-project-is-likely-to-be-built-with-open-source-components-from-cratesio","vision/projects/MonsterMesh.html#how-did-you-pick-the-name","vision/projects/DistriData.html#-projects-distridata-generic-infrastructure","vision/projects/DistriData.html#what-is-this","vision/projects/DistriData.html#description","vision/projects/DistriData.html#-frequently-asked-questions","vision/projects/DistriData.html#what-makes-distridata-different-from-others","vision/projects/DistriData.html#does-distridata-require-a-custom-tailored-runtime","vision/projects/DistriData.html#how-much-of-this-project-is-likely-to-be-built-with-open-source-components-from-cratesio","vision/projects/DistriData.html#what-is-of-most-concern-to-this-project","vision/projects/DistriData.html#what-is-of-least-concern-to-this-project","vision/projects/TrafficMonitor.html#-projects-trafficmonitor-custom-infrastructure","vision/projects/TrafficMonitor.html#what-is-this","vision/projects/TrafficMonitor.html#description","vision/projects/TrafficMonitor.html#-frequently-asked-questions","vision/projects/TrafficMonitor.html#what-makes-networking-infrastructure-projects-like-trafficmonitor-different-from-others","vision/projects/TrafficMonitor.html#does-trafficmonitor-require-a-custom-tailored-runtime","vision/projects/TrafficMonitor.html#how-much-of-this-project-is-likely-to-be-built-with-open-source-components-from-cratesio","vision/projects/TrafficMonitor.html#what-is-of-most-concern-to-this-project","vision/projects/TrafficMonitor.html#what-is-of-least-concern-to-this-project","vision/projects/YouBuy.html#-projects-youbuy-traditional-server-application","vision/projects/YouBuy.html#what-is-this","vision/projects/YouBuy.html#description","vision/projects/YouBuy.html#-frequently-asked-questions","vision/projects/YouBuy.html#what-makes-youbuy-and-other-server-applications-different-from-others","vision/projects/YouBuy.html#does-youbuy-require-a-custom-tailored-runtime","vision/projects/YouBuy.html#how-much-of-this-project-is-likely-to-be-built-with-open-source-components-from-cratesio","vision/projects/YouBuy.html#what-is-of-most-concern-to-this-project","vision/projects/YouBuy.html#what-is-of-least-concern-to-this-project","vision/projects/SLOW.html#-projects-slow-protocol-implementation","vision/projects/SLOW.html#what-is-this","vision/projects/SLOW.html#description","vision/projects/SLOW.html#-frequently-asked-questions","vision/projects/SLOW.html#what-makes-this-project-different-from-others","vision/projects/SLOW.html#does-this-project-require-a-custom-tailored-runtime","vision/projects/SLOW.html#how-much-of-this-project-is-likely-to-be-built-with-open-source-components-from-cratesio","vision/projects/SLOW.html#what-is-of-most-concern-to-this-project","vision/projects/SLOW.html#what-is-of-least-concern-to-this-project","vision/projects/SLOW.html#why-is-this-called-slow","vision/status_quo.html#-status-quo-stories","vision/status_quo.html#-under-construction-help-needed-","vision/status_quo.html#what-is-this","vision/status_quo.html#based-on-a-true-story","vision/status_quo.html#the-stories-provide-data-we-use-to-prioritize-not-a-prioritization-itself","vision/status_quo.html#metanarrative","vision/status_quo/template.html#-status-quo-stories-template","vision/status_quo/template.html#-warning-draft-status-","vision/status_quo/template.html#the-story","vision/status_quo/template.html#-frequently-asked-questions","vision/status_quo/template.html#what-are-the-morals-of-the-story","vision/status_quo/template.html#what-are-the-sources-for-this-story","vision/status_quo/template.html#why-did-you-choose--name--to-tell-this-story","vision/status_quo/template.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_builds_a_cache.html#-status-quo-stories-alan-tries-to-cache-requests-which-doesnt-always-happen","vision/status_quo/alan_builds_a_cache.html#-warning-draft-status-","vision/status_quo/alan_builds_a_cache.html#the-story","vision/status_quo/alan_builds_a_cache.html#the-bug","vision/status_quo/alan_builds_a_cache.html#the-solution","vision/status_quo/alan_builds_a_cache.html#-frequently-asked-questions","vision/status_quo/alan_builds_a_cache.html#what-are-the-morals-of-the-story","vision/status_quo/alan_builds_a_cache.html#what-are-the-sources-for-this-story","vision/status_quo/alan_builds_a_cache.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_builds_a_cache.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_finds_database_drops_hard.html#-status-quo-stories-alan-finds-dropping-database-handles-is-hard","vision/status_quo/alan_finds_database_drops_hard.html#-warning-draft-status-","vision/status_quo/alan_finds_database_drops_hard.html#the-problem","vision/status_quo/alan_finds_database_drops_hard.html#searching-for-the-solution","vision/status_quo/alan_finds_database_drops_hard.html#finding-the-solution","vision/status_quo/alan_finds_database_drops_hard.html#-frequently-asked-questions","vision/status_quo/alan_finds_database_drops_hard.html#what-are-the-morals-of-the-story","vision/status_quo/alan_finds_database_drops_hard.html#what-are-the-sources-for-this-story","vision/status_quo/alan_finds_database_drops_hard.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_finds_database_drops_hard.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_has_an_event_loop.html#-status-quo-stories-alan-has-an-external-event-loop-and-wants-to-use-futuresstreams","vision/status_quo/alan_has_an_event_loop.html#-warning-draft-status-","vision/status_quo/alan_has_an_event_loop.html#the-story","vision/status_quo/alan_has_an_event_loop.html#alans-hopes-and-dreams","vision/status_quo/alan_has_an_event_loop.html#first-time-dealing-with-runtimes","vision/status_quo/alan_has_an_event_loop.html#fun-time-is-over","vision/status_quo/alan_has_an_event_loop.html#the-cheap-way-out","vision/status_quo/alan_has_an_event_loop.html#-frequently-asked-questions","vision/status_quo/alan_hates_writing_a_stream.html#-status-quo-stories-alan-hates-writing-a-stream","vision/status_quo/alan_hates_writing_a_stream.html#-warning-draft-status-","vision/status_quo/alan_hates_writing_a_stream.html#the-story","vision/status_quo/alan_hates_writing_a_stream.html#imperatively-wrong","vision/status_quo/alan_hates_writing_a_stream.html#implementing-stream","vision/status_quo/alan_hates_writing_a_stream.html#pin-scream","vision/status_quo/alan_hates_writing_a_stream.html#state-machine","vision/status_quo/alan_hates_writing_a_stream.html#wakers","vision/status_quo/alan_hates_writing_a_stream.html#gives-up","vision/status_quo/alan_hates_writing_a_stream.html#-frequently-asked-questions","vision/status_quo/alan_hates_writing_a_stream.html#what-are-the-morals-of-the-story","vision/status_quo/alan_hates_writing_a_stream.html#what-are-the-sources-for-this-story","vision/status_quo/alan_hates_writing_a_stream.html#why-did-you-choose--alan--to-tell-this-story","vision/status_quo/alan_hates_writing_a_stream.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_iteratively_regresses.html#-status-quo-stories-alan-iteratively-regresses-performance","vision/status_quo/alan_iteratively_regresses.html#-warning-draft-status-","vision/status_quo/alan_iteratively_regresses.html#the-story","vision/status_quo/alan_iteratively_regresses.html#-frequently-asked-questions","vision/status_quo/alan_iteratively_regresses.html#what-are-the-morals-of-the-story","vision/status_quo/alan_iteratively_regresses.html#what-are-the-sources-for-this-story","vision/status_quo/alan_iteratively_regresses.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_iteratively_regresses.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_lost_the_world.html#-status-quo-stories-alan-lost-the-world","vision/status_quo/alan_lost_the_world.html#-warning-draft-status-","vision/status_quo/alan_lost_the_world.html#the-story","vision/status_quo/alan_lost_the_world.html#-frequently-asked-questions","vision/status_quo/alan_needs_async_in_traits.html#-status-quo-stories-alan-needs-async-in-traits","vision/status_quo/alan_needs_async_in_traits.html#-warning-draft-status-","vision/status_quo/alan_needs_async_in_traits.html#the-story","vision/status_quo/alan_needs_async_in_traits.html#-frequently-asked-questions","vision/status_quo/alan_needs_async_in_traits.html#what-are-the-morals-of-the-story","vision/status_quo/alan_needs_async_in_traits.html#what-are-the-sources-for-this-story","vision/status_quo/alan_needs_async_in_traits.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_needs_async_in_traits.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_picks_web_server.html#-status-quo-stories-alan-wants-to-migrate-a-web-server-to-rust","vision/status_quo/alan_picks_web_server.html#-warning-draft-status-","vision/status_quo/alan_picks_web_server.html#the-story","vision/status_quo/alan_picks_web_server.html#is-rust-ready-for-the-web","vision/status_quo/alan_picks_web_server.html#picking-a-web-server-is-ok","vision/status_quo/alan_picks_web_server.html#the-first-endpoint","vision/status_quo/alan_picks_web_server.html#first-problem-incompatible-runtimes","vision/status_quo/alan_picks_web_server.html#second-problem-incompatible-versions-of-the-same-runtime","vision/status_quo/alan_picks_web_server.html#can-alan-sell-the-rust-migration-to-his-boss","vision/status_quo/alan_picks_web_server.html#-frequently-asked-questions","vision/status_quo/alan_picks_web_server.html#what-are-the-morals-of-the-story","vision/status_quo/alan_picks_web_server.html#what-are-the-sources-for-this-story","vision/status_quo/alan_picks_web_server.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_picks_web_server.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_picks_web_server.html#how-would-this-story-have-played-out-differently-if-alan-came-from-another-gcd-language","vision/status_quo/alan_runs_into_stack_trouble.html#-status-quo-stories-alan-runs-into-stack-allocation-trouble","vision/status_quo/alan_runs_into_stack_trouble.html#-warning-draft-status-","vision/status_quo/alan_runs_into_stack_trouble.html#the-problem","vision/status_quo/alan_runs_into_stack_trouble.html#searching-for-the-solution","vision/status_quo/alan_runs_into_stack_trouble.html#finding-the-solution","vision/status_quo/alan_runs_into_stack_trouble.html#-frequently-asked-questions","vision/status_quo/alan_runs_into_stack_trouble.html#what-are-the-morals-of-the-story","vision/status_quo/alan_runs_into_stack_trouble.html#what-are-the-sources-for-this-story","vision/status_quo/alan_runs_into_stack_trouble.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_runs_into_stack_trouble.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_runs_into_stack_trouble.html#could-alan-have-used-another-api-to-achieve-the-same-objectives","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#-status-quo-stories-alan-started-trusting-the-rust-compiler-but-then-async","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#-warning-draft-status-","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#the-story","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#trust-the-compiler","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#the-first-async-project","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#fractured-futures-fractured-trust","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#the-spider-man-effect","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#-frequently-asked-questions","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#what-are-the-morals-of-the-story","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#what-are-the-sources-for-this-story","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html#how-would-this-story-have-played-out-differently-if-alan-came-from-another-gcd-language","vision/status_quo/alan_thinks_he_needs_async_locks.html#-status-quo-stories-alan-thinks-he-needs-async-locks","vision/status_quo/alan_thinks_he_needs_async_locks.html#-warning-draft-status-","vision/status_quo/alan_thinks_he_needs_async_locks.html#the-story","vision/status_quo/alan_thinks_he_needs_async_locks.html#-frequently-asked-questions","vision/status_quo/alan_thinks_he_needs_async_locks.html#what-are-the-morals-of-the-story","vision/status_quo/alan_thinks_he_needs_async_locks.html#what-are-the-sources-for-this-story","vision/status_quo/alan_thinks_he_needs_async_locks.html#why-did-you-choose--alan--to-tell-this-story","vision/status_quo/alan_thinks_he_needs_async_locks.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_tries_a_socket_sink.html#-status-quo-stories-alan-tries-using-a-socket-sink","vision/status_quo/alan_tries_a_socket_sink.html#-warning-draft-status-","vision/status_quo/alan_tries_a_socket_sink.html#the-story","vision/status_quo/alan_tries_a_socket_sink.html#-frequently-asked-questions","vision/status_quo/alan_tries_a_socket_sink.html#what-are-the-morals-of-the-story","vision/status_quo/alan_tries_a_socket_sink.html#what-are-the-sources-for-this-story","vision/status_quo/alan_tries_a_socket_sink.html#why-did-you-choose--alan--to-tell-this-story","vision/status_quo/alan_tries_a_socket_sink.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_tries_to_debug_a_hang.html#-status-quo-stories-alan-tries-to-debug-a-hang","vision/status_quo/alan_tries_to_debug_a_hang.html#-warning-draft-status-","vision/status_quo/alan_tries_to_debug_a_hang.html#the-story","vision/status_quo/alan_tries_to_debug_a_hang.html#-frequently-asked-questions","vision/status_quo/alan_tries_to_debug_a_hang.html#what-are-the-morals-of-the-story","vision/status_quo/alan_tries_to_debug_a_hang.html#what-are-the-sources-for-this-story","vision/status_quo/alan_tries_to_debug_a_hang.html#why-did-you-choose-alan-to-tell-this-story","vision/status_quo/alan_tries_to_debug_a_hang.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/alan_writes_a_web_framework.html#-status-quo-stories-alan-writes-a-web-framework","vision/status_quo/alan_writes_a_web_framework.html#-warning-draft-status-","vision/status_quo/alan_writes_a_web_framework.html#the-story","vision/status_quo/alan_writes_a_web_framework.html#-frequently-asked-questions","vision/status_quo/alan_writes_a_web_framework.html#what-are-the-morals-of-the-story","vision/status_quo/alan_writes_a_web_framework.html#what-are-the-sources-for-this-story","vision/status_quo/alan_writes_a_web_framework.html#why-did-you-choose-alanyoubuy-to-tell-this-story","vision/status_quo/alan_writes_a_web_framework.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_anguishes_over_http.html#-status-quo-stories-barbara-anguishes-over-http","vision/status_quo/barbara_anguishes_over_http.html#-warning-draft-status-","vision/status_quo/barbara_anguishes_over_http.html#the-story","vision/status_quo/barbara_anguishes_over_http.html#-frequently-asked-questions","vision/status_quo/barbara_anguishes_over_http.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_anguishes_over_http.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_anguishes_over_http.html#why-did-you-choose--barbara--to-tell-this-story","vision/status_quo/barbara_bridges_sync_and_async.html#-status-quo-stories-barbara-bridges-sync-and-async-in-perfrust-langorg","vision/status_quo/barbara_bridges_sync_and_async.html#-warning-draft-status-","vision/status_quo/barbara_bridges_sync_and_async.html#the-story","vision/status_quo/barbara_bridges_sync_and_async.html#introducing-block_on","vision/status_quo/barbara_bridges_sync_and_async.html#switching-to-async-main","vision/status_quo/barbara_bridges_sync_and_async.html#trying-out-spawn_blocking","vision/status_quo/barbara_bridges_sync_and_async.html#trying-out-join_all","vision/status_quo/barbara_bridges_sync_and_async.html#filtering","vision/status_quo/barbara_bridges_sync_and_async.html#and-the-cycle-begins-again","vision/status_quo/barbara_bridges_sync_and_async.html#-frequently-asked-questions","vision/status_quo/barbara_bridges_sync_and_async.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_bridges_sync_and_async.html#why-did-you-choose-barbara-to-tell-this-story","vision/status_quo/barbara_bridges_sync_and_async.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_bridges_sync_and_async.html#why-did-barbara-only-get-deadlocks-in-production-and-not-on-her-laptop","vision/status_quo/barbara_bridges_sync_and_async.html#could-the-runtime-have-prevented-the-deadlock","vision/status_quo/barbara_bridges_sync_and_async.html#is-there-any-way-to-have-kept-aggregate-as-a-synchronous-function","vision/status_quo/barbara_bridges_sync_and_async.html#why-didnt-barbara-just-use-the-sync-api-for-reqwest","vision/status_quo/barbara_bridges_sync_and_async.html#do-people-mix-spawn_blocking-and-spawn-successfully-in-real-code","vision/status_quo/barbara_bridges_sync_and_async.html#what-are-other-ways-people-could-experience-similar-problems-mixing-sync-and-async","vision/status_quo/barbara_bridges_sync_and_async.html#why-wouldnt-barbara-just-make-everything-async-from-the-start","vision/status_quo/barbara_bridges_sync_and_async.html#how-many-variants-of-block_on-are-there","vision/status_quo/barbara_builds_an_async_executor.html#-status-quo-stories-barbara-builds-an-async-executor","vision/status_quo/barbara_builds_an_async_executor.html#-warning-draft-status-","vision/status_quo/barbara_builds_an_async_executor.html#the-story","vision/status_quo/barbara_builds_an_async_executor.html#-frequently-asked-questions","vision/status_quo/barbara_builds_an_async_executor.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_builds_an_async_executor.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_builds_an_async_executor.html#why-did-you-choose-barbara-to-tell-this-story","vision/status_quo/barbara_builds_an_async_executor.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#-status-quo-stories-barbara-carefully-dismisses-embedded-future","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#-warning-draft-status-","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#the-story","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#-frequently-asked-questions","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#why-did-you-choose--barbara--to-tell-this-story","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#future-has-a-lot-of-features-that-barbaras-traits-dont-have----arent-those-worth-the-cost","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#is-the-code-size-impact-of-future-fundamental-or-can-the-design-be-tweaked-in-a-way-that-eliminates-the-tradeoff","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#i-thought-future-was-a-zero-cost-abstraction","vision/status_quo/barbara_carefully_dismisses_embedded_future.html#how-does-barbaras-code-handle-thread-safety-is-her-executor-unsound","vision/status_quo/barbara_compares_some_cpp_code.html#-status-quo-stories-barbara-compares-some-code-and-has-a-performance-problem","vision/status_quo/barbara_compares_some_cpp_code.html#-warning-draft-status-","vision/status_quo/barbara_compares_some_cpp_code.html#the-story","vision/status_quo/barbara_compares_some_cpp_code.html#-frequently-asked-questions","vision/status_quo/barbara_compares_some_cpp_code.html#are-any-of-these-actually-the-correct-solution","vision/status_quo/barbara_compares_some_cpp_code.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_compares_some_cpp_code.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_compares_some_cpp_code.html#why-did-you-choose--barbara--to-tell-this-story","vision/status_quo/barbara_compares_some_cpp_code.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_makes_their_first_steps_into_async.html#-status-quo-stories-barbara-makes-their-first-foray-into-async","vision/status_quo/barbara_makes_their_first_steps_into_async.html#-warning-draft-status-","vision/status_quo/barbara_makes_their_first_steps_into_async.html#barbaras-first-big-project-in-rust-a-journey-marred-by-doubt","vision/status_quo/barbara_makes_their_first_steps_into_async.html#deciding-to-use-async","vision/status_quo/barbara_makes_their_first_steps_into_async.html#learning-about-async","vision/status_quo/barbara_makes_their_first_steps_into_async.html#the-wrong-time-for-big-decisions","vision/status_quo/barbara_makes_their_first_steps_into_async.html#woes-of-a-newcomer-to-async","vision/status_quo/barbara_makes_their_first_steps_into_async.html#confused-ever-after","vision/status_quo/barbara_makes_their_first_steps_into_async.html#-frequently-asked-questions","vision/status_quo/barbara_makes_their_first_steps_into_async.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_makes_their_first_steps_into_async.html#what-are-the-sources-for-their-story","vision/status_quo/barbara_makes_their_first_steps_into_async.html#what-documentation-did-the-character-read-during-this-story","vision/status_quo/barbara_makes_their_first_steps_into_async.html#why-did-you-choose-barbara-to-tell-their-story","vision/status_quo/barbara_makes_their_first_steps_into_async.html#how-would-their-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_needs_async_helpers.html#-status-quo-stories-barbara-needs-async-helpers","vision/status_quo/barbara_needs_async_helpers.html#-warning-draft-status-","vision/status_quo/barbara_needs_async_helpers.html#the-story","vision/status_quo/barbara_needs_async_helpers.html#-frequently-asked-questions","vision/status_quo/barbara_needs_async_helpers.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_needs_async_helpers.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_needs_async_helpers.html#what-are-helper-functionsmacros","vision/status_quo/barbara_needs_async_helpers.html#will-there-be-a-difference-if-lifetimes-are-involved-in-async-recursion-functions","vision/status_quo/barbara_needs_async_helpers.html#why-did-you-choose--barbara--to-tell-this-story","vision/status_quo/barbara_needs_async_helpers.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_plays_with_async.html#-status-quo-stories-barbara-plays-with-async","vision/status_quo/barbara_plays_with_async.html#-warning-draft-status-","vision/status_quo/barbara_plays_with_async.html#the-story","vision/status_quo/barbara_plays_with_async.html#-frequently-asked-questions","vision/status_quo/barbara_plays_with_async.html#why-did-you-choose-barbara-to-tell-this-story","vision/status_quo/barbara_plays_with_async.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_plays_with_async.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_plays_with_async.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_plays_with_async.html#what-are-other-related-stories","vision/status_quo/barbara_tries_async_streams.html#-status-quo-stories-barbara-tries-async-streams","vision/status_quo/barbara_tries_async_streams.html#-warning-draft-status-","vision/status_quo/barbara_tries_async_streams.html#the-story","vision/status_quo/barbara_tries_async_streams.html#-frequently-asked-questions","vision/status_quo/barbara_tries_async_streams.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_tries_async_streams.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_tries_async_streams.html#why-did-you-choose-barbara-to-tell-this-story","vision/status_quo/barbara_tries_async_streams.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_trims_a_stacktrace.html#-status-quo-stories-barbara-trims-a-stacktrace","vision/status_quo/barbara_trims_a_stacktrace.html#-warning-draft-status-","vision/status_quo/barbara_trims_a_stacktrace.html#the-story","vision/status_quo/barbara_trims_a_stacktrace.html#-frequently-asked-questions","vision/status_quo/barbara_trims_a_stacktrace.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_trims_a_stacktrace.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_trims_a_stacktrace.html#why-did-you-choose-barbara-to-tell-this-story","vision/status_quo/barbara_trims_a_stacktrace.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_trims_a_stacktrace.html#how-does-this-compare-to-other-languages","vision/status_quo/barbara_trims_a_stacktrace.html#why-doesnt-barbara-view-this-in-a-debugger","vision/status_quo/barbara_trims_a_stacktrace.html#doesnt-rust-have-backtrace-trimming-support","vision/status_quo/barbara_wants_async_insights.html#-status-quo-stories-barbara-wants-async-insights","vision/status_quo/barbara_wants_async_insights.html#-warning-draft-status-","vision/status_quo/barbara_wants_async_insights.html#the-story","vision/status_quo/barbara_wants_async_insights.html#-frequently-asked-questions","vision/status_quo/barbara_wants_async_insights.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_wants_async_insights.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_wants_async_insights.html#what-are-examples-of-the-kinds-of-things-a-user-might-want-to-have-insight-into","vision/status_quo/barbara_wants_async_insights.html#why-did-you-choose--barbara--to-tell-this-story","vision/status_quo/barbara_wants_async_insights.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/barbara_wants_to_use_ghostcell.html#barbara-wants-to-use-ghostcell-like-cell-borrowing-with-futures","vision/status_quo/barbara_wants_to_use_ghostcell.html#-warning-draft-status-","vision/status_quo/barbara_wants_to_use_ghostcell.html#the-story","vision/status_quo/barbara_wants_to_use_ghostcell.html#example-1-accessing-an-object-shared-outside-the-runtime","vision/status_quo/barbara_wants_to_use_ghostcell.html#example-2-shared-monitoring-data","vision/status_quo/barbara_wants_to_use_ghostcell.html#further-investigation-by-barbara","vision/status_quo/barbara_wants_to_use_ghostcell.html#the-mechanism","vision/status_quo/barbara_wants_to_use_ghostcell.html#proof-of-concept","vision/status_quo/barbara_wants_to_use_ghostcell.html#way-forward","vision/status_quo/barbara_wants_to_use_ghostcell.html#-frequently-asked-questions","vision/status_quo/barbara_wants_to_use_ghostcell.html#what-are-the-morals-of-the-story","vision/status_quo/barbara_wants_to_use_ghostcell.html#what-are-the-sources-for-this-story","vision/status_quo/barbara_wants_to_use_ghostcell.html#why-did-you-choose-barbara-to-tell-this-story","vision/status_quo/barbara_wants_to_use_ghostcell.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/grace_deploys_her_service.html#-status-quo-stories-grace-deploys-her-service-and-hits-obstacles","vision/status_quo/grace_deploys_her_service.html#-warning-draft-status-","vision/status_quo/grace_deploys_her_service.html#the-story","vision/status_quo/grace_deploys_her_service.html#-frequently-asked-questions","vision/status_quo/grace_deploys_her_service.html#what-are-the-morals-of-the-story","vision/status_quo/grace_deploys_her_service.html#what-are-the-sources-for-this-story","vision/status_quo/grace_deploys_her_service.html#why-did-you-choose-grace-to-tell-this-story","vision/status_quo/grace_deploys_her_service.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/grace_deploys_her_service.html#could-grace-have-used-another-runtime-to-achieve-the-same-objectives","vision/status_quo/grace_tries_new_libraries.html#-status-quo-stories-grace-tries-new-libraries","vision/status_quo/grace_tries_new_libraries.html#-warning-draft-status-","vision/status_quo/grace_tries_new_libraries.html#the-story","vision/status_quo/grace_tries_new_libraries.html#-frequently-asked-questions","vision/status_quo/grace_tries_new_libraries.html#what-are-the-morals-of-the-story","vision/status_quo/grace_tries_new_libraries.html#what-are-the-sources-for-this-story","vision/status_quo/grace_tries_new_libraries.html#why-did-you-choose-grace-to-tell-this-story","vision/status_quo/grace_tries_new_libraries.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/grace_waits_for_gdb_next.html#status-quo-grace-waits-for-gdb-next","vision/status_quo/grace_waits_for_gdb_next.html#-warning-draft-status-","vision/status_quo/grace_waits_for_gdb_next.html#the-story","vision/status_quo/grace_waits_for_gdb_next.html#-frequently-asked-questions","vision/status_quo/grace_waits_for_gdb_next.html#what-are-the-morals-of-the-story","vision/status_quo/grace_waits_for_gdb_next.html#what-are-the-sources-for-this-story","vision/status_quo/grace_waits_for_gdb_next.html#why-did-you-choose-grace-to-tell-this-story","vision/status_quo/grace_waits_for_gdb_next.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/grace_wants_to_integrate_c_api.html#-status-quo-stories-grace-wants-to-integrate-a-c-api","vision/status_quo/grace_wants_to_integrate_c_api.html#-warning-draft-status-","vision/status_quo/grace_wants_to_integrate_c_api.html#the-story","vision/status_quo/grace_wants_to_integrate_c_api.html#the-first-problem-polls-and-wake-ups","vision/status_quo/grace_wants_to_integrate_c_api.html#the-second-problem-doing-this-many-times","vision/status_quo/grace_wants_to_integrate_c_api.html#-frequently-asked-questions","vision/status_quo/grace_wants_to_integrate_c_api.html#what-are-the-morals-of-the-story","vision/status_quo/grace_wants_to_integrate_c_api.html#what-are-the-sources-for-this-story","vision/status_quo/grace_wants_to_integrate_c_api.html#why-did-you-choose-grace-to-tell-this-story","vision/status_quo/grace_wants_to_integrate_c_api.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/grace_wants_to_integrate_c_api.html#could-grace-have-used-another-runtime-to-achieve-the-same-objectives","vision/status_quo/grace_wants_to_integrate_c_api.html#how-did-grace-know-to-use-unfold-as-the-return-type-in-the-first-place","vision/status_quo/niklaus_simulates_hydrodynamics.html#-status-quo-stories-niklaus-builds-a-hydrodynamics-simulator","vision/status_quo/niklaus_simulates_hydrodynamics.html#-warning-draft-status-","vision/status_quo/niklaus_simulates_hydrodynamics.html#the-story","vision/status_quo/niklaus_simulates_hydrodynamics.html#problem","vision/status_quo/niklaus_simulates_hydrodynamics.html#solution-path","vision/status_quo/niklaus_simulates_hydrodynamics.html#-frequently-asked-questions","vision/status_quo/niklaus_simulates_hydrodynamics.html#what-are-the-morals-of-the-story","vision/status_quo/niklaus_simulates_hydrodynamics.html#what-are-the-sources-for-this-story","vision/status_quo/niklaus_simulates_hydrodynamics.html#why-did-you-choose-niklaus-and-grace-to-tell-this-story","vision/status_quo/niklaus_simulates_hydrodynamics.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/status_quo/niklaus_wants_to_share_knowledge.html#-status-quo-stories-niklaus-wants-to-share-knowledge","vision/status_quo/niklaus_wants_to_share_knowledge.html#-warning-draft-status-","vision/status_quo/niklaus_wants_to_share_knowledge.html#the-story","vision/status_quo/niklaus_wants_to_share_knowledge.html#-frequently-asked-questions","vision/status_quo/niklaus_wants_to_share_knowledge.html#what-are-the-morals-of-the-story","vision/status_quo/niklaus_wants_to_share_knowledge.html#what-are-the-sources-for-this-story","vision/status_quo/niklaus_wants_to_share_knowledge.html#why-did-you-choose--niklaus--to-tell-this-story","vision/status_quo/niklaus_wants_to_share_knowledge.html#how-would-this-story-have-played-out-differently-for-the-other-characters","vision/shiny_future.html#-shiny-future-where-we-want-to-get-to","vision/shiny_future.html#-under-construction-help-needed-","vision/shiny_future.html#what-it-this","vision/shiny_future.html#think-big----too-big-if-you-have-to","vision/shiny_future.html#where-are-the-stories","vision/shiny_future/template.html#-shiny-future-stories-template","vision/shiny_future/template.html#-warning-draft-status-","vision/shiny_future/template.html#the-story","vision/shiny_future/template.html#-frequently-asked-questions","vision/shiny_future/template.html#what-status-quo-stories-are-you-retelling","vision/shiny_future/template.html#what-are-the-key-attributes-of-this-shiny-future","vision/shiny_future/template.html#what-is-the-most-shiny-about-this-future","vision/shiny_future/template.html#what-are-some-of-the-potential-pitfalls-about-this-future","vision/shiny_future/template.html#did-anything-surprise-you-when-writing-this-story-did-the-story-go-any-place-unexpected","vision/shiny_future/template.html#what-are-some-variations-of-this-story-that-you-considered-or-that-you-think-might-be-fun-to-write-have-any-variations-of-this-story-already-been-written","vision/shiny_future/template.html#what-are-some-of-the-things-well-have-to-figure-out-to-realize-this-future-what-projects-besides-rust-itself-are-involved-if-any-optional","vision/shiny_future/alan_switches_runtimes.html#-shiny-future-stories-alan-switches-runtimes","vision/shiny_future/alan_switches_runtimes.html#-warning-draft-status-","vision/shiny_future/alan_switches_runtimes.html#the-story","vision/shiny_future/alan_switches_runtimes.html#learning-more-about-humboldt","vision/shiny_future/alan_switches_runtimes.html#integrating-into-other-event-loops","vision/shiny_future/alan_switches_runtimes.html#-frequently-asked-questions","vision/shiny_future/alan_switches_runtimes.html#what-status-quo-story-or-stories-are-you-retelling","vision/shiny_future/alan_switches_runtimes.html#what-are-the-key-points-you-were-trying-to-convey-with-this-status-quo-story","vision/shiny_future/alan_switches_runtimes.html#how-do-you-imagine-the-std-apis-and-so-forth-know-the-current-runtime","vision/shiny_future/alan_switches_runtimes.html#what-happens-for-runtimes-that-dont-support-all-the-features-that-std-supports","vision/shiny_future/alan_switches_runtimes.html#what-is--alan--most-excited-about-in-this-future-is-he-disappointed-by-anything","vision/shiny_future/alan_switches_runtimes.html#what-is--grace--most-excited-about-in-this-future-is-she-disappointed-by-anything","vision/shiny_future/alan_switches_runtimes.html#what-is--niklaus--most-excited-about-in-this-future-is-he-disappointed-by-anything","vision/shiny_future/alan_switches_runtimes.html#what-is--barbara--most-excited-about-in-this-future-is-she-disappointed-by-anything","vision/shiny_future/alan_switches_runtimes.html#what--projects--benefit-the-most-from-this-future","vision/shiny_future/alan_switches_runtimes.html#are-there-any--projects--that-are-hindered-by-this-future","vision/shiny_future/alan_switches_runtimes.html#what-are-the-incremental-steps-towards-realizing-this-shiny-future","vision/shiny_future/alan_switches_runtimes.html#does-realizing-this-future-require-cooperation-between-many-projects","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#-shiny-future-stories-alans-trust-in-the-compiler-is-rewarded","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#-warning-draft-status-","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#the-story","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#trust-the-compiler","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#the-first-async-project","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#making-some-web-requests","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#-frequently-asked-questions","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-status-quo-story-or-stories-are-you-retelling","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-are-the-key-points-you-were-trying-to-convey-with-this-status-quo-story","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#is-there-a-one-size-fits-all-runtime-in-this-future","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-is--alan--most-excited-about-in-this-future-is-he-disappointed-by-anything","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-is--grace--most-excited-about-in-this-future-is-she-disappointed-by-anything","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-is--niklaus--most-excited-about-in-this-future-is-he-disappointed-by-anything","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-is--barbara--most-excited-about-in-this-future-is-she-disappointed-by-anything","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what--projects--benefit-the-most-from-this-future","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#are-there-any--projects--that-are-hindered-by-this-future","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#what-are-the-incremental-steps-towards-realizing-this-shiny-future","vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html#does-realizing-this-future-require-cooperation-between-many-projects","vision/shiny_future/barbara_makes_a_wish.html#-shiny-future-stories-barbara-makes-a-wish","vision/shiny_future/barbara_makes_a_wish.html#-warning-draft-status-","vision/shiny_future/barbara_makes_a_wish.html#the-story","vision/shiny_future/barbara_makes_a_wish.html#alternate-history","vision/shiny_future/barbara_makes_a_wish.html#-frequently-asked-questions","vision/shiny_future/barbara_makes_a_wish.html#what-status-quo-story-or-stories-are-you-retelling","vision/shiny_future/barbara_makes_a_wish.html#what-is--alan--most-excited-about-in-this-future-is-he-disappointed-by-anything","vision/shiny_future/barbara_makes_a_wish.html#what-is--grace--most-excited-about-in-this-future-is-she-disappointed-by-anything","vision/shiny_future/barbara_makes_a_wish.html#what-is--niklaus--most-excited-about-in-this-future-is-he-disappointed-by-anything","vision/shiny_future/barbara_makes_a_wish.html#what-is--barbara--most-excited-about-in-this-future-is-she-disappointed-by-anything","vision/shiny_future/barbara_makes_a_wish.html#what--projects--benefit-the-most-from-this-future","vision/shiny_future/barbara_makes_a_wish.html#are-there-any--projects--that-are-hindered-by-this-future","vision/shiny_future/barbara_makes_a_wish.html#what-are-the-incremental-steps-towards-realizing-this-shiny-future--optional","vision/shiny_future/barbara_makes_a_wish.html#does-realizing-this-future-require-cooperation-between-many-projects--optional","vision/roadmap.html#-the-roadmap-what-were-doing-in-2021","vision/roadmap.html#-not-time-for-this-yet-","vision/roadmap.html#key","vision/roadmap.html#roadmap-items","triage.html#-triage-meetings","triage.html#when-where","triage.html#so-you-want-to-fix-a-bug","triage.html#project-board","triage.html#triage-process","triage.html#mentoring","design_docs.html#-design-documents","design_docs.html#early-stage-design-docs","design_docs.html#late-stage-design-docs","design_docs/yield_safe.html#-yield-safe-lint","design_docs/yield_safe.html#use-case","design_docs/yield_safe.html#types-where-this-would-apply","design_docs/yield_safe.html#precedent-and-related-questions","design_docs/stream.html#-stream-trait","design_docs/stream.html#trait-definition","design_docs/stream.html#concerns","design_docs/stream.html#poll-based-design","design_docs/stream.html#attached-streams-are-commonly-desired","design_docs/stream.html#combinators","design_docs/generator_syntax.html#--generator-syntax","design_docs/async_read_write.html#-asyncread-asyncwrite-traits","design_docs/async_fn_in_traits.html#-async-fn-in-traits","design_docs/async_fn_in_traits.html#general-goal","design_docs/async_fn_in_traits.html#concerns","design_docs/async_fn_in_traits.html#how-to-name-the-resulting-future","design_docs/async_fn_in_traits.html#requiring-send-on-futures","design_docs/async_fn_in_traits.html#example-use-case-the-service","design_docs/async_fn_in_traits.html#example-use-case-capturing-lifetimes-of-arguments","design_docs/async_fn_in_traits.html#-frequently-asked-questions","design_docs/async_fn_in_traits.html#what-do-people-say-about-this-to-their-friends-on-twitter","design_docs/mutex.html#-mutex-future-aware","design_docs/channels.html#-async-aware-channels","design_docs/async_closures.html#-async-closures","design_docs/join.html#-join-combinator","design_docs/select.html#-select-combinator","design_docs/sink_trait.html#-sink-trait","design_docs/async_main.html#-async-main","design_docs/async_main.html#what-is-it","design_docs/async_main.html#motivation","design_docs/async_main.html#frequently-asked-questions","design_docs/async_drop.html#-async-drop","design_docs/async_lifecycle.html#-async-lifecycle","design_docs/completion_based_futures.html#-completion-based-futures","conversations.html#-conversations","conversations.html#not-exhaustive-nor-mandatory","conversations/2021-02-12-Twitter-Thread.html#-2021-02-12-twitter-thread","acknowledgments.html#-acknowledgments","acknowledgments.html#-participating-in-an-writing-session","acknowledgments.html#-discussing-about-stories","acknowledgments.html#-directly-contributing"],"index":{"documentStore":{"docInfo":{"0":{"body":5,"breadcrumbs":2,"title":1},"1":{"body":8,"breadcrumbs":2,"title":1},"10":{"body":20,"breadcrumbs":4,"title":3},"100":{"body":0,"breadcrumbs":6,"title":3},"101":{"body":0,"breadcrumbs":7,"title":4},"102":{"body":0,"breadcrumbs":8,"title":5},"103":{"body":0,"breadcrumbs":10,"title":7},"104":{"body":0,"breadcrumbs":5,"title":2},"105":{"body":0,"breadcrumbs":5,"title":2},"106":{"body":0,"breadcrumbs":9,"title":4},"107":{"body":10,"breadcrumbs":5,"title":0},"108":{"body":30,"breadcrumbs":6,"title":1},"109":{"body":0,"breadcrumbs":8,"title":3},"11":{"body":40,"breadcrumbs":4,"title":3},"110":{"body":111,"breadcrumbs":11,"title":6},"111":{"body":21,"breadcrumbs":10,"title":5},"112":{"body":30,"breadcrumbs":12,"title":7},"113":{"body":6,"breadcrumbs":7,"title":2},"114":{"body":0,"breadcrumbs":9,"title":4},"115":{"body":10,"breadcrumbs":5,"title":0},"116":{"body":35,"breadcrumbs":6,"title":1},"117":{"body":0,"breadcrumbs":8,"title":3},"118":{"body":23,"breadcrumbs":9,"title":4},"119":{"body":15,"breadcrumbs":10,"title":5},"12":{"body":23,"breadcrumbs":5,"title":4},"120":{"body":19,"breadcrumbs":12,"title":7},"121":{"body":11,"breadcrumbs":7,"title":2},"122":{"body":15,"breadcrumbs":7,"title":2},"123":{"body":0,"breadcrumbs":9,"title":4},"124":{"body":10,"breadcrumbs":5,"title":0},"125":{"body":65,"breadcrumbs":6,"title":1},"126":{"body":0,"breadcrumbs":8,"title":3},"127":{"body":61,"breadcrumbs":12,"title":7},"128":{"body":22,"breadcrumbs":10,"title":5},"129":{"body":38,"breadcrumbs":12,"title":7},"13":{"body":0,"breadcrumbs":3,"title":1},"130":{"body":45,"breadcrumbs":7,"title":2},"131":{"body":22,"breadcrumbs":7,"title":2},"132":{"body":0,"breadcrumbs":11,"title":5},"133":{"body":10,"breadcrumbs":6,"title":0},"134":{"body":46,"breadcrumbs":7,"title":1},"135":{"body":0,"breadcrumbs":9,"title":3},"136":{"body":60,"breadcrumbs":12,"title":6},"137":{"body":15,"breadcrumbs":11,"title":5},"138":{"body":27,"breadcrumbs":13,"title":7},"139":{"body":24,"breadcrumbs":8,"title":2},"14":{"body":45,"breadcrumbs":3,"title":1},"140":{"body":21,"breadcrumbs":8,"title":2},"141":{"body":0,"breadcrumbs":9,"title":4},"142":{"body":10,"breadcrumbs":5,"title":0},"143":{"body":23,"breadcrumbs":6,"title":1},"144":{"body":0,"breadcrumbs":8,"title":3},"145":{"body":3,"breadcrumbs":9,"title":4},"146":{"body":12,"breadcrumbs":10,"title":5},"147":{"body":16,"breadcrumbs":12,"title":7},"148":{"body":11,"breadcrumbs":7,"title":2},"149":{"body":11,"breadcrumbs":7,"title":2},"15":{"body":88,"breadcrumbs":4,"title":2},"150":{"body":4,"breadcrumbs":7,"title":2},"151":{"body":0,"breadcrumbs":6,"title":3},"152":{"body":27,"breadcrumbs":7,"title":4},"153":{"body":67,"breadcrumbs":3,"title":0},"154":{"body":47,"breadcrumbs":6,"title":3},"155":{"body":28,"breadcrumbs":10,"title":7},"156":{"body":786,"breadcrumbs":4,"title":1},"157":{"body":60,"breadcrumbs":8,"title":4},"158":{"body":50,"breadcrumbs":7,"title":3},"159":{"body":14,"breadcrumbs":5,"title":1},"16":{"body":156,"breadcrumbs":3,"title":1},"160":{"body":8,"breadcrumbs":7,"title":3},"161":{"body":6,"breadcrumbs":6,"title":2},"162":{"body":9,"breadcrumbs":6,"title":2},"163":{"body":4,"breadcrumbs":8,"title":4},"164":{"body":12,"breadcrumbs":9,"title":5},"165":{"body":0,"breadcrumbs":20,"title":10},"166":{"body":50,"breadcrumbs":13,"title":3},"167":{"body":82,"breadcrumbs":11,"title":1},"168":{"body":44,"breadcrumbs":11,"title":1},"169":{"body":82,"breadcrumbs":11,"title":1},"17":{"body":36,"breadcrumbs":3,"title":1},"170":{"body":0,"breadcrumbs":13,"title":3},"171":{"body":68,"breadcrumbs":12,"title":2},"172":{"body":7,"breadcrumbs":12,"title":2},"173":{"body":12,"breadcrumbs":14,"title":4},"174":{"body":17,"breadcrumbs":15,"title":5},"175":{"body":0,"breadcrumbs":18,"title":9},"176":{"body":50,"breadcrumbs":12,"title":3},"177":{"body":81,"breadcrumbs":10,"title":1},"178":{"body":197,"breadcrumbs":11,"title":2},"179":{"body":28,"breadcrumbs":11,"title":2},"18":{"body":26,"breadcrumbs":4,"title":2},"180":{"body":0,"breadcrumbs":12,"title":3},"181":{"body":38,"breadcrumbs":11,"title":2},"182":{"body":9,"breadcrumbs":11,"title":2},"183":{"body":13,"breadcrumbs":13,"title":4},"184":{"body":5,"breadcrumbs":14,"title":5},"185":{"body":0,"breadcrumbs":16,"title":9},"186":{"body":50,"breadcrumbs":10,"title":3},"187":{"body":31,"breadcrumbs":8,"title":1},"188":{"body":47,"breadcrumbs":10,"title":3},"189":{"body":64,"breadcrumbs":11,"title":4},"19":{"body":22,"breadcrumbs":5,"title":3},"190":{"body":107,"breadcrumbs":10,"title":3},"191":{"body":24,"breadcrumbs":10,"title":3},"192":{"body":91,"breadcrumbs":10,"title":3},"193":{"body":0,"breadcrumbs":14,"title":7},"194":{"body":50,"breadcrumbs":10,"title":3},"195":{"body":96,"breadcrumbs":8,"title":1},"196":{"body":96,"breadcrumbs":9,"title":2},"197":{"body":47,"breadcrumbs":9,"title":2},"198":{"body":66,"breadcrumbs":9,"title":2},"199":{"body":217,"breadcrumbs":9,"title":2},"2":{"body":25,"breadcrumbs":3,"title":2},"20":{"body":0,"breadcrumbs":5,"title":2},"200":{"body":162,"breadcrumbs":8,"title":1},"201":{"body":26,"breadcrumbs":9,"title":2},"202":{"body":0,"breadcrumbs":10,"title":3},"203":{"body":38,"breadcrumbs":9,"title":2},"204":{"body":13,"breadcrumbs":9,"title":2},"205":{"body":12,"breadcrumbs":11,"title":4},"206":{"body":13,"breadcrumbs":12,"title":5},"207":{"body":0,"breadcrumbs":14,"title":7},"208":{"body":50,"breadcrumbs":10,"title":3},"209":{"body":558,"breadcrumbs":8,"title":1},"21":{"body":43,"breadcrumbs":5,"title":2},"210":{"body":0,"breadcrumbs":10,"title":3},"211":{"body":135,"breadcrumbs":9,"title":2},"212":{"body":5,"breadcrumbs":9,"title":2},"213":{"body":49,"breadcrumbs":11,"title":4},"214":{"body":81,"breadcrumbs":12,"title":5},"215":{"body":0,"breadcrumbs":12,"title":6},"216":{"body":50,"breadcrumbs":9,"title":3},"217":{"body":543,"breadcrumbs":7,"title":1},"218":{"body":270,"breadcrumbs":9,"title":3},"219":{"body":0,"breadcrumbs":14,"title":7},"22":{"body":14,"breadcrumbs":6,"title":3},"220":{"body":50,"breadcrumbs":10,"title":3},"221":{"body":341,"breadcrumbs":8,"title":1},"222":{"body":0,"breadcrumbs":10,"title":3},"223":{"body":25,"breadcrumbs":9,"title":2},"224":{"body":16,"breadcrumbs":9,"title":2},"225":{"body":28,"breadcrumbs":11,"title":4},"226":{"body":32,"breadcrumbs":12,"title":5},"227":{"body":0,"breadcrumbs":16,"title":8},"228":{"body":23,"breadcrumbs":11,"title":3},"229":{"body":0,"breadcrumbs":9,"title":1},"23":{"body":35,"breadcrumbs":9,"title":4},"230":{"body":97,"breadcrumbs":11,"title":3},"231":{"body":66,"breadcrumbs":12,"title":4},"232":{"body":57,"breadcrumbs":10,"title":2},"233":{"body":46,"breadcrumbs":12,"title":4},"234":{"body":64,"breadcrumbs":14,"title":6},"235":{"body":40,"breadcrumbs":13,"title":5},"236":{"body":0,"breadcrumbs":11,"title":3},"237":{"body":122,"breadcrumbs":10,"title":2},"238":{"body":3,"breadcrumbs":10,"title":2},"239":{"body":15,"breadcrumbs":12,"title":4},"24":{"body":54,"breadcrumbs":6,"title":1},"240":{"body":38,"breadcrumbs":13,"title":5},"241":{"body":17,"breadcrumbs":17,"title":9},"242":{"body":0,"breadcrumbs":15,"title":8},"243":{"body":23,"breadcrumbs":10,"title":3},"244":{"body":34,"breadcrumbs":8,"title":1},"245":{"body":169,"breadcrumbs":9,"title":2},"246":{"body":119,"breadcrumbs":9,"title":2},"247":{"body":0,"breadcrumbs":10,"title":3},"248":{"body":44,"breadcrumbs":9,"title":2},"249":{"body":11,"breadcrumbs":9,"title":2},"25":{"body":57,"breadcrumbs":14,"title":9},"250":{"body":22,"breadcrumbs":11,"title":4},"251":{"body":49,"breadcrumbs":12,"title":5},"252":{"body":35,"breadcrumbs":14,"title":7},"253":{"body":0,"breadcrumbs":18,"title":9},"254":{"body":23,"breadcrumbs":12,"title":3},"255":{"body":0,"breadcrumbs":10,"title":1},"256":{"body":77,"breadcrumbs":11,"title":2},"257":{"body":106,"breadcrumbs":12,"title":3},"258":{"body":216,"breadcrumbs":13,"title":4},"259":{"body":168,"breadcrumbs":12,"title":3},"26":{"body":21,"breadcrumbs":7,"title":2},"260":{"body":0,"breadcrumbs":12,"title":3},"261":{"body":82,"breadcrumbs":11,"title":2},"262":{"body":3,"breadcrumbs":11,"title":2},"263":{"body":21,"breadcrumbs":13,"title":4},"264":{"body":20,"breadcrumbs":14,"title":5},"265":{"body":15,"breadcrumbs":18,"title":9},"266":{"body":0,"breadcrumbs":16,"title":8},"267":{"body":50,"breadcrumbs":11,"title":3},"268":{"body":563,"breadcrumbs":9,"title":1},"269":{"body":0,"breadcrumbs":11,"title":3},"27":{"body":73,"breadcrumbs":9,"title":4},"270":{"body":53,"breadcrumbs":10,"title":2},"271":{"body":34,"breadcrumbs":10,"title":2},"272":{"body":35,"breadcrumbs":12,"title":4},"273":{"body":22,"breadcrumbs":13,"title":5},"274":{"body":0,"breadcrumbs":16,"title":8},"275":{"body":50,"breadcrumbs":11,"title":3},"276":{"body":520,"breadcrumbs":9,"title":1},"277":{"body":0,"breadcrumbs":11,"title":3},"278":{"body":135,"breadcrumbs":10,"title":2},"279":{"body":37,"breadcrumbs":10,"title":2},"28":{"body":70,"breadcrumbs":7,"title":2},"280":{"body":9,"breadcrumbs":12,"title":4},"281":{"body":2,"breadcrumbs":13,"title":5},"282":{"body":0,"breadcrumbs":14,"title":7},"283":{"body":50,"breadcrumbs":10,"title":3},"284":{"body":590,"breadcrumbs":8,"title":1},"285":{"body":0,"breadcrumbs":10,"title":3},"286":{"body":49,"breadcrumbs":9,"title":2},"287":{"body":8,"breadcrumbs":9,"title":2},"288":{"body":34,"breadcrumbs":11,"title":4},"289":{"body":34,"breadcrumbs":12,"title":5},"29":{"body":57,"breadcrumbs":7,"title":2},"290":{"body":0,"breadcrumbs":14,"title":7},"291":{"body":50,"breadcrumbs":10,"title":3},"292":{"body":638,"breadcrumbs":8,"title":1},"293":{"body":0,"breadcrumbs":10,"title":3},"294":{"body":27,"breadcrumbs":9,"title":2},"295":{"body":2,"breadcrumbs":9,"title":2},"296":{"body":13,"breadcrumbs":11,"title":4},"297":{"body":8,"breadcrumbs":12,"title":5},"298":{"body":0,"breadcrumbs":14,"title":7},"299":{"body":50,"breadcrumbs":10,"title":3},"3":{"body":38,"breadcrumbs":4,"title":3},"30":{"body":0,"breadcrumbs":8,"title":3},"300":{"body":323,"breadcrumbs":8,"title":1},"301":{"body":0,"breadcrumbs":10,"title":3},"302":{"body":42,"breadcrumbs":9,"title":2},"303":{"body":15,"breadcrumbs":9,"title":2},"304":{"body":15,"breadcrumbs":11,"title":4},"305":{"body":0,"breadcrumbs":19,"title":9},"306":{"body":50,"breadcrumbs":13,"title":3},"307":{"body":102,"breadcrumbs":11,"title":1},"308":{"body":39,"breadcrumbs":12,"title":2},"309":{"body":184,"breadcrumbs":13,"title":3},"31":{"body":11,"breadcrumbs":10,"title":5},"310":{"body":116,"breadcrumbs":13,"title":3},"311":{"body":50,"breadcrumbs":13,"title":3},"312":{"body":63,"breadcrumbs":11,"title":1},"313":{"body":38,"breadcrumbs":13,"title":3},"314":{"body":0,"breadcrumbs":13,"title":3},"315":{"body":54,"breadcrumbs":12,"title":2},"316":{"body":14,"breadcrumbs":14,"title":4},"317":{"body":20,"breadcrumbs":15,"title":5},"318":{"body":55,"breadcrumbs":14,"title":4},"319":{"body":88,"breadcrumbs":13,"title":3},"32":{"body":22,"breadcrumbs":9,"title":4},"320":{"body":44,"breadcrumbs":15,"title":5},"321":{"body":91,"breadcrumbs":16,"title":6},"322":{"body":27,"breadcrumbs":17,"title":7},"323":{"body":30,"breadcrumbs":18,"title":8},"324":{"body":35,"breadcrumbs":16,"title":6},"325":{"body":45,"breadcrumbs":13,"title":3},"326":{"body":0,"breadcrumbs":14,"title":7},"327":{"body":23,"breadcrumbs":10,"title":3},"328":{"body":424,"breadcrumbs":8,"title":1},"329":{"body":8,"breadcrumbs":10,"title":3},"33":{"body":17,"breadcrumbs":9,"title":4},"330":{"body":39,"breadcrumbs":9,"title":2},"331":{"body":33,"breadcrumbs":9,"title":2},"332":{"body":10,"breadcrumbs":11,"title":4},"333":{"body":12,"breadcrumbs":12,"title":5},"334":{"body":0,"breadcrumbs":16,"title":8},"335":{"body":50,"breadcrumbs":11,"title":3},"336":{"body":786,"breadcrumbs":9,"title":1},"337":{"body":0,"breadcrumbs":11,"title":3},"338":{"body":50,"breadcrumbs":10,"title":2},"339":{"body":15,"breadcrumbs":12,"title":4},"34":{"body":7,"breadcrumbs":11,"title":6},"340":{"body":52,"breadcrumbs":13,"title":5},"341":{"body":176,"breadcrumbs":18,"title":10},"342":{"body":65,"breadcrumbs":18,"title":10},"343":{"body":54,"breadcrumbs":13,"title":5},"344":{"body":36,"breadcrumbs":15,"title":7},"345":{"body":0,"breadcrumbs":15,"title":8},"346":{"body":50,"breadcrumbs":10,"title":3},"347":{"body":417,"breadcrumbs":8,"title":1},"348":{"body":0,"breadcrumbs":10,"title":3},"349":{"body":112,"breadcrumbs":10,"title":3},"35":{"body":14,"breadcrumbs":9,"title":4},"350":{"body":32,"breadcrumbs":9,"title":2},"351":{"body":7,"breadcrumbs":9,"title":2},"352":{"body":12,"breadcrumbs":11,"title":4},"353":{"body":13,"breadcrumbs":12,"title":5},"354":{"body":0,"breadcrumbs":16,"title":8},"355":{"body":23,"breadcrumbs":11,"title":3},"356":{"body":41,"breadcrumbs":16,"title":8},"357":{"body":83,"breadcrumbs":11,"title":3},"358":{"body":99,"breadcrumbs":10,"title":2},"359":{"body":93,"breadcrumbs":12,"title":4},"36":{"body":19,"breadcrumbs":10,"title":5},"360":{"body":81,"breadcrumbs":11,"title":3},"361":{"body":23,"breadcrumbs":9,"title":1},"362":{"body":0,"breadcrumbs":11,"title":3},"363":{"body":72,"breadcrumbs":10,"title":2},"364":{"body":4,"breadcrumbs":10,"title":2},"365":{"body":56,"breadcrumbs":13,"title":5},"366":{"body":22,"breadcrumbs":12,"title":4},"367":{"body":75,"breadcrumbs":13,"title":5},"368":{"body":0,"breadcrumbs":14,"title":7},"369":{"body":50,"breadcrumbs":10,"title":3},"37":{"body":51,"breadcrumbs":9,"title":4},"370":{"body":568,"breadcrumbs":8,"title":1},"371":{"body":0,"breadcrumbs":10,"title":3},"372":{"body":43,"breadcrumbs":9,"title":2},"373":{"body":2,"breadcrumbs":9,"title":2},"374":{"body":20,"breadcrumbs":9,"title":2},"375":{"body":25,"breadcrumbs":13,"title":6},"376":{"body":10,"breadcrumbs":11,"title":4},"377":{"body":7,"breadcrumbs":12,"title":5},"378":{"body":0,"breadcrumbs":12,"title":6},"379":{"body":50,"breadcrumbs":9,"title":3},"38":{"body":22,"breadcrumbs":6,"title":1},"380":{"body":891,"breadcrumbs":7,"title":1},"381":{"body":8,"breadcrumbs":9,"title":3},"382":{"body":9,"breadcrumbs":10,"title":4},"383":{"body":136,"breadcrumbs":8,"title":2},"384":{"body":3,"breadcrumbs":8,"title":2},"385":{"body":45,"breadcrumbs":11,"title":5},"386":{"body":18,"breadcrumbs":8,"title":2},"387":{"body":0,"breadcrumbs":14,"title":7},"388":{"body":23,"breadcrumbs":10,"title":3},"389":{"body":277,"breadcrumbs":8,"title":1},"39":{"body":20,"breadcrumbs":7,"title":2},"390":{"body":8,"breadcrumbs":10,"title":3},"391":{"body":67,"breadcrumbs":9,"title":2},"392":{"body":38,"breadcrumbs":9,"title":2},"393":{"body":49,"breadcrumbs":11,"title":4},"394":{"body":101,"breadcrumbs":12,"title":5},"395":{"body":0,"breadcrumbs":12,"title":6},"396":{"body":50,"breadcrumbs":9,"title":3},"397":{"body":306,"breadcrumbs":7,"title":1},"398":{"body":8,"breadcrumbs":9,"title":3},"399":{"body":37,"breadcrumbs":8,"title":2},"4":{"body":7,"breadcrumbs":2,"title":1},"40":{"body":64,"breadcrumbs":9,"title":4},"400":{"body":6,"breadcrumbs":8,"title":2},"401":{"body":11,"breadcrumbs":10,"title":4},"402":{"body":23,"breadcrumbs":11,"title":5},"403":{"body":30,"breadcrumbs":8,"title":2},"404":{"body":272,"breadcrumbs":10,"title":4},"405":{"body":13,"breadcrumbs":11,"title":5},"406":{"body":0,"breadcrumbs":12,"title":6},"407":{"body":50,"breadcrumbs":9,"title":3},"408":{"body":211,"breadcrumbs":7,"title":1},"409":{"body":0,"breadcrumbs":9,"title":3},"41":{"body":177,"breadcrumbs":7,"title":2},"410":{"body":39,"breadcrumbs":8,"title":2},"411":{"body":2,"breadcrumbs":8,"title":2},"412":{"body":42,"breadcrumbs":12,"title":6},"413":{"body":8,"breadcrumbs":10,"title":4},"414":{"body":28,"breadcrumbs":11,"title":5},"415":{"body":0,"breadcrumbs":14,"title":6},"416":{"body":50,"breadcrumbs":11,"title":3},"417":{"body":259,"breadcrumbs":9,"title":1},"418":{"body":113,"breadcrumbs":15,"title":7},"419":{"body":129,"breadcrumbs":13,"title":5},"42":{"body":61,"breadcrumbs":7,"title":2},"420":{"body":0,"breadcrumbs":11,"title":3},"421":{"body":436,"breadcrumbs":9,"title":1},"422":{"body":105,"breadcrumbs":10,"title":2},"423":{"body":110,"breadcrumbs":10,"title":2},"424":{"body":0,"breadcrumbs":11,"title":3},"425":{"body":17,"breadcrumbs":10,"title":2},"426":{"body":6,"breadcrumbs":10,"title":2},"427":{"body":9,"breadcrumbs":12,"title":4},"428":{"body":13,"breadcrumbs":13,"title":5},"429":{"body":0,"breadcrumbs":16,"title":8},"43":{"body":0,"breadcrumbs":8,"title":3},"430":{"body":23,"breadcrumbs":11,"title":3},"431":{"body":202,"breadcrumbs":9,"title":1},"432":{"body":0,"breadcrumbs":11,"title":3},"433":{"body":22,"breadcrumbs":10,"title":2},"434":{"body":8,"breadcrumbs":10,"title":2},"435":{"body":18,"breadcrumbs":12,"title":4},"436":{"body":23,"breadcrumbs":13,"title":5},"437":{"body":21,"breadcrumbs":15,"title":7},"438":{"body":0,"breadcrumbs":14,"title":7},"439":{"body":23,"breadcrumbs":10,"title":3},"44":{"body":11,"breadcrumbs":10,"title":5},"440":{"body":525,"breadcrumbs":8,"title":1},"441":{"body":0,"breadcrumbs":10,"title":3},"442":{"body":14,"breadcrumbs":9,"title":2},"443":{"body":2,"breadcrumbs":9,"title":2},"444":{"body":3,"breadcrumbs":11,"title":4},"445":{"body":25,"breadcrumbs":12,"title":5},"446":{"body":0,"breadcrumbs":13,"title":6},"447":{"body":50,"breadcrumbs":10,"title":3},"448":{"body":196,"breadcrumbs":8,"title":1},"449":{"body":8,"breadcrumbs":10,"title":3},"45":{"body":15,"breadcrumbs":10,"title":5},"450":{"body":44,"breadcrumbs":9,"title":2},"451":{"body":15,"breadcrumbs":9,"title":2},"452":{"body":10,"breadcrumbs":11,"title":4},"453":{"body":48,"breadcrumbs":12,"title":5},"454":{"body":0,"breadcrumbs":14,"title":7},"455":{"body":23,"breadcrumbs":10,"title":3},"456":{"body":256,"breadcrumbs":8,"title":1},"457":{"body":251,"breadcrumbs":12,"title":5},"458":{"body":201,"breadcrumbs":12,"title":5},"459":{"body":0,"breadcrumbs":10,"title":3},"46":{"body":37,"breadcrumbs":10,"title":5},"460":{"body":125,"breadcrumbs":9,"title":2},"461":{"body":8,"breadcrumbs":9,"title":2},"462":{"body":81,"breadcrumbs":11,"title":4},"463":{"body":39,"breadcrumbs":12,"title":5},"464":{"body":6,"breadcrumbs":14,"title":7},"465":{"body":3,"breadcrumbs":15,"title":8},"466":{"body":0,"breadcrumbs":14,"title":7},"467":{"body":50,"breadcrumbs":10,"title":3},"468":{"body":0,"breadcrumbs":8,"title":1},"469":{"body":175,"breadcrumbs":8,"title":1},"47":{"body":78,"breadcrumbs":9,"title":4},"470":{"body":463,"breadcrumbs":9,"title":2},"471":{"body":0,"breadcrumbs":10,"title":3},"472":{"body":33,"breadcrumbs":9,"title":2},"473":{"body":8,"breadcrumbs":9,"title":2},"474":{"body":24,"breadcrumbs":12,"title":5},"475":{"body":43,"breadcrumbs":12,"title":5},"476":{"body":0,"breadcrumbs":12,"title":6},"477":{"body":50,"breadcrumbs":9,"title":3},"478":{"body":88,"breadcrumbs":7,"title":1},"479":{"body":0,"breadcrumbs":9,"title":3},"48":{"body":10,"breadcrumbs":8,"title":3},"480":{"body":38,"breadcrumbs":8,"title":2},"481":{"body":40,"breadcrumbs":8,"title":2},"482":{"body":5,"breadcrumbs":10,"title":4},"483":{"body":25,"breadcrumbs":11,"title":5},"484":{"body":0,"breadcrumbs":6,"title":3},"485":{"body":27,"breadcrumbs":7,"title":4},"486":{"body":38,"breadcrumbs":3,"title":0},"487":{"body":54,"breadcrumbs":6,"title":3},"488":{"body":2,"breadcrumbs":4,"title":1},"489":{"body":46,"breadcrumbs":8,"title":4},"49":{"body":33,"breadcrumbs":10,"title":5},"490":{"body":63,"breadcrumbs":7,"title":3},"491":{"body":14,"breadcrumbs":5,"title":1},"492":{"body":9,"breadcrumbs":7,"title":3},"493":{"body":10,"breadcrumbs":8,"title":4},"494":{"body":6,"breadcrumbs":8,"title":4},"495":{"body":12,"breadcrumbs":6,"title":2},"496":{"body":26,"breadcrumbs":7,"title":3},"497":{"body":18,"breadcrumbs":12,"title":8},"498":{"body":23,"breadcrumbs":14,"title":10},"499":{"body":15,"breadcrumbs":16,"title":12},"5":{"body":16,"breadcrumbs":2,"title":1},"50":{"body":2,"breadcrumbs":13,"title":8},"500":{"body":0,"breadcrumbs":12,"title":6},"501":{"body":63,"breadcrumbs":9,"title":3},"502":{"body":136,"breadcrumbs":7,"title":1},"503":{"body":86,"breadcrumbs":9,"title":3},"504":{"body":110,"breadcrumbs":9,"title":3},"505":{"body":0,"breadcrumbs":9,"title":3},"506":{"body":12,"breadcrumbs":11,"title":5},"507":{"body":35,"breadcrumbs":13,"title":7},"508":{"body":27,"breadcrumbs":13,"title":7},"509":{"body":11,"breadcrumbs":13,"title":7},"51":{"body":37,"breadcrumbs":13,"title":8},"510":{"body":14,"breadcrumbs":11,"title":5},"511":{"body":42,"breadcrumbs":11,"title":5},"512":{"body":14,"breadcrumbs":11,"title":5},"513":{"body":27,"breadcrumbs":11,"title":5},"514":{"body":7,"breadcrumbs":9,"title":3},"515":{"body":54,"breadcrumbs":9,"title":3},"516":{"body":45,"breadcrumbs":12,"title":6},"517":{"body":60,"breadcrumbs":13,"title":7},"518":{"body":0,"breadcrumbs":14,"title":7},"519":{"body":63,"breadcrumbs":10,"title":3},"52":{"body":13,"breadcrumbs":6,"title":3},"520":{"body":0,"breadcrumbs":8,"title":1},"521":{"body":77,"breadcrumbs":9,"title":2},"522":{"body":198,"breadcrumbs":10,"title":3},"523":{"body":50,"breadcrumbs":10,"title":3},"524":{"body":0,"breadcrumbs":10,"title":3},"525":{"body":11,"breadcrumbs":12,"title":5},"526":{"body":42,"breadcrumbs":14,"title":7},"527":{"body":15,"breadcrumbs":12,"title":5},"528":{"body":12,"breadcrumbs":12,"title":5},"529":{"body":41,"breadcrumbs":12,"title":5},"53":{"body":45,"breadcrumbs":5,"title":2},"530":{"body":22,"breadcrumbs":12,"title":5},"531":{"body":18,"breadcrumbs":12,"title":5},"532":{"body":19,"breadcrumbs":10,"title":3},"533":{"body":19,"breadcrumbs":10,"title":3},"534":{"body":31,"breadcrumbs":13,"title":6},"535":{"body":11,"breadcrumbs":14,"title":7},"536":{"body":0,"breadcrumbs":12,"title":6},"537":{"body":63,"breadcrumbs":9,"title":3},"538":{"body":526,"breadcrumbs":7,"title":1},"539":{"body":249,"breadcrumbs":8,"title":2},"54":{"body":86,"breadcrumbs":8,"title":5},"540":{"body":0,"breadcrumbs":9,"title":3},"541":{"body":3,"breadcrumbs":11,"title":5},"542":{"body":35,"breadcrumbs":11,"title":5},"543":{"body":34,"breadcrumbs":11,"title":5},"544":{"body":42,"breadcrumbs":11,"title":5},"545":{"body":37,"breadcrumbs":11,"title":5},"546":{"body":43,"breadcrumbs":9,"title":3},"547":{"body":14,"breadcrumbs":9,"title":3},"548":{"body":27,"breadcrumbs":13,"title":7},"549":{"body":15,"breadcrumbs":14,"title":8},"55":{"body":42,"breadcrumbs":6,"title":3},"550":{"body":8,"breadcrumbs":7,"title":4},"551":{"body":20,"breadcrumbs":4,"title":1},"552":{"body":29,"breadcrumbs":4,"title":1},"553":{"body":11,"breadcrumbs":5,"title":2},"554":{"body":0,"breadcrumbs":4,"title":2},"555":{"body":13,"breadcrumbs":2,"title":0},"556":{"body":35,"breadcrumbs":5,"title":3},"557":{"body":14,"breadcrumbs":4,"title":2},"558":{"body":90,"breadcrumbs":4,"title":2},"559":{"body":65,"breadcrumbs":3,"title":1},"56":{"body":22,"breadcrumbs":8,"title":5},"560":{"body":39,"breadcrumbs":4,"title":2},"561":{"body":34,"breadcrumbs":6,"title":4},"562":{"body":41,"breadcrumbs":6,"title":4},"563":{"body":0,"breadcrumbs":8,"title":3},"564":{"body":30,"breadcrumbs":7,"title":2},"565":{"body":15,"breadcrumbs":7,"title":2},"566":{"body":14,"breadcrumbs":8,"title":3},"567":{"body":2,"breadcrumbs":6,"title":2},"568":{"body":21,"breadcrumbs":6,"title":2},"569":{"body":0,"breadcrumbs":5,"title":1},"57":{"body":34,"breadcrumbs":8,"title":5},"570":{"body":11,"breadcrumbs":7,"title":3},"571":{"body":7,"breadcrumbs":8,"title":4},"572":{"body":39,"breadcrumbs":5,"title":1},"573":{"body":46,"breadcrumbs":6,"title":2},"574":{"body":0,"breadcrumbs":8,"title":3},"575":{"body":4,"breadcrumbs":8,"title":3},"576":{"body":7,"breadcrumbs":7,"title":2},"577":{"body":0,"breadcrumbs":6,"title":1},"578":{"body":14,"breadcrumbs":8,"title":3},"579":{"body":55,"breadcrumbs":8,"title":3},"58":{"body":14,"breadcrumbs":5,"title":2},"580":{"body":29,"breadcrumbs":9,"title":4},"581":{"body":5,"breadcrumbs":11,"title":6},"582":{"body":0,"breadcrumbs":8,"title":3},"583":{"body":4,"breadcrumbs":8,"title":3},"584":{"body":5,"breadcrumbs":8,"title":3},"585":{"body":0,"breadcrumbs":8,"title":3},"586":{"body":0,"breadcrumbs":6,"title":2},"587":{"body":0,"breadcrumbs":6,"title":2},"588":{"body":0,"breadcrumbs":6,"title":2},"589":{"body":0,"breadcrumbs":6,"title":2},"59":{"body":52,"breadcrumbs":5,"title":2},"590":{"body":0,"breadcrumbs":6,"title":2},"591":{"body":0,"breadcrumbs":4,"title":0},"592":{"body":0,"breadcrumbs":5,"title":1},"593":{"body":0,"breadcrumbs":7,"title":3},"594":{"body":0,"breadcrumbs":6,"title":2},"595":{"body":0,"breadcrumbs":8,"title":2},"596":{"body":2,"breadcrumbs":8,"title":3},"597":{"body":19,"breadcrumbs":2,"title":1},"598":{"body":35,"breadcrumbs":3,"title":2},"599":{"body":416,"breadcrumbs":11,"title":5},"6":{"body":21,"breadcrumbs":2,"title":1},"60":{"body":16,"breadcrumbs":4,"title":1},"600":{"body":7,"breadcrumbs":2,"title":1},"601":{"body":12,"breadcrumbs":4,"title":3},"602":{"body":42,"breadcrumbs":3,"title":2},"603":{"body":45,"breadcrumbs":3,"title":2},"61":{"body":170,"breadcrumbs":7,"title":3},"62":{"body":123,"breadcrumbs":6,"title":2},"63":{"body":0,"breadcrumbs":5,"title":2},"64":{"body":32,"breadcrumbs":3,"title":0},"65":{"body":96,"breadcrumbs":4,"title":1},"66":{"body":0,"breadcrumbs":6,"title":3},"67":{"body":13,"breadcrumbs":5,"title":2},"68":{"body":6,"breadcrumbs":7,"title":4},"69":{"body":1,"breadcrumbs":8,"title":5},"7":{"body":0,"breadcrumbs":2,"title":1},"70":{"body":0,"breadcrumbs":6,"title":2},"71":{"body":0,"breadcrumbs":11,"title":7},"72":{"body":26,"breadcrumbs":7,"title":3},"73":{"body":43,"breadcrumbs":7,"title":3},"74":{"body":33,"breadcrumbs":7,"title":3},"75":{"body":0,"breadcrumbs":7,"title":3},"76":{"body":22,"breadcrumbs":8,"title":4},"77":{"body":7,"breadcrumbs":9,"title":5},"78":{"body":0,"breadcrumbs":6,"title":2},"79":{"body":56,"breadcrumbs":10,"title":6},"8":{"body":63,"breadcrumbs":1,"title":0},"80":{"body":0,"breadcrumbs":7,"title":3},"81":{"body":15,"breadcrumbs":8,"title":4},"82":{"body":38,"breadcrumbs":9,"title":5},"83":{"body":0,"breadcrumbs":6,"title":2},"84":{"body":32,"breadcrumbs":9,"title":5},"85":{"body":0,"breadcrumbs":7,"title":3},"86":{"body":10,"breadcrumbs":8,"title":4},"87":{"body":15,"breadcrumbs":9,"title":5},"88":{"body":0,"breadcrumbs":6,"title":2},"89":{"body":27,"breadcrumbs":8,"title":4},"9":{"body":120,"breadcrumbs":2,"title":1},"90":{"body":0,"breadcrumbs":7,"title":3},"91":{"body":15,"breadcrumbs":8,"title":4},"92":{"body":12,"breadcrumbs":9,"title":5},"93":{"body":0,"breadcrumbs":3,"title":1},"94":{"body":13,"breadcrumbs":2,"title":0},"95":{"body":4,"breadcrumbs":4,"title":2},"96":{"body":30,"breadcrumbs":7,"title":5},"97":{"body":11,"breadcrumbs":6,"title":3},"98":{"body":10,"breadcrumbs":3,"title":0},"99":{"body":9,"breadcrumbs":4,"title":1}},"docs":{"0":{"body":"Welcome to the wg-async-foundations website!","breadcrumbs":"👋🏽 Welcome » 👋🏽 Welcome","id":"0","title":"👋🏽 Welcome"},"1":{"body":"The leads of this working group are @tmandry and @nikomatsakis . Both of them can be found on Zulip .","breadcrumbs":"👋🏽 Welcome » Leads","id":"1","title":"Leads"},"10":{"body":"The vision is not just idle speculation. It is the central document that we use to organize ourselves. When we think about our roadmap for any given year, it is always with the aim of moving us closer to the vision we lay out here.","breadcrumbs":"🔮 The vision » The vision drives the work","id":"10","title":"The vision drives the work"},"100":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » 🤔 Frequently Asked Questions","id":"100","title":"🤔 Frequently Asked Questions"},"101":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » What makes this project different from others?","id":"101","title":"What makes this project different from others?"},"102":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » Does this project require a custom tailored runtime?","id":"102","title":"Does this project require a custom tailored runtime?"},"103":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » How much of this project is likely to be built with open source components from crates.io?","id":"103","title":"How much of this project is likely to be built with open source components from crates.io?"},"104":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » What is of most concern to this project?","id":"104","title":"What is of most concern to this project?"},"105":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » What is of least concern to this project?","id":"105","title":"What is of least concern to this project?"},"106":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » ⚡ Projects: MonsterMesh (embedded sensors)","id":"106","title":"⚡ Projects: MonsterMesh (embedded sensors)"},"107":{"body":"This is a sample project for use within the various \"status quo\" or \"shiny future\" stories.","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » What is this?","id":"107","title":"What is this?"},"108":{"body":"\"MonsterMesh\" is a sensor mesh on microcontrollers using Rust. The nodes communicate wirelessly to relay their results. These sensors are built using very constrained and low power hardware without operating system, so the code is written in a #[no_std] environment and is very careful about available resources.","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » Description","id":"108","title":"Description"},"109":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » 🤔 Frequently Asked Questions","id":"109","title":"🤔 Frequently Asked Questions"},"11":{"body":"The async vision document provides a forum where the Async Rust community can plan a great overall experience for Async Rust users. Async Rust was intentionally designed not to have a \"one size fits all\" mindset, and we don't want to change that. Our goal is to build a shared vision for the end-to-end experience while retaining the loosely coupled, exploration-oriented ecosystem we have built.","breadcrumbs":"🔮 The vision » Involving the whole community","id":"11","title":"Involving the whole community"},"110":{"body":"Embedded developers need to write error-free applications outside of the comfort zone of an operating system. Rust helps to prevent many classes of programming errors at compile time which inspires confidence in the software quality and and cuts time intensive build-flash-test iterations. Embedded developers needs good hardware abstraction. Frameworks in other languages do not provide the sophisticated memory mapped IO to safe type abstraction tooling which have been created by the Rust teams. Embedded developers care about hard real time capabilities; the concept of \"you only pay for what you use\" is very important in embedded applications. The combination of the inherently asynchronous interrupt handling of microcontrollers with the Rust async building blocks are a perfect match to effortlessly create applications with hard realtime capabilities. Embedded developers are particularly appreciative of strong tooling support. The availability of the full environment via rustup and the integration of the full toolchain with cargo and build.rs make her very happy because she can focus on what she does best instead of having regular fights with the environment.","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » What makes embedded projects like MonsterMesh different from others?","id":"110","title":"What makes embedded projects like MonsterMesh different from others?"},"111":{"body":"Yes! The tradeoffs for an embedded application like MonsterMesh and a typical server are very different. Further, most server-grade frameworks are not #[no_std] compatible and far exceeded the available footprint on the sensor nodes.","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » Does MonsterMesh require a custom tailored runtime?","id":"111","title":"Does MonsterMesh require a custom tailored runtime?"},"112":{"body":"Having no operating system to provide abstractions to it, MonsterMesh will contain all the logic it needs to run. Much of this, especially around the hardware-software-interface is unlikely to be unique to MonsterMesh and will be sourced from crates.io. However, the further up the stack one goes, the more specialized the requirements will become.","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » How much of this project is likely to be built with open source components from crates.io?","id":"112","title":"How much of this project is likely to be built with open source components from crates.io?"},"113":{"body":"So glad you asked! Please watch this entertaining video .","breadcrumbs":"🔮 The vision » ⚡ Projects » MonsterMesh (embedded sensors) » How did you pick the name?","id":"113","title":"How did you pick the name?"},"114":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » ⚡ Projects: DistriData (Generic Infrastructure)","id":"114","title":"⚡ Projects: DistriData (Generic Infrastructure)"},"115":{"body":"This is a sample project for use within the various \"status quo\" or \"shiny future\" stories.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » What is this?","id":"115","title":"What is this?"},"116":{"body":"DistriData is the latest in containerized, micro-service distributed database technology. Developed completely in the open as part of Cloud Native Computing Foundation, this utility is now deployed in a large portion of networked server applications across the entire industry. Since it's so widely used, DistriData has to balance flexibility with having sensible defaults.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » Description","id":"116","title":"Description"},"117":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » 🤔 Frequently Asked Questions","id":"117","title":"🤔 Frequently Asked Questions"},"118":{"body":"This project is meant to be used in many different ways in many different projects, and is not unique to any one application. Many of those using this project will not even need or want to know that it's written in Rust.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » What makes DistriData different from others?","id":"118","title":"What makes DistriData different from others?"},"119":{"body":"DistriData's concerns are at a higher level than the runtime. A fast, reliable, and resource conscious general purpose runtime will serve DistriData's needs.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » Does DistriData require a custom tailored runtime?","id":"119","title":"Does DistriData require a custom tailored runtime?"},"12":{"body":"This document is not yet complete! We are actively working on it as part of the working group, and we would like your help! Check out the How to vision doc page for more details. graph TD;\nA-->B;\nA-->C;\nB-->D;\nC-->D;","breadcrumbs":"🔮 The vision » 🚧 Under construction! Help needed! 🚧","id":"12","title":"🚧 Under construction! Help needed! 🚧"},"120":{"body":"Yes, while DistriData receives many contributions, it's important to the team that when possible they utilize existing technologies that developers are already familiar with to ensure that contributing to the project is easy.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » How much of this project is likely to be built with open source components from crates.io?","id":"120","title":"How much of this project is likely to be built with open source components from crates.io?"},"121":{"body":"It needs to be resource conscious, fast, reliable, but above all else it needs to be easy to run, monitor, and maintain.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » What is of most concern to this project?","id":"121","title":"What is of most concern to this project?"},"122":{"body":"While DistriData is resource conscious, it's not resource starved . There's no need to make life difficult to save on a memory allocation here or there.","breadcrumbs":"🔮 The vision » ⚡ Projects » DistriData (Generic Infrastructure) » What is of least concern to this project?","id":"122","title":"What is of least concern to this project?"},"123":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » ⚡ Projects: TrafficMonitor (Custom Infrastructure)","id":"123","title":"⚡ Projects: TrafficMonitor (Custom Infrastructure)"},"124":{"body":"This is a sample project for use within the various \"status quo\" or \"shiny future\" stories.","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » What is this?","id":"124","title":"What is this?"},"125":{"body":"TrafficMonitor is a utility written by AmoogleSoft, a public cloud provider, for monitoring network traffic as it comes into its data centers to prevent things like distributed denial-of-service attacks. It monitors all network traffic, looking for patterns, and deciding when to take action against certain threat vectors. TrafficMonitor runs across almost all server racks in a data center, and while it does run on top of an operating system, it is resource conscious. It's also extremely important that TrafficMonitor stay running and handle network traffic with as few \"hiccups\" as possible. TrafficMonitor is highly tuned to the needs of AmoogleSoft's cloud offering and won't run anywhere else.","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » Description","id":"125","title":"Description"},"126":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » 🤔 Frequently Asked Questions","id":"126","title":"🤔 Frequently Asked Questions"},"127":{"body":"Networking infrastructure powers entire datacenters or even public internet infrastructure, and as such it is imperative that it run without failure. It is also extremely important that such projects take few resources as possible. Being on an operating system and large server racks may mean that using the standard library is possible, but memory and CPU usage should be kept to a minimum. This project is worked on by software developers with different backgrounds. Some are networking infrastructure experts (usually using C) while others have experience in networked applications (usually using GCed languages like Java, Go, or Node).","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » What makes networking infrastructure projects like TrafficMonitor different from others?","id":"127","title":"What makes networking infrastructure projects like TrafficMonitor different from others?"},"128":{"body":"Maybe? TrafficMonitor runs on top of a full operating system and takes full advantage of that operating systems networking stack. It's possible that a runtime meant for server workloads will work with TrafficMonitor.","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » Does TrafficMonitor require a custom tailored runtime?","id":"128","title":"Does TrafficMonitor require a custom tailored runtime?"},"129":{"body":"TrafficMonitor is highly specialized to the internal workings of AmoogleSoft's public cloud offering. Thus, \"off-the-shelf\" solutions will only work if they're highly flexible and highly tuneable. TrafficMonitor is central to AmoogleSoft's success meaning that getting things \"just right\" is much more important than having something from crates.io that mostly works but requires little custom tuning.","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » How much of this project is likely to be built with open source components from crates.io?","id":"129","title":"How much of this project is likely to be built with open source components from crates.io?"},"13":{"body":"","breadcrumbs":"🔮 The vision » ❓How to vision » ❓ How to vision","id":"13","title":"❓ How to vision"},"130":{"body":"Reliability is the number one concern. This infrastructure is at the core of the business - it needs to work extremely reliable. A close second is being easily monitorible. If something goes wrong, AmoogleSoft needs to know very quickly what the issue is. AmoggleSoft is a large company with many existing custom tooling for building, monitoring, and deploying its software. TrafficMonitor has to play nicely in a world that existed long before it came around.","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » What is of most concern to this project?","id":"130","title":"What is of most concern to this project?"},"131":{"body":"AmoogleSoft is a large company with time and resources. High-level frameworks that remove control in favor of peak developer productivity is not what they're after. Sure, the easier things are to get working, the better, but that should not be at the sacrifice of control.","breadcrumbs":"🔮 The vision » ⚡ Projects » TrafficMonitor (Custom Infrastructure) » What is of least concern to this project?","id":"131","title":"What is of least concern to this project?"},"132":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » ⚡ Projects: YouBuy (Traditional Server Application)","id":"132","title":"⚡ Projects: YouBuy (Traditional Server Application)"},"133":{"body":"This is a sample project for use within the various \"status quo\" or \"shiny future\" stories.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » What is this?","id":"133","title":"What is this?"},"134":{"body":"YouBuy is a growing e-commerce website that now has millions of users. The team behind YouBuy is struggling to keep up with traffic and keep server costs low. Having originally written YouBuy in a mix of Ruby on Rails and Node, the YouBuy team decides to rewrite many parts of their service in Rust which they've investigated and found to be performant while still allowing for high levels of abstraction they're used to.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » Description","id":"134","title":"Description"},"135":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » 🤔 Frequently Asked Questions","id":"135","title":"🤔 Frequently Asked Questions"},"136":{"body":"Many server applications are written in languages with garbage collectors. Many of the things that Rust forces users to care about are not first order concerns for those working on server applications (e.g., memory management, stack vs heap allocations, etc.). Many server applications are written in languages without static type checking. The developers of YouBuy don't have much experience with statically typed languages and some of the developers early in their Rust learning journeys expressed frustration that they found it hard to get their programs to compile especially when using async constructs.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » What makes YouBuy and other server applications different from others?","id":"136","title":"What makes YouBuy and other server applications different from others?"},"137":{"body":"YouBuy should be perfectly fine with a runtime from crates.io. In fact, their concern isn't at the runtime level but at the high-level server framework level.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » Does YouBuy require a custom tailored runtime?","id":"137","title":"Does YouBuy require a custom tailored runtime?"},"138":{"body":"YouBuy is in fierce competition with many other e-commerce sites. Therefore, the less that YouBuy engineers have to write themselves, the better. Ideally, YouBuy can focus 100% of its energy on features that differentiate it from its competition and none of its time on tweaking its networking stack.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » How much of this project is likely to be built with open source components from crates.io?","id":"138","title":"How much of this project is likely to be built with open source components from crates.io?"},"139":{"body":"It seems like YouBuy is always on the verge of either becoming the next billion-dollar company with hundreds of millions of users or completely going out of business. YouBuy needs to be able to move fast and focus on the application business logic.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » What is of most concern to this project?","id":"139","title":"What is of most concern to this project?"},"14":{"body":"When What ✅ Now till 2021-04-30 Improve the sample projects ✅ Now till 2021-04-30 Propose new \"status quo\" stories or comment on existing PRs ✅ Now till 2021-04-30 Propose new \"shiny future\" stories or comment on existing PRs 🛑 Starting 2021-04-30 Vote for the awards on the status quo and shiny future stories!","breadcrumbs":"🔮 The vision » ❓How to vision » How you can help","id":"14","title":"How you can help"},"140":{"body":"Since moving fast is of primary concern, the ins and outs of the underlying networking stack are only of concern when something goes wrong. The hope is that that rarely if ever happens and when it does, it's easy to find the source of the issue.","breadcrumbs":"🔮 The vision » ⚡ Projects » YouBuy (Traditional Server Application) » What is of least concern to this project?","id":"140","title":"What is of least concern to this project?"},"141":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » ⚡ Projects: SLOW (Protocol implementation)","id":"141","title":"⚡ Projects: SLOW (Protocol implementation)"},"142":{"body":"This is a sample project for use within the various \"status quo\" or \"shiny future\" stories.","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » What is this?","id":"142","title":"What is this?"},"143":{"body":"SLOW is an open source implementation of a fancy new protocol. This protocol uses a mix of TCP and UDP packets and is designed to operate particularly well over high latency, low throughput links.","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » Description","id":"143","title":"Description"},"144":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » 🤔 Frequently Asked Questions","id":"144","title":"🤔 Frequently Asked Questions"},"145":{"body":"SLOW is a library, not an application.","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » What makes this project different from others?","id":"145","title":"What makes this project different from others?"},"146":{"body":"Ideally, SLOW would be developed in an independent way that permits it to be used across many runtimes in a variety of different environments.","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » Does this project require a custom tailored runtime?","id":"146","title":"Does this project require a custom tailored runtime?"},"147":{"body":"SLOW builds on other generic libraries available from crates.io. For example, it would like to make use of compression algorithms that others have written, or to use future adapters.","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » How much of this project is likely to be built with open source components from crates.io?","id":"147","title":"How much of this project is likely to be built with open source components from crates.io?"},"148":{"body":"Uh, I don't really know! If you develop software like this, maybe open a PR and tell me! --nikomatsakis","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » What is of most concern to this project?","id":"148","title":"What is of most concern to this project?"},"149":{"body":"Uh, I don't really know! If you develop software like this, maybe open a PR and tell me! --nikomatsakis","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » What is of least concern to this project?","id":"149","title":"What is of least concern to this project?"},"15":{"body":"The process we are using to write the vision doc encourages active collaboration and \"positive sum\" thinking. It starts with a brainstorming period, during which we aim to collect as many \"status quo\" and \"shiny future\" stories as we can. This brainstorming period runs for six weeks, until the end of April. For the first two weeks (until 2021-04-02), we are collecting \"status quo\" stories only. After that, we will accept both \"status quo\" and \"shiny future\" stories until the end of the brainstorming period. Finally, to cap off the brainstorming period, we will select winners for awards like \"Most Humorous Story\" or \"Most Supportive Contributor\". Once the brainstorming period is complete, the working group leads will begin work on assembling the various stories and shiny futures into a coherent draft. This draft will be reviewed by the community and the Rust teams and adjusted based on feedback.","breadcrumbs":"🔮 The vision » ❓How to vision » The big picture","id":"15","title":"The big picture"},"150":{"body":"It's like QUIC , but slow! Get it? Get it? :D","breadcrumbs":"🔮 The vision » ⚡ Projects » SLOW (Protocol implementation) » Why is this called SLOW?","id":"150","title":"Why is this called SLOW?"},"151":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » 😱 Status quo stories","id":"151","title":"😱 Status quo stories"},"152":{"body":"We are still in the process of drafting the vision document. The stories you see on this page are examples meant to give a feeling for how a status quo story looks; you can expect them to change. We encourage you to propose your own by opening a PR -- see the \"How to vision\" page for instructions and details.","breadcrumbs":"🔮 The vision » 😱 Status quo » 🚧 Under construction! Help needed! 🚧","id":"152","title":"🚧 Under construction! Help needed! 🚧"},"153":{"body":"The \"status quo\" stories document the experience of using Async Rust today. Each story narrates the challenges encountered by one of our characters as they try (and typically fail in dramatic fashion) to achieve their goals. Writing the \"status quo\" stories helps us to compensate for the curse of knowledge : the folks working on Async Rust tend to be experts in Async Rust. We've gotten used to the workarounds required to be productive, and we know the little tips and tricks that can get you out of a jam. The stories help us gauge the cumulative impact all the paper cuts can have on someone still learning their way around. This gives us the data we need to prioritize.","breadcrumbs":"🔮 The vision » 😱 Status quo » What is this","id":"153","title":"What is this"},"154":{"body":"These stories may not be true, but they are not fiction. They are based on real-life experiences of actual people. Each story contains a \"Frequently Asked Questions\" section referencing sources used to create the story. In some cases, it may link to notes or summaries in the conversations section, though that is not required. The \"Frequently Asked Questions\" section also contains a summary of what the \"morals\" of the story are (i.e., what are the key takeaways), along with answers to questions that people have raised along the way.","breadcrumbs":"🔮 The vision » 😱 Status quo » Based on a true story","id":"154","title":"Based on a true story"},"155":{"body":"Just because a user story is represented here doesn't mean we're going to be able to fix it right now. Some of these user stories will indicate more severe problems than others. As we consider the stories, we'll select some subset to try and address; that choice is reflected in the roadmap .","breadcrumbs":"🔮 The vision » 😱 Status quo » The stories provide data we use to prioritize, not a prioritization itself","id":"155","title":"The stories provide data we use to prioritize, not a prioritization itself"},"156":{"body":"What follows is a kind of \"metanarrative\" of using async Rust that summarizes the challenges that are present today. At each point, we link to the various stories; you can read the full set in the table of contents on the left. We would like to extend this to also cover some of its glories, since reading the current stories is a litany of difficulties, but obviouly we see great promise in async Rust. Note that many stories here appear more than once. Rust strives to be a language that brings together performance, productivity, and correctness. Rust programs are designed to surface bugs early and to make common patterns both ergonomic and efficient, leading to a sense that \"if it compiles, it generally works, and works efficiently\". Async Rust aims to extend that same feeling to an async setting, in which a single process interweaves numerous tasks that execute concurrently. Sometimes this works beautifully. However, other times, the reality falls short of that goal. Making hard choices from a complex ecosystem from the start The problems begin from the very first moment a user starts to try out async Rust. The async Rust support in Rust itself is very basic, consisting only of the core Future mechanism. Everything else -- including the basic async runtimes themselves -- lives in user space. This means that users must make a number of choices rom the very beginning: what runtime to use Barbara makes their first foray into async Niklaus wants to share knowledge what http libraries to use Barbara anguishes over http basic helpers and utility crates are hard to find, and there are many choices, often with subtle differences between them Barbara needs async helpers Furthermore, the async ecosystem is fractured. Choosing one library may entail choosing a specific runtime. Sometimes you may wind up with multiple runtimes running at once. Alan started trusting the rust compiler but then async Barbara needs async helpers 🚧 Need a story about multiple runtimes working together There is a lack of common, standardized abstractions, which means that often there are multiple attempts to establish common traits and different libraries will employ a distinct subset. Sink is not implemented by async-std websockets 🚧 No standardized lower-level traits for read, write, iterators in an async setting 🚧 Lack of widely used higher-level abstractions (like those tower aims to provide) 🚧 Tokio doesn't support the futures Stream trait because of stability concerns Some of the problems are due to the design of Rust itself. The coherence rules in particular. 🚧 Write about how coherence makes it impossible to establish Once your basic setup is done, the best design patterns are subtle and not always known. Writing async programs turns out to have all kinds of subtle tradeoffs. Rust aims to be a language that gives its users control, but that also means that users wind up having to make a lot of choices, and we don't give them much guidance. If you need synchronization, you might want an async lock, but you might want a synchronous lock, it's hard to know. Alan thinks he needs async locks Mixing sync and async code is tricky and it's not always obvious how to do it -- something it's not even clear what is \"sync\" (how long does a loop have to run before you can consider it blocking?) Barbara bridges sync and async Barbara compares some C++ code There are often many options for doing things like writing futures or other core concepts; which libraries or patterns are best? Barbara needs async helpers Grace wants to integrate c api Barbara plays with async , where she tries a number of combinations before she lands on Box::pin(async move { .. }) If you would to have data or task parallel operations, it's not always obvious how to do that Barbara plays with async Barbara tries async streams Niklaus builds a hydrodynamic simulator Sometimes it's hard to understand what will happen when the code runs Grace wants to integrate c api Barbara bridges sync and async Sometimes async may not even be the right solution Niklaus builds a hydrodynamic simulator Even once you've chosen a pattern, gettings things to compile can be a challenge. Async fn doesn't work everywhere not in traits not in closures -- barbara plays with async barbara needs async helpers Recursion doesn't work barbara needs async helpers Things have to be Send all the time, some things can't live across an await send isn't what it means anymore alan thinks he needs async locks The tricks you know from Sync rust apply but don't quite work e.g., Box::pin, not Box::new -- barbara plays with async Sometimes you have to add boxed Grace tries new libraries Writing strings is hard Grace wants to integrate a C API When you stray from the happy path, the complexity cliff is very steep Working with Pin is really hard, but necessary in various scenarios 🚧 Need a story about implementing async-read, async-write Alan hates writing a stream It's easy to forget to invoke a waker Alan hates writing a stream Grace deploys her service Ownership and borrowing rules get really complicated when async is involved Alan writes a web framework Sometimes you want &mut access that ends while the future is suspended Alan lost the world Ghostcell Writing executors is pretty non-trivial, things have to have references to one another in a way that is not very rusty barbara builds an async executor Once you get it to compile, things don't \"just work\" at runtime, or they may be unexpectedly slow. Libraries are tied to particular runtimes and those runtimes can panic when combined, or require special setup Alan started trusting the rust compiler but then async Alan picks a web server Cancellation can in principle occur at any point in time, which leads to subtle bugs Alan builds a cache Alan finds dropping database handles is hard Barbara gets burned by select Dropping is synchronous but sometimes wants to do asynchronous things and block for them to complete Alan finds dropping database handles is hard Nested awaits mean that outer awaits cannot make progress Footgun with futures unordered Async functions let you build up large futures that execute without allocation, which is great, but can be its own cost Alan iteratively regresses Alan runs into stack allocation trouble It's easy to have async functions that inadvertently spend too long in between awaits Barbara compares some C++ code When you have those problems, you can't readily debug them or get visibility into what is going on. The state of the executor can be very opaque: what tasks exist? why are they blocked? Alan tries to debug a hang Barbara wants async insights Grace deploys her service Stacktraces are full of gobbly gook and hard to read. Barbara trims a stacktrace Tooling doesn't work as well with async or just plain doesn't exist. Grace waits for gdb Alan iteratively regresses Rust has always aimed to interoperate well with other languages and to fit itself into every niche, but that's harder with async. Runtimes like tokio and async-std are not designed to \"share ownership\" of the event loop with foreign runtimes Alan has an event loop Embedded environments can have pretty stringent requirements; Future was designed to be minimal, but perhaps not minimal enough Barbara carefully discusses embedded future Evolving specs for C and C++ require careful thought to integrate with async Rust's polling model 🚧 Convert these notes on C++ into a status quo story 🚧 Write about the challenges of io-uring integration Advanced new techniques like Ghostcell may not fit into the traits as designed","breadcrumbs":"🔮 The vision » 😱 Status quo » Metanarrative","id":"156","title":"Metanarrative"},"157":{"body":"This is a template for adding new \"status quo\" stories. To propose a new status quo PR, do the following: Create a new file in the status_quo directory named something like Alan_tries_to_foo.md or Grace_does_bar.md, and start from the raw source from this template . You can replace all the italicized stuff. :) Do not add a link to your story to the SUMMARY.md file; we'll do it after merging, otherwise there will be too many conflicts. For more detailed instructions, see the How To Vision: Status Quo page! If you're looking for ideas of what to write about, take a look at the open issues . You can also open an issue of your own to throw out an idea for others.","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » 😱 Status quo stories: Template","id":"157","title":"😱 Status quo stories: Template"},"158":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » 🚧 Warning: Draft status 🚧","id":"158","title":"🚧 Warning: Draft status 🚧"},"159":{"body":"Write your story here! Feel free to add subsections, citations, links, code examples, whatever you think is best.","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » The story","id":"159","title":"The story"},"16":{"body":"The brainstorming period runs until 2021-04-30: Folks open \"status quo\" and \"shiny future\" story PRs against the wg-async-foundations repo . Templates and instructions for status quo stories can be found here. You can also browse the open \"status quo\" issues for ideas! Templates and instructions for shiny future stories can be found here. We collectively comment on these PRs, helping to improve them and make them more complete. Unless they contain factual inaccuracies, the aim is to merge all PRs opened in the brainstorming period. We also expect people to sometimes extend other stories with additional details or FAQs. At the end of the brainstorming period, we will vote and give awards for things like \"most amusing\". (We'd like suggestions on the best categories!) The more the merrier! During this brainstorming period, we want to focus on getting as many ideas as we can. Having multiple \"shiny futures\" that address the same problem is a feature, not a bug, as it will let us mix-and-match later to try and find the best overall plan. Comments and questions will be used as a tool for improving understanding or sharpening proposals. Presenting alternative ideas is done by writing an alternative story . Reviewing contributions To merge a story or project PR, any member of the working group can open a topic on Zulip and propose it be merged. Ideally there will be no outstanding concerns. If a second member of the working group approves, the PR can then be merged. Reviewers should ensure that new stories and projects are added to the SUMMARY.md file either before merging or directly afterwards.","breadcrumbs":"🔮 The vision » ❓How to vision » Brainstorming","id":"16","title":"Brainstorming"},"160":{"body":"Here are some standard FAQ to get you started. Feel free to add more!","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » 🤔 Frequently Asked Questions","id":"160","title":"🤔 Frequently Asked Questions"},"161":{"body":"Talk about the major takeaways-- what do you see as the biggest problems.","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » What are the morals of the story?","id":"161","title":"What are the morals of the story?"},"162":{"body":"Talk about what the story is based on, ideally with links to blog posts, tweets, or other evidence.","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » What are the sources for this story?","id":"162","title":"What are the sources for this story?"},"163":{"body":"Talk about the character you used for the story and why.","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » Why did you choose NAME to tell this story?","id":"163","title":"Why did you choose NAME to tell this story?"},"164":{"body":"In some cases, there are problems that only occur for people from specific backgrounds, or which play out differently. This question can be used to highlight that.","breadcrumbs":"🔮 The vision » 😱 Status quo » Template » How would this story have played out differently for the other characters?","id":"164","title":"How would this story have played out differently for the other characters?"},"165":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » 😱 Status quo stories: Alan tries to cache requests, which doesn't always happen.","id":"165","title":"😱 Status quo stories: Alan tries to cache requests, which doesn't always happen."},"166":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]!","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » 🚧 Warning: Draft status 🚧","id":"166","title":"🚧 Warning: Draft status 🚧"},"167":{"body":"Alan is working on an HTTP server. The server makes calls to some other service. The performance of the downstream service is somewhat poor, so Alan would like to implement some basic caching. Alan writes up some code which does the caching: async fn get_response(&mut self, key: String) { // Try to get the response from cache if let Some(cached_response) = self.cache.get(key) { self.channel.send(cached_response).await; return; } // Get the response from the downstream service let response = self.http_client.make_request(key).await; self.channel.send(response).await; // Store the response in the cache self.cache.set(key, response);\n} Alan is happy with how things are working, but notices every once in a while the downstream service hangs. To prevent that, Alan implements a timeout. He remembers from the documentation for his favorite runtime that there is the race function which can kick off two futures and polls both until one completes (similar to tokio's select and async-std's race for example). runtime::race(timeout(), get_response(key)).await","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » The story","id":"167","title":"The story"},"168":{"body":"Alan ships to production but after several weeks he notices some users complaining that they receive old data. Alan looks for help. The compiler unfortunately doesn't provide any hints. He turns to his second best friend clippy, who cannot help either. Alan tries debugging. He uses his old friend println!. After hours of working through, he notices that sometimes the line that sets the response in the cache never gets called.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » The bug","id":"168","title":"The bug"},"169":{"body":"Alan goes to [Barbara][] and asks why in the world that might be ⁉️ 💡 Barbara looks through the code and notices that there is an await point between sending the response over the channel and setting the cache. Since the get_response future can be dropped at each available await point, it may be dropped after the http request has been made, but before the response has successfully been sent over the channel, thus not executing the remaining instructions in the function. This means the cache might not be set. Alan fixes it by setting the cache before sending the result over the channel. 🎉 async fn get_response(&mut self, key: String) { // ... cache miss happened here // We perform the HTTP request and our code might continue // after this .await once the HTTP request is complete let response = self.http_client.make_request(key).await; // Immediately store the response in the cache self.cache.set(key, response); self.channel.send(response).await;\n}","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » The solution","id":"169","title":"The solution"},"17":{"body":"At this point, the wg leads will write the draft vision document, drawing on the status quo and shiny future stories that were submitted. Like an RFC, this draft vision doc will be opened for comment and improved based on the resulting feedback. When the wg leads feel it is ready, it will be taken to the lang and libs teams for approval (and other Rust teams as appropriate).","breadcrumbs":"🔮 The vision » ❓How to vision » Harmonizing","id":"17","title":"Harmonizing"},"170":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » 🤔 Frequently Asked Questions","id":"170","title":"🤔 Frequently Asked Questions"},"171":{"body":"Futures can be \"canceled\" at any await point. Authors of futures must be aware that after an await, the code might not run. This is similar to panic safety but way more likely to happen Futures might be polled to completion causing the code to work. But then many years later, the code is changed and the future might conditionally not be polled to completion which breaks things. The burden falls on the user of the future to poll to completion, and there is no way for the lib author to enforce this - they can only document this invariant. Diagnosing and ultimately fixing this issue requires a fairly deep understanding of the semantics of futures. Without a Barbara, it might be hard to even know where to start: No lints are available, Alan is left with a normal debugger and println!.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » What are the morals of the story?","id":"171","title":"What are the morals of the story?"},"172":{"body":"The relevant sources of discussion for this story have been gathered in this github issue .","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » What are the sources for this story?","id":"172","title":"What are the sources for this story?"},"173":{"body":"Alan has enough experience and understanding of push based async languages to make the assumptions that will trigger the bug.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » Why did you choose Alan to tell this story?","id":"173","title":"Why did you choose Alan to tell this story?"},"174":{"body":"This story would likely have played out the same for almost everyone but Barbara, who has probably been bitten by that already. The debugging and fixing time would however probably have varied depending on experience and luck.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to cache requests, which doesn't always happen » How would this story have played out differently for the other characters?","id":"174","title":"How would this story have played out differently for the other characters?"},"175":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » 😱 Status quo stories: Alan finds dropping database handles is hard.","id":"175","title":"😱 Status quo stories: Alan finds dropping database handles is hard."},"176":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » 🚧 Warning: Draft status 🚧","id":"176","title":"🚧 Warning: Draft status 🚧"},"177":{"body":"Alan has been adding an extension to YouBuy that launches a singleton actor which interacts with a Sqlite database using the sqlx crate. The Sqlite database only permits a single active connection at a time, but this is not a problem, because the actor is a singleton, and so there only should be one at a time. He consults the documentation for sqlx and comes up with the following code to create a connection and do the query he needs: use sqlx::Connection; #[async_std::main]\nasync fn main() -> Result<(), sqlx::Error> { // Create a connection let conn = SqliteConnection::connect(\"sqlite::memory:\").await?; // Make a simple query to return the given parameter let row: (i64,) = sqlx::query_as(\"SELECT $1\") .bind(150_i64) .fetch_one(&conn).await?; assert_eq!(row.0, 150); Ok(())\n} Things seem to be working fairly well but sometimes when he refreshes the page he encounters a panic with the message \"Cannot open a new connection: connection is already open\". He is flummoxed.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » The problem","id":"177","title":"The problem"},"178":{"body":"Alan tries to figure out what happened from the logs, but the only information he sees is that a new connection has been received. Alan turns to the documentation for the sqlx crate to see if there are flags that might enable extra instrumentation but he can't find any. He's a bit confused, because he's accustomed to having things generally be cleaned up automatically when they get dropped (for example, dropping a File will close it). Searching the docs, he sees the close method, but the comments confirm that he shouldn't have to call it explicitly: \"This method is not required for safe and consistent operation. However, it is recommended to call it instead of letting a connection drop as the database backend will be faster at cleaning up resources.\" Still, just in case, he decides to add a call to close into his code. It does seem to help some, but he is still able to reproduce the problem if he refreshes often enough. Feeling confused, he adds a log statement right before calling close to see if it is working: use sqlx::Connection; #[async_std::main]\nasync fn do_the_thing() -> Result<(), sqlx::Error> { // Create a connection let conn = SqliteConnection::connect(\"sqlite::memory:\").await?; // Make a simple query to return the given parameter let row: (i64,) = sqlx::query_as(\"SELECT $1\") .bind(150_i64) .fetch_one(&conn).await?; // <----- if this await is cancelled, doesn't help assert_eq!(row.0, 150); // he adds this: log!(\"closing the connection\"); conn.close(); Ok(())\n} He observes that in the cases where he has the problem the log statement never executes. He asks Barbara for help and she points him to this gist that explains how await can be canceled, and cancellation will invoke the destructors for things that are in scope. He reads the source for the SqliteConnection destructor and finds that destructor spawns a task to actually close the connection. He realizes there is a race condition and the task may not have actually closed the connection before do_the_thing is called a second time. At this point, he is feeling pretty frustrated! Next, Alan seeks verification and validation of his understanding of the source code from the sqlx forum. Someone on the forum explains why the destructor launches a fresh task: Rust doesn't have a way to execute async operations in a destructor.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » Searching for the Solution","id":"178","title":"Searching for the Solution"},"179":{"body":"Alan briefly considers rearchitecting his application in more extreme ways to retain use of async, but he gives up and seeks a more straight forward solution. He discovers rusqlite, a synchronous database library and adopts it. This requires some rearchitecting but solves the problem.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » Finding the Solution","id":"179","title":"Finding the Solution"},"18":{"body":"This meant to be a living document . We plan to revisit it regularly to track our progress and update it based on what we've learned in the meantime. Note that the shiny future stories in particular are going to involve a fair bit of uncertainty, so we expect them to change as we go.","breadcrumbs":"🔮 The vision » ❓How to vision » Living document","id":"18","title":"Living document"},"180":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » 🤔 Frequently Asked Questions","id":"180","title":"🤔 Frequently Asked Questions"},"181":{"body":"Rust's async story is lacking a way of executing async operations in destructors. Spawning is a workaround, but it can have unexpected side-effects. The story demonstrates solid research steps that Alan uses to understand and resolve his problem. Completion of the Cancellation and timeouts docs may have been helpful. It's difficult to know how something absent might have improved the solution search process.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » What are the morals of the story?","id":"181","title":"What are the morals of the story?"},"182":{"body":"This specific story describes an actual bug encountered by Sergey Galich at 1Password.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » What are the sources for this story?","id":"182","title":"What are the sources for this story?"},"183":{"body":"His experience and understanding of other languages coupled with his desire to apply Rust would likely lead him to try solutions before deeply researching them.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » Why did you choose Alan to tell this story?","id":"183","title":"Why did you choose Alan to tell this story?"},"184":{"body":"This story would likely have played out the same for everyone.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan finds dropping database handles is hard » How would this story have played out differently for the other characters?","id":"184","title":"How would this story have played out differently for the other characters?"},"185":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » 😱 Status quo stories: Alan has an external event loop and wants to use futures/streams","id":"185","title":"😱 Status quo stories: Alan has an external event loop and wants to use futures/streams"},"186":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » 🚧 Warning: Draft status 🚧","id":"186","title":"🚧 Warning: Draft status 🚧"},"187":{"body":"As a first Rust Project, Alan decides to program his own IRC Client. Since it is Alan's first Project in Rust, it is going to be a private one. He is going to use it on is Mac, so he decides to go with the cocoa crate to not have to learn any Framework specific quirks. This way Alan can get a feel of Rust itself.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » The story","id":"187","title":"The story"},"188":{"body":"Despite a learning curve, he managed to creating a first window and have some buttons and menus works. After the initialisation is done, the App hand over control to CFRunLoop::Run . Once Alan is happy with his Mock UI, he wants to make it actually do something. Reading about async Rust, he sees that several of the concepts there map pretty well to some core Cocoa concepts: Promises => Futures Observables => Streams. Alan smiles, thinking he knows what and more importantly how to do this.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » Alans hopes and dreams","id":"188","title":"Alans hopes and dreams"},"189":{"body":"Unfortunately, coming from frameworks like Angular or Node.js, Alan is not used to being responsible for driving the processing of Futures/Streams. After reading up about Runtimes, his mental image of a runtime is something like: impl Runtime { fn run() { while !self.tasks.is_empty() { while let Some(task) = self.awoken_tasks.pop() { task.poll(); //... remove finished task from 'tasks' } } }\n} Coming from Single-Threaded Angular development, Alan decides to limit his new App to Single-Threaded. He does not feel like learning about Send/Sync/Mutex as well as struggling with the borrow checker. On top of that, his App is not doing any heavy calculation so he feels async should be enough to not block the main thread too bad and have a hanging UI.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » First time dealing with runtimes","id":"189","title":"First time dealing with runtimes"},"19":{"body":"Yes! We are planning to give awards in various categories for folks who write status quo and shiny future PRs. The precise categories are TBD. Check out the awards page for more details.","breadcrumbs":"🔮 The vision » ❓How to vision » Wait, did somebody say awards?","id":"19","title":"Wait, did somebody say awards?"},"190":{"body":"Soon Alan realises that he cannot use any of those runtimes because they all take control of the thread and block. The same as the OS Event loop. Alan spends quite some time to look through several runtime implementations. Ignoring most internal things, all he wants is a runtime that looks a bit like this: impl Runtime { fn make_progress() { while let Some(task) = self.awoken_tasks.pop() { task.poll(); //... remove finished task from 'tasks' } } fn run() { while !self.tasks.is_empty() { self.make_progress(); } }\n} It could be so easy. Unfortunately he does not find any such solution. Having already looked through quite a bit of low level documentation and runtime code, Alan thinks about implementing his own runtime... ...but only for a very short time. Soon after looking into it, he finds out that he has to deal with RawWakerVTable, RawWaker, Pointers. Worst of all, he has to do that without the safety net of the rust compiler, because this stuff is unsafe. Reimplementing the OS Event Loop is also not an option he wants to take. See here >Override run() if you want the app to manage the main event loop differently than it does by default. (This a critical and complex task, however, that you should only attempt with good reason).","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » Fun time is over","id":"190","title":"Fun time is over"},"191":{"body":"Alan gives up and uses a runtime in a seperate thread from the UI. This means he has to deal with the additional burden of syncing and he has to give up the frictionless use of some of the patterns he is accustomed to by treating UI events as Stream.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » The cheap way out","id":"191","title":"The cheap way out"},"192":{"body":"What are the morals of the story? Even though you come from a language that has async support, does not mean you are used to selecting und driving a runtime. It should be possible to integrate runtimes into existing Event loops. What are the sources for this story? The authors own experience working on a GUI Framework (very early stage) Blog post: Integrating Qt events into Actix and Rust Why did you choose Alan to tell this story? The story deals about UI event loops, but the other characters could run into similar issues when trying to combine event loops from different systems/frameworks. Is this Apple specific? No! You have the same issue with other OSs/Frameworks that don't already support Rust Async. How would this story have played out differently for the other characters? Since this is a technical and not a skill or experience issue, this would play out similar for other Characters. Although someone with deep knowledge of those Event loops, like Grace, might be more willing to re-implement them.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan has an external event loop » 🤔 Frequently Asked Questions","id":"192","title":"🤔 Frequently Asked Questions"},"193":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » 😱 Status quo stories: Alan hates writing a Stream","id":"193","title":"😱 Status quo stories: Alan hates writing a Stream"},"194":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » 🚧 Warning: Draft status 🚧","id":"194","title":"🚧 Warning: Draft status 🚧"},"195":{"body":"Alan is used to writing web server applications using async sockets, but wants to try Rust to get that signature vroom vroom. After a couple weeks learning Rust basics, Alan quickly understands async and await, and therefore has several routes built for his application that await a few things and then construct an HTTP response and send a buffered body. To build the buffered response bodies, Alan was reading a file, and then appending a signature, and putting that all into a single buffer of bytes. Eventually, Alan realizes that some responses have enormous bodies, and would like to stream them instead of buffering them fully in memory. He's used the Stream trait before. Using it was very natural, and followed a similar pattern to regular async/await: while let Some(chunk) = body.next().await? { file.write_all(&chunk).await?;\n} However, implementing Stream turns out to be rather different. With a quick search, he learned the simple way to turn a File into a Stream with ReaderStream, but the signing part was much harder.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » The story","id":"195","title":"The story"},"196":{"body":"Alan first hoped he could simply write signing stream imperatively, reusing his new knowledge of async and await, and assuming it'd be similar to JavaScript: async* fn sign(file: ReaderStream) -> Result, Error> { let mut sig = Signature::new(); while let Some(chunk) = file.next().await? { sig.push(&chunk); yield Ok(chunk) } yield Ok(sig.digest().await)\n} Unfortunately, that doesn't work. The compiler first complains about the async* fn syntax: error: expected item, found keyword `async` --> src/lib.rs:21:1 |\n21 | async* fn sign(file: ReaderStream) -> Result, Error> { | ^^^^^ expected item Less hopeful, Alan tries just deleting the asterisk: error[E0658]: yield syntax is experimental --> src/lib.rs:27:9 |\n27 | yield Ok(chunk) | ^^^^^^^^^^^^^^^ | = note: see issue #43122 for more information After reading about how yield is experimental, and giving up reading the 100+ comments in the linked issue , Alan figures he's just got to implement Stream manually.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » Imperatively Wrong","id":"196","title":"Imperatively Wrong"},"197":{"body":"Implementing a Stream means writing async code in a way that doesn't feel like the async fn that Alan has written so far. He needs to write a poll function and it has a lot of unfamiliar concepts: Pin State machines Wakers Unsure of what the final code will look like, he starts with: struct SigningFile; impl Stream for SigningFile { type Item = Result, Error>; fn poll_next(self: Pin<&mut Self>, cx: &mut Context) -> Poll { }\n}","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » Implementing Stream","id":"197","title":"Implementing Stream"},"198":{"body":"First, he notices Pin. Alan wonders, \"Why does self have bounds? I've only ever seen self, &self, and &mut self before\". Curious, he reads the std::pin page, and a bunch of jargon about pinning data in memory. He also reads that this is useful to guarantee that an object cannot move, and he wonders why he cares about that. The only example on the page explains how to write a \"self-referential struct\" , but notices it needs unsafe code, and that triggers an internal alarm in Alan: \"I thought Rust was safe...\" After asking Barbara , Alan realizes that the types he's depending on are Unpin, and so he doesn't need to worry about the unsafe stuff. It's just a more-annoying pointer type.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » Pin :scream:","id":"198","title":"Pin :scream:"},"199":{"body":"With Pin hopefully ignored, Alan next notices that in the imperative style he wanted originally, he didn't need to explicitly keep track of state. The state was simply the imperative order of the function. But in a poll function, the state isn't saved by the compiler. Alan finds blog posts about the dark ages of Futures 0.1, when it was more common for manual Futures to be written with a \"state machine\". He thinks about his stream's states, and settles on the following structure: struct SigningFile { state: State, file: ReaderStream, sig: Signature,\n} enum State { File, Sign,\n} It turns out it was more complicated than Alan thought (the author made this same mistake). The digest method of Signature is async, and it consumes the signature, so the state machine needs to be adjusted. The signature needs to be able to be moved out, and it needs to be able to store a future from an async fn. Trying to figure out how to represent that in the type system was difficult. He considered adding a generic T: Future to the State enum, but then wasn't sure what to set that generic to. Then, he tries just writing Signing(impl Future) as a state variant, but that triggers a compiler error that impl Trait isn't allowed outside of function return types. Patient Barbara helped again, so that Alan learns to just store a Pin>, wondering if the Pin there is important. struct SigningFile { state: State,\n} enum State { File(ReaderStream, Signature), Signing(Pin>>>), Done,\n} Now he tries to write the poll_next method, checking readiness of individual steps (thankfully, Alan remembers ready! from the futures 0.1 blog posts he read) and proceeding to the next state, while grumbling away the weird Pin noise: match self.state { State::File(ref mut file, ref mut sig) => { match ready!(Pin::new(file).poll_next(cx)) { Some(result) => { let chunk = result?; sig.push(&chunk); Poll::Ready(Some(Ok(chunk))) }, None => { let sig = match std::mem::replace(&mut self.state, State::Done) { State::File(_, sig) => sig, _ => unreachable!(), }; self.state = State::Signing(Box::pin(sig.digest())); Poll::Pending } } }, State::Signing(ref mut sig) => { let last_chunk = ready!(sig.as_mut().poll(cx)); self.state = State::Done; Poll::Ready(Some(Ok(last_chunk))) } State::Done => Poll::Ready(None),\n} Oh well, at least it works , right?","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » State Machine","id":"199","title":"State Machine"},"2":{"body":"There is a weekly triage meeting that takes place in our Zulip stream . Feel free to stop by then (or any time!) to introduce yourself. If you're interested in fixing bugs, though, there is no need to wait for the meeting! Take a look at the instructions here.","breadcrumbs":"👋🏽 Welcome » Getting involved","id":"2","title":"Getting involved"},"20":{"body":"","breadcrumbs":"🔮 The vision » ❓How to vision » Projects » ❓ How to vision: Projects","id":"20","title":"❓ How to vision: Projects"},"200":{"body":"So far, Alan hasn't paid too much attention to Context and Poll. It's been fine to simply pass them along untouched. There's a confusing bug in his state machine. Let's look more closely: // zooming in!\nmatch ready!(Pin::new(file).poll_next(cx)) { Some(result) => { let chunk = result?; sig.push(&chunk); return Poll::Ready(Some(Ok(val)); }, None => { self.set_state_to_signing(); // oops! return Poll::Pending; }\n} In one of the branches, the state is changed, and Poll::Pending is returned. Alan assumes that the task will be polled again with the new state. But, since the file was done (and has returned Poll::Ready), there was actually no waker registered to wake the task again. So his stream just hangs forever. The compiler doesn't help at all, and he re-reads his code multiple times, but because of this easy-to-misunderstand logic error, Alan eventually has to ask for help in a chat room. After a half hour of explaining all sorts of details, a kind person points out he either needs to register a waker, or perhaps use a loop. All too often, since we don't want to duplicate code in multiple branches, the solution for Alan is to add an odd loop around the whole thing, so that the next match branch uses the Context: loop { match self.state { State::File(ref mut file, ref mut sig) => { match ready!(Pin::new(file).poll_next(cx)) { Some(result) => { let chunk = result?; sig.push(&chunk); return Poll::Ready(Some(Ok(chunk))) }, None => { let sig = match std::mem::replace(&mut self.state, State::Done) { State::File(_, sig) => sig, _ => unreachable!(), }; self.state = State::Signing(Box::pin(sig.digest())); // loop again, to catch the `State::Signing` branch } } }, State::Signing(ref mut sig) => { let last_chunk = ready!(sig.as_mut().poll(cx)); self.state = State::Done; return Poll::Ready(Some(Ok(last_chunk))) } State::Done => return Poll::Ready(None), }\n}","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » Wakers","id":"200","title":"Wakers"},"201":{"body":"A little later, Alan needs to add some response body transforming to some routes, to add some app-specific framing. Upon realizing he needs to implement another Stream in a generic fashion, he instead closes the editor and complains on Twitter.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » Gives Up","id":"201","title":"Gives Up"},"202":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » 🤔 Frequently Asked Questions","id":"202","title":"🤔 Frequently Asked Questions"},"203":{"body":"Writing an async Stream is drastically different than writing an async fn. The documentation for Pin doesn't provide much practical guidance in how to use it, instead focusing on more abstract considerations. Missing a waker registration is a runtime error, and very hard to debug. If it's even possible, a compiler warning or hint would go a long way.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » What are the morals of the story?","id":"203","title":"What are the morals of the story?"},"204":{"body":"Part of this story is based on the original motivation for async/await in Rust, since similar problems exist writing impl Future.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » What are the sources for this story?","id":"204","title":"What are the sources for this story?"},"205":{"body":"Choosing Alan was somewhat arbitrary, but this does get to reuse the experience that Alan may already have around await coming from JavaScript.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » Why did you choose Alan to tell this story?","id":"205","title":"Why did you choose Alan to tell this story?"},"206":{"body":"This likely would have been a similar story for any character. It's possible Grace would be more used to writing state machines, coming from C.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan hates writing a Stream » How would this story have played out differently for the other characters?","id":"206","title":"How would this story have played out differently for the other characters?"},"207":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » 😱 Status quo stories: Alan iteratively regresses performance","id":"207","title":"😱 Status quo stories: Alan iteratively regresses performance"},"208":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » 🚧 Warning: Draft status 🚧","id":"208","title":"🚧 Warning: Draft status 🚧"},"209":{"body":"A core part of DistriData, called DDSplit, is in charge of splitting input data records into fragments that are stored on distinct servers, and then reassembling those fragments back into records in response to user queries. DDSplit was originally implemented using Java code (plus some C, interfaced via JNI). Alan thinks that Rust could provide the same quality of service while requiring less memory. He decides to try reimplementing DDSplit in Rust, atop tokio. Alan wants to copy some of the abstractions he sees in the Java code that are defined via Java interfaces. Alan sees Rust traits as the closest thing to Java interfaces. However, when he experimentally defines a trait with an async fn, he gets the following message from the compiler: error[E0706]: functions in traits cannot be declared `async` --> src/main.rs:2:5 |\n2 | async fn method() { } | -----^^^^^^^^^^^^^^^^ | | | `async` because of this | = note: `async` trait functions are not currently supported = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait This diagnostic leads Alan to add the async-trait crate as a dependency to his project. Alan then uses the #[async_trait] attribute provided by that crate to be able to define async fn methods within traits. When Alan finishes the prototype code, he finds the prototype performance has 20% slower throughput compared to the Java version. Alan is disappointed; his experience has been that Rust code performs great, (at least once you managed to get the code to be accepted by the compiler). Alan was not expecting to suffer a 20% performance hit over the Java code. The DDSplit service is being developed on a Linux machine, so Alan is able use the perf tool to gather sampling-based profiling data the async/await port of DDSplit. Looking at a flamegraph for the call stacks, Alan identified two sources of execution time overhead that he did not expect: calls into the memory allocator (malloc) with about 1% of the execution time, and calls to move values in memory (memcpy), with about 8% of execution time. Alan reaches out to Barbara, as the local Rust expert, for help on how identify where the performance pitfalls are coming from. Alan asks Barbara whether the problem could be caused by the tokio executor. Barbara says it is hard to know that without more instrumentation. She explains it could be that the program is overloading tokio's task scheduler (for example), but it also could be that the application code itself has expensive operations, such as lots of small I/O operations rather than using a buffer. Alan and Barbara look at the perf data. They find the output of perf report difficult to navigate and interpret. The data has stack trace fragments available, which gives them a few hints to follow up on. But when they try to make perf report annotate the original source, perf only shows disassembled machine code, not the original Rust source code. Alan and Barbara both agree that trying to dissect the problem from the machine code is not an attractive strategy. Alan asks Barbara what she thinks about the malloc calls in the profile. Barbara recommends that Alan try to eliminate the allocation calls, and if they cannot be eliminated, then that Alan try tuning the parameters for the global memory allocator, or even switching which global memory allocator he is using. Alan looks at Barbara in despair: his time tweaking GC settings on the Java Virtual Machine taught him that allocator tuning is often a black art. Barbara suggests that they investigate where the calls to memcpy are arising, since they look like a larger source of overhead based on the profile data. From the call stacks in perf report, Alan and Barbara decide to skim over the source code files for the corresponding functions. Upon seeing #[async_trait] in Alan's source code, Barbara recommends that if performance is a concern, then Alan should avoid #[async_trait]. She explains that #[async_trait] transforms a trait's async methods into methods that return Pin>, and the overhead that injects that will be hard to diagnose and impossible to remove. When Alan asks what other options he could adopt, Barbara thinks for a moment, and says he could make an enum that carries all the different implementations of the code. Alan says he'll consider it, but in the meantime he wants to see how far they can improve the code while keeping #[async_trait]. They continue looking at the code itself, essentially guessing at potential sources of where problematic memcpy's may be arising. They identify two potential sources of moves of large datatypes in the code: pushes and pops on vectors of type Vec, and functions with return types of the form Result. Barbara asks how large the DistriQuery, SuccessCode, and DistriErr types are. Alan immediately notes that DistriQuery may be large, and they discuss options for avoiding the memory traffic incurred by pushing and popping DistriQuery. For the other two types, Alan responds that the SuccessCode is small, and that the error variants are never constructed in his benchmark code. Barbara explains that the size of Result has to be large enough to hold either variant, and that memcpy'ing a result is going to move all of those bytes. Alan investigates and sees that DistriErr has variants that embed byte arrays that go up to 50kb in size. Barbara recommends that Alan look into boxing the variants, or the whole DistriErr type itself, in order to reduce the cost of moving it around. Alan uses Barbara's feedback to box some of the data, and this cuts the memcpy traffic in the perf report to one quarter of what it had been reporting previously. However, there remains a significant performance delta between the Java version and the Rust version. Alan is not sure his Rust-rewrite attempt is going to get anywhere beyond the prototype stage.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » The story","id":"209","title":"The story"},"21":{"body":"If you'd like to add a new project, please open a PR using this template and adding a new file into the projects directory . Do not add your file to SUMMARY.md , that will create conflicts. We'll add it after merging. We are pretty happy to add new projects, although we would prefer only to add a new project if it has some characteristic that is distinct from the other projects we've got so far and which is important to a 'status quo' or 'shiny future' story.","breadcrumbs":"🔮 The vision » ❓How to vision » Projects » How to open a PR","id":"21","title":"How to open a PR"},"210":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » 🤔 Frequently Asked Questions","id":"210","title":"🤔 Frequently Asked Questions"},"211":{"body":"Rust promises great performance, but when performance is not meeting one's targets, it is hard to know what to do next. Rust mostly leans on leveraging existing tools for native code development, but those tools are (a.) foreign to many of our developers, (b.) do not always measure up to what our developers have access to elsewhere, (c.) do not integrate as well with Rust as they might with C or C++. Lack of certain language features leads developers to use constructs like #[async_trait] which add performance overhead that is (a.) hard to understand and (b.) may be significant. Rust makes some things very explicit, e.g. the distinction between Box versus T is quite prominent. But Rust's expressive type system also makes it easy to compose types without realizing how large they have gotten. Programmers do not always have a good mental model for where expensive moves are coming from. An important specific instance of (1c.) for the async vision: Native code tools do not have any insight into Rust's async model, as that is even more distant from the execution model of C and C++. We can actually generalize (5.) further: When async performance does not match expectations, developers do not have much insight into whether the performance pitfalls arise from issues deep in the async executor that they have selected, or if the problems come directly from overheads built into the code they themselves have written.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » What are the morals of the story?","id":"211","title":"What are the morals of the story?"},"212":{"body":"Discussions with engineers at Amazon Web Services.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » What are the sources for this story?","id":"212","title":"What are the sources for this story?"},"213":{"body":"I chose Alan because he is used to Java, where these issues play out differently. Java has very mature tooling, including for performance investigations. Alan has used JProfiler at his work, and VisualVM for personal hobby projects. Alan is frustrated by his attempts to use (or even identify) equivalent tools for Rust. With respect to memory traffic: In Java, every object is handled via a reference, and those references are cheap to copy. (One pays for that convenience in other ways, of course.)","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » Why did you choose Alan to tell this story?","id":"213","title":"Why did you choose Alan to tell this story?"},"214":{"body":"From her C and C++ background, Grace probably would avoid letting her types get so large. But then again, C and C++ do not have enums with a payload, so Grace would likely have fallen in the same trap that Alan did (of assuming that the cost of moving an enum value is proportional to its current variant, rather than to its type's overall size). Also, Grace might report that her experience with gcc-based projects yielded programs that worked better with perf, due in part to gcc producing higher quality DWARF debuginfo. Barbara probably would have added direct instrumentation via the tracing crate, potentially even to tokio itself, rather than spend much time wrestling with perf. Niklaus is unlikely to be as concerned about the 20% throughput hit; he probably would have been happy to get code that seems functionally equivalent to the original Java version.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan iteratively regresses performance » How would this story have played out differently for the other characters?","id":"214","title":"How would this story have played out differently for the other characters?"},"215":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan lost the world » 😱 Status quo stories: Alan lost the world!","id":"215","title":"😱 Status quo stories: Alan lost the world!"},"216":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan lost the world » 🚧 Warning: Draft status 🚧","id":"216","title":"🚧 Warning: Draft status 🚧"},"217":{"body":"Alan heard about a project to reimplement a deprecated browser plugin using Rust and WASM. This old technology had the ability to load resources over HTTP; so it makes sense to try and implement that functionality using the Fetch API. Alan looks up the documentation of web_sys and realizes they need to... Call one of the fetch methods , which returns a Promise Convert the Promise into a Rust thing called a Future await the Future in an async function Do whatever they want with the resulting data use web_sys::{Request, window}; fn make_request(src: &url) -> Request { // Pretend this contains all of the complicated code necessary to // initialize a Fetch API request from Rust\n} async fn load_image(src: String) { let request = make_request(&url); window().unwrap().fetch_with_request(&request).await; log::error!(\"It worked\");\n} Alan adds calls to load_image where appropriate. They realize that nothing is happening, so they look through more documentation and find a thing called spawn_local . Once they pass the result of load_image into that function, they see their log message pop up in the console, and figure it's time to actually do something to that loaded image data. At this point, Alan wants to put the downloaded image onto the screen, which in this project means putting it into a Node of the current World. A World is a bundle of global state that's passed around as things are loaded, rendered, and scripts are executed. It looks like this: /// All of the player's global state.\npub struct World<'a> { /// A list of all display Nodes. nodes: &'a mut Vec, /// The last known mouse position. mouse_pos &'a mut (u16, u16), // ...\n} In synchronous code, this was perfectly fine. Alan figures it'll be fine in async code, too. So Alan adds the world as a function parameter and everything else needed to parse an image and add it to our list of nodes: async fn load_image(src: String, inside_of: usize, world: &mut World<'_>) { let request = make_request(&url); let data = window().unwrap().fetch_with_request(&request).await.unwrap().etc.etc.etc; let image = parse_png(data, context); let new_node_index = world.nodes.len(); if let Some(parent) = world.nodes.get(inside_of) { parent.set_child(new_node_index); } world.nodes.push(image.into());\n} Bang! Suddenly, the project stops compiling, giving errors like... error[E0597]: `world` does not live long enough --> src/motionscript/globals/loader.rs:21:43 Hmm, okay, that's kind of odd. We can pass a World to a regular function just fine - why do we have a problem here? Alan glances over at loader.rs... fn attach_image_from_net(world: &mut World<'_>, args: &[Value]) -> Result { let this = args.get(0).coerce_to_object()?; let url = args.get(1).coerce_to_string()?; spawn_local(load_image(url, this.as_node().ok_or(\"Not a node!\")?, world))\n} Hmm, the error is in that last line. spawn_local is a thing Alan had to put into everything that called load_image, otherwise his async code never actually did anything. But why is this a problem? Alan can borrow a World, or anything else for that matter, inside of async code; and it should get it's own lifetime like everything else, right? Alan has a hunch that this spawn_local thing might be causing a problem, so Alan reads the documentation. The function signature seems particularly suspicious: pub fn spawn_local(future: F) where F: Future + 'static So, spawn_local only works with futures that return nothing - so far, so good - and are 'static. Uh-oh. What does that last bit mean? Alan asks Barbara, who responds that it's the lifetime of the whole program. Yeah, but... the async function is part of the program, no? Why wouldn't it have the 'static lifetime? Does that mean all functions that borrow values aren't 'static, or just the async ones? Barbara explains that when you borrow a value in a closure, the closure doesn't gain the lifetime of that borrow. Instead, the borrow comes with it's own lifetime, separate from the closure's. The only time a closure can have a non-'static lifetime is if one or more of its borrows is not provided by it's caller, like so: fn benchmark_sort() -> usize { let mut num_times_called = 0; let test_values = vec![1,3,5,31,2,-13,10,16]; test_values.sort_by(|a, b| { a.cmp(b) num_times_called += 1; }); num_times_called\n} The closure passed to sort_by has to copy or borrow anything not passed into it. In this case, that would be the num_times_called variable. Since we want to modify the variable, it has to be borrowed. Hence, the closure has the lifetime of that borrow, not the whole program, because it can't be called anytime - only when num_times_called is a valid thing to read or write. Async functions, it turns out, act like closures that don't take parameters ! They have to , because all Futures have to implement the same trait method poll: pub trait Future { type Output; fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll;\n} When you call an async function, all of it's parameters are copied or borrowed into the Future that it returns. Since we need to borrow the World, the Future has the lifetime of &'a mut World, not of 'static. Barbara suggests changing all of the async function's parameters to be owned types. Alan asks Grace, who architected this project. Grace recommends holding a reference to the Plugin that owns the World, and then borrowing it whenever you need the World. That ultimately looks like the following: async fn load_image(src: String, inside_of: usize, player: Arc>) { let request = make_request(&url); let data = window().unwrap().fetch_with_request(&request).await.unwrap().etc.etc.etc; let image = parse_png(data, context); player.lock().unwrap().update(|world| { let new_node_index = world.nodes.len(); if let Some(parent) = world.nodes.get(inside_of) { parent.set_child(new_node_index); } world.nodes.push(image.into()); });\n} It works, well enough that Alan is able to finish his changes and PR them into the project. However, Alan wonders if this could be syntactically cleaner, somehow. Right now, async and update code have to be separated - if we need to do something with a World, then await something else, that requires jumping in and out of this update thing. It's a good thing that we only really have to be async in these loaders, but it's also a shame that we practically can't mix async code and Worlds.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan lost the world » The story","id":"217","title":"The story"},"218":{"body":"What are the morals of the story? Async functions capture all of their parameters for the entire duration of the function. This allows them to hold borrows of those parameters across await points. When the parameter represents any kind of \"global environment\", such as the World in this story, it may be useful for that parameter not to be captured by the future but rather supplied anew after each await point. Non-'static Futures are of limited use to developers, as lifetimes are tied to the sync stack. The execution time of most asynchronous operations does not come with an associated lifetime that an executor could use. It is possible to use borrowed futures with block_on style executors, as they necessarily extend all lifetimes to the end of the Future. This is because they turn asynchronous operations back into synchronous ones. Most practical executors want to release the current stack, and thus all of it's associated lifetimes. They need 'static futures. Async programming introduces more complexity to Rust than it does, say, JavaScript. The complexity of async is sometimes explained in terms of 'color' , where functions of one 'color' can only call those of another under certain conditions, and developers have to keep track of what is sync and what is async. Due to Rust's borrowing rules, we actually have three 'colors', not the two of other languages with async I/O: Sync, or 'blue' in the original metaphor. This color of function can both own and borrow it's parameters. If made into the form of a closure, it may have a lifetime if it borrows something from the current stack. Owned Async, or 'red' in the original metaphor. This color of function can only own parameters, by copying them into itself at call time. Borrowed Async. If an async function borrows at least one parameter, it gains a lifetime, and must fully resolve itself before the lifetime of it's parameters expires. What are the sources for this story? This is personal experience. Specifically, I had to do almost exactly this dance in order to get fetch to work in Ruffle. I have omitted a detail from this story: in Ruffle, we use a GC library (gc_arena) that imposes a special lifetime on all GC references. This is how the GC library upholds it's memory safety invariants, but it's also what forces us to pass around contexts, and once you have that, it's natural to start putting even non-GC data into it. It also means we can't hold anything from the GC in the Future as we cannot derive it's Collect trait on an anonymous type. Why did you choose Alan to tell this story? Lifetimes on closures is already non-obvious to new Rust programmers and using them in the context of Futures is particularly unintuitive. How would this story have played out differently for the other characters? Niklaus probably had a similar struggle as Alan. Grace would have felt constrained by the async syntax preventing some kind of workaround for this problem. Barbara already knew about Futures and 'static and carefully organizes their programs accordingly.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan lost the world » 🤔 Frequently Asked Questions","id":"218","title":"🤔 Frequently Asked Questions"},"219":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » 😱 Status quo stories: Alan needs async in traits","id":"219","title":"😱 Status quo stories: Alan needs async in traits"},"22":{"body":"In your PR, make sure to include the following FAQs: What makes this project different from most others? Are there existing crates that are similar to this project?","breadcrumbs":"🔮 The vision » ❓How to vision » Projects » FAQs to answer in your PR","id":"22","title":"FAQs to answer in your PR"},"220":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]!","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » 🚧 Warning: Draft status 🚧","id":"220","title":"🚧 Warning: Draft status 🚧"},"221":{"body":"Alan is working on a project with Barbara which has already gotten off to a somewhat rocky start . He is working on abstracting away the HTTP implementation the library uses so that users can provide their own. He wants the user to implement an async trait called HttpClient which has one method perform(request: Request) -> Response. Alan tries to create the async trait: trait HttpClient { async fn perform(request: Request) -> Response;\n} When Alan tries to compile this, he gets an error: --> src/lib.rs:2:5 |\n2 | async fn perform(request: Request) -> Response; | -----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | | `async` because of this | = note: `async` trait functions are not currently supported = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait Alan, who has been using Rust for a little while now, has learned to follow compiler error messages and adds async-trait to his Cargo.toml. Alan follows the README of async-trait and comes up with the following code: #[async_trait]\ntrait HttpClient { async fn perform(request: Request) -> Response;\n} Alan's code now compiles, but he also finds that his compile times have gone from under a second to around 6s, at least for a clean build. After Alan finishes adding the new trait, he shows his work off to Barbara and mentions he's happy with the work but is a little sad that compile times have worsened. Barbara, an experienced Rust developer, knows that using async-trait comes with some additional issues. In this particular case she is especially worried about tying their public API to a third-party dependency. Even though it is technically possible to implement traits annotated with async_trait without using async_trait, doing so in practice is very painful. For example async_trait: handles lifetimes for you if the returned future is tied to the lifetime of some inputs. boxes and pins the futures for you. which the implementer will have to manually handle if they don't use async_trait. She decides to not worry Alan with this right now. Alan and Barbara are pretty happy with the results and go on to publish their crate which gets lots of users. Later on, a potential user of the library wants to use their library in a no_std context where they will be providing a custom HTTP stack. Alan and Barbara have done a pretty good job of limiting the use of standard library features and think it might be possible to support this use case. However, they quickly run into a show stopper: async-trait boxes all of the futures returned from a async trait function. They report this to Alan through an issue. Alan, feeling (over-) confident in his Rust skills, decides to try to see if he can implement async traits without using async-trait. trait HttpClient { type Response: Future; fn perform(request: Request) -> Self::Response; } Alan seems to have something working, but when he goes to update the examples of how to implement this trait in his crate's documentation, he realizes that he either needs to: use trait object: struct ClientImpl; impl HttpClient for ClientImpl { type Response = Pin>>; fn perform(request: Request) -> Self::Response { Box::pin(async move { // Some async work here creating Reponse }) }\n} which wouldn't work for no_std. implement Future trait manually, which isn't particulary easy/straight-forward for non-trivial cases, especially if it involves making other async calls (likely). After a lot of thinking and discussion, Alan and Barbara accept that they won't be able to support no_std users of their library and add mention of this in crate documentation.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » The story","id":"221","title":"The story"},"222":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » 🤔 Frequently Asked Questions","id":"222","title":"🤔 Frequently Asked Questions"},"223":{"body":"async-trait is awesome, but has some drawbacks compile time increases performance cost of boxing and dynamic dispatch not a standard solution so when this comes to language, it might break things Trying to have a more efficient implementation than async-trait is likely not possible.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » What are the morals of the story?","id":"223","title":"What are the morals of the story?"},"224":{"body":"Zeeshan is looking for a way to implement async version of the service-side zbus API . Ryan had to use async-trait in an internal project.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » What are the sources for this story?","id":"224","title":"What are the sources for this story?"},"225":{"body":"We could have used Barbara here but she'd probably know some of the work-arounds (likely even the details on why they're needed) and wouldn't need help so it wouldn't make for a good story. Having said that, Barbara is involved in the story still so it's not a pure Alan story.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » Why did you choose Alan to tell this story?","id":"225","title":"Why did you choose Alan to tell this story?"},"226":{"body":"Barbara: See above. Grace: Probably won't know the solution to these issues much like Alan, but might have an easier time understanding the why of the whole situation. Niklaus: would be lost - traits are somewhat new themselves. This is just more complexity, and Niklaus might not even know where to go for help (outside of compiler errors).","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan needs async in traits » How would this story have played out differently for the other characters?","id":"226","title":"How would this story have played out differently for the other characters?"},"227":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » 😱 Status quo stories: Alan wants to migrate a web server to Rust","id":"227","title":"😱 Status quo stories: Alan wants to migrate a web server to Rust"},"228":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » 🚧 Warning: Draft status 🚧","id":"228","title":"🚧 Warning: Draft status 🚧"},"229":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » The story","id":"229","title":"The story"},"23":{"body":"We want to make sure all Async Rust users and their experiences are reflected in the async vision doc, so please help us by writing 'status quo' stories about your experiences or the experiences of others! Remember, status quo stories are not \"real\", but neither are they fiction. They are constructed from the real experiences of people using Async Rust (often multiple people).","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » ❓ How to vision: \"Status quo\" stories","id":"23","title":"❓ How to vision: \"Status quo\" stories"},"230":{"body":"Alan has been following the arewewebyet site for quite some time. He is a Typescript full-stack developer and follows the project in order to know when it would be sensible to migrate the backend of a web application he's responsible for. Alan loves Rust and has used it for some tasks that didn't quite need async routines. Since arewewebyet is an official Rust language project , he trusts their reviews of several web frameworks, tools, libraries, etc. Alan was thrilled during the 2020 Xmas holiday. It turns out that at that time Rust was declared to be web ready ! Alan takes this is a sign that not only is Rust great for web servers, but also a confirmation that async features have matured and stabilised. For, how can a language be web ready and not fully support asynchronous tasks? Alan's point of reference are the Golang and Javascript languages. They were both created for web servers and clients. They also support async/await natively. At the same time, Alan is not aware of the complexities that these languages are \"hiding\" from him.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » Is Rust ready for the web?","id":"230","title":"Is Rust ready for the web?"},"231":{"body":"Golang native http server is nice but, as a Typescript developer, Alan is also used to dealing with \"Javascript fatigue\". Javascript developers often use this term to refer to a fast-pace framework ecosystem, where every so often there is the \"new\" thing everybody else is migrating to. Similarly, Javascript engineers are used to having to pick from a myriad of options within the vast npm ecosystem. And so, the lack of a web sever in Rust's standard library didn't surprise him. The amount of options didn't overwhelm him either. The arewewebyet site mentions four good web servers. Alan picks Tide because the interfaces and the emphasis on middleware reminds him of Nodejs' Express framework.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » Picking a web server is ok","id":"231","title":"Picking a web server is ok"},"232":{"body":"Alan sets up all the boilerplate and is ready to write the first endpoint. He picks PUT /support-ticket because it barely has any logic in it. When a request arrives, the handler only makes a request to Zendesk to create a support ticket. The handler is stateless and has no middleware. The arewewebyet site doesn't recommend a specific http client, so Alan searches for one in crates.io. He picks reqwest simply because it's the most popular. Alan combines the knowledge he has from programming in synchronous Rust and asynchronous Javascript to come up with a few lines that should work. If the compiler is happy, then so is he!","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » The first endpoint","id":"232","title":"The first endpoint"},"233":{"body":"The first problem he runs into is very similar to the one described in the compiler trust story : thread 'main' panicked at 'there is no reactor running, must be called from the context of a Tokio 1.x runtime. In short, Alan has problems because Tide is based on std-async and reqwest on the latest version of tokio. This is a real pain for Alan as he has now to change either the http client or the server so that they use the same runtime. He decides to switch to Actix web.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » First problem: incompatible runtimes","id":"233","title":"First problem: incompatible runtimes"},"234":{"body":"Alan migrates to Actix web and again the compiler seems to be happy. To his surprise, the same problem happens again. The program panics with the message as before: there is no reactor running, must be called from the context of a Tokio 1.x runtime. He is utterly puzzled as Actix web is based on Tokio just like reqwest. Didn't he just fix problem number 1? It turns out that the issue is that Alan's using v0.11.2 of reqwest, which uses tokio v1, and v3.3.2 of actix-web, which uses tokio v0.3. The solution to this problem is then to dig into all the versions of reqwest until he finds one which uses the same version of tokio.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » Second problem: incompatible versions of the same runtime","id":"234","title":"Second problem: incompatible versions of the same runtime"},"235":{"body":"This experience has made Alan think twice about whether Rust is indeed web ready. On the one hand, there are very good libraries for web servers, ORMs, parsers, session management, etc. On the other, Alan is fearful that in 2/3/6 months time he has to develop new features with libraries that already exist but turn out to be incompatible with the runtime chosen at the beginning of the project.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » Can Alan sell the Rust migration to his boss?","id":"235","title":"Can Alan sell the Rust migration to his boss?"},"236":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » 🤔 Frequently Asked Questions","id":"236","title":"🤔 Frequently Asked Questions"},"237":{"body":"Rust's ecosystem has a lot of great components that may individually be ready for the web, but combining them is still a fraught proposition. In a typical web server project, dependencies that use async features form an intricate web which is hard to decipher for both new and seasoned Rust developers. Alan picked Tide and reqwest, only to realise later that they are not compatible. How many more situations like this will he face? Can Alan be confident that it won't happen again? New users especially are not accustomed to having to think about what \"runtime\" they are using, since there is usually not a choice in the matter. The situation is so complex that it's not enough knowing that all dependencies use the same runtime. They all have to actually be compatible with the same runtime and version. Newer versions of reqwest are incompatible with the latest stable version of actix web (verified at the time of writing) Developers that need a stable environment may be fearful of the complexity that comes with managing async dependencies in Rust. For example, if reqwest had a security or bug fix in one of the latest versions that's not backported to older ones, Alan would not be able to upgrade because actix web is holding him back. He has in fact to wait until ALL dependencies are using the same runtime to apply fixes and upgrades.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » What are the morals of the story?","id":"237","title":"What are the morals of the story?"},"238":{"body":"Personal experience of the author.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » What are the sources for this story?","id":"238","title":"What are the sources for this story?"},"239":{"body":"As a web developer in GC languages, Alan writes async code every day. A language without stable async features is not an option.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » Why did you choose Alan to tell this story?","id":"239","title":"Why did you choose Alan to tell this story?"},"24":{"body":"Just want to get started? Here are quick instructions to get you going: To write your own story: Create a PR based on the \"status quo\" template . Do not add your file to SUMMARY.md -- that will create conflicts, we'll do it manually after merging. To get feedback on a story idea, or look for someone else to write it: Open up a \"status quo\" story issue on the wg-async-foundations repository . To find ideas of what to write, or to share your experiences: Search the open issues tagged as status-quo-story-idea . Remember to comment supportively .","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » TL;DR","id":"24","title":"TL;DR"},"240":{"body":"Learning what async means and what it entails in a codebase is usually hard enough. Niklaus would struggle to learn all that while at the same time dealing with the many gotchas that can happen when building a project with a lot of dependencies. Barbara may be more tolerant with the setup since she probably knows the rationale behind keeping Rust's standard library lean and the need for external async runtimes.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » How would this story have played out differently for the other characters?","id":"240","title":"How would this story have played out differently for the other characters?"},"241":{"body":"Like the trust story, it would be very close, since all other languages (that I know of) provide async runtimes out of the box and it's not something the programmer needs to concern themselves with.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan wants to migrate a web server to Rust » How would this story have played out differently if Alan came from another GC'd language?","id":"241","title":"How would this story have played out differently if Alan came from another GC'd language?"},"242":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » 😱 Status quo stories: Alan runs into stack allocation trouble","id":"242","title":"😱 Status quo stories: Alan runs into stack allocation trouble"},"243":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » 🚧 Warning: Draft status 🚧","id":"243","title":"🚧 Warning: Draft status 🚧"},"244":{"body":"One day, as Alan is working on his async Rust project, he runs his application and hits an error: $ .\\target\\debug\\application.exe\nthread 'main' has overflowed its stack Perplexed, Alan sees if anything with his application works by seeing if he can get output when the --help flag is passed, but he has no luck: $ .\\target\\debug\\application.exe --help\nthread 'main' has overflowed its stack","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » The problem","id":"244","title":"The problem"},"245":{"body":"Having really only ever seen stack overflow issues caused by recursive functions, Alan desperately tries to find the source of the bug but searching through the codebase for recursive functions only to find none. Having learned that Rust favors stack allocation over heap allocation (a concept Alan didn't really need to worry about before), he started manually looking through his code, searching for structs that looked \"too large\"; he wasn't able to find any candidates. Confused, Alan reached out to Grace for her advice. She suggested making the stack size larger. Although she wasn't a Windows expert, she remembers hearing that stack sizes on Windows might be smaller than on Linux. After much searching, Alan discovers an option do just that: RUSTFLAGS = \"-C link-args=-Wl,-zstack-size=\". While eventually Alan gets the program to run, the stack size must be set to 4GB before it does! This seems untenable, and Alan goes back to the drawing board. Alan reaches out to Barbara for her expertise in Rust to see if she has something to suggest. Barbara recommends using RUSTFLAGS = \"-Zprint-type-sizes to print some type sizes and see if anything jumps out. Barbara noted that if Alan does find a type that stands out, it's usually as easy as putting some boxes in that type to provide some indirection and not have everything be stack allocated. Alan never needs the nightly toolchain, but this option requires it so he installs it using rustup. After searching through types, one did stand out as being quite large. Ultimately, this was a red herring, and putting parts of it in Boxes did not help.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » Searching for the solution","id":"245","title":"Searching for the solution"},"246":{"body":"After getting no where, Alan went home for the weekend defeated. On Monday, he decided to take another look. One piece of code, stuck out to him: the use of the select! macro from the futures crate. This macro allowed multiple futures to race against each other, returning the value of the first one to finish. This macro required the futures to be pinned which the docs had shown could be done by using pin_mut!. Alan didn't fully grasp what pin_mut! was actually doing when he wrote that code. The compiler had complained to him that the futures he was passing to select! needed to be pinned, and pin_mut! was what he found to make the compiler happy. Looking back at the documents made it clear to Alan that this could potentially be the issue: pin_mut! pins futures to the stack. It was relatively clear that a possible solution would be to pin to the heap instead of the stack. Some more digging in the docs lead Alan to Box::pin which did just that. An extra heap allocation was of no consequence to him, so he gave it a try. Lo and behold, this fixed the issue! While Alan knew enough about pinning to know how to satisfy the compiler, he didn't originally take the time to fully understand what the consequences were of using pin_mut! to pin his futures. Now he knows!","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » Finding the solution","id":"246","title":"Finding the solution"},"247":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » 🤔 Frequently Asked Questions","id":"247","title":"🤔 Frequently Asked Questions"},"248":{"body":"When coming from a background of GCed languages, taking the time to understand the allocation profile of a particular piece of code is not something Alan was used to doing. It was hard to tell where in his code the stack was being exhausted. Alan had to rely on manually combing his code to find the culprit. Pinning is relatively confusing, and although the code compiled, Alan didn't fully understand what he wrote and what consequences his decision to use pin_mut! would have.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » What are the morals of the story?","id":"248","title":"What are the morals of the story?"},"249":{"body":"This story is adapted from the experiences of the team working on the Krustlet project. You can read about this story in their own words here .","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » What are the sources for this story?","id":"249","title":"What are the sources for this story?"},"25":{"body":"If you have a story idea but you don't have the time to write about it, or if you would like to know whether other folks have encountered the same sorts of problems, you can open up a \"status quo\" story issue on the wg-async-foundations repository . Alternatively, if you're looking for a story to write, you can browse the open issues tagged as status-quo-story-idea and see if anything catches your eye. If you see people describing problems you have hit, or have questions about the experiences people are sharing, then please leave a comment -- but remember to comment supportively . (You can also come to Zulip to discuss.)","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » Optional: open an issue to discuss your story or find others with similar experiences","id":"25","title":"Optional: open an issue to discuss your story or find others with similar experiences"},"250":{"body":"The programmers this story was based on have an experience mostly in Go, a GCed language. The story is rooted in the explicit choice of using stack vs heap allocation, a choice that in GCed languages is not in the hands of the programmer.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » Why did you choose Alan to tell this story?","id":"250","title":"Why did you choose Alan to tell this story?"},"251":{"body":"Grace would have likely had a similar hard time with this bug. While she's used to the tradeoffs of stack vs heap allocations, the analogy to the Pin API is not present in languages she's used to. Barbara, as an expert in Rust, may have had the tools to understand that pin_mut is used for pinning to the stack while Box::pin is for pinning heap allocations. This problem is somewhat subtle, so someone like Niklaus would probably have had a much harder time figuring this out (or even getting the code to compile in the first place).","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » How would this story have played out differently for the other characters?","id":"251","title":"How would this story have played out differently for the other characters?"},"252":{"body":"Perhaps! Tokio's select! macro doesn't require explicit pinning of the futures it's provided, but it's unclear to this author whether it would have been smart enough to avoid pinning large futures to the stack. However, pinning is a part of the way one uses futures in Rust, so it's possible that such an issue would have arisen elsewhere.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan runs into stack trouble » Could Alan have used another API to achieve the same objectives?","id":"252","title":"Could Alan have used another API to achieve the same objectives?"},"253":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » 😱 Status quo stories: Alan started trusting the Rust compiler, but then... async","id":"253","title":"😱 Status quo stories: Alan started trusting the Rust compiler, but then... async"},"254":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » 🚧 Warning: Draft status 🚧","id":"254","title":"🚧 Warning: Draft status 🚧"},"255":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » The story","id":"255","title":"The story"},"256":{"body":"Alan has a lot of experience in C#, but in the meantime has created some successful projects in Rust. He has dealt with his fair share of race conditions/thread safety issues during runtime in C#, but is now starting to trust that if his Rust code compiles, he won't have those annoying runtime problems to deal with. This allows him to try to squeeze his programs for as much performance as he wants, because the compiler will stop him when he tries things that could result in runtime problems. After seeing the performance and the lack of runtime problems, he starts to trust the compiler more and more with each project finished. He knows what he can do with external libraries, he does not need to fear concurrency issues if the library cannot be used from multiple threads, because the compiler would tell him. His trust in the compiler solidifies further the more he codes in Rust.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » Trust the compiler","id":"256","title":"Trust the compiler"},"257":{"body":"Alan now starts with his first async project. He sees that there is no async in the standard library, but after googling for \"rust async file open\", he finds 'async_std', a crate that provides some async versions of the standard library functions. He has some code written that asynchronously interacts with some files: use async_std::fs::File;\nuse async_std::prelude::*; fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\").await?; file.write_all(b\"Hello, world!\").await?; Ok(())\n} But now the compiler complains that await is only allowed in async functions. He now notices that all the examples use #[async_std::main] as an attribute on the main function in order to be able to turn it into an async main, so he does the same to get his code compiling: use async_std::fs::File;\nuse async_std::prelude::*; #[async_std::main]\nasync fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\").await?; file.write_all(b\"Hello, world!\").await?; Ok(())\n} This aligns with what he knows from C#, where you also change the entry point of the program to be async, in order to use await. Everything is great now, the compiler is happy, so no runtime problems, so Alan is happy. The project is working like a charm.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » The first async project","id":"257","title":"The first async project"},"258":{"body":"The project Alan is building is starting to grow, and he decides to add a new feature that needs to make some API calls. He starts using reqwest in order to help him achieve this task. After a lot of refactoring to make the compiler accept the program again, Alan is satisfied that his refactoring is done. His program now boils down to: use async_std::fs::File;\nuse async_std::prelude::*; #[async_std::main]\nasync fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\").await?; file.write_all(b\"Hello, world!\").await?; let body = reqwest::get(\"https://www.rust-lang.org\") .await? .text() .await?; println!(\"{}\", body); Ok(())\n} He runs his project but is suddenly greeted with a runtime error. He is quite surprised. \"How is this even possible?\", he thinks. \"I don't have any out-of-bounds accesses, and I never use .unwrap or .expect.\" At the top of the error message he sees: thread 'main' panicked at 'there is no reactor running, must be called from the context of a Tokio 1.x runtime' He searches what \"Tokio\" is in Rust, and he finds that it also provides an attribute to put on main, namely [tokio::main], but what is the difference with [async_std::main]? His curiosity leads him to watch videos/read blogs/scour reddit,... on why there are multiple runtimes in Rust. This leads him into a rabbit hole and now he learns about Executors, Wakers, Pin,... He has a basic grasp of what they are, but does not have a good understanding of them or how they all fit together exactly. These are all things he had not need to know nor heed in C#. (Note: there is another story about troubles/confusion that might arise when learning all these things about async: Alan hates writing a Stream ) He does understand the current problems and why there is no one-size-fits-all executor (yet). Trying to get his async Rust code to work, he broadened his knowledge about what async code actually is, he gains another way to reason about asynchronous code, not only in Rust, but also more generally. But now he realizes that there is a whole new area of runtime problems that he did not have to deal with in C#, but he does in Rust. Can he even trust the Rust compiler anymore? What other kinds of runtime problems can occur in Rust that can't in C#? If his projects keep increasing in complexity, will other new kinds of runtime problems keep popping up? Maybe it's better to stick with C#, since Alan already knows all the runtime problems you can have over there.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » Fractured futures, fractured trust","id":"258","title":"Fractured futures, fractured trust"},"259":{"body":"Do you recall in Spider-Man, that after getting bitten by the radioactive spider, Peter first gets ill before he gains his powers? Well, imagine instead of being bitten by a radioactive spider, he was bitten by an async-rust spider... In his work, Alan sees an async call to a C# wrapper around SQLite, his equivalent of a spider-sense (async-sense?) starts tingling. Now knowing from Rust the complexities that arise when trying to create asynchronicity, what kind of complex mechanisms are at play here to enable these async calls from C# that end up in the C/C++ of SQLite? He quickly discovers that there are no complex mechanism at all! It's actually just a synchronous call all the way down, with just some extra overhead from wrapping it into an asynchronous function. There are no points where the async function will yield. He transforms all these asynchronous calls to their synchronous counterparts, and sees a slight improvement in performance. Alan is happy, product management is happy, customers are happy! Over the next few months, he often takes a few seconds to reflect about why certain parts of the code are async, if they should be, or how other parts of the code might benefit from being async and if it's possible to make them async. He also uses what he learned from async Rust in his C# code reviews to find similar problems or general issues (With great power...). He even spots some lifetime bugs w.r.t. asynchronous code in C#, imagine that. His team recognizes that Alan has a pretty good grasp about what async is really about, and he is unofficially crowned the \"async guru\" of the team. Even though this spider-man might have gotten \"ill\" (his negative experience with async Rust), he has now become the superhero he was meant to be!","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » The Spider-Man effect","id":"259","title":"The Spider-Man effect"},"26":{"body":"If you have an idea you'd like to write about, please open a PR using this template and adding a new file into the status_quo directory . Do not add your file to SUMMARY.md -- that will create conflicts, we'll do it manually after merging.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » How to open a PR","id":"26","title":"How to open a PR"},"260":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » 🤔 Frequently Asked Questions","id":"260","title":"🤔 Frequently Asked Questions"},"261":{"body":"Async I/O includes a new set of runtime errors and misbehaviors that the compiler can't help you find. These include cases like executing blocking operations in an async context but also mixing runtime libraries (something users may not even realize is a factor). Rust users get used to the compiler giving them error messages for runtime problems but also helping them to fix them. Pushing error messages to runtimes feels surprising and erodes some of their confidence in Rust. The \"cliff\" in learning about async is very steep -- at first everything seems simple and similar to other languages, then suddenly you are thrown into a lot of information. It's hard to know what's important and what is not. But , at the same time, dipping your toes into async Rust can broaden the understanding a programmer has of asynchronous coding, which can help them even in other languages than Rust.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » What are the morals of the story?","id":"261","title":"What are the morals of the story?"},"262":{"body":"Personal experience of the author.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » What are the sources for this story?","id":"262","title":"What are the sources for this story?"},"263":{"body":"With his experience in C#, Alan probably has experience with async code. Even though C# protects him from certain classes of errors, he can still encounter other classes of errors, which the Rust compiler prevents.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » Why did you choose Alan to tell this story?","id":"263","title":"Why did you choose Alan to tell this story?"},"264":{"body":"For everyone except Barbara, I think these would play out pretty similarly, as this is a kind of problem unique to Rust. Since Barbara has a lot of Rust experience, she would probably already be familiar with this aspect.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » How would this story have played out differently for the other characters?","id":"264","title":"How would this story have played out differently for the other characters?"},"265":{"body":"It would be very close, since all other languages (that I know of) provide async runtimes out of the box and it's not something the programmer needs to concern themselves with.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan started trusting the Rust compiler, but then... async » How would this story have played out differently if Alan came from another GC'd language?","id":"265","title":"How would this story have played out differently if Alan came from another GC'd language?"},"266":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » 😱 Status quo stories: Alan thinks he needs async locks","id":"266","title":"😱 Status quo stories: Alan thinks he needs async locks"},"267":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » 🚧 Warning: Draft status 🚧","id":"267","title":"🚧 Warning: Draft status 🚧"},"268":{"body":"One of Alan's first Rust related tasks in his job at YouBuy is writing an HTTP based service. This service is a simple internal proxy router that inspects an incoming HTTP request and picks the downstream service to call based on certain aspects of the HTTP request. Alan decides that he'll simply use some shared state that request handlers can read from in order to decide how to proxy the request. Alan, having read the Rust book and successfully completed the challenge in the last chapters , knows that shared state can be achieved in Rust with reference counting (using std::sync::Arc) and locks (using std::sync::Mutex). Alan starts by throwing his shared state (a std::collections::HashMap) into an Arc>. Alan, smitten with how quickly he can write Rust code, ends up with some code that compiles that looks roughly like this: #[derive(Clone)]\nstruct Proxy { routes: Arc>,\n} impl Proxy { async fn handle(&self, key: String, request: Request) -> crate::Result { let routes = self.state.lock().unwrap(); let route = routes.get(key).unwrap_or_else(crate::error::MissingRoute)?; Ok(self.client.perform_request(route, request).await?) }\n} Alan is happy that his code seems to be compiling! The short but hard learning curve has been worth it. He's having fun now! Unfortunately, Alan's happiness soon comes to end as he starts integrating his request handler into calls to tokio::spawn which he knows will allow him to manage multiple requests at a time. The error message is somewhat cryptic, but Alan is confident he'll be able to figure it out: 189 | tokio::spawn(async { | ^^^^^^^^^^^^ future created by async block is not `Send`\n::: /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.5.0/src/task/spawn.rs:129:21 |\n129 | T: Future + Send + 'static, | ---- required by this bound in `tokio::spawn` note: future is not `Send` as this value is used across an await --> src/handler.rs:787:9 |\n786 | let routes = self.state.lock().unwrap(); | - has type `std::sync::MutexGuard<'_, HashMap>` which is not `Send`\n787 | Ok(self.client.perform_request(route, request).await?) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `routes` maybe used later\n788 | }) | - `routes` is later dropped here Alan stops and takes a deep breath. He tries his best to make sense of the error message. He sort of understands the issue the compiler is telling him. Apparently routes is not marked as Send, and because it is still alive over a call to await, it is making the future his handler returns not Send. And tokio's spawn function seems to require that the future it received be Send. Alan reaches the boundaries of his knowledge of Rust, so he reaches out over chat to ask his co-worker Barbara for help. Not wanting to bother her, Alan provides the context he's already figured out for himself. Barbara knows that mutex guards are not Send because sending mutex guards to different threads is not a good idea. She suggests looking into async locks which can be held across await points because they are Send. Alan looks into the tokio documentation for more info and is easily able to move the use of the standard library's mutex to tokio's mutex. It compiles! Alan ships his code and it gets a lot of usage. After a while, Alan notices some potential performance issues. It seems his proxy handler does not have the throughput he would expect. Barbara, having newly joined his team, sits down with him to take a look at potential issues. Barbara is immediately worried by the fact that the lock is being held much longer than it needs to be. The lock only needs to be held while accessing the route and not during the entire duration of the downstream request. She suggests to Alan to switch to not holding the lock across the I/O operations. Alan first tries to do this by explicitly cloning the url and dropping the lock before the proxy request is made: impl Proxy { async fn handle(&self, key: String, request: Request) -> crate::Result { let routes = self.state.lock().unwrap(); let route = routes.get(key).unwrap_or_else(crate::error::MissingRoute)?.clone(); drop(routes); Ok(self.client.perform_request(route, request).await?) }\n} This compiles fine and works in testing! After shipping to production, they notice a large increase in throughput. It seems their change made a big difference. Alan is really excited about Rust, and wants to write more! Alan continues his journey of learning even more about async Rust. After some enlightening talks at the latest RustConf, he decides to revisit the code that he and Barbara wrote together. He asks himself, is using an async lock the right thing to do? This lock should only be held for a very short amount of time. Yielding to the runtime is likely more expensive than just synchronously locking. But he remembers vaguely hearing that you should never use blocking code in async code as this will block the entire async executor from being able to make progress, so he doubts his intuition. After chatting with Barbara, who encourages him to benchmark and measure, he decides to switch back to synchronous locks. Unfortunately, switching back to synchronous locks brings back the old compiler error message about his future not being Send. Alan is confused as he's dropping the mutex guard before it ever crosses an await point. Confused Alan goes to Barbara for advice. She is also confused, and it takes several minutes of exploration before she comes to a solution that works: wrapping the mutex access in a block and implicitly dropping the mutex. impl Proxy { async fn handle(&self, key: String, request: Request) -> crate::Result { let route = { let routes = self.state.lock().unwrap(); routes.get(key).unwrap_or_else(crate::error::MissingRoute)?.clone() }; Ok(self.client.perform_request(route, request).await?) }\n} Barbara mentions she's unsure why explicitly dropping the mutex guard did not work, but they're both happy that the code compiles. In fact it seems to have improved the performance of the service when its under extreme load. Alan's intuition was right! In the end, Barbara decides to write a blog post about how blocking in async code isn't always such a bad idea.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » The story","id":"268","title":"The story"},"269":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » 🤔 Frequently Asked Questions","id":"269","title":"🤔 Frequently Asked Questions"},"27":{"body":"When writing a status quo story, your goal is to present what you see as a major challenge for Async Rust. You want to draw upon people's experiences (sometimes multiple people) to show all the aspects of the problem in an engaging and entertaining way. Each story is always presented from the POV of a particular character . Stories should be detailed, not abstract -- it's better to give specifics than generalities. Don't say \"Grace visited a website to find the answer to her question\", tell us whether she went to stackoverflow, asked on reddit, or found the answer on some random blog post. Ideally you should get this detail from whatever your \"source\" of the story is -- but if you are using multiple sources and they disagree, you can pick one and use the FAQ to convey some of the other alternatives.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » Goals of a status quo PR","id":"27","title":"Goals of a status quo PR"},"270":{"body":"* Locks can be quite common in async code as many tasks might need to mutate some shared state.\n* Error messages can be fairly good, but they still require a decent understanding of Rust (e.g., `Send`, `MutexGuard`, drop semantics) to fully understand what's going on.\n* This can lead to needing to use certain patterns (like dropping mutex guards early) in order to get code working.\n* The advice to never block in async code is not always true: if blocking is short enough, is it even blocking at all?","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » What are the morals of the story?","id":"270","title":"What are the morals of the story?"},"271":{"body":"* Chats with [Alice](https://github.com/Darksonn) and [Lucio](https://github.com/LucioFranco).\n* Alice's [blog post](https://ryhl.io/blog/async-what-is-blocking/) on the subject has some good insights.\n* The issue of conservative analysis of whether values are used across await points causing futures to be `!Send` is [known](https://rust-lang.github.io/async-book/07_workarounds/03_send_approximation.html), but it takes some digging to find out about this issue. A tracking issue for this can be [found here](https://github.com/rust-lang/rust/issues/57478).","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » What are the sources for this story?","id":"271","title":"What are the sources for this story?"},"272":{"body":"* While Barbara might be tripped up on some of the subtlties, an experienced Rust developer can usually tell how to avoid some of the issues of using locks in async code. Alan on the other hand, might be surprised when his code does not compile as the issue the `Send` error is protecting against (i.e., a mutex guard being moved to another thread) is not protected against in other languages.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » Why did you choose Alan to tell this story?","id":"272","title":"Why did you choose Alan to tell this story?"},"273":{"body":"* Grace would have likely had a similar time to Alan. These problems are not necessarily issues you would run into in other languages in the same way.\n* Niklaus may have been completely lost. This stuff requires a decent understanding of Rust and of async computational systems.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan thinks he needs async locks » How would this story have played out differently for the other characters?","id":"273","title":"How would this story have played out differently for the other characters?"},"274":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » 😱 Status quo stories: Alan tries using a socket Sink","id":"274","title":"😱 Status quo stories: Alan tries using a socket Sink"},"275":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » 🚧 Warning: Draft status 🚧","id":"275","title":"🚧 Warning: Draft status 🚧"},"276":{"body":"Alan is working on a project that uses async-std. He has worked a bit with tokio in the past and is more familiar with that, but he is interested to learn something how things work in async-std. One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket RPC calls can be forwarded to a transport-agnostic RPC server. In this server implementation: RPC call strings can be received over a WebSocket The strings are decoded and sent to an RPC router that calls the methods specified in the RPC call Some of the methods that are called can take some time to return a result, so they are spawned separately RPC has built-in properties to organize call IDs and methods, so results can be sent in any order Since WebSockets are bidirectional streams (duplex sockets), the response is sent back through the same client socket He finds the HTTP server tide and it seems fairly similar to warp, which he was using with tokio. He also finds the WebSocket middleware library tide-websockets that goes with it. However, as he's working, Alan encounters a situation where the socket needs to be written to within an async thread, and the traits just aren't working. He wants to split the stream into a sender and receiver: use futures::{SinkExt, StreamExt};\nuse async_std::sync::{Arc, Mutex};\nuse log::{debug, info, warn}; async fn rpc_ws_handler(ws_stream: WebSocketConnection) { let (ws_sender, mut ws_receiver) = ws_stream.split(); let ws_sender = Arc::new(Mutex::new(ws_sender)); while let Some(msg) = ws_receiver.next().await { debug!(\"Received new WS RPC message: {:?}\", msg); let ws_sender = ws_sender.clone(); async_std::task::spawn(async move { let res = call_rpc(msg).await?; match ws_sender.lock().await.send_string(res).await { Ok(_) => info!(\"New WS data sent.\"), Err(_) => warn!(\"WS connection closed.\"), }; }); }\n} The split method splits the ws_stream into two separate halves: a producer (ws_sender) that implements a Stream with the messages arriving on the websocket; a consumer (ws_receiver) that implements Sink, which can be used to send responses. This way, one task can pull items from the ws_sender and spawn out subtasks. Those subtasks share access to the ws_receiver and send messages there when they're done. Unfortunately, Alan finds that he can't use this pattern here, as the Sink trait wasn't implemented in the WebSockets middleware library he's using. Alan also tries creating a sort of poller worker thread using an intermediary messaging channel, but he has trouble reasoning about the code and wasn't able to get it to compile: use async_std::channel;\nuse async_std::sync::{Arc, Mutex};\nuse log::{debug, info, warn}; async fn rpc_ws_handler(ws_stream: WebSocketConnection) { let (ws_sender, mut ws_receiver) = channel::unbounded::(); let ws_receiver = Arc::new(ws_receiver); let ws_stream = Arc::new(Mutex::new(ws_stream)); let poller_ws_stream = ws_stream.clone(); async_std::task::spawn(async move { while let Some(msg) = ws_receiver.next().await { match poller_ws_stream.lock().await.send_string(msg).await { Ok(msg) => info!(\"New WS data sent. {:?}\", msg), Err(msg) => warn!(\"WS connection closed. {:?}\", msg), }; } }); while let Some(msg) = ws_stream.lock().await.next().await { async_std::task::spawn(async move { let res = call_rpc(msg).await?; ws_sender.send(res); }); }\n} Alan wonders if he's thinking about it wrong, but the solution isn't as obvious as his earlier Sink approach. Looking around, he realizes a solution to his problems already exists-- as others have been in his shoes before-- within two other nearly-identical pull requests, but they were both closed by the project maintainers. He tries opening a third one with the same code, pointing to an example where it was actually found to be useful. To his joy, his original approach works with the code in the closed pull requests in his local copy! Alan's branch is able to compile for the first time. However, almost immediately, his request is closed with a comment suggesting that he try to create an intermediate polling task instead , much as he was trying before. Alan is feeling frustrated. \"I already tried that approach,\" he thinks, \"and it doesn't work!\" As a result of his frustration, Alan calls out one developer of the project on social media. He knows this developer is opposed to the Sink traits. Alan's message is not well-received: the maintainer sends a short response and Alan feels dismissed. Alan later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and suggests that Alan \"get over it\". Alan is given a link to a blog post. The post provides a number of criticisms of Sink but, after reading it, Alan isn't sure what he should do instead. Because of this heated exchange, Alan grows concerned for his own career, what these well-known community members might think or say about his to others, and his confidence in the community surrounding this language that he really enjoys using is somewhat shaken. Despite this, Alan takes a walk, gathers his determination, and commits to maintaining his fork with the changes from the other pull requests that were shut down. He publishes his version to crates.io, vowing to be more welcoming to \"misfit\" pull requests like the one he needed. A few weeks later, Alan's work at his project at work is merged with his new forked crate. It's a big deal, his first professional open source contribution to a Rust project! Still, he doesn't feel like he has a sense of closure with the community. Meanwhile, his friends say they want to try Rust, but they're worried about its async execution issues, and he doesn't know what else to say, other than to offer a sense of understanding. Maybe the situation will get better someday, he hopes.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » The story","id":"276","title":"The story"},"277":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » 🤔 Frequently Asked Questions","id":"277","title":"🤔 Frequently Asked Questions"},"278":{"body":"There are often many sources of opinion in the community regarding futures and async, but these opinions aren't always backed up with examples of how it should be better accomplished. Sometimes we just find a thing that works and would prefer to stick with it, but others argue that some traits make implementations unnecessarily complex, and choose to leave it out. Disagreements like these in the ecosystem can be harmful to the reputation of the project and the participants. If there's a source of substantial disagreement, the community becomes even further fragmented, and this may cause additional confusion in newcomers. Alan is used to fragmentation from the communities he comes from, so this isn't too discouraging, but what's difficult is that there's enough functionality overlap in async libraries that it's tempting to get them to interop with each other as-needed, and this can lead to architectural challenges resulting from a difference in design philosophies. It's also unclear if Futures are core to the Rust asynchronous experience, much as Promises are in JavaScript, or if the situation is actually more complex. The Sink trait is complex but it solves a real problem, and the workarounds required to solve problems without it can be unsatisfactory. Disagreement about core abstractions like Sink can make interoperability between runtimes more difficult; it also makes it harder for people to reproduce patterns they are used to from one runtime to another. It is all too easy for technical discussions like this to become heated; it's important for all participants to try and provide each other with the \"benefit of the doubt\".","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » What are the morals of the story?","id":"278","title":"What are the morals of the story?"},"279":{"body":"https://github.com/http-rs/tide-websockets https://github.com/http-rs/tide-websockets/pull/17 - Third pull request https://github.com/http-rs/tide-websockets/issues/15#issuecomment-797090892 - Suggestion to use a broadcast channel https://github.com/ChainSafe/forest/commit/ff2691bab92823a8595d1d456ed5fa9683641d76#diff-2770a30d9f259666fb470d6f11cf1851ebb2d579a1480a8173d3855572748385 - Where some of the original polling work is replaced https://github.com/ChainSafe/forest/blob/b9fccde00e7356a5e336665a7e482d4ef439d714/node/rpc/src/rpc_ws_handler.rs#L121 - File with Sink solution https://github.com/cryptoquick/tide-websockets-sink https://twitter.com/cryptoquick/status/1370143022801846275 https://twitter.com/cryptoquick/status/1370155726056738817 https://blog.yoshuawuyts.com/rust-streams/#why-we-do-not-talk-about-the-sink-trait","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » What are the sources for this story?","id":"279","title":"What are the sources for this story?"},"28":{"body":"Every status quo PR includes a FAQ. This FAQ should always include answers to some standard questions: What are the morals of the story? Talk about the major takeaways-- what do you see as the biggest problems. What are the sources for this story? Talk about what the story is based on, ideally with links to blog posts, tweets, or other evidence. Why did you choose NAME to tell this story? Talk about the character you used for the story and why. How would this story have played out differently for the other characters? In some cases, there are problems that only occur for people from specific backgrounds, or which play out differently. This question can be used to highlight that. You can feel free to add whatever other FAQs seem appropriate. You should also expect to grow the FAQ in response to questions that come up on the PR.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » The role of the FAQ","id":"28","title":"The role of the FAQ"},"280":{"body":"Alan is more representative of the original author's background in JS, TypeScript, and NodeJS.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » Why did you choose Alan to tell this story?","id":"280","title":"Why did you choose Alan to tell this story?"},"281":{"body":"(I'm not sure.)","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries using a socket Sink » How would this story have played out differently for the other characters?","id":"281","title":"How would this story have played out differently for the other characters?"},"282":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » 😱 Status quo stories: Alan tries to debug a hang","id":"282","title":"😱 Status quo stories: Alan tries to debug a hang"},"283":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » 🚧 Warning: Draft status 🚧","id":"283","title":"🚧 Warning: Draft status 🚧"},"284":{"body":"Alan's startup has officially launched and YouBuy is live for the world to use. The whole team is very excited especially as this will be their first use of Rust in production! Normally, as a .NET shop, they would have written the entire application in C#, but because of the scalability and latency requirements on their inventory service, they decided to write a microservice in Rust utilizing the async features they've heard so much about. The day's excitement soon turns into concern as reports begin coming into support of customers who can't checkout. After a few cases, a pattern begins to emerge: when a customer tries to buy the last available item, the checkout process hangs forever. Alan suspects there is an issue with the lock used in the inventory service to prevent multiple people from buying the last available item at the same time. With this hunch, he builds the latest code and opens this local dev environment to conduct some tests. Soon enough, Alan has a repro of the bug. With the broken environment still running, he decides to use a debugger to see if he can confirm his theory. In the past, Alan has used Visual Studio's debugger to diagnose a very similar issue in a C# application he wrote . The debugger was able to show him all the async Tasks currently waiting, their call stacks and what resource they were waiting on. Alan hasn't used a debugger with Rust before, usually a combination of the strict compiler and a bit of manual testing has been enough to fix all the bugs he's previously encountered. He does a quick Google search to see what debugger he should use and decides to go with gdb because it is already installed on his system and sounds like it should work. Alan also pulls up a blog post that has a helpful cheatsheet of gdb commands since he's not familiar with the debugger. Alan restarts the inventory service under gdb and gets to work reproducing the issue. He reproduces the issue a few times in the hope of making it easier to identify the cause of the problem. Ready to pinpoint the issue, Alan presses Ctrl+C and then types bt to get a backtrace: (gdb) bt (gdb) bt\n#0 0x00007ffff7d5e58a in epoll_wait (epfd=3, events=0x555555711340, maxevents=1024, timeout=49152) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30\n#1 0x000055555564cf7d in mio::sys::unix::selector::epoll::Selector::select (self=0x7fffffffd008, events=0x7fffffffba40, timeout=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/mio-0.7.11/src/sys/unix/selector/epoll.rs:68\n#2 0x000055555564a82f in mio::poll::Poll::poll (self=0x7fffffffd008, events=0x7fffffffba40, timeout=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/mio-0.7.11/src/poll.rs:314\n#3 0x000055555559ad96 in tokio::io::driver::Driver::turn (self=0x7fffffffce28, max_wait=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/io/driver/mod.rs:162\n#4 0x000055555559b8da in ::park_timeout (self=0x7fffffffce28, duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/io/driver/mod.rs:238\n#5 0x00005555555e9909 in ::park_timeout (self=0x7fffffffce28, duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/signal/unix/driver.rs:156\n#6 0x00005555555a9229 in ::park_timeout (self=0x7fffffffce28, duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/process/unix/driver.rs:84\n#7 0x00005555555a898d in as tokio::park::Park>::park_timeout (self=0x7fffffffce20, duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/park/either.rs:37\n#8 0x00005555555ce0b8 in tokio::time::driver::Driver

    ::park_internal (self=0x7fffffffcdf8, limit=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/time/driver/mod.rs:226\n#9 0x00005555555cee60 in as tokio::park::Park>::park (self=0x7fffffffcdf8) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/time/driver/mod.rs:398\n#10 0x00005555555a87bb in as tokio::park::Park>::park (self=0x7fffffffcdf0) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/park/either.rs:30\n#11 0x000055555559ce47 in ::park (self=0x7fffffffcdf0) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/driver.rs:198\n#12 0x000055555557a2f7 in tokio::runtime::basic_scheduler::Inner

    ::block_on::{{closure}} (scheduler=0x7fffffffcdb8, context=0x7fffffffcaf0) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:224\n#13 0x000055555557b1b4 in tokio::runtime::basic_scheduler::enter::{{closure}} () at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:279\n#14 0x000055555558174a in tokio::macros::scoped_tls::ScopedKey::set ( self=0x555555701af8 , t=0x7fffffffcaf0, f=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/macros/scoped_tls.rs:61\n#15 0x000055555557b0b6 in tokio::runtime::basic_scheduler::enter (scheduler=0x7fffffffcdb8, f=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:279\n#16 0x0000555555579d3b in tokio::runtime::basic_scheduler::Inner

    ::block_on (self=0x7fffffffcdb8, future=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:185\n#17 0x000055555557a755 in tokio::runtime::basic_scheduler::InnerGuard

    ::block_on (self=0x7fffffffcdb8, future=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:425\n#18 0x000055555557aa9c in tokio::runtime::basic_scheduler::BasicScheduler

    ::block_on (self=0x7fffffffd300, future=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:145\n#19 0x0000555555582094 in tokio::runtime::Runtime::block_on (self=0x7fffffffd2f8, future=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/mod.rs:450\n#20 0x000055555557c22f in inventory_service::main () at /home/alan/code/inventory_service/src/main.rs:4 Puzzled, the only line Alan even recognizes is the main entry point function for the service. He knows that async tasks in Rust aren't run individually on their own threads which allows them to scale better and use fewer resources but surely there has to be a thread somewhere that's running his code? Alan doesn't completely understand how async works in Rust but he's seen the Future::poll method so he assumes that there is a thread which constantly polls tasks to see if they are ready to wake up. \"Maybe I can find that thread and inspect its state?\" he thinks and then consults the cheatsheet for the appropriate command to see the threads in the program. info threads seems promising so he tries that: (gdb) info threads (gdb) info threads Id Target Id Frame * 1 Thread 0x7ffff7c3b5c0 (LWP 1048) \"inventory_servi\" 0x00007ffff7d5e58a in epoll_wait (epfd=3, events=0x555555711340, maxevents=1024, timeout=49152) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30 Alan is now even more confused: \"Where are my tasks?\" he thinks. After looking through the cheatsheet and StackOverflow, he discovers there isn't a way to see which async tasks are waiting to be woken up in the debugger. Taking a shot in the dark, Alan concludes that this thread must be thread which is polling his tasks since it is the only one in the program. He googles \"epoll_wait rust async tasks\" but the results aren't very helpful and inspecting the stack frame doesn't yield him any clues as to where his tasks are so this seems to be a dead end. After thinking a bit, Alan realizes that since the runtime must know what tasks are waiting to be woken up, perhaps he can have the service ask the async runtime for that list of tasks every 10 seconds and print them to stdout? While crude, this would probably also help him diagnose the hang. Alan gets to work and opens the runtime docs to figure out how to get that list of tasks. After spending 30 minutes reading the docs, looking at StackOverflow questions and even posting on users.rust-lang.org, he discovers this simply isn't possible and he will have to add tracing to his application to figure out what's going on. Disgruntled, Alan begins the arduous, boring task of instrumenting the application in the hope that the logs will be able to help him.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » The story","id":"284","title":"The story"},"285":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » 🤔 Frequently Asked Questions","id":"285","title":"🤔 Frequently Asked Questions"},"286":{"body":"Developers, especially coming from an language that has a tightly integrated development environment, expect their debugger to help them particularly in situations where \"println\" debugging can't. If the debugger can't help them, developers will often try to reach for a programmatic solution such as debug functions in their runtime that can be invoked at critical code paths. Trying to debug an issue by adding logging and then triggering the issue is painful because of the long turn-around times when modifying code, compiling and then repro'ing the issue.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » What are the morals of the story?","id":"286","title":"What are the morals of the story?"},"287":{"body":"@erickt's comments in #76, similar comments I've heard from other developers.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » What are the sources for this story?","id":"287","title":"What are the sources for this story?"},"288":{"body":"Coming from a background in managed languages where the IDE, debugger and runtime are tightly integrated, Alan would be used to using those tools to diagnose his issue. Alan has also been a bit insulated from the underlying OS and expects the debugger to understand the language and runtime even if the OS doesn't have similar concepts such as async tasks.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » Why did you choose Alan to tell this story?","id":"288","title":"Why did you choose Alan to tell this story?"},"289":{"body":"Some of the characters with either a background in Rust or a background in systems programming might know that Rust's async doesn't always map to an underlying system feature and so they might expect that gdb or lldb is unable to help them. Barbara, the experienced Rust dev, might also have used a tracing/instrumentation library from the beginning and have that to fall back on rather than having to do the work to add it now.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan tries to debug a hang » How would this story have played out differently for the other characters?","id":"289","title":"How would this story have played out differently for the other characters?"},"29":{"body":"When you open a status quo PR, people will start to comment on it. These comments should always be constructive, with the goal not of negating the story but of making it more precise or more persuasive. Ideally, you should respond to every comment in one of two ways: Adjust the story with more details or to correct factual errors. Add something to the story's FAQ to explain the confusion. If the question is already covered by a FAQ, you can just refer the commenter to that. The goal is that, at the end of the review process, the status quo story has a lot more details that address the major questions people had.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » The review process","id":"29","title":"The review process"},"290":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » 😱 Status quo stories: Alan writes a web framework","id":"290","title":"😱 Status quo stories: Alan writes a web framework"},"291":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » 🚧 Warning: Draft status 🚧","id":"291","title":"🚧 Warning: Draft status 🚧"},"292":{"body":"YouBuy is written using an async web framework that predates the stabilization of async function syntax. When Alan joins the company, it is using async functions for its business logic, but can't use them for request handlers because the framework doesn't support it yet. It requires the handler's return value to be Box>. Because the web framework predates async function syntax, it requires you to take ownership of the request context (State) and return it alongside your response in the success/error cases. This means that even with async syntax, an http route handler in this web framework looks something like this (from the Gotham Diesel example ): // For reference, the framework defines these type aliases.\npub type HandlerResult = Result<(State, Response), (State, HandlerError)>;\npub type HandlerFuture = dyn Future + Send; fn get_products_handler(state: State) -> Pin> { use crate::schema::products::dsl::*; async move { let repo = Repo::borrow_from(&state); let result = repo.run(move |conn| products.load::(&conn)).await; match result { Ok(prods) => { let body = serde_json::to_string(&prods).expect(\"Failed to serialize prods.\"); let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body); Ok((state, res)) } Err(e) => Err((state, e.into())), } } .boxed()\n} and then it is registered like this: router_builder.get(\"/\").to(get_products_handler); The handler code is forced to drift to the right a lot, because of the async block, and the lack of ability to use ? forces the use of a match block, which drifts even further to the right. This goes against what he has learned from his days writing go . Rather than switching YouBuy to a different web framework, Alan decides to contribute to the web framework himself. After a bit of a slog and a bit of where-clause-soup, he manages to make the web framework capable of using an async fn as an http request handler. He does this by extending the router builder with a closure that boxes up the impl Future from the async fn and then passes that closure on to .to(). fn to_async(self, handler: H) where Self: Sized, H: (FnOnce(State) -> Fut) + RefUnwindSafe + Copy + Send + Sync + 'static, Fut: Future + Send + 'static, { self.to(move |s: State| handler(s).boxed()) } The handler registration then becomes: router_builder.get(\"/\").to_async(get_products_handler); This allows him to strip out the async blocks in his handlers and use async fn instead. // Type the library again, in case you've forgotten:\npub type HandlerResult = Result<(State, Response), (State, HandlerError)>; async fn get_products_handler(state: State) -> HandlerResult { use crate::schema::products::dsl::*; let repo = Repo::borrow_from(&state); let result = repo.run(move |conn| products.load::(&conn)).await; match result { Ok(prods) => { let body = serde_json::to_string(&prods).expect(\"Failed to serialize prods.\"); let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body); Ok((state, res)) } Err(e) => Err((state, e.into())), }\n} It's still not fantastically ergonomic though. Because the handler takes ownership of State and returns it in tuples in the result, Alan can't use the ? operator inside his http request handlers. If he tries to use ? in a handler, like this: async fn get_products_handler(state: State) -> HandlerResult { use crate::schema::products::dsl::*; let repo = Repo::borrow_from(&state); let prods = repo .run(move |conn| products.load::(&conn)) .await?; let body = serde_json::to_string(&prods).expect(\"Failed to serialize prods.\"); let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body); Ok((state, res))\n} then he receives: error[E0277]: `?` couldn't convert the error to `(gotham::state::State, HandlerError)` --> examples/diesel/src/main.rs:84:15 |\n84 | .await?; | ^ the trait `From` is not implemented for `(gotham::state::State, HandlerError)` | = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait = note: required by `std::convert::From::from` Alan knows that the answer is to make another wrapper function, so that the handler can take an &mut reference to State for the lifetime of the future, like this: async fn get_products_handler(state: &mut State) -> Result, HandlerError> { use crate::schema::products::dsl::*; let repo = Repo::borrow_from(&state); let prods = repo .run(move |conn| products.load::(&conn)) .await?; let body = serde_json::to_string(&prods).expect(\"Failed to serialize prods.\"); let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body); Ok(res)\n} and then register it with: route.get(\"/\").to_async_borrowing(get_products_handler); but Alan can't work out how to express the type signature for the .to_async_borrowing() helper function. He submits his .to_async() pull-request upstream as-is, but it nags on his mind that he has been defeated. Shortly afterwards, someone raises a bug about ?, and a few other web framework contributors try to get it to work, but they also get stuck. When Alan tries it, the compiler diagnostics keep sending him around in circles . He can work out how to express the lifetimes for a function that returns a Box but not an impl Future because of how where clauses are expressed. Alan longs to be able to say \"this function takes an async function as a callback\" (fn register_handler(handler: impl async Fn(state: &mut State) -> Result)) and have Rust elide the lifetimes for him, like how they are elided for async functions. A month later, one of the contributors finds a forum comment by Barbara explaining how to express what Alan is after (using higher-order lifetimes and a helper trait). They implement this and merge it. The final .to_async_borrowing() implementation ends up looking like this (also from Gotham ): pub trait AsyncHandlerFn<'a> { type Res: IntoResponse + 'static; type Fut: std::future::Future> + Send + 'a; fn call(self, arg: &'a mut State) -> Self::Fut;\n} impl<'a, Fut, R, F> AsyncHandlerFn<'a> for F\nwhere F: FnOnce(&'a mut State) -> Fut, R: IntoResponse + 'static, Fut: std::future::Future> + Send + 'a,\n{ type Res = R; type Fut = Fut; fn call(self, state: &'a mut State) -> Fut { self(state) }\n} pub trait HandlerMarker { fn call_and_wrap(self, state: State) -> Pin>;\n} impl HandlerMarker for F\nwhere R: IntoResponse + 'static, for<'a> F: AsyncHandlerFn<'a, Res = R> + Send + 'static,\n{ fn call_and_wrap(self, mut state: State) -> Pin> { async move { let fut = self.call(&mut state); let result = fut.await; match result { Ok(data) => { let response = data.into_response(&state); Ok((state, response)) } Err(err) => Err((state, err)), } } .boxed() }\n} ... fn to_async_borrowing(self, handler: F) where Self: Sized, F: HandlerMarker + Copy + Send + Sync + RefUnwindSafe + 'static, { self.to(move |state: State| handler.call_and_wrap(state)) } Alan is still not sure whether it can be simplified. Later on, other developers on the project attempt to extend this approach to work with closures, but they encounter limitations in rustc that seem to make it not work ( rust-lang/rust#70263 ). When Alan sees another open source project struggling with the same issue, he notices that Barbara has helped them out as well. Alan wonders how many people in the community would be able to write .to_async_borrowing() without help.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » The story","id":"292","title":"The story"},"293":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » 🤔 Frequently Asked Questions","id":"293","title":"🤔 Frequently Asked Questions"},"294":{"body":"Callback-based APIs with async callbacks are a bit fiddly, because of the impl Future return type forcing you to write where-clause-soup, but not insurmountable. Callback-based APIs with async callbacks that borrow their arguments are almost impossible to write without help.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » What are the morals of the story?","id":"294","title":"What are the morals of the story?"},"295":{"body":"This is from the author's own experience .","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » What are the sources for this story?","id":"295","title":"What are the sources for this story?"},"296":{"body":"Callback-based apis are a super-common way to interact with web frameworks. I'm not sure how common they are in other fields.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » Why did you choose Alan/YouBuy to tell this story?","id":"296","title":"Why did you choose Alan/YouBuy to tell this story?"},"297":{"body":"I suspect that even many Barbara-shaped developers would struggle with this problem.","breadcrumbs":"🔮 The vision » 😱 Status quo » Alan writes a web framework » How would this story have played out differently for the other characters?","id":"297","title":"How would this story have played out differently for the other characters?"},"298":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » 😱 Status quo stories: Barbara Anguishes Over HTTP","id":"298","title":"😱 Status quo stories: Barbara Anguishes Over HTTP"},"299":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect people's experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » 🚧 Warning: Draft status 🚧","id":"299","title":"🚧 Warning: Draft status 🚧"},"3":{"body":"This working group is focused around implementation/design of the “foundations” for Async I/O. This means that we are focused on designing and implementing extensions to the language, standard library, and other \"core\" bits of support offered by the Rust organization. We do not directly work on external projects like tokio , async-std , smol , embassy and so forth, although we definitely discuss ideas and coordinate with them where appropriate.","breadcrumbs":"👋🏽 Welcome » What is the goal of this working group?","id":"3","title":"What is the goal of this working group?"},"30":{"body":"","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » 🤔 Frequently Asked Questions","id":"30","title":"🤔 Frequently Asked Questions"},"300":{"body":"Barbara is starting a new project, working together with Alan. They want to write a Rust library and as part of it they will need to make a few HTTP calls to various web services. While HTTP is part of the responsibilities of the library it is by no means the only thing the library will need to do. As they are pair programming, they get the part of the library where HTTP will be involved and Alan asks Barbara, \"OK, how do I make an HTTP request?\". As an experienced async Rust developer Barbara has been dreading this question from the start of the project. She's tempted to ask \"How long do you have?\", but she quickly gathers herself and starts to outline the various considerations. She starts with a relatively simple question: \"Should we use an HTTP library with a sync interface or an async interface?\". Alan, who comes from a JavaScript background, remembers the transition from callbacks to async/await in that language. He assumes Rust is merely making its transition to async/await, and it will eventually be the always preferred choice. He hesitates and asks Barbara: \"Isn't async/await always better?\". Barbara, who can think of many scenarios where a blocking, sync interface would likely be better, weighs whether going done the rabbit-hole of async vs sync is the right way to spend their time. She decides instead to try to directly get at the question of whether they should use async for this particular project. She knows that bridging sync and async can be difficult, and so there's another question they need to answer first: \"Are we going to expose a sync or an async interface to the users of our library?\". Alan, still confused about when using a sync interface is the right choice, replies as confident as he can: \"Everybody wants to use async these days. Let's do that!\". He braces for Barbara's answer as he's not even sure what he said is actually true. Barbara replies, \"If we expose an async API then we need to decide which async HTTP implementation we will use\". As she finishes saying this, Barbara feels slightly uneasy. She knows that it is possible to use a sync HTTP library and expose it through an async API, but she fears totally confusing Alan and so decides to not mention this fact. Barbara looks over at Alan and sees a blank stare on his face. She repeats the question: \"So, which async HTTP implementation should we use?\". Alan responds with the only thing that comes to his mind: \"which one is the best?\" to which Barbara responds \"Well, it depends on which async runtime you're using\". Alan, feeling utterly dejected and hoping that the considerations will soon end tries a new route out of this conversation: \"Can we allow the user of the library to decide?\". Barbara thinks to herself, \"Oh boy, we could provide a trait that abstracts over the HTTP request and response and allow the user to provide the implementation for whatever HTTP library they want... BUT, if we ever need any additional functionality that an async runtime needs to expose - like async locks or async timers - we might be forced to pick an actual runtime implementation on behalf of the user... Perhaps, we can put the most popular runtime implementations behind feature flags and let the user chose that way... BUT what if we want to allow plugging in of different runtimes?\" Alan, having watched Barbara stare off into the distance for what felt like a half-hour, feels bad for his colleague. All he can think to himself is how Rust is so much more complicated that C#.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » The story","id":"300","title":"The story"},"301":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » 🤔 Frequently Asked Questions","id":"301","title":"🤔 Frequently Asked Questions"},"302":{"body":"What is a very mundane and simple decision in many other languages, picking an HTTP library, requires users to contemplate many different considerations. There is no practical way to choose an HTTP library that will serve most of the ecosystem. Sync/Async, competing runtimes, etc. - someone will always be left out. HTTP is a small implementation detail of this library, but it is a HUGE decision that will ultimately be the biggest factor in who can adopt their library.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » What are the morals of the story?","id":"302","title":"What are the morals of the story?"},"303":{"body":"Based on the author's personal experience of taking newcomers to Rust through the decision making process of picking an HTTP implementation for a library.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » What are the sources for this story?","id":"303","title":"What are the sources for this story?"},"304":{"body":"Barbara knows all the considerations and their consequences. A less experienced Rust developer might just make a choice even if that choice isn't the right one for them.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara anguishes over HTTP » Why did you choose Barbara to tell this story?","id":"304","title":"Why did you choose Barbara to tell this story?"},"305":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » 😱 Status quo stories: Barbara bridges sync and async in perf.rust-lang.org","id":"305","title":"😱 Status quo stories: Barbara bridges sync and async in perf.rust-lang.org"},"306":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » 🚧 Warning: Draft status 🚧","id":"306","title":"🚧 Warning: Draft status 🚧"},"307":{"body":"Barbara is working on the code for perf.rust-lang.org and she wants to do a web request to load various intermediate results. She has heard that the reqwest crate is quite nice, so she decides to give it a try. She writes up an async function that does her web request: async fn do_web_request(url: &Url) -> Data { ...\n} She needs to apply this async function to a number of urls. She wants to use the iterator map function, like so: async fn do_web_request(url: &Url) -> Data {...} fn aggregate(urls: &[Url]) -> Vec { urls .iter() .map(|url| do_web_request(url)) .collect()\n} fn main() { /* do stuff */ let data = aggregate(); /* do more stuff */\n} Of course, since do_web_request is an async fn, she gets a type error from the compiler: error[E0277]: a value of type `Vec` cannot be built from an iterator over elements of type `impl Future` --> src/main.rs:11:14 |\n11 | .collect(); | ^^^^^^^ value of type `Vec` cannot be built from `std::iter::Iterator` | = help: the trait `FromIterator` is not implemented for `Vec` \"Of course,\" she thinks, \"I can't call an async function from a closure.\"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » The story","id":"307","title":"The story"},"308":{"body":"She decides that since she is not overly concerned about performance, so she decides she'll just use a call to block_on from the futures crate and execute the function synchronously: async fn do_web_request(url: &Url) -> Data {...} fn aggregate(urls: &[Url]) -> Vec { urls .iter() .map(|url| futures::executor::block_on(do_web_request(url))) .collect()\n} fn main() { /* do stuff */ let data = aggregate(); /* do more stuff */\n} The code compiles, and it seems to work.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Introducing block_on","id":"308","title":"Introducing block_on"},"309":{"body":"As Barbara works on perf.rust-lang.org , she realizes that she needs to do more and more async operations. She decides to convert her synchronous main function into an async main. She's using tokio, so she is able to do this very conveniently with the #[tokio::main] decorator: #[tokio::main]\nasync fn main() { /* do stuff */ let data = aggregate(); /* do more stuff */\n} Everything seems to work ok on her laptop, but when she pushes the code to production, it deadlocks immediately. \"What's this?\" she says. Confused, she runs the code on her laptop a few more times, but it seems to work fine. (There's a faq explaining what's going on. -ed.) She decides to try debugging. She fires up a debugger but finds it is isn't really giving her useful information about what is stuck (she has basically the same problems that Alan has ). She wishes she could get insight into tokio's state. Frustrated, she starts reading the tokio docs more closely and she realizes that tokio runtimes offer their own block_on method. \"Maybe using tokio's block_on will help?\" she thinks, \"Worth a try, anyway.\" She changes the aggregate function to use tokio's block_on: fn block_on(f: impl Future) -> O { let rt = tokio::runtime::Runtime::new().unwrap(); rt.block_on(f)\n} fn aggregate(urls: &[Url]) -> Vec { urls .iter() .map(|url| block_on(do_web_request(url))) .collect()\n} The good news is that the deadlock is gone. The bad news is that now she is getting a panic: thread 'main' panicked at 'Cannot start a runtime from within a runtime. This happens because a function (like block_on) attempted to block the current thread while the thread is being used to drive asynchronous tasks.' \"Well,\" she thinks, \"I could use the Handle API to get the current runtime instead of creating a new one? Maybe that's the problem.\" fn aggregate(urls: &[&str]) -> Vec { let handle = tokio::runtime::Handle::current(); urls.iter() .map(|url| handle.block_on(do_web_request(url))) .collect()\n} But this also seems to panic in the same way.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Switching to async main","id":"309","title":"Switching to async main"},"31":{"body":"Just open a PR using this template . Do not add your file to SUMMARY.md , that will create conflicts. We'll do it after merging.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » What is the process to propose a status quo story?","id":"31","title":"What is the process to propose a status quo story?"},"310":{"body":"Reading more into this problem, she realizes she is supposed to be using spawn_blocking. She tries replacing block_on with tokio::task::spawn_blocking: fn aggregate(urls: &[Url]) -> Vec { urls .iter() .map(|url| tokio::task::spawn_blocking(move || do_web_request(url))) .collect()\n} but now she gets a type error again: error[E0277]: a value of type `Vec` cannot be built from an iterator over elements of type `tokio::task::JoinHandle` --> src/main.rs:22:14 |\n22 | .collect(); | ^^^^^^^ value of type `Vec` cannot be built from `std::iter::Iterator>` | = help: the trait `FromIterator>` is not implemented for `Vec` Of course! spawn_blocking, like map, just takes a regular closure, not an async closure; it's purpose is to embed some sync code within an async task, so a sync closure makes sense -- and moreover async closures aren't stable -- but it's all rather frustrating nonetheless. \"Well,\" she thinks, \"I can use spawn to get back into an async context!\" So she adds a call to spawn inside the spawn_blocking closure: fn aggregate(urls: &[Url]) -> Vec { urls .iter() .map(|url| tokio::task::spawn_blocking(move || { tokio::task::spawn(async move { do_web_request(url).await }) })) .collect()\n} But this isn't really helping, as spawn still yields a future. She's getting the same errors.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Trying out spawn_blocking","id":"310","title":"Trying out spawn_blocking"},"311":{"body":"She remembers now that this whole drama started because she was converting her main function to be async. Maybe she doesn't have to bridge between sync and async? She starts digging around in the docs and finds futures::join_all. Using that, she can change aggregate to be an async function too: async fn aggregate(urls: &[Url]) -> Vec { futures::join_all( urls .iter() .map(|url| do_web_request(url)) ).await\n} Things are working again now, so she is happy, although she notes that join_all has quadratic time complexity. That's not great.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Trying out join_all","id":"311","title":"Trying out join_all"},"312":{"body":"Later on, she would like to apply a filter to the aggregation operation. She realizes that if she wants to use the fetched data when doing the filtering, she has to filter the vector after the join has completed. She wants to write something like async fn aggregate(urls: &[Url]) -> Vec { futures::join_all( urls .iter() .map(|url| do_web_request(url)) .filter(|data| test(data)) ).await\n} but she can't, because data is a future and not the Data itself. Instead she has to build the vector first and then post-process it: async fn aggregate(urls: &[Url]) -> Vec { let mut data: Vec = futures::join_all( urls .iter() .map(|url| do_web_request(url)) ).await; data.retain(test); data\n} This is annoying, but performance isn't critical, so it's ok.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Filtering","id":"312","title":"Filtering"},"313":{"body":"Later on, she wants to call aggregate from another binary. This one doesn't have an async main. This context is deep inside of an iterator chain and was previously entirely synchronous. She realizes it would be a lot of work to change all the intervening stack frames to be async fn, rewrite the iterators into streams, etc. She decides to just call block_on again, even though it make her nervous.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » And the cycle begins again","id":"313","title":"And the cycle begins again"},"314":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » 🤔 Frequently Asked Questions","id":"314","title":"🤔 Frequently Asked Questions"},"315":{"body":"Some projects don't care about max performance and just want things to work once the program compiles. They would probably be happy with sync but as the most popular libraries for web requests, databases, etc, offer async interfaces, they may still be using async code. There are contexts where you can't easily add an await. For example, inside of an iterator chain. Big block of existing code. Mixing sync and async code can cause deadlocks that are really painful to diagnose, particularly when you have an async-sync-async sandwich.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » What are the morals of the story?","id":"315","title":"What are the morals of the story?"},"316":{"body":"Because Mark (who experienced most of it) is a very experienced Rust developer. Because you could experience this story regardless of language background or being new to Rust.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Why did you choose Barbara to tell this story?","id":"316","title":"Why did you choose Barbara to tell this story?"},"317":{"body":"I would expect it would work out fairly similarly, except that the type errors and things might well have been more challenging for people to figure out, assuming they aren't already familiar with Rust.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » How would this story have played out differently for the other characters?","id":"317","title":"How would this story have played out differently for the other characters?"},"318":{"body":"This is because the production instance she was using had only a single core, but her laptop is a multicore machine. The actual cause of the deadlocks is that block_on basically \"takes over\" the tokio worker thread, and hence the tokio scheduler cannot run. If that block_on is blocked on another future that will have to execute, then some other thread must take over of completing that future. On Barbara's multicore machine, there were more threads available, so the system did not deadlock. But on the production instance, there was only a single thread. Barbara could have encountered deadlocks on her local machine as well if she had enough instances of block_on running at once.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Why did Barbara only get deadlocks in production, and not on her laptop?","id":"318","title":"Why did Barbara only get deadlocks in production, and not on her laptop?"},"319":{"body":"One way to resolve this problem would be to have a runtime that creates more threads as needed. This is what was proposed in this blog post , for example. Adapting the number of worker threads has downsides. It requires knowing the right threshold for creating new threads (which is fundamentally unknowable). The result is that the runtime will sometimes observe that some thread seems to be taking a long time and create new threads just before that thread was about to finish. These new threads generate overhead and lower the overall performance. It also requires work stealing and other techniques that can lead to work running on mulitple cores and having less locality. Systems tuned for maximal performance tend to prefer a single thread per core for this reason. If some runtimes are adaptive, that may also lead to people writing libraries which block without caring. These libraries would then be a performance or deadlock hazard when used on a runtime that is not adaptive.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Could the runtime have prevented the deadlock?","id":"319","title":"Could the runtime have prevented the deadlock?"},"32":{"body":"Look at the \"morals\" of your story and decide which character will let you get those across the best. Use the FAQ to talk about how other characters might have been impacted. If the story would play out really differently for other characters, maybe write it more than once!","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » What if my story applies to multiple characters?","id":"32","title":"What if my story applies to multiple characters?"},"320":{"body":"Yes, Barbara could have written something like this: fn aggregate(urls: &[Url]) -> Vec { let handle = Handle::current(); urls.iter() .map(|url| handle.block_on(do_web_request(url))) .collect()\n} #[tokio::main]\nasync fn main() { let data = task::spawn_blocking(move || aggregate(&[Url, Url])) .await .unwrap(); println!(\"done\");\n} This aggregate function can only safely be invoked from inside a tokio spawn_blocking call, however, since Handle::current will only work in that context. She could also have used the original futures variant of block_on, in that case, and things would also work.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Is there any way to have kept aggregate as a synchronous function?","id":"320","title":"Is there any way to have kept aggregate as a synchronous function?"},"321":{"body":"reqwest does offer a synchronous API, but it's not enabled by default, you have to use an optional feature. Further, not all crates offer synchronous APIs. Finally, Barbara has had some vague poor experience when using synchronous APIs, such as panics, and so she's learned the heuristic of \"use the async API unless you're doing something really, really simple\". Regardless, the synchronous reqwest API is actually itself implemented using block_on: so Barbara would have ultimately hit the same issues. Further, not all crates offer synchronous APIs -- some offer only async APIs. In fact, these same issues are probably the sources of those panics that Barbara encountered in the past. In general, though, embedded sync within async or vice versa works \"ok\", once you know the right tricks. Where things become challenging is when you have a \"sandwich\", with async-sync-async.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Why didn't Barbara just use the sync API for reqwest?","id":"321","title":"Why didn't Barbara just use the sync API for reqwest?"},"322":{"body":"Yes! Here is some code from perf.rust-lang.org doing exactly that. The catch is that it winds up giving you a future in the end, which didn't work for Barbara because her code is embedded within an iterator (and hence she can't make things async \"all the way down\").","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Do people mix spawn_blocking and spawn successfully in real code?","id":"322","title":"Do people mix spawn_blocking and spawn successfully in real code?"},"323":{"body":"Using std::Mutex in async code. Calling the blocking version of an asynchronous API. For example, reqwest::blocking, the synchronous zbus and rumqtt APIs. These are commonly implemented by using some variant of block_on internally. Therefore they can lead to panics or deadlocks depending on what async runtime they are built from and used with.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » What are other ways people could experience similar problems mixing sync and async?","id":"323","title":"What are other ways people could experience similar problems mixing sync and async?"},"324":{"body":"There are times when converting synchronous code to async is difficult or even impossible. Here are some of the reasons: Asynchronous functions cannot appear in trait impls . Asynchronous functions cannot be called from APIs that take closures for callbacks, like Iterator::map in this example. Sometimes the synchronous functions come from other crates and are not fully under their control. It's just a lot of work!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » Why wouldn't Barbara just make everything async from the start?","id":"324","title":"Why wouldn't Barbara just make everything async from the start?"},"325":{"body":"the futures crate offers a runtime-independent block-on (which can lead to deadlocks, as in this story) the tokio crate offers a block_on method (which will panic if used inside of another tokio runtime, as in this story) the pollster crate exists just to offer block_on the futures-lite crate offers a block_on the aysnc-std crate offers block_on the async-io crate offers block_on ...there are probably more, but I think you get the point.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara Barbara bridges sync and async in perf.rust-lang.org » How many variants of block_on are there?","id":"325","title":"How many variants of block_on are there?"},"326":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » 😱 Status quo stories: Barbara builds an async executor","id":"326","title":"😱 Status quo stories: Barbara builds an async executor"},"327":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » 🚧 Warning: Draft status 🚧","id":"327","title":"🚧 Warning: Draft status 🚧"},"328":{"body":"Barbara wants to set priorities to the tasks spawned to the executor. However, she finds no existing async executor provides such a feature so she decided to build her own async executor. First, Barbara found crossbeam-deque provides work-stealing deques of good quality. She decides to use it to build task schedulers. She plans for each working thread to have a loop which repeatedly gets a task from the deque and polls it. But wait, what should we put into those queues to represent each \"task\"? At first, Barbara thought it must contain the Future itself and the additional priority which was used by the scheduler. So she first wrote: pub struct Task { future: Pin + Send + 'static>>, priority: u8\n} And the working thread loop should run something like: pub fn poll_task(task: Task) { let waker = todo!(); let mut cx = Context::from_waker(&waker); task.future.as_mut().poll(&mut cx);\n} \"How do I create a waker?\" Barbara asked herself. Quickly, she found the Wake trait. Seeing the wake method takes an Arc, she realized the task in the scheduler should be stored in an Arc. After some thought, she realizes it makes sense because both the deque in the scheduler and the waker may hold a reference to the task. To implement Wake, the Task should contain the sender of the scheduler. She changed the code to something like this: pub struct Task { future: Pin + Send + 'static>>, scheduler: SchedulerSender, priority: u8,\n} unsafe impl Sync for Task {} impl Wake for Task { fn wake(self: Arc) { self.scheduler.send(self.clone()); }\n} pub fn poll_task(task: Arc) { let waker = Waker::from(task.clone()); let mut cx = Context::from_waker(&waker); task.future.as_mut().poll(&mut cx);\n// ^^^^^^^^^^^ cannot borrow as mutable\n} The code still needed some change because the future in the Arc became immutable. \"Okay. I can guarantee Task is created from a Pin>, and I think the same future won't be polled concurrently in two threads. So let me bypass the safety checks.\" Barbara changed the future to a raw pointer and confidently used some unsafe blocks to make it compile. pub struct Task { future: *mut (dyn Future + Send + 'static), ...\n} unsafe impl Send for Task {}\nunsafe impl Sync for Task {} pub fn poll_task(task: Arc) { ... unsafe { Pin::new_unchecked(&mut *task.future).poll(&mut cx); }\n} Luckily, a colleague of Barbara noticed something wrong. The wake method could be called multiple times so multiple copies of the task could exist in the scheduler. The scheduler might not work correctly because of this. What's worse, a more severe problem was that multiple threads might get copies of the same task from the scheduler and cause a race in polling the future. Barbara soon got a idea to solve it. She added a state field to the Task. By carefully maintaining the state of the task, she could guarantee there are no duplicate tasks in the scheduler and no race can happen when polling the future. const NOTIFIED: u64 = 1;\nconst IDLE: u64 = 2;\nconst POLLING: u64 = 3;\nconst COMPLETED: u64 = 4; pub struct Task { ... state: AtomicU64,\n} impl Wake for Task { fn wake(self: Arc) { let mut state = self.state.load(Relaxed); loop { match state { // To prevent a task from appearing in the scheduler twice, only send the task // to the scheduler if the task is not notified nor being polling. IDLE => match self .state .compare_exchange_weak(IDLE, NOTIFIED, AcqRel, Acquire) { Ok(_) => self.scheduler.send(self.clone()), Err(s) => state = s, }, POLLING => match self .state .compare_exchange_weak(POLLING, NOTIFIED, AcqRel, Acquire) { Ok(_) => break, Err(s) => state = s, }, _ => break, } } }\n} pub fn poll_task(task: Arc) { let waker = Waker::from(task.clone()); let mut cx = Context::from_waker(&waker); loop { // We needn't read the task state here because the waker prevents the task from // appearing in the scheduler twice. The state must be NOTIFIED now. task.state.store(POLLING, Release); if let Poll::Ready(()) = unsafe { Pin::new_unchecked(&mut *task.future).poll(&mut cx) } { task.state.store(COMPLETED, Release); } match task.state.compare_exchange(POLLING, IDLE, AcqRel, Acquire) { Ok(_) => break, Err(NOTIFIED) => continue, _ => unreachable!(), } }\n} Barbara finished her initial implementation of the async executor. Despite there were a lot more possible optimizations, Barbara already felt it is a bit complex. She was also confused about why she needed to care so much about polling and waking while her initial requirement was just adding additional information to the task for customizing scheduling.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » The story","id":"328","title":"The story"},"329":{"body":"Here are some standard FAQ to get you started. Feel free to add more!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » 🤔 Frequently Asked Questions","id":"329","title":"🤔 Frequently Asked Questions"},"33":{"body":"Detailed is generally better, but only if those details are helpful for understanding the morals of your story. Specific is generally better, since an abstract story doesn't feel as real.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » How much detail should I give? How specific should I be?","id":"33","title":"How much detail should I give? How specific should I be?"},"330":{"body":"It is difficult to customize any of the current async executors (to my knowledge). To have any bit of special requirement forces building an async executor from scratch. It is also not easy to build an async executor. It needs quite some exploration and is error-prone. async-task is a good attempt to simplify the process but it could not satisfy all kinds of needs of customizing the executor (it does not give you the chance to extend the task itself).","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » What are the morals of the story?","id":"330","title":"What are the morals of the story?"},"331":{"body":"The story was from my own experience about writing a new thread pool supporting futures: https://github.com/tikv/yatp. People may feel strange about why we want to set priorities for tasks. Currently, the futures in the thread pool are like user-space threads. They are mostly CPU intensive. But I think people doing async I/O may have the same problem.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » What are the sources for this story?","id":"331","title":"What are the sources for this story?"},"332":{"body":"At the time of the story, I had written Rust for years but I was new to the concepts for async/await like Pin and Waker.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » Why did you choose Barbara to tell this story?","id":"332","title":"Why did you choose Barbara to tell this story?"},"333":{"body":"People with less experience in Rust may be less likely to build their own executor. If they try, I think the story is probably similar.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara builds an async executor » How would this story have played out differently for the other characters?","id":"333","title":"How would this story have played out differently for the other characters?"},"334":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » 😱 Status quo stories: Barbara carefully dismisses embedded Future","id":"334","title":"😱 Status quo stories: Barbara carefully dismisses embedded Future"},"335":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » 🚧 Warning: Draft status 🚧","id":"335","title":"🚧 Warning: Draft status 🚧"},"336":{"body":"Barbara is contributing to an OS that supports running multiple applications on a single microcontroller. These microcontrollers have as little as 10's of kilobytes of RAM and 100's of kilobytes of flash memory for code. Barbara is writing a library that is used by multiple applications -- and is linked into each application -- so the library is very resource constrained. The library should support asynchronous operation, so that multiple APIs can be used in parallel within each (single-threaded) application. Barbara begins writing the library by trying to write a console interface, which allows byte sequences to be printed to the system console. Here is an example sequence of events for a console print: The interface gives the kernel a callback to call when the print finishes, and gives the kernel the buffer to print. The kernel prints the buffer in the background while the app is free to do other things. The print finishes. The app tells the kernel it is ready for the callback to be invoked, and the kernel invokes the callback. Barbara tries to implement the API using core::future::Future so that the library can be compatible with the async Rust ecosystem. The OS kernel does not expose a Future-based interface, so Barbara has to implement Future by hand rather than using async/await syntax. She starts with a skeleton: /// Passes `buffer` to the kernel, and prints it to the console. Returns a\n/// future that returns `buffer` when the print is complete. The caller must\n/// call kernel_ready_for_callbacks() when it is ready for the future to return. fn print_buffer(buffer: &'static mut [u8]) -> PrintFuture { // TODO: Set the callback // TODO: Tell the kernel to print `buffer`\n} struct PrintFuture; impl core::future::Future for PrintFuture { type Output = &'static mut [u8]; fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { // TODO: Detect when the print is done, retrieve `buffer`, and return // it. }\n} Note: All error handling is omitted to keep things understandable. Barbara begins to implement print_buffer: fn print_buffer(buffer: &'static mut [u8]) -> PrintFuture { kernel_set_print_callback(callback); kernel_start_print(buffer); PrintFuture {}\n} // New! The callback the kernel calls.\nextern fn callback() { // TODO: Wake up the currently-waiting PrintFuture.\n} So far so good. Barbara then works on poll: fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { if kernel_is_print_done() { return Poll::Ready(kernel_get_buffer_back()); } Poll::Pending } Of course, there's something missing here. How does the callback wake the PrintFuture? She needs to store the Waker somewhere! Barbara puts the Waker in a global variable so the callback can find it (this is fine because the app is single threaded and callbacks do NOT interrupt execution the way Unix signals do): static mut PRINT_WAKER: Option = None; extern fn callback() { if let Some(waker) = unsafe { PRINT_WAKER.as_ref() } { waker.wake_by_ref(); }\n} She then modifies poll to set PRINT_WAKER: fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll { if kernel_is_print_done() { return Poll::Ready(kernel_get_buffer_back()); } unsafe { PRINT_WAKER = Some(cx.waker()); } Poll::Pending } PRINT_WAKER is stored in .bss, which occupies space in RAM but not flash. It is two words in size. It points to a RawWakerVTable that is provided by the executor. RawWakerVTable's design is a compromise that supports environments both with and without alloc. In no-alloc environments, drop and clone are generally no-ops, and wake/wake_by_ref seem like duplicates. Looking at RawWakerVTable makes Barbara realize that even though Future was designed to work in embedded contexts, it may have too much overhead for her use case. Barbara decides to do some benchmarking. She comes up with a sample application -- an app that blinks a led and responds to button presses -- and implements it twice. One implementation does not use Future at all, the other does. Both implementations have two asynchronous interfaces: a timer interface and a GPIO interface, as well as an application component that uses the interfaces concurrently. In the Future-based app, the application component functions like a future combinator, as it is a Future that is almost always waiting for a timer or GPIO future to finish. To drive the application future, Barbara implements an executor. The executor functions like a background thread. Because alloc is not available, this executor contains a single future. The executor has a spawn function that accepts a future and starts running that future (overwriting the existing future in the executor if one is already present). Once started, the executor runs entirely in kernel callbacks. Barbara identifies several factors that add branching and error handling code to the executor: spawn should be a safe function, because it is called by high-level application code. However, that means it can be called by the future it contains. If handled naively, this would result in dropping the future while it executes. Barbara adds runtime checks to identify this situation. Waker is Sync, so on a multithreaded system, a future could give another thread access to its Waker and the other thread could wake it up. This could happen while the poll is executing, before poll returns Poll::Pending. Therefore, Barbara concludes that if wake is called while a future is being polled then the future should be re-polled, even if the current poll returns Poll::Pending. This requires putting a retry loop into the executor. A kernel callback may call Waker::wake after its future returns Poll::Ready. After poll returns Poll::Ready, the executor should not poll the future again, so Barbara adds code to ignore those wakeups. This duplicates the \"ignore spurious wakeups\" functionality that exists in the future itself. Ultimately, this made the executor logic nontrivial, and it compiled into 96 bytes of code. The executor logic is monomorphized for each future, which allows the compiler to make inlining optimizations, but results in a significant amount of duplicate code. Alternatively, it could be adapted to use function pointers or vtables to avoid the code duplication, but then the compiler definitely cannot inline Future::poll into the kernel callbacks. Barbara publishes an analysis of the relative sizes of the two app implementations, finding a large percentage increase in both code size and RAM usage (note: stack usage was not investigated). Most of the code size increase is from the future combinator code. In the no-Future version of the app, a kernel callback causes the following: The kernel callback calls the application logic's event-handling function for the specific event type. The application handles the event. The call in step 1 is inlined, so the compiled kernel callback consists only of the application's event-handling logic. In the Future-based version of the app, a kernel callback causes the following: The kernel callback updates some global state to indicate the event happened. The kernel callback invokes Waker::wake. Waker::wake calls poll on the application future. The application future has to look at the state saved in step 1 to determine what event happened. The application future handles the event. LLVM is unable to devirtualize the call in step 2, so the optimizer is unable to simplify the above steps. Steps 1-4 only exist in the future-based version of the code, and add over 200 bytes of code (note: Barbara believes this could be reduced to between 100 and 200 bytes at the expense of execution speed). Barbara concludes that Future is not suitable for highly-resource-constrained environments due to the amount of code and RAM required to implement executors and combinators. Barbara redesigns the library she is building to use a different concept for implementing async APIs in Rust that are much lighter weight. She has moved on from Future and is refining her async traits instead. Here are some ways in which these APIs are lighter weight than a Future implementation: After monomorphization, kernel callbacks directly call application code. This allows the application code to be inlined into the kernel callback. The callback invocation is more precise: these APIs don't make spurious wakeups, so application code does not need to handle spurious wakeups. The async traits lack an equivalent of Waker. Instead, all callbacks are expected to be 'static (i.e. they modify global state) and passing pointers around is replaced by static dispatch.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » The story","id":"336","title":"The story"},"337":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » 🤔 Frequently Asked Questions","id":"337","title":"🤔 Frequently Asked Questions"},"338":{"body":"core::future::Future isn't suitable for every asynchronous API in Rust. Future has a lot of capabilities, such as the ability to spawn dynamically-allocated futures, that are unnecessary in embedded systems. These capabilities have a cost, which is unavoidable without backwards-incompatible changes to the trait. We should look at embedded Rust's relationship with Future so we don't fragment the embedded Rust ecosystem. Other embedded crates use Future -- Future certainly has a lot of advantages over lighter-weight alternatives, if you have the space to use it.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » What are the morals of the story?","id":"338","title":"What are the morals of the story?"},"339":{"body":"This story is about someone who is an experienced systems programmer and an experienced Rust developer. All the other characters have \"new to Rust\" or \"new to programming\" as a key characteristic.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » Why did you choose Barbara to tell this story?","id":"339","title":"Why did you choose Barbara to tell this story?"},"34":{"body":"Add a FAQ with some of the other alterantives, or just acknowledging that you made an arbitrary choice there.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » What should I do when I'm trying to be specific but I have to make an arbitrary choice?","id":"34","title":"What should I do when I'm trying to be specific but I have to make an arbitrary choice?"},"340":{"body":"Alan would have found the #![no_std] crate ecosystem lacking async support. He would have moved forward with a Future-based implementation, unaware of its impact on code size and RAM usage. Grace would have handled the issue similarly to Barbara, but may not have tried as hard to use Future. Barbara has been paying attention to Rust long enough to know how significant the Future trait is in the Rust community and ecosystem. Niklaus would really have struggled. If he asked for help, he probably would've gotten conflicting advice from the community.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » How would this story have played out differently for the other characters?","id":"340","title":"How would this story have played out differently for the other characters?"},"341":{"body":"Future has many additional features that are nice-to-have: Future works smoothly in a multithreaded environment. Futures can be Send and/or Sync, and do not need to have interior mutability, which avoids the need for internal locking. Manipulating arbitrary Rust types without locking allows async fn to be efficient. Futures can be spawned and dropped in a dynamic manner: an executor that supports dynamic allocation can manage an arbitrary number of futures at runtime, and futures may easily be dropped to stop their execution. Dropping a future will also drop futures it owns, conveniently providing good cancellation semantics. A future that creates other futures (e.g. an async fn that calls other async fns) can be spawned with only a single memory allocation, whereas callback-based approaches need to allocate for each asynchronous component. Community and ecosystem support. This isn't a feature of Future per se, but the Rust language has special support for Future (async/await) and practically the entire async Rust ecosystem is based on Future. The ability to use existing async crates is a very strong reason to use Future over any alternative async abstraction. However, the code size impact of Future is a deal-breaker, and no number of nice-to-have features can outweigh a deal-breaker. Barbara's traits have every feature she needs . Using Future saves developer time relative to building your own async abstractions. Developers can use the time they saved to minimize code size elsewhere in the project. In some cases, this may result in a net decrease in code size for the same total effort. However, code size reduction efforts have diminishing returns, so projects that expect to optimize code size regardless likely won't find the tradeoff beneficial.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » Future has a lot of features that Barbara's traits don't have -- aren't those worth the cost?","id":"341","title":"Future has a lot of features that Barbara's traits don't have -- aren't those worth the cost?"},"342":{"body":"Future isolates the code that determines a future should wake up (the code that calls Waker::wake) from the code that executes the future (the executor). The only information transferred via Waker::wake is \"try waking up now\" -- any other information has to be stored somewhere. When polled, a future has to run logic to identify how it can make progress -- in many cases this requires answering \"who woke me up?\" -- and retrieve the stored information. Most completion-driven async APIs allow information about the event to be transferred directly to the code that handles the event. According to Barbara's analysis, the code required to determine what event happened was the majority of the size impact of Future.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » Is the code size impact of Future fundamental, or can the design be tweaked in a way that eliminates the tradeoff?","id":"342","title":"Is the code size impact of Future fundamental, or can the design be tweaked in a way that eliminates the tradeoff?"},"343":{"body":"Aaron Turon described futures as zero-cost abstractions . In the linked post, he elaborated on what he meant by zero-cost abstraction, and eliminating their impact on code size was not part of that definition. Since then, the statement that future is a zero-cost abstraction has been repeated many times, mostly without the context that Aaron provided. Rust has many zero-cost abstractions, most of which do not impact code size (assuming optimization is enabled), so it is easy for developers to see \"futures are zero-cost\" and assume that makes them lighter-weight than they are.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » I thought Future was a zero-cost abstraction?","id":"343","title":"I thought Future was a zero-cost abstraction?"},"344":{"body":"The library Barbara is writing only works in Tock OS' userspace environment. This environment is single-threaded: the runtime does not provide a way to spawn another thread, hardware interrupts do not execute in userspace, and there are no interrupt-style callbacks like Unix signals. All kernel callbacks are invoked synchronously, using a method that is functionally equivalent to a function call.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara carefully dismisses embedded Future » How does Barbara's code handle thread-safety? Is her executor unsound?","id":"344","title":"How does Barbara's code handle thread-safety? Is her executor unsound?"},"345":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » 😱 Status quo stories: Barbara compares some code (and has a performance problem)","id":"345","title":"😱 Status quo stories: Barbara compares some code (and has a performance problem)"},"346":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » 🚧 Warning: Draft status 🚧","id":"346","title":"🚧 Warning: Draft status 🚧"},"347":{"body":"Barbara is recreating some code that has been written in other languages they have some familiarity with. These include C++, but also GC'd languages like Python. This code collates a large number of requests to network services, with each response containing a large amount of data. To speed this up, Barbara uses buffer_unordered, and writes code like this: let mut queries = futures::stream::iter(...) .map(|query| async move { let d: Data = self.client.request(&query).await?; d }) .buffer_unordered(32); use futures::stream::StreamExt;\nlet results = queries.collect::>().await; Barbara thinks this is similar in function to things she has seen using Python's asyncio.wait , as well as some code her coworkers have written using c++20's coroutines, using this : std::vector> tasks; for (const auto& query : queries) { tasks.push_back( folly::coro::co_invoke([this, &query]() -> folly::coro::Task { co_return co_await client_->co_request(query); } )\n}\nauto results = co_await folly:coro::collectAllWindowed( move(tasks), 32); However, the Rust code performs quite poorly compared to the other impls, appearing to effectively complete the requests serially, despite on the surface looking like effectively identical code. While investigating, Barbara looks at top, and realises that her coworker's C++20 code sometimes results in her 16 core laptop using 1600% CPU; her Rust async code never exceeds 100% CPU usage. She spends time investigating her runtime setup, but Tokio is configured to use enough worker threads to keep all her CPU cores busy. This feels to her like a bug in buffer_unordered or tokio, needing more time to investigate. Barbara goes deep into investigating this, spends time reading how buffer_unordered is implemented, how its underlying FuturesUnordered is implemented, and even thinks about how polling and the tokio runtime she is using works. She evens tries to figure out if the upstream service is doing some sort of queueing. Eventually Barbara starts reading more about c++20 coroutines, looking closer at the folly implementation used above, noticing that is works primarily with tasks , which are not exactly equivalent to rust Future's. Then it strikes her! request is implemented something like this: impl Client { async fn request(&self) -> Result { let bytes = self.inner.network_request().await? Ok(serialization_libary::from_bytes(&bytes)?) }\n} The results from the network service are sometimes (but not always) VERY large, and the BufferedUnordered stream is contained within 1 tokio task. The request future does non-trivial cpu work to deserialize the data. This causes significant slowdowns in wall-time as the the process CAN BE bounded by the time it takes the single thread running the tokio-task to deserialize all the data. This problem hadn't shown up in test cases, where the results from the mocked network service are always small; many common uses of the network service only ever have small results, so it takes a specific production load to trigger this issue, or a large scale test. The solution is to spawn tasks (note this requires 'static futures): let mut queries = futures::stream::iter(...) .map(|query| async move { let d: Data = tokio::spawn( self.client.request(&query)).await??; d }) .buffer_unordered(32); use futures::stream::StreamExt;\nlet results = queries.collect::>().await; Barbara was able to figure this out by reading enough and trying things out, but had that not worked, it would have probably required figuring out how to use perf or some similar tool. Later on, Barbara gets surprised by this code again. It's now being used as part of a system that handles a very high number of requests per second, but sometimes the system stalls under load. She enlists Grace to help debug, and the two of them identify via perf that all the CPU cores are busy running serialization_libary::from_bytes. Barbara revisits this solution, and discovers tokio::task::block_in_place which she uses to wrap the calls to serialization_libary::from_bytes: impl Client { async fn request(&self) -> Result { let bytes = self.inner.network_request().await? Ok(tokio::task::block_in_place(move || serialization_libary::from_bytes(&bytes))?) }\n} This resolves the problem as seen in production, but leads to Niklaus's code review suggesting the use of tokio::task::spawn_blocking inside request, instead of spawn inside buffer_unordered. This discussion is challenging, because the tradeoffs between spawn on a Future including block_in_place and spawn_blocking and then not spawning the containing Future are subtle and tricky to explain. Also, either block_in_place and spawn_blocking are heavyweight and Barbara would prefer to avoid them when the cost of serialization is low, which is usually a runtime-property of the system.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » The story","id":"347","title":"The story"},"348":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » 🤔 Frequently Asked Questions","id":"348","title":"🤔 Frequently Asked Questions"},"349":{"body":"Only in part. It may cause other kinds of contention or blocking on the runtime. As mentioned above, the deserialization work probably needs to be wrapped in something like block_in_place , so that other tasks are not starved on the runtime, or might want to use spawn_blocking . There are some important caveats/details that matter: This is dependent on how the runtime works. block_in_place + tokio::spawn might be better if the caller wants to control concurrency, as spawning is heavyweight when the deserialization work happens to be small. However, as mentioned above, this can be complex to reason about, and in some cases, may be as heavyweight as spawn_blocking spawn_blocking, at least in some executors, cannot be cancelled, a departure from the prototypical cancellation story in async Rust. \"Dependently blocking work\" in the context of async programming is a hard problem to solve generally. https://github.com/async-rs/async-std/pull/631 was an attempt but the details are making runtime's agnostic blocking are extremely complex. The way this problem manifests may be subtle, and it may be specific production load that triggers it. The outlined solutions have tradeoffs that each only make sense for certain kind of workloads. It may be better to expose the io aspect of the request and the deserialization aspect as separate APIs, but that complicates the library's usage, lays the burden of choosing the tradeoff on the callee (which may not be generally possible).","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » Are any of these actually the correct solution?","id":"349","title":"Are any of these actually the correct solution?"},"35":{"body":"It doesn't have to be perfect. Pick the one that seems like the closest fit. If you really feel stuck, though, come talk to us on Zulip about it!","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » None of the characters are a fit for my story.","id":"35","title":"None of the characters are a fit for my story."},"350":{"body":"Producing concurrent, performant code in Rust async is not always trivial. Debugging performance issues can be difficult. Rust's async model, particularly the blocking nature of polling, can be complex to reason about, and in some cases is different from other languages choices in meaningful ways. CPU-bound code can be easily hidden.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » What are the morals of the story?","id":"350","title":"What are the morals of the story?"},"351":{"body":"This is a issue I personally hit while writing code required for production.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » What are the sources for this story?","id":"351","title":"What are the sources for this story?"},"352":{"body":"That's probably the person in the cast that I am most similar to, but Alan and to some extent Grace make sense for the story as well.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » Why did you choose Barbara to tell this story?","id":"352","title":"Why did you choose Barbara to tell this story?"},"353":{"body":"Alan: May have taken longer to figure out. Grace: Likely would have been as interested in the details of how polling works. Niklaus: Depends on their experience.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara compares some C++ code » How would this story have played out differently for the other characters?","id":"353","title":"How would this story have played out differently for the other characters?"},"354":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » 😱 Status quo stories: Barbara makes their first foray into async","id":"354","title":"😱 Status quo stories: Barbara makes their first foray into async"},"355":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » 🚧 Warning: Draft status 🚧","id":"355","title":"🚧 Warning: Draft status 🚧"},"356":{"body":"It's Barbara's last year at their university and for their master's thesis, they have chosen to create a distributed database. They have chosen to use their favorite language, Rust, because Rust is a suitable language for low latency applications that they have found very pleasant to work in. Their project presents quite a challenge since they have only written some small algorithms in Rust, and it's also their first foray into creating a big distributed system.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » Barbara's first big project in Rust: a journey marred by doubt","id":"356","title":"Barbara's first big project in Rust: a journey marred by doubt"},"357":{"body":"Up until now, Barbara has followed the development of Async from afar by reading the occasional Boats blog post, and celebrating the release announcements with the rest of the happy community. Due to never having worked with async in other languages, and not having had a project suitable for async experimentation, their understanding of async and its ecosystem remained superficial. However, since they have heard that async is suitable for fast networked applications, they decide to try using async for their distributed database. After all, a fast networked application is exactly what they are trying to make. To further solidify the decision of using async, Barbara goes looking for some information and opinions on async in Rust. Doubts created by reading some tweets about how most people should be using threads instead of async for simplicity reasons are quickly washed away by helpful conversations on the Rust discord.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » Deciding to use Async","id":"357","title":"Deciding to use Async"},"358":{"body":"Still enamored with the first edition of the Rust book, they decide to go looking for an updated version, hoping that it will teach them async in the same manner that it taught them so much about the language and design patterns for Rust. Disappointed, they find no mention of async in the book, aside from a note that it exists as a keyword. Not to be deterred, they go looking further, and start looking for similarly great documentation about async. After stumbling upon the async book, their disappointment is briefly replaced with relief as the async book does a good job at solidifying what they have already learned in various blog posts about async, why one would use it and even a bit about how it all works under the hood. They skim over the parts that seem a bit too in-depth for now like pinning, as they're looking to quickly get their hands dirty. Chapter 8: The Async Ecosystem teaches them what they already picked up on through blog posts and contentious tweets: the choice of the runtime has large implications on what libraries they can use.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » Learning about Async","id":"358","title":"Learning about Async"},"359":{"body":"Barbara's dreams to quickly get their hands dirty with async Rust are shattered as they discover that they first need to make a big choice: what executor to use. Having had quite a bit of exposure to the conversations surrounding the incompatible ecosystems, Barbara is perhaps a bit more paranoid about making the wrong choice than the average newcomer. This feels like a big decision to them, as it would influence the libraries they could use and switching to a different ecosystem would be all but impossible after a while. Since they would like to choose what libraries they use before having to choose an executor, Barbara feels like the decision-making is turned on its head. Their paranoia about choosing the right ecosystem is eased after a few days of research, and some more conversations on the Rust subreddit, after which they discover that most of the RPC libraries they might want to use are situated within the most popular Tokio ecosystem anyways. Tokio also has a brief tutorial, which teaches them some basic concepts within Tokio and talks a bit more about async in general.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » The wrong time for big decisions","id":"359","title":"The wrong time for big decisions"},"36":{"body":"The more specific you can get, the better. If you can link to tweets or blog posts, that's ideal. You can also add notes into the conversations folder and link to those. Of course, you should be sure people are ok with that.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Status quo\" stories » How should I describe the \"evidence\" for my status quo story?","id":"36","title":"How should I describe the \"evidence\" for my status quo story?"},"360":{"body":"Being reasonably confident in their choice of ecosystem, Barbara starts building their distributed system. After a while, they want to introduce another networking library of which the api isn't async. Luckily Barbara picked up on that blocking was not allowed in async (or at least not in any of the currently existing executors), through reading some blog posts about async. More reddit discussions point them towards spawn_blocking in Tokio, and even rayon. But they're none the wiser about how to apply these paradigms in a neat manner. Previously the design patterns learned in other languages, combined with the patterns taught in the book, were usually sufficient to come to reasonably neat designs. But neither their previous experience, nor the async book nor the Tokio tutorial were of much use when trying to neatly incorporate blocking code into their previously fully async project.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » Woes of a newcomer to async","id":"360","title":"Woes of a newcomer to async"},"361":{"body":"To this day the lack of a blessed approach leaves Barbara unsure about the choices they've made so far and misconceptions they might still have, evermore wondering if the original tweets they read about how most people should just stick to threads were right all along.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » Confused ever after","id":"361","title":"Confused ever after"},"362":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » 🤔 Frequently Asked Questions","id":"362","title":"🤔 Frequently Asked Questions"},"363":{"body":"When entering Rust's async world without previous async experience, and no benchmarks for what good async design patters look like, getting started with async can be a bit overwhelming. Other languages which only have a single ecosystem seem to have a much better story for beginners since there's no fear of lock in, or ecosystem fomo about making the wrong choices early on. This lack of documentation on design patterns, and solid guidance about the async ecosystem for unopiniated newcomers is partially made up for by Rust's community which often provides educated opinions on the design and technical choices one should make. Because of this getting started in async favors those who know where to find answers about Rust: blogs, Discord, Reddit, etc.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » What are the morals of the story?","id":"363","title":"What are the morals of the story?"},"364":{"body":"This is based on the author's personal experience","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » What are the sources for their story?","id":"364","title":"What are the sources for their story?"},"365":{"body":"Various blog posts of withoutboats A blog post which spurred a lot of discussion about blocking in async: https://async.rs/blog/stop-worrying-about-blocking-the-new-async-std-runtime/ A nice blog post about blocking in Tokio, which still doesn't have any nice design patterns: https://ryhl.io/blog/async-what-is-blocking/ An example of design patterns being discussed for sync Rust in the book: https://doc.rust-lang.org/book/ch17-03-oo-design-patterns.html#trade-offs-of-the-state-pattern Perhaps I should've read a bit more of Niko's blogs and his async interviews.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » What documentation did the character read during this story?","id":"365","title":"What documentation did the character read during this story?"},"366":{"body":"Like the author of this story, Barbara had previous experience with Rust. Knowing where to find the community also played a significant part in this story. This story could be construed as how Barbara got started with async while starting to maintain some async projects.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » Why did you choose Barbara to tell their story?","id":"366","title":"Why did you choose Barbara to tell their story?"},"367":{"body":"Characters with previous async experience would probably have had a better experience getting started with async in Rust since they might know what design patterns to apply to async code. On the other hand, since Rust's async story is noticeably different from other languages, having async experience in other languages might even be harmful by requiring the user to unlearn certain habits. I don't know if this is actually the case since I don't have any experience with async in other languages. Characters which are less in touch with Rust's community than Barbara might have had a much worse time, since just skimming over the documentation might leave some lost, and unaware of common pitfalls. On the other hand, not having learned a lot about async through blog posts and other materials, might compel someone to read the documentation more thoroughly.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara makes their first foray into async » How would their story have played out differently for the other characters?","id":"367","title":"How would their story have played out differently for the other characters?"},"368":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » 😱 Status quo stories: Barbara needs Async Helpers","id":"368","title":"😱 Status quo stories: Barbara needs Async Helpers"},"369":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » 🚧 Warning: Draft status 🚧","id":"369","title":"🚧 Warning: Draft status 🚧"},"37":{"body":"We want all Async Rust users and their hopes and dreams for what Async Rust should be in the future to be reflected in the async vision doc, so please help us by writing 'shiny future' stories about what you would like async Rust to look like! Remember: we are in a brainstorming period. Please feel free to leave comments in an effort to help someone improve their PRs, but if you would prefer a different approach, you are better off writing your own story. (In fact, you should write your own story even if you like their approach but just have a few alternatives that are worth thinking over.)","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » ❓ How to vision: \"Shiny future\" stories","id":"37","title":"❓ How to vision: \"Shiny future\" stories"},"370":{"body":"Barbara , an experienced Rust user, is prototyping an async Rust service for work. To get things working quickly, she decides to prototype in tokio , since it is unclear which runtime her work will use. She starts adding warp and tokio to her dependencies list. She notices that warp suggests using tokio with the full feature. She's a bit concerned about how this might affect the compile times and also that all of tokio is needed for her little project, but she pushes forward. As she builds out functionality, she's pleased to see tokio provides a bunch of helpers like join! and async versions of the standard library types like channels and mutexes. After completing one endpoint, she moves to a new one which requires streaming http responses to the client. Barbara quickly finds out from tokio docs , that it does not provide a stream type, and so she adds tokio-stream to her dependencies. Moving on she tries to make some functions generic over the web framework underneath, so she tries to abstract off the functionality to a trait. So she writes an async function inside a trait, just like a normal function. trait Client { async fn get();\n} Then she gets a helpful error message. error[E0706]: functions in traits cannot be declared `async` --> src/lib.rs:2:5 |\n2 | async fn get(); | -----^^^^^^^^^^ | | | `async` because of this | = note: `async` trait functions are not currently supported = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait She then realizes that Rust doesn't support async functions in traits yet, so she adds async-trait to her dependencies. Some of her functions are recursive, and she wanted them to be async functions, so she sprinkles some async/.await keywords in those functions. async fn sum(n: usize) -> usize { if n == 0 { 0 } else { n + sum(n - 1).await }\n} Then she gets an error message. error[E0733]: recursion in an `async fn` requires boxing --> src/lib.rs:1:27 |\n1 | async fn sum(n: usize) -> usize { | ^^^^^ recursive `async fn` | = note: a recursive `async fn` must be rewritten to return a boxed `dyn Future` So to make these functions async she starts boxing her futures the hard way, fighting with the compiler. She knows that async keyword is sort of a sugar for impl Future so she tries the following at first. fn sum(n: usize) -> Box> { Box::new(async move { if n == 0 { 0 } else { n + sum(n - 1).await } })\n} The compiler gives the following error. error[E0277]: `dyn Future` cannot be unpinned --> src/main.rs:11:17 |\n11 | n + sum(n - 1).await | ^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `dyn Future` | = note: required because of the requirements on the impl of `Future` for `Box>` = note: required by `poll` She then reads about Unpin and Pin, and finally comes up with a solution. fn sum(n: usize) -> Pin>> { Box::pin(async move { if n == 0 { 0 } else { n + sum(n - 1).await } })\n} The code works! She searches online for better methods and finds out the async-book . She reads about recursion and finds out a cleaner way using the futures crate. use futures::future::{BoxFuture, FutureExt}; fn sum(n: usize) -> BoxFuture<'static, usize> { async move { if n == 0 { 0 } else { n + sum(n - 1).await } }.boxed()\n} She also asks one of her peers for a code review asynchronously, and after awaiting their response, she learns about the async-recursion crate. Then she adds async-recursion to the dependencies. Now she can write the follwing, which seems reasonably clean: #[async_recursion]\nasync fn sum(n: usize) -> usize { if n == 0 { 0 } else { n + sum(n - 1).await }\n} As she is working, she realizes that what she really needs is to write a Stream of data. She starts trying to write her Stream implementation and spends several hours banging her head against her desk in frustration (her challenges are pretty similar to what Alan experienced ). Ultimately she's stuck trying to figure out why her &mut self.foo call is giving her errors: error[E0277]: `R` cannot be unpinned --src/main.rs:52:26 |\n52 | Pin::new(&mut self.reader).poll_read(cx, buf) | ^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `R` | = note: required by `Pin::

    ::new`\nhelp: consider further restricting this bound |\n40 | R: AsyncRead + Unpin, | ^^^^^^^ Fortunately, that weekend, @fasterthanlime publishes a blog post covering the gory details of Pin. Reading that post, she learns about pin-project , which she adds as a dependency. She's able to get her code working, but it's kind of a mess. Feeling quite proud of herself, she shows it to a friend, and they suggest that maybe she ought to try the async-stream crate. Reading that, she realizes she can use this crate to simplify some of her streams, though not all of them fit. \"Finally!\", Barbara says, breathing a sigh of relief. She is done with her prototype, and shows it off at work, but to her dismay, the team decides that they need to use a custom runtime for their use case. They're building an embedded system and it has relatively limited resources. Barbara thinks, \"No problem, it should be easy enough to change runtimes, right?\" So now Barbara starts the journey of replacing tokio with a myriad of off the shelf and custom helpers. She can't use warp so now she has to find an alternative. She also has to find a new channel implementations and there are a few: In futures async-std has one, but it seems to be tied to another runtime so she can't use that. smol has one that is independent. This process of \"figure out which alternative is an option\" is repeated many times. She also tries to use the select! macro from futures but it requires more pinning and workarounds (not to mention a stack overflow or two). But Barbara fights through all of it. In the end, she gets it to work, but she realizes that she has a ton of random dependencies and associated compilation time. She wonders if all that dependencies will have a negative effect on the binary size. She also had to rewrite some bits of functionality on her own.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » The story","id":"370","title":"The story"},"371":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » 🤔 Frequently Asked Questions","id":"371","title":"🤔 Frequently Asked Questions"},"372":{"body":"Functionality is found either in \"framework\"-like crates (e.g., tokio) and spread around many different ecosystem crates. It's sometimes difficult to discover where this functionality lives. Additionally, the trouble of non runtime-agnostic libraries becomes very apparent. Helpers and utilities might have analogues across the ecosystem, but they are different in subtle ways. Some patterns are clean if you know the right utility crate and very painful otherwise.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » What are the morals of the story?","id":"372","title":"What are the morals of the story?"},"373":{"body":"Issue 105","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » What are the sources for this story?","id":"373","title":"What are the sources for this story?"},"374":{"body":"They are functions/macros that helps with certain basic pieces of functionality and features. Like to await on multiple futures concurrently (join! in tokio), or else race the futures and take the result of the one that finishes first.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » What are helper functions/macros?","id":"374","title":"What are helper functions/macros?"},"375":{"body":"Lifetimes would make it a bit more difficult. Although for simple functions it shouldn't be much of a problem. fn concat<'a>(string: &'a mut String, slice: &'a str) -> Pin + 'a>> { Box::pin(async move { if !slice.is_empty() { string.push_str(&slice[0..1]); concat(string, &slice[1..]).await; } })\n}","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » Will there be a difference if lifetimes are involved in async recursion functions?","id":"375","title":"Will there be a difference if lifetimes are involved in async recursion functions?"},"376":{"body":"This particular issue impacts all users of Rust even (and sometimes especially) experienced ones.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » Why did you choose Barbara to tell this story?","id":"376","title":"Why did you choose Barbara to tell this story?"},"377":{"body":"Other characters may not know all their options and hence might have fewer problems as a result.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara needs Async Helpers » How would this story have played out differently for the other characters?","id":"377","title":"How would this story have played out differently for the other characters?"},"378":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » 😱 Status quo stories: Barbara plays with async","id":"378","title":"😱 Status quo stories: Barbara plays with async"},"379":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » 🚧 Warning: Draft status 🚧","id":"379","title":"🚧 Warning: Draft status 🚧"},"38":{"body":"Just want to get started? Here are quick instructions to get you going: To write your own story: Create a PR based on the \"shiny future\" template . Do not add your file to SUMMARY.md -- that will create conflicts, we'll do it manually after merging.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » TL;DR","id":"38","title":"TL;DR"},"380":{"body":"Barbara has been following async rust for a long time, in eager anticipation of writing some project using async. The last time she tried to do anything with futures in rust was more than a year ago (before async functions), and when you had to chain futures together with many calls to then (often leading to inscrutable error messages hundreds of characters long). This was not a pleasant experience for Barbara. After watching the development of rust async/await (by following discussions on /r/rust and the internals forums), she wants to start to play around with writing async code. Before starting on any real project, she starts with a \"playground\" where she can try to write some simple async rust code to see how it feels and how it compares to how async code feels in other languages she knows (like C# and JavaScript). She starts by opening a blank project in VSCode with rust-analyzer . Because she's been following the overall state of rust async, she knows that she needs a runtime, and quickly decides to use tokio, because she knows its quite popular and well documented. After looking the long length of the tokio tutorial , she decides to not read most of it right now, and tries to dive right in to writing code. But she does look at the \" Hello Tokio \" section that shows what feature flags are required by tokio: [dependencies]\ntokio = { version = \"1\", features = [\"full\"] } Poking around the tokio API docs in search of something to play with, she sees a simple future that looks interesting: the sleep future that will wait for a certain duration to elapse before resolving. Borrowing again from the \"Hello Tokio\" tutorial to make sure she has the correct spelling for the tokio macros, she writes up the following code: #[tokio::main]\npub async fn main() { let mut rng = thread_rng(); let t = Uniform::new(100, 5000); let mut futures = Vec::new(); for _ in 0..10 { let delay = rng.sample(t); futures.push(tokio::time::sleep(Duration::from_millis(delay))); } println!(\"Created 10 futures\"); for f in futures { f.await; } println!(\"Done waiting for all futures\");\n} This very first version she wrote compiled on the first try and had no errors when running it. Barbara was pleased about this. However, this example is pretty boring. The program just sits there for a few seconds doing nothing, and giving no hints about what it's actually doing. So for the next iteration, Barbara wants to have a message printed out when each future is resolved. She tries this code at first: let mut futures = Vec::new();\nfor _ in 0..10 { let delay = rng.sample(t); futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| { println!(\"Done!\"); }));\n}\nprintln!(\"Created 10 futures\"); But the compiler gives this error: error[E0277]: `()` is not a future --> src\\main.rs:13:71 |\n13 | futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| { | ^^^^ `()` is not a future | = help: the trait `futures::Future` is not implemented for `()` Even though the error is pointing at the then function, Barbara pretty quickly recognizes the problem -- her closure needs to return a future, but () is not a future (though she wonders \"why not?\"). Looking at the tokio docs is not very helpful. The Future trait isn't even defined in the tokio docs, so she looks at the docs for the Future trait in the rust standard library docs and she sees it only has 5 implementors; one of them is called Ready which looks interesting. Indeed, this struct is a future that will resolve instantly, which is what she wants: for _ in 0..10 { let delay = rng.sample(t); futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| { println!(\"Done!\"); std::future::ready(()) }));\n} This compiles without error, but when Barbara goes to run the code, the output surprises her a little bit: After waiting running the program, nothing happened for about 4 seconds. Then the first \"Done!\" message was printed, followed very quickly by the other 9 messages. Based on the code she wrote, she expected 10 \"Done!\" messages to be printed to the console over the span of about 5 seconds, with roughly a uniform distribution. After running the program few more times, she always observes that while the first view messages are printed after some delay, the last few messages are always printed all at once. Barbara has experience writing async code in JavaScript, and so she thinks for a moment about how this toy code might have looked like if she was using JS: async function main() { const futures = []; for (let idx = 0; idx < 10; idx++) { const delay = 100 + (Math.random() * 4900); const f = new Promise(() => { setTimeout(() => console.log(\"Done!\"), delay) }) futures.push(f); } Promise.all(futures);\n} After imagining this code, Barbara has an \"ah-ha!\" moment, and realizes the problem is likely how she is waiting for the futures in her rust code. In her rust code, she is waiting for the futures one-by-one, but in the JavaScript code she is waiting for all of them simultaneously. So Barbara looks for a way to wait for a Vec of futures. After a bunch of searching in the tokio docs, she finds nothing. The closet thing she finds is a join! macro, but this appears to only work on individually specified futures, not a Vec of futures. Disappointed, she then looks at the future module from the rust standard library, but module is tiny and very clearly doesn't have what she wants. Then Barbara has another \"ah-ha!\" moment and remembers that there's a 3rd-party crate called \" futures \" on crates.io that she's seen mentioned in some /r/rust posts. She checks the docs and finds the join_all function which looks like what she wants: let mut futures = Vec::new();\nfor _ in 0..10 { let delay = rng.sample(t); futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| { println!(\"Done!\"); std::future::ready(()) }));\n}\nprintln!(\"Created 10 futures\"); futures::future::join_all(futures).await;\nprintln!(\"Done\"); It works exactly as expected now! After having written the code, Barbara begins to remember an important detail about rust futures that she once read somewhere: rust futures are lazy, and won't make progress unless you await them. Happy with this success, Barbara continues to expand her toy program by making a few small adjustments: for counter in 0..10 { let delay = rng.sample(t); let delay_future = tokio::time::sleep(Duration::from_millis(delay)); if counter < 9 { futures.push(delay_future.then(|_| { println!(\"Done!\"); std::future::ready(()) })); } else { futures.push(delay_future.then(|_| { println!(\"Done with the last future!\"); std::future::ready(()) })); }\n} This fails to compile: error[E0308]: mismatched types = note: expected closure `[closure@src\\main.rs:16:44: 19:14]` found closure `[closure@src\\main.rs:21:44: 24:14]` = note: no two closures, even if identical, have the same type = help: consider boxing your closure and/or using it as a trait object This error doesn't actually surprise Barbara that much, as she is familiar with the idea of having to box objects sometimes. She does notice the \"consider boxing your closure\" error, but thinks that this is not likely the correct solution. Instead, she thinks that she should box the entire future. She first adds explicit type annotations to the Vec: let mut futures: Vec>> = Vec::new(); She then notices that her IDE (VSCode + rust-analyzer) has a new error on each call to push. The code assist on each error says Store this in the heap by calling 'Box::new'. She is exactly what she wants, and it happy that rust-analyzer perfectly handled this case. Now each future is boxed up, but there is one final error still, this time on the call to join_all(futures).await: error[E0277]: `dyn futures::Future` cannot be unpinned --> src\\main.rs:34:31 |\n34 | futures::future::join_all(futures).await; Barbara has been around rust for long enough to know that there is a Box::pin API, but she doesn't really understand what it does, nor does she have a good intuition about what this API is for. But she is accustomed to just trying things in rust to see if they work. And indeed, after changing Box::new to Box::pin: futures.push(Box::pin(delay_future.then(|_| { println!(\"Done!\"); std::future::ready(())\n}))); and adjusting the type of the Vec: let mut futures: Vec>>> = Vec::new(); the code compiles and runs successfully. But even though the run is working correctly, she wishes she had a better idea why pinning is necessary here and feels a little uneasy having to use something she doesn't yet understand well. As one final task, Barbara wants to try to replace the chained call to then with a async block. She remembers that these were a big deal in a recent release of rust, and that they looked a lot nicer than a long chain of then calls. She doesn't remember the exact syntax for this, but she read a blog post about async rust a few weeks ago, and has a vague idea of how it looks. She tries writing this: futures.push(Box::pin(async || { tokio::time::sleep(Duration::from_millis(delay)).await; println!(\"Done after {}ms\", delay);\n})); The compiler gives an error: error[E0658]: async closures are unstable --> src\\main.rs:14:31 |\n14 | futures.push(Box::pin(async || { | ^^^^^ | = note: see issue #62290 for more information = help: add `#![feature(async_closure)]` to the crate attributes to enable = help: to use an async block, remove the `||`: `async {` Barbara knows that async is stable and using this nightly feature isn't what she wants. So the tries the suggestion made by the compiler and removes the || bars: futures.push(Box::pin(async { tokio::time::sleep(Duration::from_millis(delay)).await; println!(\"Done after {}ms\", delay);\n})); A new error this time: error[E0597]: `delay` does not live long enough\n15 | | tokio::time::sleep(Duration::from_millis(delay)).await; | | ^^^^^ borrowed value does not live long enough This is an error that Barbara is very familiar with. If she was working with a closure, she knows she can use a move-closure (since her delay type is Copy). But she not using a closure (she just tried, but the compiler told her to switch to an async block), but Barbara's experience with rust tells her that it's a very consistent language. Maybe the same keyword used in move closures will work here? She tries it: futures.push(Box::pin(async move { tokio::time::sleep(Duration::from_millis(delay)).await; println!(\"Done after {}ms\", delay);\n})); It works! Satisfied but still thinking about async rust, Barbara takes a break to eat a cookie.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » The story","id":"380","title":"The story"},"381":{"body":"Here are some standard FAQ to get you started. Feel free to add more!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » 🤔 Frequently Asked Questions","id":"381","title":"🤔 Frequently Asked Questions"},"382":{"body":"Barbara has years of rust experience that she brings to bear in her async learning experiences.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » Why did you choose Barbara to tell this story?","id":"382","title":"Why did you choose Barbara to tell this story?"},"383":{"body":"Due to Barbara's long experience with rust, she knows most of the language pretty well (except for things like async, and advanced concepts like pinned objects). She generally trusts the rust compiler , and she's learned over the years that she can learn how to use an unfamiliar library by reading the API docs. As long as she can get the types to line up and the code to compile, things generally work as she expects. But this is not the case with rust async: There can be new syntax to learn (e.g. async blocks) It can be hard to find basic functionality (like futures::future::join_all) It's not always clear how the ecosystem all fits together (what functionality is part of tokio? What is part of the standard library? What is part of other crates like the futures crate?) Sometimes it looks like there multiple ways to do something: What's the difference between futures::future::Future and std::future::Future? What's the difference between tokio::time::Instant and std::time::Instant? What's the difference between std::future::ready and futures::future::ok? Barbara's has a lot to learn. Her usual methods of learning how to use new crates doesn't really work when learning tokio and async. She wonders if she actually should have read the long tokio tutorial before starting. She realizes it will take her a while to build up the necessary foundation of knowledge before she can be proficient in async rust. There were several times where the compiler or the IDE gave helpful error messages and Barbara appreciated these a lot.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » What are the morals of the story?","id":"383","title":"What are the morals of the story?"},"384":{"body":"Personal experiences of the author","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » What are the sources for this story?","id":"384","title":"What are the sources for this story?"},"385":{"body":"Other characters would likely have written all the same code as Barbara, and probably would have run into the same problems. But other characters might have needed quite a bit longer to get to the solution. For example, it was Barbara's experience with move-closures that led her to try adding the move keyword to the async block. And it was her general \"ambient knowledge\" of things that allowed her to remember that things like the futures crate exist. Other characters would have likely needed to resort to an internet search or asking on a rust community.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » How would this story have played out differently for the other characters?","id":"385","title":"How would this story have played out differently for the other characters?"},"386":{"body":"Barbara makes their first steps in async is Barbara in a slightly different universe. Alan started trusting the rust compiler is a similar story about a different character.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara plays with async » What are other related stories?","id":"386","title":"What are other related stories?"},"387":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » 😱 Status quo stories: Barbara tries async streams","id":"387","title":"😱 Status quo stories: Barbara tries async streams"},"388":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » 🚧 Warning: Draft status 🚧","id":"388","title":"🚧 Warning: Draft status 🚧"},"389":{"body":"Barbara has years of experience in Rust and was looking forward to using some of that experience with the brand-new async functionality. Async/await had been a dream of Rust for so long, and it was finally here! As she began her next side project, she would quickly partner up with other experienced Rust developers. One of these Rust developers, who had more async experience than Barbara, suggested they use 'async streams' as the core abstraction for this project. Barbara trusted the experience of this other developer. Though she didn't yet understand how async streams worked, she was happy to go along with the decision and build her experience over time. Month after month, the side project grew in scope and number of users. Potential contributors would try to contribute, but some would leave because they found the combination of concepts and the additional set of borrowchecker-friendly code patterns difficult to understand and master. Barbara was frustrated to lose potential contributors but kept going. Users also began to discover performance bottlenecks as they pushed the system harder. Barbara, determined to help the users as best she could, pulled her thinking cap tight and started to probe the codebase. In her investigations, she experimented with adding parallelism to the async stream. She knew that if she called .next() twice, that in theory she should have two separate futures. There were a few ways to run multiple futures in parallel, so this seemed like it might pan out to be a useful way of leveraging the existing architecture. Unfortunately, to Barbara's chagrin, async streams do not support this kind of activity. Each .next() must be awaited so that the ownership system allowed her to get the next value in the stream. Effectively, this collapsed the model to being a synchronous iterator with a more modern scent. Barbara was frustrated and started to clarify her understanding of what asynchrony actually meant, looking through the implementations for these abstractions. When she was satisfied, she took a step back and thought for a moment. If optional parallelism was a potential win and the core data processing system actually was going to run synchronously anyway -- despite using async/await extensively in the project -- perhaps it would make more sense to redesign the core abstraction. With that, Barbara set off to experiment with a new engine for her project. The new engine focused on standard iterators and rayon instead of async streams. As a result, the code was much easier for new users, as iterators are well-understood and have good error messages. Just as importantly, the code was noticeably faster than its async counterpart. Barbara benchmarked a variety of cases to be sure, and always found that the new, simpler approach performed better than the async stream original. To help those who followed after her, Barbara sat down to write out her experiences to share with the rest of the world. Perhaps future engineers might learn from the twists and turns her project took.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » The story","id":"389","title":"The story"},"39":{"body":"If you have an idea you'd like to write about, please open a PR using this template and adding a new file into the shiny_future directory . Do not add your file to SUMMARY.md , that will create conflicts. We'll do it after merging.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » How to open a PR","id":"39","title":"How to open a PR"},"390":{"body":"Here are some standard FAQ to get you started. Feel free to add more!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » 🤔 Frequently Asked Questions","id":"390","title":"🤔 Frequently Asked Questions"},"391":{"body":"Easy to get the wrong idea. The current state of documentation does not make the use cases clear, so it's easy to grab this as an abstraction because it's the closest that fits. Async streams are just iterators. Async streams do not offer useful asynchrony in and of themselves. A possible help here might be renaming \"async streams\" to \"async iterators\" to help underscore their use case and help developers more quickly understand their limitations. A single async stream can not be operated on in parallel. They open up asynchrony only during the .next() step and are unable to offer asynchrony between steps (eg by calling .next() twice and operating on the resulting Futures).","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » What are the morals of the story?","id":"391","title":"What are the morals of the story?"},"392":{"body":"Two years of experience with async streams in Nushell. You can watch a recording of the on-going experimentation as well. User stories for the difficulty of using async streams were largely shared with the team on the project discord . We tried a number of different approaches including using the async_stream! macro, removing off the async_stream! macro because of the error message cliff, and variations of the above.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » What are the sources for this story?","id":"392","title":"What are the sources for this story?"},"393":{"body":"Barbara is an experienced engineer who may come to async streams and async/await in general with a partially-incorrect set of baseline understanding. It may take her time to understand and see more clearly where her model was wrong because there are things similar to other experiences she's had. For example, Rust futures differ from C++ futures and do not offer the same style of asynchrony. Terms like \"streams\" sound like they may have more internal functionality, and it would be easy for an experienced developer to trip up with the wrong starting assumption.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » Why did you choose Barbara to tell this story?","id":"393","title":"Why did you choose Barbara to tell this story?"},"394":{"body":"Alan may have come to a similar idea for an architecture, as async/await is popular in languages like JavaScript and C#. Once Alan attempted to use asynchrony between units of work, namely using async streams, this is where Alan may have failed. The amount of Rust one has to know to succeed here is quite high and includes understanding Arc, Pin, Streams, traits/adapters, the borrowchecker and dealing with different types of errors, and more. Grace may have chosen a different core abstraction from the start. She has a good chance of thinking through how she'd like the data processing system to work. It's possible she would have found threads and channels a better fit. This would have had different trade-offs. Niklaus may have also tried to go down the async stream path. The information available is mixed and hype around async/await is too strong. This makes it shine brighter than it should. Without experience with different systems languages to temper the direction, the most likely path would be to experiment with asynchrony and hope that \"underneath the surface it does the right thing.\"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara tries async streams » How would this story have played out differently for the other characters?","id":"394","title":"How would this story have played out differently for the other characters?"},"395":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » 😱 Status quo stories: Barbara trims a stacktrace","id":"395","title":"😱 Status quo stories: Barbara trims a stacktrace"},"396":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » 🚧 Warning: Draft status 🚧","id":"396","title":"🚧 Warning: Draft status 🚧"},"397":{"body":"Barbara is triaging the reported bugs for her SLOW library. For each bug, she tries to quickly see if she can diagnose the basic area of code that is affected so she knows which people to ping to help fix it. She opens a bug report from a user complaining about a panic when too many connections arrive at the same time. The bug report includes a backtrace from the user's code, and it looks like this: thread 'main' panicked at 'something bad happened here', src/main.rs:16:5\nstack backtrace: 0: std::panicking::begin_panic at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:519:12 1: slow_rs::process_one::{{closure}} at ./src/main.rs:16:5 2: as core::future::future::Future>::poll at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19 3: slow_rs::process_many::{{closure}} at ./src/main.rs:10:5 4: as core::future::future::Future>::poll at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19 5: slow_rs::main::{{closure}}::{{closure}} at ./src/main.rs:4:9 6: as core::future::future::Future>::poll at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19 7: slow_rs::main::{{closure}} at ./src/main.rs:3:5 8: as core::future::future::Future>::poll at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19 9: tokio::park::thread::CachedParkThread::block_on::{{closure}} at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/park/thread.rs:263:54 10: tokio::coop::with_budget::{{closure}} at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/coop.rs:106:9 11: std::thread::local::LocalKey::try_with at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:272:16 12: std::thread::local::LocalKey::with at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:248:9 13: tokio::coop::with_budget at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/coop.rs:99:5 14: tokio::coop::budget at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/coop.rs:76:5 15: tokio::park::thread::CachedParkThread::block_on at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/park/thread.rs:263:31 16: tokio::runtime::enter::Enter::block_on at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/runtime/enter.rs:151:13 17: tokio::runtime::thread_pool::ThreadPool::block_on at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/runtime/thread_pool/mod.rs:71:9 18: tokio::runtime::Runtime::block_on at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/runtime/mod.rs:452:43 19: slow_rs::main at ./src/main.rs:1:1 20: core::ops::function::FnOnce::call_once at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5\nnote: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. Barbara finds the text overwhelming. She can't just browse it to figure out what code is affected. Instead, she pops up a new tab with gist.github.com copies the text into that handy text box and starts deleting stuff. To start, she deletes the first few lines until her code appears, then she deletes: the extra lines from calls to poll that are introduced by the async fn machinery; the bits of code that come from tokio that don't affect her; the intermediate wrappers from the standard library pertaining to thread-local variables. She's a bit confused by the ::{closure} lines on her symbols but she learned by now that this is normal for async fn. After some work, she has reduced her stack to this: thread 'main' panicked at 'something bad happened here', src/main.rs:16:5\nstack backtrace: 1: slow_rs::process_one::{{closure}} at ./src/main.rs:16:5 3: slow_rs::process_many::{{closure}} at ./src/main.rs:10:5 5: slow_rs::main::{{closure}}::{{closure}} at ./src/main.rs:4:9 7: slow_rs::main::{{closure}} at ./src/main.rs:3:5 13: 19: slow_rs::main\nnote: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. Based on this, she is able to figure out who to ping about the problem. She pastes her reduced stack trace into the issue pings Alan, who is responsible that module. Alan thanks her for reducing the stack trace and mentions, \"Oh, when I used to work in C#, this is what the stack traces always looked like. I miss those days.\" Fin.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » The story","id":"397","title":"The story"},"398":{"body":"Here are some standard FAQ to get you started. Feel free to add more!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » 🤔 Frequently Asked Questions","id":"398","title":"🤔 Frequently Asked Questions"},"399":{"body":"Rust stack traces -- but async stack traces in particular -- reveal lots of implementation details to the user: Bits of the runtime and intermediate libraries whose source code is likely not of interest to the user (but it might be); Intermediate frames from the stdlib; ::{closure} symbols on async functions and blocks (even though they don't appear to be closures to the user); calls to poll.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » What are the morals of the story?","id":"399","title":"What are the morals of the story?"},"4":{"body":"We hold discussions on the #wg-async-foundations stream in Zulip","breadcrumbs":"👋🏽 Welcome » Zulip","id":"4","title":"Zulip"},"40":{"body":"Shiny future PRs \"retell\" the story from one or more status quo PRs. The story is now taking place 2-3 years in the future, when Async Rust has had the chance to make all sorts of improvements. Shiny future stories are aspirational: we don't have to know exactly how they will be achieved yet! (Of course, it never hurts to have a plan too.) Like status quo stories , each shiny future story is always presented from the POV of a particular character . They should be detailed. Sometimes this will mean you have to make stuff up, like method names or other details -- you can use the FAQ to spell out areas of particular uncertainty.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » Goals of a shiny future PR","id":"40","title":"Goals of a shiny future PR"},"400":{"body":"Sergey Galich reported this problem, among many others.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » What are the sources for this story?","id":"400","title":"What are the sources for this story?"},"401":{"body":"She knows about the desugarings that give rise to symbols like ::{closure}, but she still finds them annoying to deal with in practice.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » Why did you choose Barbara to tell this story?","id":"401","title":"Why did you choose Barbara to tell this story?"},"402":{"body":"Other characters might have wasted a lot of time trying to read through the stack trace in place before editing it. They might not have known how to trim down the stack trace to something that focused on their code, or it might have taken them much longer to do so.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » How would this story have played out differently for the other characters?","id":"402","title":"How would this story have played out differently for the other characters?"},"403":{"body":"Rust's async model does have some advantages, because the complete stack trace is available unless there is an intermediate spawn. Other languages have developed special tools to connect async functions to their callers, however, which gives them a nice experience. For example, Chrome has a UI for enabling stacktraces that cross await points .","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » How does this compare to other languages?","id":"403","title":"How does this compare to other languages?"},"404":{"body":"Because it came in an issue report (or, freqently, as a crash report or email). But also, that isn't necessarily an improvement! Expand below if you would like to see what we mean. (click to see how a backtrace looks in lldb) * thread #1, name = 'foo', stop reason = breakpoint 1.1 * frame #0: 0x0000555555583d24 foo`foo::main::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h617d49d0841ffc0d((null)=closure-0 @ 0x00007fffffffae38, (null)=) at main.rs:11:13 frame #1: 0x0000555555583d09 foo`_$LT$T$u20$as$u20$futures_util..fns..FnOnce1$LT$A$GT$$GT$::call_once::hc559b1f3f708a7b0(self=closure-0 @ 0x00007fffffffae68, arg=) at fns.rs:15:9 frame #2: 0x000055555557f300 foo`_$LT$futures_util..future..future..map..Map$LT$Fut$C$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hebf5b295fcc0837f(self=(pointer = 0x0000555555700e00), cx=0x00007fffffffcf50) at map.rs:57:73 frame #3: 0x00005555555836ac foo`_$LT$futures_util..future..future..Map$LT$Fut$C$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::h482f253651b968e6(self=Pin<&mut futures_util::future::future::Map> @ 0x00007fffffffb268, cx=0x00007fffffffcf50)\nat lib.rs:102:13 frame #4: 0x000055555557995a foo`_$LT$futures_util..future..future..flatten..Flatten$LT$Fut$C$$LT$Fut$u20$as$u20$core..future..future..Future$GT$..Output$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hd62d2a2417c0f2ea(self=(pointer = 0x0000555555700d80), cx=0x00007fffffffcf50) at flatten.rs:48:36 frame #5: 0x00005555555834fc foo`_$LT$futures_util..future..future..Then$LT$Fut1$C$Fut2$C$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hf60f05f9e9d6f307(self=Pin<&mut futures_util::future::future::Then, closure-0>> @ 0x00007fffffffc148, cx=0x00007fffffffcf50) at lib.rs:102:13 frame #6: 0x000055555558474a foo`_$LT$core..pin..Pin$LT$P$GT$$u20$as$u20$core..future..future..Future$GT$::poll::h4dad267b4f10535d(self=Pin<&mut core::pin::Pin>> @ 0x00007fffffffc188, cx=0x00007fffffffcf50) at future.rs:119:9 frame #7: 0x000055555557a693 foo`_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hdb6db40c2b3f2f1b(self=(pointer = 0x00005555557011b0), cx=0x00007fffffffcf50) at maybe_done.rs:95:38 frame #8: 0x0000555555581254 foo`_$LT$futures_util..future..join_all..JoinAll$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::ha2472a9a54f0e504(self=Pin<&mut futures_util::future::join_all::JoinAll>>> @ 0x00007fffffffc388, cx=0x00007fffffffcf50) at join_all.rs:101:16 frame #9: 0x0000555555584095 foo`foo::main::_$u7b$$u7b$closure$u7d$$u7d$::h6459086fc041943f((null)=ResumeTy @ 0x00007fffffffcc40) at main.rs:17:5 frame #10: 0x0000555555580eab foo`_$LT$core..future..from_generator..GenFuture$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$::poll::h272e2b5e808264a2(self=Pin<&mut core::future::from_generator::GenFuture> @ 0x00007fffffffccf8, cx=0x00007fffffffcf50) at mod.rs:80:19 frame #11: 0x00005555555805a0 foo`tokio::park::thread::CachedParkThread::block_on::_$u7b$$u7b$closure$u7d$$u7d$::hbfc61d9f747eef7b at thread.rs:263:54 frame #12: 0x00005555555795cc foo`tokio::coop::with_budget::_$u7b$$u7b$closure$u7d$$u7d$::ha229cfa0c1a2e13f(cell=0x00007ffff7c06712) at coop.rs:106:9 frame #13: 0x00005555555773cc foo`std::thread::local::LocalKey$LT$T$GT$::try_with::h9a2f70c5c8e63288(self=0x00005555556e2a48, f=) at local.rs:272:16 frame #14: 0x0000555555576ead foo`std::thread::local::LocalKey$LT$T$GT$::with::h12eeed0906b94d09(self=0x00005555556e2a48, f=) at local.rs:248:9 frame #15: 0x000055555557fea6 foo`tokio::park::thread::CachedParkThread::block_on::h33b270af584419f1 [inlined] tokio::coop::with_budget::hcd477734d4970ed5(budget=(__0 = core::option::Option @ 0x00007fffffffd040), f=closure-0 @ 0x00007fffffffd048) at coop.rs:99:5 frame #16: 0x000055555557fe73 foo`tokio::park::thread::CachedParkThread::block_on::h33b270af584419f1 [inlined] tokio::coop::budget::h410dced2a7df3ec8(f=closure-0 @ 0x00007fffffffd008) at coop.rs:76 frame #17: 0x000055555557fe0c foo`tokio::park::thread::CachedParkThread::block_on::h33b270af584419f1(self=0x00007fffffffd078, f=) at thread.rs:263 frame #18: 0x0000555555578f76 foo`tokio::runtime::enter::Enter::block_on::h4a9c2602e7b82840(self=0x00007fffffffd0f8, f=) at enter.rs:151:13 frame #19: 0x000055555558482b foo`tokio::runtime::thread_pool::ThreadPool::block_on::h6b211ce19db8989d(self=0x00007fffffffd280, future=(__0 = foo::main::generator-0 @ 0x00007fffffffd200)) at mod.rs:71:9 frame #20: 0x0000555555583324 foo`tokio::runtime::Runtime::block_on::h5f6badd2dffadf55(self=0x00007fffffffd278, future=(__0 = foo::main::generator-0 @ 0x00007fffffffd968)) at mod.rs:452:43 frame #21: 0x0000555555579052 foo`foo::main::h3106d444f509ad81 at main.rs:5:1 frame #22: 0x000055555557b69b foo`core::ops::function::FnOnce::call_once::hba86afc3f8197561((null)=(foo`foo::main::h3106d444f509ad81 at main.rs:6), (null)=) at function.rs:227:5 frame #23: 0x0000555555580efe foo`std::sys_common::backtrace::__rust_begin_short_backtrace::h856d648367895391(f=(foo`foo::main::h3106d444f509ad81 at main.rs:6)) at backtrace.rs:125:18 frame #24: 0x00005555555842f1 foo`std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::h24c58cd1e112136f at rt.rs:66:18 frame #25: 0x0000555555670aca foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] core::ops::function::impls::_$LT$impl$u20$core..ops..function..FnOnce$LT$A$GT$$u20$for$u20$$RF$F$GT$::call_once::hbcc915e668c7ca11 at function.rs:259:13 frame #26: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] std::panicking::try::do_call::h6b0f430d48122ddf at panicking.rs:379 frame #27: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] std::panicking::try::h6ba420e2e21b5afa at panicking.rs:343 frame #28: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] std::panic::catch_unwind::h8366719d1f615eee at panic.rs:431 frame #29: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 at rt.rs:51 frame #30: 0x00005555555842d0 foo`std::rt::lang_start::ha8694bc6fe5182cd(main=(foo`foo::main::h3106d444f509ad81 at main.rs:6), argc=1, argv=0x00007fffffffdc88) at rt.rs:65:5 frame #31: 0x00005555555790ec foo`main + 28 frame #32: 0x00007ffff7c2f09b libc.so.6`__libc_start_main(main=(foo`main), argc=1, argv=0x00007fffffffdc88, init=, fini=, rtld_fini=, stack_end=0x00007fffffffdc78) at libc-start.c:308:16","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » Why doesn't Barbara view this in a debugger?","id":"404","title":"Why doesn't Barbara view this in a debugger?"},"405":{"body":"Yes, this is the reduced backtrace. You don't even want to know what the full one looks like. Don't click it. Don't!","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara trims a stacktrace » Doesn't Rust have backtrace trimming support?","id":"405","title":"Doesn't Rust have backtrace trimming support?"},"406":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » 😱 Status quo stories: Barbara wants Async Insights","id":"406","title":"😱 Status quo stories: Barbara wants Async Insights"},"407":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » 🚧 Warning: Draft status 🚧","id":"407","title":"🚧 Warning: Draft status 🚧"},"408":{"body":"Barbara has an initial prototype of a new service she wrote in sync Rust. She then decides, since the service is extremely I/O bound, to port it to async Rust and her benchmarks have led her to believe that performance is being left on the table. She does this by sprinkling async/.await everywhere, picking an executor, and moving dependencies from sync to async. Once she has the program compiling, she thinks \"oh that was easy\". She runs it for the first time and surprisingly she finds out that when hitting an endpoint, nothing happens. Barbara, always prepared, has already added logging to her service and she checks the logs. As she expected, she sees here that the endpoint handler has been invoked but then... nothing. Barbara exclaims, \"Oh no! This was not what I was expecting, but let's dig deeper.\" She checks the code and sees that the endpoint spawns several tasks, but unfortunately those tasks don't have much logging in them. Barbara knows that debugging with a traditional debugger is not very fruitful in async Rust. She does a deep dive into the source code and doesn't find anything. Then she adds much more logging, but to her dismay she finds that a particular task seems stuck, but she has no idea why. She really wishes that there was a way to get more insight into why the task is stuck. These were the thoughts inside her head at that moment: Is it waiting on I/O? Is there a deadlock? Did she miss some sync code that might still be there and messing with the executor? For the I/O question she knows to use some tools on her operating system (lsof). This reveals some open sockets but she's not sure how to act on this. She scans the code for any std lib imports that might be blocking, but doesn't find anything. After hours of crawling through the code, she notices that her task is receiving a message from a bounded async channel. She changes this to be an unbounded channel and then things start working. She wants to know why the code was not working, but unfortunately she has no way to gain insight into this issue. She fears that her task might use too much memory knowing that the channel is unbounded, but she can't really tell. She thinks, \"Anyhow it is working now, let's see if we got some performance gains.\" After thorough benchmarking she finds out that she didn't quite get the performance gain she was expecting. \"Something is not working, as intended\", she thinks.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » The story","id":"408","title":"The story"},"409":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » 🤔 Frequently Asked Questions","id":"409","title":"🤔 Frequently Asked Questions"},"41":{"body":"Every shiny future PR includes a FAQ. This FAQ should always include answers to some standard questions: What status quo story or stories are you retelling? Link to the status quo stories here. If there isn't a story that you're retelling, write it ! What is Alan most excited about in this future? Is he disappointed by anything? Think about Alan's top priority (performance) and the expectations he brings (ease of use, tooling, etc). How do they fare in this future? What is Grace most excited about in this future? Is she disappointed by anything? Think about Grace's top priority (memory safety) and the expectations she brings (still able to use all the tricks she knows and loves). How do they fare in this future? What is Niklaus most excited about in this future? Is he disappointed by anything? Think about Niklaus's top priority (accessibility) and the expectations he brings (strong community that will support him). How do they fare in this future? What is Barbara most excited about in this future? Is she disappointed by anything? Think about Barbara's top priority (productivity, maintenance over time) and the expectations she brings (fits well with Rust). How do they fare in this future? If this is an alternative to another shiny future, which one, and what motivated you to write an alternative? Cite the story. Be specific, but focus on what you like about your version, not what you dislike about the other. If this is not an alternative, you can skip this one. =) What projects benefit the most from this future? Are there any projects that are hindered by this future? There are also some optional questions: What are the incremental steps towards realizing this shiny future? Talk about the actual work we will do. You can link to design docs or even add new ones, as appropriate. You don't have to have the whole path figured out yet! Does realizing this future require cooperation between many projects? For example, if you are describing an interface in libstd that runtimes will have to implement, talk about that. You can feel free to add whatever other FAQs seem appropriate. You should also expect to grow the FAQ in response to questions that come up on the PR.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » The role of the FAQ","id":"41","title":"The role of the FAQ"},"410":{"body":"There are very few ways to get insights into running systems. Tracing is state of the art. console.log #ftw Tracing is a static activity and there's no way to dynamically gain insights. While it's possible to find solutions to these issues, often you don't have insight into if those solutions bring new problems. Debugging process for non-trivial issues is almost guaranteed to be painful and expensive.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » What are the morals of the story?","id":"410","title":"What are the morals of the story?"},"411":{"body":"Issue 75","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » What are the sources for this story?","id":"411","title":"What are the sources for this story?"},"412":{"body":"Custom Events - logging/tracing (Per task?) Memory consumption per task. I/O handles in waiting state per task. Number of tasks and their states over time. Wake and drop specific tasks. Denoised stack traces and/or stack traces that are task aware. Who spawned the task? Worker threads that are blocked from progressing tasks forward. Tasks that are not progressing.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » What are examples of the kinds of things a user might want to have insight into?","id":"412","title":"What are examples of the kinds of things a user might want to have insight into?"},"413":{"body":"Barbara knows what she's doing, but still there is little way to get insights.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » Why did you choose Barbara to tell this story?","id":"413","title":"Why did you choose Barbara to tell this story?"},"414":{"body":"Depending on what languages he was using before, Alan would likely have had experience with a stronger tooling story: The highly debuggable BEAM (a VM), for Erlang. Delve , the debugging tool for Go. Using Visual Studio to debug C#. Debugging async Java using IntelliJ .","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants async insights » How would this story have played out differently for the other characters?","id":"414","title":"How would this story have played out differently for the other characters?"},"415":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Barbara wants to use GhostCell-like cell borrowing with futures","id":"415","title":"Barbara wants to use GhostCell-like cell borrowing with futures"},"416":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » 🚧 Warning: Draft status 🚧","id":"416","title":"🚧 Warning: Draft status 🚧"},"417":{"body":"Barbara quite likes using statically-checked cell borrowing. \"Cell\" in Rust terminology refers to types like Cell or RefCell that enable interior mutability, i.e. modifying or mutably borrowing stuff even if you've only got an immutable reference to it. Statically-checked cell borrowing is a technique whereby one object (an \"owner\") acts as a gatekeeper for borrow-access to a set of other objects (\"cells\"). So if you have mutable borrow access to the owner, you can temporarily transfer that mutable borrow access to a cell in order to modify it. This is all checked at compile-time, hence \"statically-checked\". In comparison RefCell does borrow-checking, but it is checked at runtime and it will panic if you make a coding mistake. The advantage of statically-checked borrowing is that it cannot panic at runtime, i.e. all your borrowing bugs show up at compile time. The history goes way back, and the technique has been reinvented at least 2-3 times as far as Barbara is aware. This is implemented in various forms in GhostCell and qcell . Barbara would like to use statically-checked cell borrowing within futures, but there is no way to get the owner borrow through the Future::poll call, i.e. there is no argument or object that the runtime could save the borrow in. Mostly this does not cause a problem, because there are other ways for a runtime to share data, e.g. data can be incorporated into the future when it is created. However in this specific case, for the specific technique of statically-checked cell borrows, we need an active borrow to the owner to be passed down the call stack through all the poll calls. So Barbara is forced to use RefCell instead and be very careful not to cause panics. This seems like a step back. It feels dangerous to use RefCell and to have to manually verify that her cell borrows are panic-free. There are good habits that you can adopt to offset the dangers, of course. If you are very careful to make sure that you call no other method or function which might in turn call code which might attempt to get another borrow on the same cell, then the RefCell::borrow_mut panics can be avoided. However this is easy to overlook, and it is easy to fail to anticipate what indirect calls will be made by a given call, and of course this may change later on due to maintenance and new features. A borrow may stay active longer than expected, so calls which appear safe might actually panic. Sometimes it's necessary to manually drop the borrow to be sure. In addition you'll never know what indirect calls might be made until all the possible code-paths have been explored, either through testing or through running in production. So Barbara prefers to avoid all these problems, and use statically-checked cell borrowing where possible.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » The story","id":"417","title":"The story"},"418":{"body":"In this minimized example of code to interface a stream to code outside of the async/await system, the buffer has to be accessible from both the stream and the outside code, so it is handled as a Rc>>. pub struct StreamPipe { buf: Rc>>, req_more: Rc,\n} impl Stream for StreamPipe { type Item = T; fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> { let mut buf = self.buf.borrow_mut(); if let Some(item) = buf.value.take() { return Poll::Ready(Some(item)); } if buf.end { return Poll::Ready(None); } (self.req_more)(); // Callback to request more data Poll::Pending }\n} Probably req_more() has to schedule some background operation, but if it doesn't and attempts to modify the shared buf immediately then we get a panic, because buf is still borrowed. The real life code could be a lot more complicated, and the required combination of conditions might be harder to hit in testing. With statically-checked borrowing, the borrow would be something like let mut buf = self.buf.rw(cx);, and the req_more call would either have to take the cx as an argument (forcing the previous borrow to end) or would not take cx, meaning that it would always have to defer the access to the buffer to other code, because without the cx there is no possible way to access the buffer.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Example 1: Accessing an object shared outside the runtime","id":"418","title":"Example 1: Accessing an object shared outside the runtime"},"419":{"body":"In this example, the app keeps tallies of various things in a Monitor structure. This might be data in/out, number of errors detected, maybe a hashmap of current links, etc. Since it is accessed from various components, it is kept behind an Rc>. // Dependency: futures-lite = \"1.11.3\"\nuse std::cell::RefCell;\nuse std::rc::Rc; fn main() { let monitor0 = Rc::new(RefCell::new(Monitor { count: 0 })); let monitor1 = monitor0.clone(); let fut0 = async move { let mut borrow = monitor0.borrow_mut(); borrow.count += 1; }; let fut1 = async move { let mut borrow = monitor1.borrow_mut(); borrow.count += 1; fut0.await; }; futures_lite::future::block_on(fut1);\n} struct Monitor { count: usize,\n} The problem is that this panics with a borrowing error because the borrow is still active when the fut0.await executes and attempts another borrow. The solution is to remember to drop the borrow before awaiting. In this example code the bug is obvious, but in real life maybe fut0 only borrows in rare situations, e.g. when an error is detected. Or maybe the future that borrows is several calls away down the callstack. With statically-checked borrowing, there is a slight problem in that currently there is no way to access the poll context from async {} code. But if there was then the borrow would be something like let mut borrow = monitor1.rw(cx);, and since the fut0.await implicitly requires the cx in order to poll, the borrow would be forced to end at that point.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Example 2: Shared monitoring data","id":"419","title":"Example 2: Shared monitoring data"},"42":{"body":"When you opan a status quo PR, people will start to comment on it. These comments should always be constructive. They usually have the form of asking \"in this future, what does NAME do when X happens?\" or asking you to elaborate on other potential problems that might arise. Ideally, you should respond to every comment in one of two ways: Adjust the story with more details or to correct factual errors. Add something to the story's FAQ to explain the confusion. If the question is already covered by a FAQ, you can just refer the commenter to that. The goal is that, at the end of the review process, the status quo story has a lot more details that address the major questions people had.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » The review process","id":"42","title":"The review process"},"420":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Further investigation by Barbara","id":"420","title":"Further investigation by Barbara"},"421":{"body":"Barbara understands that statically-checked cell borrows work by having an owner held by the runtime, and various instances of a cell held by things running on top of the runtime (these cells would typically be behind Rc references). A mutable borrow on the owner is passed down the stack, which enables safe borrows on all the cells, since a mutable borrow on a cell is enabled by temporarily holding onto the mutable borrow of the owner, which is all checked at compile-time. So the mutable owner borrow needs to be passed through the poll call, and Barbara realizes that this would require support from the standard library. Right now a &mut Context<'_> is passed to poll, and so within Context would be the ideal place to hold a borrow on the cell owner. However as far as Barbara can see there are difficulties with all the current implementations: GhostCell (or qcell::LCell) may be the best available solution, because it doesn't have any restrictions on how many runtimes might be running or how they might be nested. But Rust insists that the lifetimes <'id> on methods and types are explicit, so it seems like that would force a change to the signature of poll, which would break the ecosystem. Here Barbara experiments with a working example of a modified Future trait and a future implementation that makes use of LCell: // Requires dependency: qcell = \"0.4\"\nuse qcell::{LCell, LCellOwner};\nuse std::pin::Pin;\nuse std::rc::Rc;\nuse std::task::Poll; struct Context<'id, 'a> { cell_owner: &'a mut LCellOwner<'id>,\n} struct AsyncCell<'id, T>(LCell<'id, T>);\nimpl<'id, T> AsyncCell<'id, T> { pub fn new(value: T) -> Self { Self(LCell::new(value)) } pub fn rw<'a, 'b: 'a>(&'a self, cx: &'a mut Context<'id, 'b>) -> &'a mut T { cx.cell_owner.rw(&self.0) }\n} trait Future<'id> { type Output; fn poll(self: Pin<&mut Self>, cx: &mut Context<'id, '_>) -> Poll;\n} struct MyFuture<'id> { count: Rc>,\n}\nimpl<'id> Future<'id> for MyFuture<'id> { type Output = (); fn poll(self: Pin<&mut Self>, cx: &mut Context<'id, '_>) -> Poll { *self.count.rw(cx) += 1; Poll::Ready(()) }\n} fn main() { LCellOwner::scope(|mut owner| { let mut cx = Context { cell_owner: &mut owner }; let count = Rc::new(AsyncCell::new(0_usize)); let mut fut = Box::pin(MyFuture { count: count.clone() }); let _ = fut.as_mut().poll(&mut cx); assert_eq!(1, *count.rw(&mut cx)); });\n} The other qcell types (QCell, TCell and TLCell) have various restrictions or overheads which might make them unsuitable as a general-purpose solution in the standard library. However they do have the positive feature of not requiring any change in the signature of poll. It looks like they could be added to Context without breaking anything. Here Barbara tries using TLCell, and finds that the signature of poll doesn't need to change: // Requires dependency: qcell = \"0.4\"\nuse qcell::{TLCell, TLCellOwner};\nuse std::pin::Pin;\nuse std::rc::Rc;\nuse std::task::Poll; struct AsyncMarker;\nstruct Context<'a> { cell_owner: &'a mut TLCellOwner,\n} struct AsyncCell(TLCell);\nimpl AsyncCell { pub fn new(value: T) -> Self { Self(TLCell::new(value)) } pub fn rw<'a, 'b: 'a>(&'a self, cx: &'a mut Context<'b>) -> &'a mut T { cx.cell_owner.rw(&self.0) }\n} trait Future { type Output; fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll;\n} struct MyFuture { count: Rc>,\n}\nimpl Future for MyFuture { type Output = (); fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { *self.count.rw(cx) += 1; Poll::Ready(()) }\n} fn main() { let mut owner = TLCellOwner::new(); let mut cx = Context { cell_owner: &mut owner }; let count = Rc::new(AsyncCell::new(0_usize)); let mut fut = Box::pin(MyFuture { count: count.clone() }); let _ = fut.as_mut().poll(&mut cx); assert_eq!(1, *count.rw(&mut cx));\n} (For comparison, TCell only allows one owner per marker type in the whole process. QCell allows many owners, but requires a runtime check to make sure you're using the right owner to access a cell. TLCell allows only one owner per thread per marker type, but also lets cells migrate between threads and be borrowed locally, which the others don't -- see qcell docs .) So the choice is GhostCell/LCell and lifetimes everywhere, or various other cell types that may be too restrictive. Right now Barbara thinks that none of these solutions is likely to be acceptable for the standard library. However still it is a desirable feature, so maybe someone can think of a way around the problems. Or maybe someone has a different perspective on what would be acceptable.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » The mechanism","id":"421","title":"The mechanism"},"422":{"body":"The Stakker runtime makes use of qcell-based statically-checked cell borrowing. It uses this to get zero-cost access to actors, guaranteeing at compile time that no actor can access any other actor's state. It also uses it to allow inter-actor shared state to be accessed safely and zero-cost, without RefCell. (For example within a Stakker actor, you can access the contents of a Share via the actor context cx as follows: share.rw(cx), which blocks borrowing or accessing cx until that borrow on share has been released. Share is effectively a Rc and cx has access to an active borrow on the ShareCellOwner, just as in the long examples above.) Stakker doesn't use GhostCell (LCell) because of the need for <'id> annotations on methods and types. Instead it uses the other three cell types according to how many Stakker instances will be run, either one Stakker instance only, one per thread, or multiple per thread. This is selected by cargo features. Switching implementations like this doesn't seem like an option for the standard library.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Proof of concept","id":"422","title":"Proof of concept"},"423":{"body":"Barbara wonders whether there is any way this can be made to work. For example, could the compiler derive all those <'id> annotations automatically for GhostCell/LCell? Or for multi-threaded runtimes, would qcell::TLCell be acceptable? This allows a single cell-owner in every thread. So it would not allow nested runtimes of the same type. However it does allow borrows to happen at the same time independently in different threads, and it also allows the migration of cells between threads, which is safe because that kind of cell isn't Sync. Or is there some other form of cell-borrowing that could be devised that would work better for this? The interface between cells and Context should be straightforward once a particular cell type is demonstrated to be workable with the poll interface and futures ecosystem. For example copying the API style of Stakker: let rc = Rc::new(AsyncCell::new(1_u32));\n*rc.rw(cx) = 2; So logically you obtain read-write access to a cell by naming the authority by which you claim access, in this case the poll context. In this case it really is naming rather than accessing since the checks are done at compile time and the address that cx represents doesn't actually get passed anywhere or evaluated, once inlining and optimisation is complete.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Way forward","id":"423","title":"Way forward"},"424":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » 🤔 Frequently Asked Questions","id":"424","title":"🤔 Frequently Asked Questions"},"425":{"body":"The main problem is that Barbara has got used to a safer environment and it feels dangerous to go back to RefCell and have to manually verify that her cell borrows are panic-free.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » What are the morals of the story?","id":"425","title":"What are the morals of the story?"},"426":{"body":"The author of Stakker is trying to interface it to async/await and futures.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » What are the sources for this story?","id":"426","title":"What are the sources for this story?"},"427":{"body":"Barbara has enough Rust knowledge to understand the benefits that GhostCell/qcell-like borrowing might bring.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » Why did you choose Barbara to tell this story?","id":"427","title":"Why did you choose Barbara to tell this story?"},"428":{"body":"The other characters perhaps wouldn't have heard of statically-checked cell borrows so would be unaware of the possibility of making things safer.","breadcrumbs":"🔮 The vision » 😱 Status quo » Barbara wants to use GhostCell-like cell borrowing » How would this story have played out differently for the other characters?","id":"428","title":"How would this story have played out differently for the other characters?"},"429":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » 😱 Status quo stories: Grace deploys her service and hits obstacles","id":"429","title":"😱 Status quo stories: Grace deploys her service and hits obstacles"},"43":{"body":"","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » 🤔 Frequently Asked Questions","id":"43","title":"🤔 Frequently Asked Questions"},"430":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » 🚧 Warning: Draft status 🚧","id":"430","title":"🚧 Warning: Draft status 🚧"},"431":{"body":"When examining her service metrics, Grace notices tail latencies in the P99 that exceed their target. She identifies GC in the routing layer as the culprit. Grace follows industry trends and is already aware of Rust and its ecosystem at a high level. She decides to investigate rewriting the routing service in Rust. To meet throughput requirements, Grace has already decided to use a thread-per-core model and minimize cross-thread communication. She explores available ecosystem options and finds no option that gets her exactly what she is looking for out of the box. However, she can use Tokio with minimal configuration to achieve her architecture. A few months of frantic hacking follow. Soon enough, she and her team have a proof of concept working. They run some local stress tests and notice that 5% of requests hang and fail to respond. The client eventually times out. She cannot reproduce this problem when running one-off requests locally. It only shows up when sending above 200 requests-per-second. She realizes that she doesn't have any tooling to give her insight into what's going on. She starts to add lots of logging, attempting to tie log entries to specific connections. Using an operating system tool, she can identify the socket addresses for the hung connections, so she also includes the socket addresses in each log message. She then filters the logs to find entries associated with hung connections. Of course, the logs only tell her what the connection managed to do successfully; they don't tell her why it stopped -- so she keeps going back to add more logging until she can narrow down the exact call that hangs. Eventually, she identifies that the last log message is right before authenticating the request. An existing C library performs authentication, integrated with the routing service using a custom future implementation. She eventually finds a bug in the implementation that resulted in occasional lost wake-ups. She fixes the bug. The service is now working as expected and meeting Grace's performance goals.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » The story","id":"431","title":"The story"},"432":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » 🤔 Frequently Asked Questions","id":"432","title":"🤔 Frequently Asked Questions"},"433":{"body":"When coming from a background of network engineering, users will bring their own design choices around architecture. Examples: seastar and Glommio There is a lack of debugging tools for async. Writing futures by hand is error prone.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » What are the morals of the story?","id":"433","title":"What are the morals of the story?"},"434":{"body":"This is based on the experiences of helping a tokio user to diagnose a bug in their code.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » What are the sources for this story?","id":"434","title":"What are the sources for this story?"},"435":{"body":"The actual user who experienced this problem fit the profile of Grace. The story is focused on the experience of people aiming to use workflows they are familiar with from C in a Rust setting.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » Why did you choose Grace to tell this story?","id":"435","title":"Why did you choose Grace to tell this story?"},"436":{"body":"Alan or Niklaus may well have had a much harder time diagnosing the problem due to not having as much of a background in systems programming. For example, they may not have known about the system tool that allowed them to find the list of dangling connections.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » How would this story have played out differently for the other characters?","id":"436","title":"How would this story have played out differently for the other characters?"},"437":{"body":"Maybe! But in this instance the people this story is based on were using tokio, so that's the one we wrote into the story. (If folks want to expand this answer with details of how to achieve similar goals on other runtimes that would be welcome!)","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace deploys her service and hits obstacles » Could Grace have used another runtime to achieve the same objectives?","id":"437","title":"Could Grace have used another runtime to achieve the same objectives?"},"438":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » 😱 Status quo stories: Grace tries new libraries","id":"438","title":"😱 Status quo stories: Grace tries new libraries"},"439":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » 🚧 Warning: Draft status 🚧","id":"439","title":"🚧 Warning: Draft status 🚧"},"44":{"body":"Just open a PR using this template . Do not add your file to SUMMARY.md , that will create conflicts. We'll do it after merging.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » What is the process to propose a shiny future story?","id":"44","title":"What is the process to propose a shiny future story?"},"440":{"body":"When Grace searched crates.io for a library, she found an interesting library that she wants to use. The code examples use a map/reduce style. As Grace is more familiar with C and C++, as a first step she wants to convert them from this style to using loops. Controller::new(root_kind_api, ListParams::default()) .owns(child_kind_api, ListParams::default()) .run(reconcile, error_policy, context) .for_each(|res| async move { match res { Ok(o) => info!(\"reconciled {:?}\", o), Err(e) => warn!(\"reconcile failed: {}\", Report::from(e)), } }) .await; (Example code from taken from https://github.com/clux/kube-rs) So she takes the naive approach to just convert that as follows: let controller = Controller::new(root_kind_api, ListParams::default()) .owns(child_kind_api, ListParams::default()) .run(reconcile, error_policy, context); while let Ok(o) = controller.try_next().await { info!(\"reconciled {:?}\", o),\n} when she compiles her source code she ends up with wall of error messages like the following: $ cargo run Compiling kube-rs-test v0.1.0 (/home/project-gec/src/kube-rs-test)\nerror[E0277]: `from_generator::GenFuture<[static generator@watcher::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api, &'r kube::Api, ListParams, &'s ListParams, watcher::State, impl futures::Future, ()}]>` cannot be unpinned --> src/main.rs:23:41 |\n23 | while let Ok(o) = controller.try_next().await { | ^^^^^^^^ within `futures_util::unfold_state::_::__Origin<'_, (kube::Api, ListParams, watcher::State), impl futures::Future>`, the trait `Unpin` is not implemented for `from_generator::GenFuture<[static generator@watcher::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api, &'r kube::Api, ListParams, &'s ListParams, watcher::State, impl futures::Future, ()}]>` | = note: required because it appears within the type `impl futures::Future` = note: required because it appears within the type `futures_util::unfold_state::_::__Origin<'_, (kube::Api, ListParams, watcher::State), impl futures::Future>` = note: required because of the requirements on the impl of `Unpin` for `futures_util::unfold_state::UnfoldState<(kube::Api, ListParams, watcher::State), impl futures::Future>` = note: required because it appears within the type `futures::stream::unfold::_::__Origin<'_, (kube::Api, ListParams, watcher::State), [closure@watcher::{closure#0}], impl futures::Future>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Unfold<(kube::Api, ListParams, watcher::State), [closure@watcher::{closure#0}], impl futures::Future>` = note: required because it appears within the type `impl std::marker::Send+futures::Stream` = note: required because it appears within the type `futures::stream::try_stream::into_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::IntoStream` = note: required because it appears within the type `futures::stream::stream::map::_::__Origin<'_, futures::stream::IntoStream, futures_util::fns::InspectFn::{closure#0}]>>>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Map, futures_util::fns::InspectFn::{closure#0}]>>>` = note: required because it appears within the type `futures::stream::stream::_::__Origin<'_, futures::stream::IntoStream, futures_util::fns::InspectOkFn<[closure@reflector::{closure#0}]>>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Inspect, futures_util::fns::InspectOkFn<[closure@reflector::{closure#0}]>>` = note: required because it appears within the type `futures::stream::try_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream, [closure@reflector::{closure#0}]>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::InspectOk::{closure#0}]>` = note: required because it appears within the type `impl futures::Stream` error[E0277]: `from_generator::GenFuture<[static generator@watcher::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api, &'r kube::Api, ListParams, &'s ListParams, watcher::State, impl futures::Future, ()}]>` cannot be unpinned --> src/main.rs:23:27 |\n23 | while let Ok(o) = controller.try_next().await { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ within `futures_util::unfold_state::_::__Origin<'_, (kube::Api, ListParams, watcher::State), impl futures::Future>`, the trait `Unpin` is not implemented for `from_generator::GenFuture<[static generator@watcher::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api, &'r kube::Api, ListParams, &'s ListParams, watcher::State, impl futures::Future, ()}]>` | = note: required because it appears within the type `impl futures::Future` = note: required because it appears within the type `futures_util::unfold_state::_::__Origin<'_, (kube::Api, ListParams, watcher::State), impl futures::Future>` = note: required because of the requirements on the impl of `Unpin` for `futures_util::unfold_state::UnfoldState<(kube::Api, ListParams, watcher::State), impl futures::Future>` = note: required because it appears within the type `futures::stream::unfold::_::__Origin<'_, (kube::Api, ListParams, watcher::State), [closure@watcher::{closure#0}], impl futures::Future>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Unfold<(kube::Api, ListParams, watcher::State), [closure@watcher::{closure#0}], impl futures::Future>` = note: required because it appears within the type `impl std::marker::Send+futures::Stream` = note: required because it appears within the type `futures::stream::try_stream::into_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::IntoStream` = note: required because it appears within the type `futures::stream::stream::map::_::__Origin<'_, futures::stream::IntoStream, futures_util::fns::InspectFn::{closure#0}]>>>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Map, futures_util::fns::InspectFn::{closure#0}]>>>` = note: required because it appears within the type `futures::stream::stream::_::__Origin<'_, futures::stream::IntoStream, futures_util::fns::InspectOkFn<[closure@reflector::{closure#0}]>>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Inspect, futures_util::fns::InspectOkFn<[closure@reflector::{closure#0}]>>` = note: required because it appears within the type `futures::stream::try_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream, [closure@reflector::{closure#0}]>` = note: required because of the requirements on the impl of `Unpin` for `futures::stream::InspectOk::{closure#0}]>` = note: required because it appears within the type `impl futures::Stream` = note: required because of the requirements on the impl of `futures::Future` for `TryNext<'_, impl futures::Stream>` = note: required by `futures::Future::poll` error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0277`.\nerror: could not compile `kube-rs-test` To learn more, run the command again with --verbose. From her background she has an understanding what could go wrong. So she remembered, that she could box the values to solve the issue with calling .boxed() on the controller. But on the other hand she could see no reason why this while loop should fail when the original .for_each() example just works as expected.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » The story","id":"440","title":"The story"},"441":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » 🤔 Frequently Asked Questions","id":"441","title":"🤔 Frequently Asked Questions"},"442":{"body":"Working with async can give huge errors from fairly common place transforms, and requires knowing some \"not entirely obvious\" workarounds.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » What are the morals of the story?","id":"442","title":"What are the morals of the story?"},"443":{"body":"Personal experience.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » What are the sources for this story?","id":"443","title":"What are the sources for this story?"},"444":{"body":"Reflects the background of the author.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » Why did you choose Grace to tell this story?","id":"444","title":"Why did you choose Grace to tell this story?"},"445":{"body":"Ultimately the only way to know how to solve this problem is to have seen it before and learned how to solve it. The compiler doesn't help and the result is not obvious. So it probably doesn't matter that much which character is used, except that Barbara may be more likely to have seen how to solve it.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace tries new libraries » How would this story have played out differently for the other characters?","id":"445","title":"How would this story have played out differently for the other characters?"},"446":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » Status quo: Grace waits for gdb next","id":"446","title":"Status quo: Grace waits for gdb next"},"447":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » 🚧 Warning: Draft status 🚧","id":"447","title":"🚧 Warning: Draft status 🚧"},"448":{"body":"Grace wants to walk through the behavior of a toy program. She first fires up cargo run --verbose to remind herself what the path to the target binary is. Part of the resulting Cargo output is: Running `target/debug/toy` From that, Grace tries running gdb on the printed path. gdb target/debug/toy and then (gdb) start to start the program and set a breakpoint on the main function. Grace hits Ctrl-x a and gets a TUI mode view that includes this: │ 52 } │\n│ 53 │\n│ 54 #[tokio::main] │\n│B+>55 pub(crate) async fn main() -> Result<(), Box> { │\n│ 56 println!(\"Hello, world!\"); │\n│ 57 let record = Box::new(Mutex::new(Record::new())); │\n│ 58 let record = &*Box::leak(record); │\n│ 59 Excitedly Grace types next to continue to the next line of the function. And waits. And the program does not stop anywhere. ... Eventually Grace remembers that #[tokio::main] injects a different main function that isn't the one that she wrote as an async fn, and so the next operation in gdb isn't going to set a breakpoint within Grace's async fn main. So Grace restarts the debugger, and then asks for a breakpoint on the first line of her function: (gdb) start\n(gdb) break 56\n(gdb) continue And now it stops on the line that she expected: │ 53 │\n│ 54 #[tokio::main] │\n│ 55 pub(crate) async fn main() -> Result<(), Box> { │\n│B+>56 println!(\"Hello, world!\"); │\n│ 57 let record = Box::new(Mutex::new(Record::new())); │\n│ 58 let record = &*Box::leak(record); │\n│ 59 │\n│ 60 let (tx, mut rx) = channel(100); │ Grace is now able to use next to walk through the main function. She does notice that the calls to tokio::spawn are skipped over by next, but that's not as much of a surprise to her, since those are indeed function calls that are taking async blocks. She sets breakpoints on the first line of each async block so that the debugger will stop when control reaches them as she steps through the code.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » The story","id":"448","title":"The story"},"449":{"body":"Here are some standard FAQ to get you started. Feel free to add more!","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » 🤔 Frequently Asked Questions","id":"449","title":"🤔 Frequently Asked Questions"},"45":{"body":"Usually you would use the same character from the status quo story you are retelling. If for some reason you chose a different character, add a FAQ to explain why.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » What character should I use for my shiny future story?","id":"45","title":"What character should I use for my shiny future story?"},"450":{"body":"A common usage pattern: hitting next to go to what seems like the next statement, breaks down due to implementation details of #[tokio::main] and async fn. This is one example of where next breaks, in terms of what a user is likely to want . The other common scenario where the behavior of next is non-ideal is higher-order functions, like option.and_then(|t| { ... }, where someone stepping through the code probably wants next to set a temporary breakpoint in the ... of the closure.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » What are the morals of the story?","id":"450","title":"What are the morals of the story?"},"451":{"body":"Personal experience. I haven't acquired the muscle memory to stop using next, even though it breaks down in such cases.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » What are the sources for this story?","id":"451","title":"What are the sources for this story?"},"452":{"body":"I needed someone who, like me, would actually be tempted to use gdb even when println debugging is so popular.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » Why did you choose Grace to tell this story?","id":"452","title":"Why did you choose Grace to tell this story?"},"453":{"body":"* Alan might have used whatever debugger is offered by his IDE, which might have the same problem (via a toolbar button that has the same semantics as `next`); but many people using IDE's to debugger just naturally set breakpoints by hand on the lines in their IDE editor, and thus will not run into this.\n* Most characters would probably have abandoned using gdb much sooner. E.g. Grace may have started out by adding `println` or `tracing` instrumention to the code, rather than trying to open it up in a debugger.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace waits for gdb next » How would this story have played out differently for the other characters?","id":"453","title":"How would this story have played out differently for the other characters?"},"454":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » 😱 Status quo stories: Grace wants to integrate a C-API","id":"454","title":"😱 Status quo stories: Grace wants to integrate a C-API"},"455":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » 🚧 Warning: Draft status 🚧","id":"455","title":"🚧 Warning: Draft status 🚧"},"456":{"body":"Grace is integrating a camera into an embedded project. Grace has done similar projects before in the past, and has even used this particular hardware before. Fortunately, the camera manufacturer provides a library in C to interface with the driver. Grace knows that Rust provides strong memory safety guarantees, and the library provided by the manufacturer sports an API that is easy to misuse. In particular, ownership concerns are tricky and Grace and her team have often complained in the past that making memory mistakes is very easy and one has to be extremely careful to manage lifetimes. Therefore, for this project, Grace opts to start with Rust as many of the pitfalls of the manufacturer's library can be automatically caught by embedding the lifetimes into a lightweight wrapper over code bridged into Rust with bindgen . Grace's team manages to write a thin Rust wrapper over the manufacturer's library with little complication. This library fortunately offers two interfaces for grabbing frames from the camera: a blocking interface that waits for the next frame, and a non-blocking interface that polls to check if there are any frames currently available and waiting. Grace is tempted to write a callback-based architecture by relying on the blocking interface that waits; however, early the next morning the customer comes back and informs her that they are scaling up the system, and that there will now be 5 cameras instead of 1. She knows from experience that she cannot rely on having 5 threads blocking just for getting camera frames, because the embedded system she is deploying to only has 2 cores total! Her team would be introducing a lot of overhead into the system with the continuous context switching of every thread. Some folks were unsure of Rust's asynchronous capabilities, and with the requirements changing there were some that argued maybe they should stick to the tried and true in pure C. However, Grace eventually convinced them that the benefits of memory safety were still applicable, and that a lot of bugs that have taken weeks to diagnose in the past have already been completely wiped out. The team decided to stick with Rust, and dig deeper into implementing this project in async Rust. Fortunately, Grace notices the similarities between the polling interface in the underlying C library and the Poll type returned by Rust's Future trait. \"Surely,\" she thinks, \"I can asynchronously interleave polls to each camera over a single thread, and process frames as they become available!\" Such a thing would be quite difficult in C while guaranteeing memory safety was maintained. However, Grace's team has already dodged that bullet thanks to writing a thin wrapper in Rust that manages these tricky lifetimes!","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » The story","id":"456","title":"The story"},"457":{"body":"Grace sets out to start writing the pipeline to get frames from the cameras. She realizes that while the polling call that the manufacturer provided in their library is similar in nature to a future, it doesn't quite encompass everything. In C, one might have to set some kind of heartbeat timer for polling. Grace explains to her team that this heartbeat is similar to how the Waker object works in a Future's Context type, in that it is how often the execution environment should re-try the future if the call to poll returns Poll::Pending. A member of Grace's team asks her how she was able to understand all this. After all, Grace had been writing Rust about as long as the rest of her team. The main difference was that she had many more years of systems programming under C and C++ under her belt than they had. Grace responded that for the most part she had just read the documentation for the Future trait, and that she had intuited how async-await de-sugars itself into a regular function that returns a future of some kind. The de-sugaring process was, after all, very similar to how lambda objects in C++ were de-sugared as well. She leaves her teammate with an article she once found online that explained the process in a lot more detail for a problem much harder than they were trying to solve. Something Grace and her team learn to love immediately about Rust is that writing the Future here does not require her team to write their own execution environment. In fact, the future can be entirely written independently of the execution environment. She quickly writes an async method to represent the polling process: /// Gets the next frame from the camera, waiting `retry_after` time until polling again if it fails.\n///\n/// Returns Some(frame) if a frame is found, or None if the camera is disconnected or goes down before a frame is\n/// available.\nasync fn next_frame(camera: &Camera, retry_after: Duration) -> Option { while camera.is_available() { if let Some(frame) = camera.poll() { return Some(frame); } else { task::sleep_for(retry_after).await; } } None\n} The underlying C API doesn't provide any hooks that can be used to wake the Waker object on this future up, so Grace and her team decide that it is probably best if they just choose a sufficiently balanced retry_after period in which to try again. It does feel somewhat unsatisfying, as calling sleep_for feels about as hacky as calling std::this_thread::sleep_for in C++. However, there is no way to directly interoperate with the waker without having a separate thread of execution wake it up, and the underlying C library doesn't have any interface offering a notification for when that should be. In the end, this is the same kind of code that they would write in C, just without having to implement a custom execution loop themselves, so the team decides it is not a total loss.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » The first problem: polls and wake-ups","id":"457","title":"The first problem: polls and wake-ups"},"458":{"body":"Doing this a single time is fine, but an end goal of the project is to be able to stream frames from the camera for unspecified lengths of time. Grace spends some time searching, and realizes that what she actually wants is a Stream of some kind. Stream objects are the asynchronous equivalent of iterators, and her team wants to eventually write something akin to: let frame_stream = stream_from_camera(camera, Duration::from_millis(5)); while let Some(frame) = frame_stream.next().await { // process frames\n} println!(\"Frame stream closed.\"); She scours existing crates, in particular looking for one way to transform the above future into a stream that can be executed many times. The only available option to transform a future into a series of futures is stream::unfold , which seems to do exactly what Grace is looking for. Grace begins by adding a small intermediate type, and then plugging in the remaining holes: struct StreamState { camera: Camera, retry_after: Duration,\n} fn stream_from_camera(camera: Camera, retry_after: Duration) -> Unfold { let initial_state = StreamState { camera, retry_after }; stream::unfold(initial_state, |state| async move { let frame = next_frame(&state.camera, state.retry_after).await (frame, state) })\n} This looks like it mostly hits the mark, but Grace is left with a couple of questions for how to get the remainder of this building: What is the type that fills in the third template parameter in the return? It should be the type of the future that is returned by the async closure passed into stream::unfold, but we don't know the type of a closure! What is the type that fills in the second template parameter of the closure in the return? Grace spends a lot of time trying to figure out how she might find those types! She asks Barbara what the idiomatic way to get around this in Rust would be. Barbara explains again how closures don't have concrete types, and that the only way to do this will be to use the impl keyword. fn stream_from_camera(camera: Camera, retry_after: Duration) -> impl Stream { // same as before\n} While Grace was was on the correct path and now her team is able to write the code they want to, she realizes that sometimes writing the types out explicitly can be very hard. She reflects on what it would have taken to write the type of an equivalent function pointer in C, and slightly laments that Rust cannot express such as clearly.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » The second problem: doing this many times","id":"458","title":"The second problem: doing this many times"},"459":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » 🤔 Frequently Asked Questions","id":"459","title":"🤔 Frequently Asked Questions"},"46":{"body":"Write the status quo story first! What happens when there are multiple \"shiny future\" stories about the same thing? During this brainstorming period, we want to focus on getting as many ideas as we can. Having multiple \"shiny futures\" that address the same problem is a feature, not a bug, as it will let us mix-and-match later to try and find the best overall plan.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » What do I do if there is no status quo story for my shiny future?","id":"46","title":"What do I do if there is no status quo story for my shiny future?"},"460":{"body":"Rust was the correct choice for the team across the board thanks to its memory safety and ownership. The underlying C library was just too complex for any single programmer to be able to maintain in their head all at once while also trying to accomplish other tasks. Evolving requirements meant that the team would have had to either start over in plain C, giving up a lot of the safety they would gain from switching to Rust, or exploring async code in a more rigorous way. The async code is actually much simpler than writing the entire execution loop in C themselves. However, the assumption that you would write the entire execution loop is baked into the underlying library which Grace's team cannot rewrite entirely from scratch. Integrating Rust async code with other languages which might have different mental models can sometimes lead to unidiomatic or unsatisfying code, even if the intent of the code in Rust is clear. Grace eventually discovered that the problem was best modeled as a stream, rather than as a single future. However, converting a future into a stream was not necessarily something that was obvious for someone with a C/C++ background. Closures and related types can be very hard to write in Rust, and if you are used to being very explicit with your types, tricks such as the impl trick above for Streams aren't immediately obvious at first glance.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » What are the morals of the story?","id":"460","title":"What are the morals of the story?"},"461":{"body":"My own personal experience trying to incorporate the Intel RealSense library into Rust.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » What are the sources for this story?","id":"461","title":"What are the sources for this story?"},"462":{"body":"I am a C++ programmer who has written many event / callback based systems for streaming from custom camera hardware. I mirror Grace in that I am used to using other systems languages, and even rely on libraries in those languages as I've moved to Rust. I did not want to give up the memory and lifetime benefits of Rust because of evolving runtime requirements. In particular, C and C++ do not encourage async-style code, and often involve threads heavily. However, some contexts cannot make effective use of threads. In such cases, C and C++ programmers are often oriented towards writing custom execution loops and writing a lot of logic to do so. Grace discovered the benefit of not having to choose an executor upfront, because the async primitives let her express most of the logic without relying on a particular executor's behaviour.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » Why did you choose Grace to tell this story?","id":"462","title":"Why did you choose Grace to tell this story?"},"463":{"body":"Alan would have struggled with understanding the embedded context of the problem, where GC'd languages don't see much use. Niklaus and Barbara may not have approached the problem with the same assimilation biases from C and C++ as Grace. Some of the revelations in the story such as discovering that Grace's team didn't have to write their own execution loop were unexpected benefits when starting down the path of using Rust!","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » How would this story have played out differently for the other characters?","id":"463","title":"How would this story have played out differently for the other characters?"},"464":{"body":"Grace can use any runtime, which was an unexpected benefit of her work!","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » Could Grace have used another runtime to achieve the same objectives?","id":"464","title":"Could Grace have used another runtime to achieve the same objectives?"},"465":{"body":"She saw it in the rustdoc for stream::unfold.","breadcrumbs":"🔮 The vision » 😱 Status quo » Grace wants to integrate a C-API » How did Grace know to use Unfold as the return type in the first place?","id":"465","title":"How did Grace know to use Unfold as the return type in the first place?"},"466":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » 😱 Status quo stories: Niklaus Builds a Hydrodynamics Simulator","id":"466","title":"😱 Status quo stories: Niklaus Builds a Hydrodynamics Simulator"},"467":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » 🚧 Warning: Draft status 🚧","id":"467","title":"🚧 Warning: Draft status 🚧"},"468":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » The story","id":"468","title":"The story"},"469":{"body":"Niklaus is a professor of physics at the University of Rustville. He needed to build a tool to solve hydrodynamics simulations; there is a common method for this that subdivides a region into a grid and computes the solution for each grid patch. All the patches in a grid for a point in time are independent and can be computed in parallel, but they are dependent on neighboring patches in the previously computed frame in time. This is a well known computational model and the patterns for basic parallelization are well established. Niklaus wanted to write a performant tool to compute the solutions to the simulations of his research. He chose Rust because he needed high performance but he also wanted something that could be maintained by his students, who are not professional programmers. Rust's safety guarantees giver him confidence that his results are not going to be corrupted by data races or other programming errors. After implementing the core mathematical formulas, Niklaus began implementing the parallelization architecture. His first attempt to was to emulate a common CFD design pattern: using message passing to communicate between processes that are each assigned a specific patch in the grid. So he assign one thread to each patch and used messages to communicate solution state to dependent patches. With one thread per patch this usually meant that there were 5-10x more threads than CPU cores. This solution worked, but Niklaus had two problems with it. First, it gave him no control over CPU usage so the solution would greedily use all available CPU resources. Second, using messages to communicate solution values between patches did not scale when his team added a new feature (tracer particles) the additional messages caused by this change created so much overhead that parallel processing was no faster than serial. So, Niklaus decided to find a better solution.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » Problem","id":"469","title":"Problem"},"47":{"body":"Detailed is generally better, but only if those details are helpful for understanding the morals of your story. Specific is generally better, since an abstract story doesn't feel as real. What is the \"scope\" of a shiny future story? Can I tell shiny future stories that involve ecosystem projects? All the stories in the vision doc are meant to cover the full \"end to end\" experience of using async Rust. That means that sometimes they will take about things that are really part of projects that are outside of the Rust org. For example, we might write a shiny future that involves how the standard library has published standard traits for core concepts and those concepts have been adopted by libraries throughout the ecosystem. There is a FAQ that asks you to talk about what kinds of coordinate between projects will be required to realize this vision.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » How much detail should I give? How specific should I be?","id":"47","title":"How much detail should I give? How specific should I be?"},"470":{"body":"To address the first problem: Niklaus' new design decoupled the work that needed to be done (solving physics equations for each patch in the grid) from the workers (threads), this would allow him to set the number of threads and not use all the CPU resources. So, he began looking for a tool in Rust that would meet this design pattern. When he read about async and how it allowed the user to define units of work and send those to an executor which would manage the execution of those tasks across a set of workers, he thought he'd found exactly what he needed. He also thought that the .await semantics would give a much better way of coordinating dependencies between patches. Further reading indicated that tokio was the runtime of choice for async in the community and, so, he began building a new CFD solver with async and tokio. After making some progress, Niklaus ran into his firts problem. Niklaus had been under a false impression about what async executors do. He had assumed that a multi-threaded executor could automatically move the execution of an async block to a worker thread. When this turned out to wrong, he went to Stackoverflow and learned that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Niklaus felt that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel. Niklaus second problem came as he tried to fully replace the message passing from the first design: sharing data between tasks. He used the async API to coordinate computation of patches so that a patch would only go to a worker when all its dependencies had completed. But he also needed to account for the solution data which was passed in the messages. He setup a shared data structure to track the solutions for each patch now that messages would not be passing that data. Learning how to properly use shared data with async was a new challenge. The initial design: let mut stage_primitive_and_scalar = |index: BlockIndex, state: BlockState, hydro: H, geometry: GridGeometry| { let stage = async move { let p = state.try_to_primitive(&hydro, &geometry)?; let s = state.scalar_mass / &geometry.cell_volumes / p.map(P::lorentz_factor); Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) ) }; stage_map.insert(index, runtime.spawn(stage).map(|f| f.unwrap()).shared()); }; lacked performance because he needed to clone the value for every task. So, Niklaus switched over to using Arc to keep a thread safe RC to the shared data. But this change introduced a lot of .map and .unwrap function calls, making the code much harder to read. He realized that managing the dependency graph was not intuitive when using async for concurrency. As the program matured, a new problem arose: a steep learning curve with error handling. The initial version of his design used panic!s to fail the program if an error was encountered, but the stack traces were almost unreadable. He asked his teammate Grace to migrate over to using the Result idiom for error handling and Grace found a major inconvenience. The Rust type inference inconsistently breaks when propagating Result in async blocks. Grace frequently found that she had to specify the type of the error when creating a result value: Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) ) And she could not figure out why she had to add the ::<_, HydroError> to some of the Result values. Finally, once Niklaus' team began using the new async design for their simulations, they noticed an important issue that impacted productivity: compilation time had now increased to between 30 and 60 seconds. The nature of their work requires frequent changes to code and recompilation and 30-60 seconds is long enough to have a noticeable impact on their quality of life. What he and his team want is for compilation to be 2 to 3 seconds. Niklaus believes that the use of async is a major contributor to the long compilation times. This new solution works, but Niklaus is not satisfied with how complex his code became after the move to async and that compilation time is now 30-60 seconds. The state sharing adding a large amount of cruft with Arc and async is not well suited for using a dependency graph to schedule tasks so implementing this solution created a key component of his program that was difficult to understand and pervasive. Ultimately, his conclusion was that async is not appropriate for parallelizing computational tasks. He will be trying a new design based upon Rayon in the next version of her application.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » Solution Path","id":"470","title":"Solution Path"},"471":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » 🤔 Frequently Asked Questions","id":"471","title":"🤔 Frequently Asked Questions"},"472":{"body":"async looks to be the wrong choice for parallelizing compute bound/computational work There is a lack of guidance to help people solving such problems get started on the right foot Quality of Life issues (compilation time, type inference on Result) can create a drag on users ability to focus on their domain problem","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » What are the morals of the story?","id":"472","title":"What are the morals of the story?"},"473":{"body":"This story is based on the experience of building the kilonova hydrodynamics simulation solver.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » What are the sources for this story?","id":"473","title":"What are the sources for this story?"},"474":{"body":"I chose Niklaus as the primary character in this story because this work was driven by someone who only uses programming for a small part of their work. Grace was chosen as a supporting character because of that persons experience with C/C++ programming and to avoid repeating characters.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » Why did you choose Niklaus and Grace to tell this story?","id":"474","title":"Why did you choose Niklaus and Grace to tell this story?"},"475":{"body":"Alan: there's a good chance he would have already had experience working with either async workflows in another language or doing parallelization of compute bound tasks; and so would already know from experience that async was not the right place to start. Grace: likewise, might already have experience with problems like this and would know what to look for when searching for tools. Barbara: the experience would likely be fairly similar, since the actual subject of this story is quite familiar with Rust by now","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus builds a hydrodynamics simulator » How would this story have played out differently for the other characters?","id":"475","title":"How would this story have played out differently for the other characters?"},"476":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » 😱 Status quo stories: Niklaus Wants to Share Knowledge","id":"476","title":"😱 Status quo stories: Niklaus Wants to Share Knowledge"},"477":{"body":"This is a draft \"status quo\" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong , only inaccurate). Alternatively, you may wish to add your own status quo story !","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » 🚧 Warning: Draft status 🚧","id":"477","title":"🚧 Warning: Draft status 🚧"},"478":{"body":"Niklaus, who sometimes goes by the pen name \"Starol Klichols\", has authored some long-form documentation about Rust that people have found helpful. One could even go so far as to call this documentation a \"book\" . Niklaus has typically minimized the use of crates in documentation like this as much as possible. Niklaus has limited time to dedicate to keeping the documentation up to date, and given the speed at which the ecosystem sometimes evolves, it's hard to keep up when crates are involved. Also, Niklaus would like to avoid limiting the readership of the documentation to the users of a particular crate only, and would like to avoid any accusations of favoritism. But Niklaus would really really like to document async to avoid disappointing people like Barbara ! Niklaus was excited about the RFC proposing that block_on be added to the stdlib , because it seemed like that would solve Niklaus' problems. Niklaus would really like to include async in a big update to the documentation. No pressure.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » The story","id":"478","title":"The story"},"479":{"body":"","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » 🤔 Frequently Asked Questions","id":"479","title":"🤔 Frequently Asked Questions"},"48":{"body":"Take your best guess and add a FAQ explaining which details are still up in the air.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » What do I do when I get to details that I don't know yet?","id":"48","title":"What do I do when I get to details that I don't know yet?"},"480":{"body":"Writing documentation to go with the language/stdlib for something that is half in the language/stdlib and half in the ecosystem is hard. This is related to Barbara's story about wanting to get started without needing to pick an executor. There are topics of async that apply no matter what executor you pick, but it's hard to explain those topics without picking an executor to demonstrate with. We all have too much work to do and not enough time.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » What are the morals of the story?","id":"480","title":"What are the morals of the story?"},"481":{"body":"It me and Steve. Surprise! We've wanted to add async to the book for a long time . So far, we use exactly one crate in the book, rand, and a recent update to rand caused readers confusion and caused a bunch of work on our part. Take a look at all the issues linked to this PR . I really really really don't want to use more crates in the book.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » What are the sources for this story?","id":"481","title":"What are the sources for this story?"},"482":{"body":"Niko said I couldn't add new characters.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » Why did you choose Niklaus to tell this story?","id":"482","title":"Why did you choose Niklaus to tell this story?"},"483":{"body":"I happen to know that the next version of Programming Rust, whose authors might be described as different characters, includes async and uses async-std. So it's possible to just pick an executor and add async to the book, but I don't wanna.","breadcrumbs":"🔮 The vision » 😱 Status quo » Niklaus wants to share knowledge » How would this story have played out differently for the other characters?","id":"483","title":"How would this story have played out differently for the other characters?"},"484":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » ✨ Shiny future: Where we want to get to","id":"484","title":"✨ Shiny future: Where we want to get to"},"485":{"body":"We are still in the process of drafting the vision document. The stories you see on this page are examples meant to give a feeling for how a shiny future story looks; you can expect them to change. We encourage you to propose your own by opening a PR -- see the \"How to vision\" page for instructions and details.","breadcrumbs":"🔮 The vision » ✨ Shiny future » 🚧 Under construction! Help needed! 🚧","id":"485","title":"🚧 Under construction! Help needed! 🚧"},"486":{"body":"The \"shiny future\" is here to tell you what we are trying to build over the next 2 to 3 years. That is, it presents our \"best guess\" as to what will look like a few years from now. When describing specific features, it also embeds links to design notes that describe the constraints and general plans around that feature. 🧐 You may also enjoy reading the blog post announcing the brainstorming effort.","breadcrumbs":"🔮 The vision » ✨ Shiny future » What it this","id":"486","title":"What it this"},"487":{"body":"You'll notice that the ideas in this document are maximalist and ambitious . They stake out an opinionated position on how the ergonomics of Async I/O should feel. This position may not, in truth, be attainable, and for sure there will be changes along the way. Sometimes the realities of how computers actually work may prevent us from doing all that we'd like to. That's ok. This is a dream and a goal. We fully expect that the designs and stories described in this document will change as we work towards realizing them. When there are areas of particular uncertainty, we use the Frequently Asked Questions and the design docs to call them out.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Think big -- too big, if you have to","id":"487","title":"Think big -- too big, if you have to"},"488":{"body":"We haven't written these yet!","breadcrumbs":"🔮 The vision » ✨ Shiny future » Where are the stories?","id":"488","title":"Where are the stories?"},"489":{"body":"This is a template for adding new \"shiny future\" stories. To propose a new shiny future PR, do the following: Create a new file in the shiny_future directory named something like Alan_loves_foo.md or Grace_does_bar_and_its_great.md, and start from the raw source from this template . You can replace all the italicized stuff. :) Do not add a link to your story to the SUMMARY.md file; we'll do it after merging, otherwise there will be too many conflicts. For more detailed instructions, see the How To Vision: Shiny Future page!","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » ✨ Shiny future stories: template","id":"489","title":"✨ Shiny future stories: template"},"49":{"body":"You don't have to know how your idea will work yet. We will eventually have to figure out the precise designs, but at this point we're more interested in talking about the experience we aim to create. That said, if you do have plans for how to achieve your shiny future, you can also include [design docs] in the PR, or add FAQ that specify what you have in mind (and perhaps what you have to figure out still).","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » Do we have to know exactly how we will achieve the \"shiny future\"?","id":"49","title":"Do we have to know exactly how we will achieve the \"shiny future\"?"},"490":{"body":"This is a draft \"shiny future\" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong . At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story !","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » 🚧 Warning: Draft status 🚧","id":"490","title":"🚧 Warning: Draft status 🚧"},"491":{"body":"Write your story here! Feel free to add subsections, citations, links, code examples, whatever you think is best.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » The story","id":"491","title":"The story"},"492":{"body":"NB: These are generic FAQs. Feel free to customize them to your story or to add more.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » 🤔 Frequently Asked Questions","id":"492","title":"🤔 Frequently Asked Questions"},"493":{"body":"Link to status quo stories if they exist. If not, that's ok, we'll help find them.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » What status quo stories are you retelling?","id":"493","title":"What status quo stories are you retelling?"},"494":{"body":"Summarize the main attributes of the design you were trying to convey.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » What are the key attributes of this shiny future?","id":"494","title":"What are the key attributes of this shiny future?"},"495":{"body":"Thing about Rust's core \"value propositions\": performance, safety and correctness, productivity. Which benefit the most relative to today?","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » What is the \"most shiny\" about this future?","id":"495","title":"What is the \"most shiny\" about this future?"},"496":{"body":"Thing about Rust's core \"value propositions\": performance, safety and correctness, productivity. Are any of them negatively impacted? Are there specific application areas that are impacted negatively? You might find the sample projects helpful in this regard, or perhaps looking at the goals of each character .","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » What are some of the potential pitfalls about this future?","id":"496","title":"What are some of the potential pitfalls about this future?"},"497":{"body":"The act of writing shiny future stories can uncover things we didn't expect to find. Did you have any new and exciting ideas as you were writing? Realize some complications that you didn't foresee?","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » Did anything surprise you when writing this story? Did the story go any place unexpected?","id":"497","title":"Did anything surprise you when writing this story? Did the story go any place unexpected?"},"498":{"body":"Often when writing stories, we think about various possibilities. Sketch out some of the turning points here -- maybe someone will want to turn them into a full story! Alternatively, if this is a variation on an existing story, link back to it here.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written?","id":"498","title":"What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written?"},"499":{"body":"Often the 'shiny future' stories involve technical problems that we don't really know how to solve yet. If you see such problems, list them here!","breadcrumbs":"🔮 The vision » ✨ Shiny future » Template » What are some of the things we'll have to figure out to realize this future? What projects besides Rust itself are involved, if any? (Optional)","id":"499","title":"What are some of the things we'll have to figure out to realize this future? What projects besides Rust itself are involved, if any? (Optional)"},"5":{"body":"Licensed under either of Apache License, Version 2.0 ( LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) MIT license ( LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.","breadcrumbs":"👋🏽 Welcome » License","id":"5","title":"License"},"50":{"body":"Add it to the FAQ!","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » What do I do if somebody leaves a comment about how my idea will work and I don't know the answer?","id":"50","title":"What do I do if somebody leaves a comment about how my idea will work and I don't know the answer?"},"500":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » ✨ Shiny future stories: Alan switches runtimes","id":"500","title":"✨ Shiny future stories: Alan switches runtimes"},"501":{"body":"This is a draft \"shiny future\" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong . At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story !","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » 🚧 Warning: Draft status 🚧","id":"501","title":"🚧 Warning: Draft status 🚧"},"502":{"body":"Since his early adventures with Async I/O went so well, Alan has been looking for a way to learn more. He finds a job working in Rust. One of the projects he works on is DistriData . Looking at their code, he sees an annotation he has never seen before: #[humboldt::main]\nasync fn main() -> Result<(), Box> { let result = std::async_thread::spawn(async move { do_something() });\n} He asks Barbara, one of his coworkers, \"What is this humboldt::main annotation? What's humboldt?\" She answers by explaining to him that Rust's support for async I/O is actually based around an underlying runtime. \"Rust gives you a pretty decent runtime by default,\" she says, \"but it's not tuned for our workloads. We wrote our own runtime, which we call humboldt.\" Alan asks, \"What happens with the various std APIs? For example, I see we are calling std::async_thread::spawn -- when I used that before, it spawned tasks into the default runtime. What happens now?\" Barbara explains that the \"async\" APIs in std generally execute relative to the current runtime that is in use. \"When you call std::async_thread::spawn, it will spawn a task onto the current runtime. It's the same with the routines in std::async_io and so forth. The humboldt::main annotation actually just creates a synchronous main function that initializes the humboldt runtime and launches the first future. When you just write an async fn main without any annotation, the compiler synthesizes the same main function with the default runtime.\"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » The story","id":"502","title":"The story"},"503":{"body":"Alan sees that some of the networking code that is being used in their application is creating network connections using humboldt APIs: use humboldt::network; He asks Barbara, \"Why don't we use the std::async_io APIs for that?\" She explains that Humboldt makes use of some custom kernel extensions that, naturally enough, aren't part of the std library. \"TCP is for rubes,\" she says, \"we are using TTCP -- Turbo TCP.\" Her mind wanders briefly to Turbo Pascal and she has a brief moment of yearning for the days when computers had a \"Turbo\" button that changed them from 8 MHz to 12 MHz. She snaps back into the present day. \"Anyway, the std::async_io APIs just call into humboldt's APIs via various traits. But we can code directly against humboldt when we want to access the extra capabilities it offers. That does make it harder to change to another runtime later, though.\"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » Learning more about Humboldt","id":"503","title":"Learning more about Humboldt"},"504":{"body":"Later on, Alan is working on a visualizer front-end that integrates with DistriData to give more details about their workloads. To do it, he needs to integrate with Cocoa APIs and he wants to run certain tasks on Grand Central Dispatch . He approaches Barbara and asks, \"If everything is running on humboldt, is there a way for me to run some things on another event loop? How does that work?\" Barbara explains, \"That's easy. You just have to use the gcd wrapper crate -- you can find it on crates.io. It implements the runtime traits for gcd and it has a spawn method. Once you spawn your task onto gcd, everything you run within gcd will be running in that context.\" Alan says, \"And so, if I want to get things running on humboldt again, I spawn a task back on humboldt?\" \"Exactly,\" says Barbara. \"Humboldt has a global event loop, so you can do that by just doing humboldt::spawn. You can also just use the humboldt::io APIs directly. They will always use the Humboldt I/O threads, rather than using the current runtime.\" Alan winds up with some code that looks like this: async fn do_something_on_humboldt() { gcd::spawn(async move { let foo = do_something_on_gcd(); let bar = humboldt::spawn(async move { do_a_little_bit_of_stuff_on_humboldt(); }); combine(foo.await, bar.await); });\n}","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » Integrating into other event loops","id":"504","title":"Integrating into other event loops"},"505":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » 🤔 Frequently Asked Questions","id":"505","title":"🤔 Frequently Asked Questions"},"506":{"body":"Good question! I'm not entirely sure! I have to go looking and think about it. Maybe we'll have to write some more.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What status quo story or stories are you retelling?","id":"506","title":"What status quo story or stories are you retelling?"},"507":{"body":"There is some way to seamlessly change to a different default runtime to use for async fn main. There is no global runtime, just the current runtime. When you are using this different runtime, you can write code that is hard-coded to it and which exposes additional capabilities. You can integrate multiple runtimes relatively easily, and the std APIs work with whichever is the current runtime.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What are the key points you were trying to convey with this status quo story?","id":"507","title":"What are the key points you were trying to convey with this status quo story?"},"508":{"body":"I was imagining that we would add fields to the Context<'_> struct that is supplied to each async fn when it runs. Users don't have direct access to this struct, but the compiler does. If the std APIs return futures, they would gain access to it that way as well. If not, we'd have to create some other mechanism.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » How do you imagine the std APIs and so forth know the current runtime?","id":"508","title":"How do you imagine the std APIs and so forth know the current runtime?"},"509":{"body":"That feels like a portability question. See the (yet to be written) sequel story, \"Alan runs some things on WebAssembly\". =)","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What happens for runtimes that don't support all the features that std supports?","id":"509","title":"What happens for runtimes that don't support all the features that std supports?"},"51":{"body":"Glad you asked! The vision document is a living document, and we intend to revisit it regularly. This is important because it turns out that predicting the future is hard. We fully expect that some aspects of the \"shiny future\" stories we write are going to be wrong, sometimes very wrong. We will be regularly returning to the vision document to check how things are going and adjust our trajectory appropriately.","breadcrumbs":"🔮 The vision » ❓How to vision » \"Shiny future\" stories » What if we write a \"shiny future\" story but it turns out to be impossible to implement?","id":"51","title":"What if we write a \"shiny future\" story but it turns out to be impossible to implement?"},"510":{"body":"Alan is excited about how easy it is to get async programs up and running, and he finds that they perform pretty well once he does so, so he's happy.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What is Alan most excited about in this future? Is he disappointed by anything?","id":"510","title":"What is Alan most excited about in this future? Is he disappointed by anything?"},"511":{"body":"Grace is concerned with memory safety and being able to deploy her tricks she knows from other languages. Memory safety works fine here. In terms of tricks she knows and loves, she's happy that she can easily switch to another runtime. The default runtime is good and works well for most things, but for the [DistriData] project, they really need something tailored just for them. She is also happy she can use the extended APIs offered by humboldt.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What is Grace most excited about in this future? Is she disappointed by anything?","id":"511","title":"What is Grace most excited about in this future? Is she disappointed by anything?"},"512":{"body":"Niklaus finds it async Rust quite accessible, for the same reasons cited as in \"Alan's Trust in the Rust Compiler is Rewarded\" .","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What is Niklaus most excited about in this future? Is he disappointed by anything?","id":"512","title":"What is Niklaus most excited about in this future? Is he disappointed by anything?"},"513":{"body":"Depending on the technical details, Barbara may be a bit disappointed by the details of how std interfaces with the runtimes, as that may introduce some amount of overhead. This may not matter in practice, but it could also lead to library authors avoiding the std APIs in favor of writing generics or other mechanisms that are \"zero overhead\".","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What is Barbara most excited about in this future? Is she disappointed by anything?","id":"513","title":"What is Barbara most excited about in this future? Is she disappointed by anything?"},"514":{"body":"Projects like DistriData really benefit from being able to customize their runtime.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What projects benefit the most from this future?","id":"514","title":"What projects benefit the most from this future?"},"515":{"body":"We have to pay careful attention to embedded projects like MonsterMesh . Some of the most obvious ways to implement this future would lean on dyn types and perhaps boxing, and that would rule out some embedded projects. Embedded runtimes like embassy are also the most different in their overall design and they would have the hardest time fitting into the std APIs (of course, many embedded projects are already no-std, but many of them make use of some subset of the std capabilities through the facade). In general, traits and generic functions in std could lead to larger code size, as well.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » Are there any projects that are hindered by this future?","id":"515","title":"Are there any projects that are hindered by this future?"},"516":{"body":"There are a few steps required to realize this future: We have to determine the core mechanism that is used for std types to interface with the current scheduler. Is it based on dynamic dispatch? Delayed linking? Some other tricks we have yet to invent? Depending on the details, language changes may be required. We have to hammer out the set of traits or other interfaces used to define the parts of a runtime (see below for some of the considerations). We can start with easier cases and proceed to more difficult ones, however.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » What are the incremental steps towards realizing this shiny future?","id":"516","title":"What are the incremental steps towards realizing this shiny future?"},"517":{"body":"Yes. We will need to collaborate to define traits that std can use to interface with each runtime, and the runtimes will need to implement those traits. This is going to be non-trivial, because we want to preserve the ability for independent runtimes to experiment, while also preserving the ability to \"max and match\" and re-use components. For example, it'd probably be useful to have a bunch of shared I/O infrastructure, or to have utility crates for locks, for running threadpools, and the like. On the other hand, tokio takes advantage of the fact that it owns the I/O types and the locks and the scheduler to do some nifty tricks and we would want to ensure that remains an option.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan switches runtimes » Does realizing this future require cooperation between many projects?","id":"517","title":"Does realizing this future require cooperation between many projects?"},"518":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » ✨ Shiny future stories: Alan's trust in the compiler is rewarded","id":"518","title":"✨ Shiny future stories: Alan's trust in the compiler is rewarded"},"519":{"body":"This is a draft \"shiny future\" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong . At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story !","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » 🚧 Warning: Draft status 🚧","id":"519","title":"🚧 Warning: Draft status 🚧"},"52":{"body":"Figuring out the future is tricky business. We all know the internet is not always a friendly place. We want this discussion to be different.","breadcrumbs":"🔮 The vision » ❓How to vision » Commenting » ❓ How to vision: Constructive comments","id":"52","title":"❓ How to vision: Constructive comments"},"520":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » The story","id":"520","title":"The story"},"521":{"body":"Alan has a lot of experience in C#, but in the meantime has created some successful projects in Rust. He has dealt with his fair share of race conditions/thread safety issues during runtime in C#, but is now starting to trust that if his Rust code compiles, he won't have those annoying runtime problems to deal with. This allows him to try to squeeze his programs for as much performance as he wants, because the compiler will stop him when he tries things that could result in runtime problems. After seeing the performance and the lack of runtime problems, he starts to trust the compiler more and more with each project finished. He knows what he can do with external libraries, he does not need to fear concurrency issues if the library cannot be used from multiple threads, because the compiler would tell him. His trust in the compiler solidifies further the more he codes in Rust.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » Trust the compiler","id":"521","title":"Trust the compiler"},"522":{"body":"Alan now starts with his first async project. He opens up the Rust book to the \"Async I/O\" chapter and it guides him to writing his first program. He starts by writing some synchronous code to write to the file system: use std::fs::File; fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\")?; file.write_all(b\"Hello, world!\")?; Ok(())\n} Next, he adapts that to run in an async fashion. He starts by converting main into async fn main: use std::fs::File; async fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\")?; file.write_all(b\"Hello, world!\")?; Ok(())\n} The code compiles, but he gets a warning: warning: using a blocking API within an async function --> src/main.rs:4:25\n1 | use std::fs::File; | ------------- try changing to `std::async_io::fs::File` | ...\n4 | let mut file: u32 = File::create(\"a.txt\")?; | ^^^^^^^^^^^^ blocking functions should not be used in async fn\nhelp: try importing the async version of this type --> src/main.rs:1\n1 | use std::async_fs::File; \"Oh, right,\" he says, \"I am supposed to use the async variants of the APIs.\" He applies the suggested fix in his IDE, and now his code looks like: use std::async_fs::File; async fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\")?; file.write_all(b\"Hello, world!\")?; Ok(())\n} His IDE recompiles instantaneously and he now sees two little squiggles, one under each ?. Clicking on the errors, he sees: error: missing await --> src/main.rs:4:25\n4 | let mut file: u32 = File::create(\"a.txt\")?; | ^ returns a future, which requires an await\nhelp: try adding an await --> src/main.rs:1\n4 | let mut file: u32 = File::create(\"a.txt\").await?; He again applies the suggested fix, and his code now shows: use std::async_fs::File; async fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\").await?; file.write_all(b\"Hello, world!\").await?; Ok(())\n} Happily, it compiles, and when he runs it, everything works as expected. \"Cool,\" he thinks, \"this async stuff is pretty easy!\"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » The first async project","id":"522","title":"The first async project"},"523":{"body":"Next, Alan decides to experiment with some simple web requests. This isn't part of the standard library, but the fetch_rs package is listed in the Rust book. He runs cargo add fetch_rs to add it to his Cargo.toml and then writes: use std::async_fs::File;\nuse fetch_rs; async fn main() -> Result<(), Box> { let mut file = File::create(\"a.txt\")?; file.write_all(b\"Hello, world!\")?; let body = fetch_rs::get(\"https://www.rust-lang.org\") .await? .text() .await?; println!(\"{}\", body); Ok(())\n} This feels pretty easy!","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » Making some web requests","id":"523","title":"Making some web requests"},"524":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » 🤔 Frequently Asked Questions","id":"524","title":"🤔 Frequently Asked Questions"},"525":{"body":"Alan started trusting the Rust compiler, but then async Barbara makes their first foray into async","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What status quo story or stories are you retelling?","id":"525","title":"What status quo story or stories are you retelling?"},"526":{"body":"Getting started with async should be as automated as possible: change main to an async fn; use the APIs found in modules like std::async_foo, which should map as closely as possible to their non-async equivalents. You should get some sort of default runtime that is decent Lints should guide you in using async: identifying blocking functions identifying missing await You should be able to grab libraries from the ecosystem and they should integrate with the default runtime without fuss","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What are the key points you were trying to convey with this status quo story?","id":"526","title":"What are the key points you were trying to convey with this status quo story?"},"527":{"body":"This particular story doesn't talk about what happens when the default runtime isn't suitable. But you may want to read its sequel, \"Alan Switches Runtimes\" .","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » Is there a \"one size fits all\" runtime in this future?","id":"527","title":"Is there a \"one size fits all\" runtime in this future?"},"528":{"body":"Alan is excited about how easy it is to get async programs up and running. He also finds the performance is good. He's good.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What is Alan most excited about in this future? Is he disappointed by anything?","id":"528","title":"What is Alan most excited about in this future? Is he disappointed by anything?"},"529":{"body":"Grace is happy because she is getting strong safety guarantees and isn't getting surprising runtime panics when composing libraries. The question of whether she's able to use the tricks she knows and loves is a good one, though. The default scheduler may not optimize for maximum performance -- this is something to explore in future stories. The \"Alan Switches Runtimes\" , for example, talks more about the ability to change runtimes.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What is Grace most excited about in this future? Is she disappointed by anything?","id":"529","title":"What is Grace most excited about in this future? Is she disappointed by anything?"},"53":{"body":"Writing a \"status quo\" or \"shiny future\" story is an act of bravery and vulnerability. In the status quo, we are asking people to talk about the things that they or others found hard, to admit that they had trouble figuring something out. In the case of the shiny future, we're asking people to put out half-baked ideas so that we can find the seeds that will grow into something amazing. It doesn't take much to make that go wrong.","breadcrumbs":"🔮 The vision » ❓How to vision » Commenting » Be respectful and supportive","id":"53","title":"Be respectful and supportive"},"530":{"body":"Niklaus is quite happy. Async Rust is fairly familiar and usable for him. Further, the standard library includes \"just enough\" infrastructure to enable a vibrant crates-io ecosystem without centralizing everything.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What is Niklaus most excited about in this future? Is he disappointed by anything?","id":"530","title":"What is Niklaus most excited about in this future? Is he disappointed by anything?"},"531":{"body":"Barbara quite likes that the std APIs for sync and sync fit together, and that there is a consistent naming scheme across them. She likes that there is a flourishing ecosystem of async crates that she can choose from.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What is Barbara most excited about in this future? Is she disappointed by anything?","id":"531","title":"What is Barbara most excited about in this future? Is she disappointed by anything?"},"532":{"body":"A number of projects benefit: Projects like YouBuy are able to get up and going faster. Libraries like SLOW become easier because they can target the std APIs and there is a defined plan for porting across runtimes.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What projects benefit the most from this future?","id":"532","title":"What projects benefit the most from this future?"},"533":{"body":"It depends on the details of how we integrate other runtimes. If we wound up with a future where most libraries are \"hard-coded\" to a single default runtime, this could very well hinder any number of projects, but nobody wants that.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » Are there any projects that are hindered by this future?","id":"533","title":"Are there any projects that are hindered by this future?"},"534":{"body":"This question can't really be answered in isolation, because so much depends on the story for how we integrate with other runtimes. I don't think we can accept a future where is literally a single runtime that everyone has to use, but I wanted to pull out the question of \"non-default runtimes\" (as well as more details about the default) to other stories.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » What are the incremental steps towards realizing this shiny future?","id":"534","title":"What are the incremental steps towards realizing this shiny future?"},"535":{"body":"Yes. For external libraries like fetch_rs to interoperate they will want to use the std APIs (and probably traits).","breadcrumbs":"🔮 The vision » ✨ Shiny future » Alan's trust in the compiler is rewarded » Does realizing this future require cooperation between many projects?","id":"535","title":"Does realizing this future require cooperation between many projects?"},"536":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » ✨ Shiny future stories: Barbara makes a wish","id":"536","title":"✨ Shiny future stories: Barbara makes a wish"},"537":{"body":"This is a draft \"shiny future\" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong . At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story !","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » 🚧 Warning: Draft status 🚧","id":"537","title":"🚧 Warning: Draft status 🚧"},"538":{"body":"Barbara has an initial prototype of a new service she wrote in sync Rust. She then decides, since the service is extremely I/O bound, to port it to async Rust and her benchmarks have led her to believe that performance is being left on the table. She does this by sprinkling async/.await everywhere, picking an executor, and moving dependencies from sync to async. Once she has the program compiling, she thinks \"oh that was easy\". She runs it for the first time and surprisingly she finds out that when hitting an endpoint, nothing happens. Barbara, always prepared, has already added logging to her service and she checks the logs. As she expected, she sees here that the endpoint handler has been invoked but then... nothing. Barbara exclaims, \"Oh no! This was not what I was expecting, but let's dig deeper.\" She checks the code and sees that the endpoint spawns several tasks, but unfortunately those tasks don't have much logging in them. Barbara now remembers hearing something about a wish4-async-insight crate, which has gotten some buzz on her Rust-related social media channels. She decides to give that a shot. She adds the crate as a dependency to her Cargo.toml, renaming it to just insight to make it easier to reference in her code, and then initializes it in her main async function. async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { insight::init(); // new code ...\n} Barbara rebuilds and runs her program again. She doesn't see anything different in the terminal output for the program itself though, and the behavior is the same as before: hitting an endpoint, nothing happens. She double-checks the readme for the wish4-async-insight crate, and realizes that she needs to connect other programs to her service to observe the insights being gathered. Barbara decides that she wants to customize the port that insight is listening on before she starts her experiments with those programs. async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> { insight::init(listen_port => 8080); // new code, leveraging keyword arguments feature added in 2024 ...\n} While her code rebuilds, Barbara investigates what programs she might use to connect to the insight crate. One such program, consolation, can run in the terminal. Barbara is currently just deploying her service locally on her development box, so she opts to try that out and see what it tells her. % rustup install wish4-consolation\n...\n% consolation --port 8080 This brings up a terminal window that looks similar to the Unix top program, except that instead of a list of OS processes, this offers a list of tasks, with each task having a type, ID, and status history (i.e. percentage of time spent in running, ready to poll, or blocked). Barbara skims the output in the list, and sees that one task is listed as currently blocked. Barbara taps the arrow-keys and sees that this causes a cursor to highlight different tasks in the list. She highlights the blocked task and hits the Enter key. This causes the terminal to switch to a Task view, describing more details about that task and its status. The Task view here says that the task is blocked, references a file and line number, and also includes the line from the source code, which says chan.send(value).await. The blocked task also lists the resources that the task is waiting on: prototype_channel, and next to that there is text on a dark red background: \"waiting on channel capacity.\" Again, Barbara taps the arrow-keys and sees that she can select the line for the resource. Barbara notices that this whole time, at the bottom of the terminal, there was a line that says \"For help, hit ? key\"; she taps question mark. This brings up a help message in a scrollable subwindow explaining the task view in general as well as link to online documentation. The help message notes that the user can follow the chain: One can go from the blocked task to the resource it's waiting on, and from that resource to a list of tasks responsible for freeing up the resource. Barbara hits the Escape key to close the help window. The highlight is still on the line that says \"prototype_channel: waiting on channel capacity\"; Barbara hits Enter, and this brings up a list with just one task on it: The channel reader task. Barbara realizes what this is saying: The channel resource is blocking the sender because it is full, and the only way that can be resolved is if the channel reader manages to receive some inputs from the channel. Barbara opens the help window again, and brings up the link to the online documentation. There, she sees discussion of resource starvation and the specific case of a bounded channel being filled up before its receiver makes progress. The main responses outlined there are 1. decrease the send rate, 2. increase the receive rate, or 3. increase the channel's internal capacity, noting the extreme approach of changing to an unbounded channel (with the caveat that this risks resource exhaustion). Barbara skims the task view for the channel reader, since she wants to determine why it is not making progress. However, she is eager to see if her service as a whole is workable apart from this issue, so she also adopts the quick fix of swapping in an unbounded channel. Barbara is betting that if this works, she can use the data from wish4-async-insight about the channel sizes to put a bounded channel with an appropriate size in later. Barbara happily moves along to some initial performance analysis of her \"working\" code, eager to see what other things wish4-async-insight will reveal during her explorations.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » The story","id":"538","title":"The story"},"539":{"body":"The original status quo story just said that Barbara's problem was resolved (sort of) by switching to an unbounded channel. I, much like Barbara, could not tell why this resolved her problem. In particular, I could not tell whether there was an outright deadlock due to a cycle in the task-resource dependency chain that, or if there something more subtle happening. In the story above, I assumed it was the second case: something subtle. Here's an important alternate history though, for the first case of a cycle. Its ... the same story, right up to when Barbara first runs consolation: % rustup install wish4-consolation\n...\n% consolation --port 8080 This brings up a terminal window that looks similar to the Unix top program, except that instead of a list of OS processes, this offers a list of tasks, and shows their status (i.e. running, ready to poll, or blocked), as well as some metrics about how long the tasks spend in each state. At the top of the screen, Barbara sees highlighted warning: \"deadlock cycle was detected. hit P for more info.\" Barbara types capital P. The terminal switches to \"problem view,\" which shows The task types, ID, and attributes for each type. The resources being awaited on The location / backtrace of the await. A link to a documentation page expanding on the issue. The screen also says \"hit D to generate a graphviz .dot file to disk describing the cycle.\" Barbara hits D and stares at the resulting graph, which shows a single circle (labelled \"task\"), and an arc to a box (labelled \"prototype_channel\"), and an arc from that box back to the circle. The arc from the circle to the box is labelled send: waiting on channel capacity, and the arc from the box to the circle is labelled \"sole consumer (mpsc channel)\". graph TD task -- send: waiting on channel capacity --> prototype_channel prototype_channel -- \"sole receiver (mpsc channel)\" --> task task((task)) Barbara suddenly realizes her mistake: She had constructed a single task that was sometimes enqueuing work (by sending messages on the channel), and sometimes dequeuing work, but she had not put any controls into place to ensure that the dequeuing (via recv) would get prioritized as the channel filled up. Barbara reflects on the matter: she knows that she could swap in an unbounded channel to resolve this, but she thinks that she would be better off thinking a bit more about her system design, to see if she can figure out a way to supply back-pressure so that the send rate will go down as the channel fills up.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » Alternate History","id":"539","title":"Alternate History"},"54":{"body":"“Most people do not listen with the intent to understand; they listen with the intent to reply.” -- Stephen Covey The golden rule is that when you leave a comment, you are looking to understand or improve the story. For status quo stories, remember that these are true stories about people's experiences -- they can't be wrong (though they could be inaccurate). It may be that somebody tries for days to solve a problem that would've been easy if they had just known to call a particular method. That story is not wrong, it's an opportunity to write a shiny future story in which you explain how they would've learned about that method, or perhaps about how that method would become unnecessary. For shiny future stories, even if you don't like the idea, you should ask comments with the goal of better understanding what the author likes about it. Understanding that may give you an idea for how to get those same benefits in a way that you are happier with. It's also valid to encourage the author to elaborate on the impact their story will have on different characters.","breadcrumbs":"🔮 The vision » ❓How to vision » Commenting » Comment to understand or improve, not to negate or dissuade","id":"54","title":"Comment to understand or improve, not to negate or dissuade"},"540":{"body":"","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » 🤔 Frequently Asked Questions","id":"540","title":"🤔 Frequently Asked Questions"},"541":{"body":"Barbara wants Async Insights","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What status quo story or stories are you retelling?","id":"541","title":"What status quo story or stories are you retelling?"},"542":{"body":"Alan is happy to see a tool that gives one a view into the internals of the async executor. Alan is not so thrilled about using the consolation terminal interface; but luckily there are other options, namely IDE/editor plugins as well as a web-browser based client, that offer even richer functionality, such as renderings of the task/resource dependency graph.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What is Alan most excited about in this future? Is he disappointed by anything?","id":"542","title":"What is Alan most excited about in this future? Is he disappointed by anything?"},"543":{"body":"Grace is happy to see a tool, but wonders whether it could have been integrated into gdb. Grace is not so thrilled to learn that this tool is not going to try to provide specific insight into performance issues that arise solely from computational overheads in her own code. (The readme for wish4-async-insight says on this matter \"for that, use perf,\" which Grace finds unsatisfying.)","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What is Grace most excited about in this future? Is she disappointed by anything?","id":"543","title":"What is Grace most excited about in this future? Is she disappointed by anything?"},"544":{"body":"Niklaus is happy to learn that the wish4-async-insight is supported by both async-std and tokio, since he relies on friends in both communities to help him learn more about Async Rust. Niklaus is happy about the tool's core presentation oriented around abstractions he understands (tasks and resources). Niklaus is also happy about the integrated help. However, Niklaus is a little nervous about some of the details in the output that he doesn't understand.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What is Niklaus most excited about in this future? Is he disappointed by anything?","id":"544","title":"What is Niklaus most excited about in this future? Is he disappointed by anything?"},"545":{"body":"Barbara is thrilled with how this tool has given her insight into the innards of the async executor she is using. She is disappointed to learn that not every async executor supports the wish4-async-insight crate. The crate works by monitoring state changes within the executor, instrumented via the tracing crate. Not every async-executor is instrumented in a fashion compatible with wish4-async-insight.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What is Barbara most excited about in this future? Is she disappointed by anything?","id":"545","title":"What is Barbara most excited about in this future? Is she disappointed by anything?"},"546":{"body":"Any async codebase that can hook into the wish4-async-insight crate and supply its data via a network port during development would benefit from this. So, I suspect any codebase that uses a sufficiently popular (i.e. appropriately instrumented) async executor will benefit. The main exception I can imagine right now is MonsterMesh : its resource constraints and #![no_std] environment are almost certainly incompatible with the needs of the wish4-async-insight crate.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What projects benefit the most from this future?","id":"546","title":"What projects benefit the most from this future?"},"547":{"body":"The only \"hindrance\" is that the there is an expectation that the async-executor be instrumented appropriately to feed its data to the wish4-async-insight crate once it is initialized.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » Are there any projects that are hindered by this future?","id":"547","title":"Are there any projects that are hindered by this future?"},"548":{"body":"Get tracing crate to 1.0 so that async executors can rely on it. Prototype an insight console atop a concrete async executor (e.g. tokio) Develop a shared protocol atop tracing that compatible async executors will use to provide the insightful data.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » What are the incremental steps towards realizing this shiny future? (Optional)","id":"548","title":"What are the incremental steps towards realizing this shiny future? (Optional)"},"549":{"body":"Yes. Yes it does. At the very least, as mentioned among the \"incremental steps\", we will need a common protocol that the async executors use to communicate their internal state.","breadcrumbs":"🔮 The vision » ✨ Shiny future » Barbara makes a wish » Does realizing this future require cooperation between many projects? (Optional)","id":"549","title":"Does realizing this future require cooperation between many projects? (Optional)"},"55":{"body":"Remember, opening your own PR is free (In fact, we're giving an award for being \"most prolific\"). If you find that you had a really different experience than a status quo story, or you have a different idea for a shiny future, consider just writing your own PR instead of commenting negatively on someone else's. The goal of the brainstorming phase is to put a lot of alternatives, so that we can look for opportunities to combine them and make something with the best of both.","breadcrumbs":"🔮 The vision » ❓How to vision » Commenting » You might just want to write your own story","id":"55","title":"You might just want to write your own story"},"550":{"body":"This page describes the current plans for 2021. It is updated on a monthly basis.","breadcrumbs":"🔮 The vision » 📅 Roadmap for 2021 » 📅 The roadmap: what we're doing in 2021","id":"550","title":"📅 The roadmap: what we're doing in 2021"},"551":{"body":"We're not really ready to work on this section yet. We're still focused on writing out the status quo . What you see here are really just placeholders to give you the idea of what this section might look like.","breadcrumbs":"🔮 The vision » 📅 Roadmap for 2021 » 🛑 Not time for this yet 🛑","id":"551","title":"🛑 Not time for this yet 🛑"},"552":{"body":"Emoji Meaning 🥬 \"Healthy\" -- on track with the plan as described in the doc ✏️ \"Planning\" -- Still figuring out the plan 🤒 \"Worried\" -- things are looking a bit tricky, plans aren't working out 🏖️ \"On vacation\" -- taking a break right now ⚰️ We gave up on this idea =)","breadcrumbs":"🔮 The vision » 📅 Roadmap for 2021 » Key","id":"552","title":"Key"},"553":{"body":"Plan Owner Status Last updated Async functions in traits nikomatsakis 🥬 2021-02","breadcrumbs":"🔮 The vision » 📅 Roadmap for 2021 » Roadmap items","id":"553","title":"Roadmap items"},"554":{"body":"","breadcrumbs":"🔍 Triage meetings » 🔍 Triage meetings","id":"554","title":"🔍 Triage meetings"},"555":{"body":"The weekly triage meeting is held on Zulip at 13:00 US Eastern time on Fridays ( google calendar event for meeting ).","breadcrumbs":"🔍 Triage meetings » When, where","id":"555","title":"When, where"},"556":{"body":"If you're interested in fixing bugs, there is no need to wait for the triage meeting. Take a look at the mentored async-await bugs that have no assignee . Every mentored bug should have a few comments. If you see one you like, you can add the @rustbot claim comment into the bug and start working on it! Feel to reach out to the mentor on Zulip to ask questions.","breadcrumbs":"🔍 Triage meetings » So you want to fix a bug?","id":"556","title":"So you want to fix a bug?"},"557":{"body":"The project board tracks various bugs and other work items for the async foundation group. It is used to drive the triage process.","breadcrumbs":"🔍 Triage meetings » Project board","id":"557","title":"Project board"},"558":{"body":"In our weekly triage meetings, we take new issues assigned A-async-await and categorize them. The process is: Review the project board , from right to left: Look at what got Done , and celebrate! :tada: Review In progress issues to check we are making progress and there is a clear path to finishing (otherwise, move to the appropriate column) Review Blocked issues to see if there is anything we can do to unblock Review Claimed issues to see if they are in progress, and if the assigned person still intends to work on it Review To do issues and assign to anyone who wants to work on something Review uncategorized issues Mark P-low, P-medium, or P-high Add P-high and assigned E-needs-mentor issues to the project board Mark AsyncAwait-triaged If there's still a shortage of To do issues, review the list of P-medium or P-low issues for candidates","breadcrumbs":"🔍 Triage meetings » Triage process","id":"558","title":"Triage process"},"559":{"body":"If an issue is a good candidate for mentoring, mark E-needs-mentor and try to find a mentor. Mentors assigned to issues should write up mentoring instructions. Often, this is just a couple lines pointing to the relevant code. Mentorship doesn't require intimate knowledge of the compiler, just some familiarity and a willingness to look around for the right code. After writing instructions, mentors should un-assign themselves, add E-mentor, and remove E-needs-mentor. On the project board, if a mentor is assigned to an issue, it should go to the Claimed column until mentoring instructions are provided. After that, it should go to To do until someone has volunteered to work on it.","breadcrumbs":"🔍 Triage meetings » Mentoring","id":"559","title":"Mentoring"},"56":{"body":"Here are some examples of good questions for \"status quo\" stories: Tell me more about this step. What led NAME to do X? What do you think OTHER_NAME would have done here? Can you be more specific about this point? What library did they use?","breadcrumbs":"🔮 The vision » ❓How to vision » Commenting » Good questions for status quo stories","id":"56","title":"Good questions for status quo stories"},"560":{"body":"The design documents (or \"design docs\", more commonly) describe potential designs. These docs vary greatly in terms of their readiness to be implemented: Early on, they describe a vague idea for a future. Often this takes the shape of capturing constraints on the solution, rather than the solution itself. When a feature is getting ready to ship, they can evolve into a full blown RFC, with links to tracking issues or other notes.","breadcrumbs":"🔬 Design docs » 🔬 Design documents","id":"560","title":"🔬 Design documents"},"561":{"body":"In the early stages, design docs are meant to capture interesting bits of \"async design space\". They are often updated to capture the results of a fruitful conversation or thread which uncovered contraints or challenges in solving a particular problem. They will capture a combination of the following: use cases; interesting aspects to the design; alternatives; interactions with other features.","breadcrumbs":"🔬 Design docs » Early stage design docs","id":"561","title":"Early stage design docs"},"562":{"body":"As a design progresses, the doc should get more and more complete, until it becomes something akin to an RFC. (Often, at that point, we will expand the design document into a directory, adding an actual RFC draft and other contents; those things can live in this repo or elsewhere, depending.) Once we decide to put a design doc onto the roadmap, it will also contain links to tracking issues or other places to track the status.","breadcrumbs":"🔬 Design docs » Late stage design docs","id":"562","title":"Late stage design docs"},"563":{"body":"","breadcrumbs":"🔬 Design docs » ⚠️ Yield-safe lint » ⚠️ Yield-safe lint","id":"563","title":"⚠️ Yield-safe lint"},"564":{"body":"Some types should not be held across a \"yield\" bound. A typical example is a MutexGuard: async fn example(x: &Lock) { let data = x.lock().unwrap(); something().await; *data += 1;\n} async fn something() { } In practice, a lot of these issues are avoided because MutexGuard is not Send, but single-thread runtimes hit these issues.","breadcrumbs":"🔬 Design docs » ⚠️ Yield-safe lint » Use-case","id":"564","title":"Use-case"},"565":{"body":"MutexGuard for mutexes, read-write locks Guards for ref-cells Things that might use these types internally and wish to bubble it up","breadcrumbs":"🔬 Design docs » ⚠️ Yield-safe lint » Types where this would apply","id":"565","title":"Types where this would apply"},"566":{"body":"The #[must_use] lint on types, we would want their design to work very closely. Non-async-friendly functions like sleep or task::block_on.","breadcrumbs":"🔬 Design docs » ⚠️ Yield-safe lint » Precedent and related questions","id":"566","title":"Precedent and related questions"},"567":{"body":"Current definition","breadcrumbs":"🔬 Design docs » ☔ Stream trait » ☔ Stream trait","id":"567","title":"☔ Stream trait"},"568":{"body":"pub trait Stream { type Item; fn poll_next( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll>; #[inline] fn size_hint(&self) -> (usize, Option) { (0, None) }\n}","breadcrumbs":"🔬 Design docs » ☔ Stream trait » Trait definition","id":"568","title":"Trait definition"},"569":{"body":"","breadcrumbs":"🔬 Design docs » ☔ Stream trait » Concerns","id":"569","title":"Concerns"},"57":{"body":"Here are some examples of good questions for \"shiny future\" stories: How does NAME do X in this future? It seems like this would interfere with X, which is important for application A. How would NAME handle that case in this future? You should not be afraid to raise technical concerns -- we need to have a robust technical discussion! But do so in a way that leaves room to find an answer that satisfies both of you.","breadcrumbs":"🔮 The vision » ❓How to vision » Commenting » Good questions for shiny future stories","id":"57","title":"Good questions for shiny future stories"},"570":{"body":"You have to think about Pin if you implement this trait. Combinators can be more difficult. One solution: generator syntax .","breadcrumbs":"🔬 Design docs » ☔ Stream trait » Poll-based design","id":"570","title":"Poll-based design"},"571":{"body":"Sometimes streams need to reuse internal storage ( Discussion ).","breadcrumbs":"🔬 Design docs » ☔ Stream trait » Attached streams are commonly desired","id":"571","title":"Attached streams are commonly desired"},"572":{"body":"Currently the combinations are stored in the StreamExt module. In some cases, this is because of the lack of async closures support. Also serves as a \"semver barrier\". Also no-std compatibility. One question: what combinators (if any) to include when stabilizing? e.g., poll_next_unpin can make working with pin easier, albeit at a loss of generality folks who are new to pinning could use this method, and it can help us to guide the diagnostics by suggesting that they Box::pin","breadcrumbs":"🔬 Design docs » ☔ Stream trait » Combinators","id":"572","title":"Combinators"},"573":{"body":"It would be useful to be able to write a function to return an iterator or (in the async context) a generator The basic shape might be (modulo bikeshedding) gen fn that contains yield Some question marks: How general of a mechanism do we want? Just target iterators and streams, or shoot for something more general? Some of the question marks that arise if you go beyond iterators and streams: Return values that are not unit Have yield return a value that is passed by the caller of next (\"resume args\")","breadcrumbs":"🔬 Design docs » ⚡ Generator syntax » ⚡ Generator syntax","id":"573","title":"⚡ Generator syntax"},"574":{"body":"","breadcrumbs":"🔬 Design docs » 📝 AsyncRead, AsyncWrite traits » 📝 AsyncRead, AsyncWrite traits","id":"574","title":"📝 AsyncRead, AsyncWrite traits"},"575":{"body":"Why async fn in traits are hard","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » 🧬 Async fn in traits","id":"575","title":"🧬 Async fn in traits"},"576":{"body":"trait Foo { // Currently disallowed: async fn bar();\n}","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » General goal","id":"576","title":"General goal"},"577":{"body":"","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » Concerns","id":"577","title":"Concerns"},"578":{"body":"If you wanted to name the future that results from calling bar (or whatever), you can't. Also true for functions fn bar() -> impl Trait.","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » How to name the resulting future","id":"578","title":"How to name the resulting future"},"579":{"body":"Relevant thread async fn foo() {} // desugars to\nfn foo() -> impl Future { } // resulting type is Send if it can be // alternative desugaring we chose not to adopt would require Send\nfn foo() -> impl Future + Send { } If I want to constrain the future I get back from a method, it is difficult to do without a name: trait Service { async fn request(&self);\n} fn parallel_service()\nwhere S::Future: Send,\n{ ...\n} Should this be solved at the impl trait layer Or should we specialize something for async functions Would be nice, if there are many, associated types, to have some shorthand","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » Requiring Send on futures","id":"579","title":"Requiring Send on futures"},"58":{"body":"At the end of the brainstorming period , we'll also vote on various awards to give to the status quo and shiny future PRs that were submitted.","breadcrumbs":"🔮 The vision » ❓How to vision » Awards » ❓ How to vision: Awards","id":"58","title":"❓ How to vision: Awards"},"580":{"body":"trait Service { type Future: Future; fn request(&self, ...) -> Self::Future;\n} impl Service for MyService { type Future = impl Future; fn request(&self) -> Self::Future { async move { .. } }\n} Dependent on impl Trait, see lang-team repo","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » Example use case: the Service","id":"580","title":"Example use case: the Service"},"581":{"body":"trait MyMethod { async fn foo(&self);\n}","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » Example use case: capturing lifetimes of arguments","id":"581","title":"Example use case: capturing lifetimes of arguments"},"582":{"body":"","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » 🤔 Frequently Asked Questions","id":"582","title":"🤔 Frequently Asked Questions"},"583":{"body":"(Explain your key points here)","breadcrumbs":"🔬 Design docs » 🧬 Async fn in traits » What do people say about this to their friends on twitter?","id":"583","title":"What do people say about this to their friends on twitter?"},"584":{"body":"Description of various challenges with async mutexes","breadcrumbs":"🔬 Design docs » 🔒 Mutex (future-aware) » 🔒 Mutex (future-aware)","id":"584","title":"🔒 Mutex (future-aware)"},"585":{"body":"","breadcrumbs":"🔬 Design docs » 📺 Async aware channels » 📺 Async aware channels","id":"585","title":"📺 Async aware channels"},"586":{"body":"","breadcrumbs":"🔬 Design docs » 📦 Async closures » 📦 Async closures","id":"586","title":"📦 Async closures"},"587":{"body":"","breadcrumbs":"🔬 Design docs » 🤝 Join combinator » 🤝 Join combinator","id":"587","title":"🤝 Join combinator"},"588":{"body":"","breadcrumbs":"🔬 Design docs » 🤷‍♀️ Select combinator » 🤷‍♀️ Select combinator","id":"588","title":"🤷‍♀️ Select combinator"},"589":{"body":"","breadcrumbs":"🔬 Design docs » 🚰 Sink trait » 🚰 Sink trait","id":"589","title":"🚰 Sink trait"},"59":{"body":"These are the award categories: Most humorous story Most creative story Most supportive -- who left the most helpful comments? Most prolific -- who wrote the most stories? Most unexpected -- which status quo story (or shiny future) took you by surprise? Most painful \"status quo\" story Most ambitious \"shiny future\" story Most extensive FAQ However, if you have an idea for another award category, we are happy to take suggestions. One rule: the awards can't be negative (e.g., no \"most unrealistic\"), and they can't be about which thing is \"best\". That would work against the brainstorming spirit.","breadcrumbs":"🔮 The vision » ❓How to vision » Awards » Award categories","id":"59","title":"Award categories"},"590":{"body":"","breadcrumbs":"🔬 Design docs » 🎇 Async main » 🎇 Async main","id":"590","title":"🎇 Async main"},"591":{"body":"","breadcrumbs":"🔬 Design docs » 🎇 Async main » What is it?","id":"591","title":"What is it?"},"592":{"body":"","breadcrumbs":"🔬 Design docs » 🎇 Async main » Motivation","id":"592","title":"Motivation"},"593":{"body":"","breadcrumbs":"🔬 Design docs » 🎇 Async main » Frequently Asked Questions","id":"593","title":"Frequently Asked Questions"},"594":{"body":"","breadcrumbs":"🔬 Design docs » 🗑️ Async drop » 🗑️ Async drop","id":"594","title":"🗑️ Async drop"},"595":{"body":"","breadcrumbs":"🔬 Design docs » 🗑️ Async drop » ♻️ Async lifecycle » ♻️ Async lifecycle","id":"595","title":"♻️ Async lifecycle"},"596":{"body":"Notes on io_uring","breadcrumbs":"🔬 Design docs » ⏳ Completion-based futures » ⏳ Completion-based futures","id":"596","title":"⏳ Completion-based futures"},"597":{"body":"This section contains notes and summaries from conversations that we have had with people are using Rust and async and describing their experiences. These conversations and links are used as \"evidence\" when building the \"status quo\" section .","breadcrumbs":"💬 Conversations » 💬 Conversations","id":"597","title":"💬 Conversations"},"598":{"body":"This section is not meant to be an \"exhaustive list\" of all sources. That would be impossible. Many conversations are short, not recorded, and hard to summaize. Others are subject to NDA. We certainly don't require that all claims in the status quo section are backed by evidence found here. Still, it's useful to have a place to dump notes and things for future reference.","breadcrumbs":"💬 Conversations » Not exhaustive nor mandatory","id":"598","title":"Not exhaustive nor mandatory"},"599":{"body":"Notes taken from the thread in response to Niko's tweet . Enzo A default event loop. \"choosing your own event loop\" takes time, then you have to understand the differences between each event loop etc. Standard way of doing for await (variable of iterable) would be nice. Standard promise combinators. creepy_owlet https://github.com/dtantsur/rust-osauth/blob/master/src/sync.rs async trait -- https://twitter.com/jcsp_tweets/status/1359820431151267843 \"I thought async was built-in\"? nasty compiler errors ownership puzzle blog post rubdos blog post describes integrating two event loops mentions desire for runtime independent libraries qt provides a mechanism to integrate one's own event loop llvm bug generates invalid arm7 assembly alexmiberry kotlin/scala code, blocked by absence of async trait helpful blog post jamesmcm note that join and Result play poorly together async-std version tokio version has some wild \"double question marks\" -- I guess that spawn must be adding a layer of Result? the post mentions rayon but this isn't really a case where one ought to use rayon -- still, Rayon's APIs here are SO much nicer :) rust aws and lambda issue requiring async drop fasterthanlime -- this post is amazing the discussion on Send bounds and the ways to debug it is great bridging different runtimes using GATs first server app, great thread with problems \"I wasn't expecting that it will be easy but after Go and Node.js development it felt extremely hard to start off anything with Rust.\" \"felt like I have to re-learn everything from scratch: structuring project and modules, dependency injection, managing the DB and of course dealing with concurrency\" common thread: poor docs, though only somewhat in async libraries I had enums in the DB and it was a bit more complex to map them to my custom Rust enums but I succeeded with the help of a couple of blog posts – and not with Diesel documentation I used Rusoto for dealing with AWS services. It's also pretty straightforward and high quality package – but again the documentation was sooo poor. implaustin wrote a very nice post but it felt more like a \"look how well this worked\" post than one with actionable feedback \"Async has worked well so far. My top wishlist items are Sink and Stream traits in std. It's quite difficult to abstract over types that asynchronously produce or consume values.\" \"AsyncRead/AsyncWrite work fine for files, tcp streams, etc. But once you are past I/O and want to pass around structs, Sink and Stream are needed. One example of fragmentation is that Tokio channels used to implement the futures Sink/Stream traits, but no longer do in 1.0.\" \"I usually use Sink/Stream to abstract over different async channel types. Sometimes to hide the details of external dependencies from a task (e.g. where is this data going?). And sometimes to write common utility methods.\" \"One thing I can think of: there are still a lot of popular libraries that don't have async support (or are just getting there). Rocket, Criterion, Crossterm's execute, etc.\" EchoRior : \"I've written a bit of rust before, but rust is my first introduction to Async. My main gripes are that it's hard to figure our what the \"blessed\" way of doing async is. I'd love to see async included in the book, but I understand that async is still evolving too much for that.\" \"Adding to the confusion: theres multiple executors, and they have a bit of lock in. Async libraries being dependent on which executor version I use is also confusing for newcomers. In other langs, it seems like one just uses everything from the stdlib and everything is compatible\" \"That kind of gave me a lot of hesitation/fomo in the beginning, because it felt like I had to make some big choices around my tech stack that I felt I would be stuck with later. I ended up chatting about this in the discord & researching for multiple days before getting started.\" \"Also, due to there not being a \"blessed\" approach, I don't know if I'm working with some misconceptions around async in rust, and will end up discovering I will need to redo large parts of what I wrote.\"","breadcrumbs":"💬 Conversations » 🐦 2021-02-12 Twitter thread » 🐦 2021-02-12 Twitter thread","id":"599","title":"🐦 2021-02-12 Twitter thread"},"6":{"body":"Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.","breadcrumbs":"👋🏽 Welcome » Contribution","id":"6","title":"Contribution"},"60":{"body":"At the end of the brainstorming period , we're going to have a voting session to select which PRs and people win the awards. The winners will be featured in a blog post. 🏆","breadcrumbs":"🔮 The vision » ❓How to vision » Awards » Voting","id":"60","title":"Voting"},"600":{"body":"Thanks to everyone who helped forming the future of Rust async.","breadcrumbs":"❤️ Acknowledgments » ❤️ Acknowledgments","id":"600","title":"❤️ Acknowledgments"},"601":{"body":"Thanks to everyone who helped writing Stories by participating in one of the Async Rust writing sessions. todo","breadcrumbs":"❤️ Acknowledgments » ✍️ Participating in an writing session","id":"601","title":"✍️ Participating in an writing session"},"602":{"body":"Thanks to everyone who discussed about stories, shiny future and new features. Ar37-rs broccolihighkicks cortopy eminence evan-brass farnz FreddieGilbraith geropl guswynn jbr jlkiri jonathandturner jzrake laurieontech LucioFranco nikomatsakis o0Ignition0o pickfire pnkfelix rgreinho rhmoller rylev sticnarf Stupremee uazu urhein vladinator1000 wesleywiser wraithan y21 yoshuawuyts zeenix","breadcrumbs":"❤️ Acknowledgments » 💬 Discussing about stories","id":"602","title":"💬 Discussing about stories"},"603":{"body":"Thanks to everyone who opened a Pull Request and wrote a story, shiny future or improved the organization of the repository. alsuren bIgBV cortopy cryptoquick Darksonn doc-jones ehuss eminence emmanuelantony2000 erichgess Frederik-Baetens Gottox guswynn JakubKoralewski jonathandturner jrvanwhy kmeisthax MidasLamb nellshamrell nikomatsakis o0Ignition0o pnkfelix rylev seanmonstar sticnarf Stupremee taiki-e ThatGeoGuy tmandry wesleywiser","breadcrumbs":"❤️ Acknowledgments » ✨ Directly contributing","id":"603","title":"✨ Directly contributing"},"61":{"body":"Status Owner ⚠️ Draft ⚠️ nikomatsakis Draft status. These tenets are a first draft. nikomatsakis plans to incorporate feedback and revise them before they are finalized. The design tenets describe the key principles that drive our work on async. Hopefully, we are able to achieve and honor all of them all of the time. Sometimes, though, they come into conflict, and we have to pick -- in that case, we prefer the tenet earlier in the list. Minimal overhead. Rust Async I/O performance should compare favourably with any other language. In the extreme case, it should be possible to use async/await without any required allocation, although this is unlikely to be a common case in production systems. Easy to get started, but able to do anything you want. We should make it simple to write Async I/O code and get things that work reasonably well, but it should be possible for people to obtain fine-grained control as needed. Async is like sync, but with blocking points clearly identified. At the highest level, writing a simple program using asynchronous I/O in Rust should be analogous to writing one that uses synchronous I/O, except that one adds async in front of function declarations and adds .await after each call. We should aim for analogous design between synchronous and asynchronous equivalents. Similarly, streams should be like asynchronous iterators. One should be able to use the same sort of combinators with streams and to iterate over them in analogous ways. No one true runtime. We need to be able to hook into existing runtimes in different environments, from embedded environments to runtimes like node.js. Specialized systems need specialized runtimes. Library ecosystem is key. We want to have a strong ecosystem of async crates, utilities, and frameworks. This will require mechanisms to write libraries/utilities/frameworks that are generic and interoperable across runtimes.","breadcrumbs":"🔮 The vision » ✏️ Design tenets for async » ✏️ Design tenets for async","id":"61","title":"✏️ Design tenets for async"},"62":{"body":"\"Stress tests\" are important use cases that tend to \"stretch\" the design. When we are contemplating changes, it's important to look over the stress tests and make sure that they all still work: Single-threaded executors: Some systems tie each task to a single thread; such tasks should be able to access data that is not Send or Sync, and the executor for those tasks should be able to be fully optimized to avoid atomic accesses, etc. Multi-threaded executors: Many systems migrate tasks between threads transparently, and that should be supported as well, though tasks will be required to be Send. \"Bring your own runtime\": The Rust language itself should not require that you start threads, use epoll, or do any other particular thing. Zero allocation, single task: Embedded systems might want to be able to have a single task that is polled to completion and which does no allocation whatsoever. Multiple runtimes in one process: Sometimes people have to combine systems, each of which come with their own event loop. We should avoid assuming there is one global event loop in the system. Non-Rust based runtimes: Sometimes people want to integrate into event loops from other, non-Rust-based systems. WebAssembly in the browser: We want to integrate with WebAssembly.","breadcrumbs":"🔮 The vision » ✏️ Design tenets for async » Stress tests","id":"62","title":"Stress tests"},"63":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » 🙋‍♀️ Cast of characters","id":"63","title":"🙋‍♀️ Cast of characters"},"64":{"body":"We've created four characters that we use to guide our thinking. These characters are the protagonists of our status quo and shiny future stories, and they help us to think about the different kinds of priorities and expectations that people bring to Async Rust. Having names and personalities also makes the stories more fun and approachable.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » What is this?","id":"64","title":"What is this?"},"65":{"body":"Alan : the experienced \"GC'd language\" developer, new to Rust Top priority : performance -- that's what he is not getting from current GC'd language Expectations : absence of memory safety bugs (he gets that now from his GC), strong ecosystem, great tooling Grace : the systems programming expert, new to Rust Top priority : memory safety -- that's what she is not getting from C/C++ Expectations : able to do all the things she's used to from C/C++ Niklaus : new programmer from an unconventional background Top priority : accessibility -- he's learning a lot of new things at once Expectations : community -- the community enabled him to have early success, and he is excited to have it support him and him grow more Barbara : the experienced Rust developer Top priority : overall productivity and long-term maintenance -- she loves Rust, and wants to see it extended to new areas; she has an existing code base to maintain Expectations : elegance and craftsmanship, fits well with Rust","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » The characters","id":"65","title":"The characters"},"66":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » 🤔 Frequently Asked Questions","id":"66","title":"🤔 Frequently Asked Questions"},"67":{"body":"Famous programming language designers and theorists. Alan Turing , Grace Hopper , Niklaus Wirth , and Barbara Liskov .","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Where do the names come from?","id":"67","title":"Where do the names come from?"},"68":{"body":"Come to Zulip and talk to us about it! Maybe they need to be adjusted!","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » I don't see myself in these characters. What should I do?","id":"68","title":"I don't see myself in these characters. What should I do?"},"69":{"body":"Yeah, me too.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » I see myself in more than one of these characters!","id":"69","title":"I see myself in more than one of these characters!"},"7":{"body":"","breadcrumbs":"🔮 The vision » 🔮 The vision","id":"7","title":"🔮 The vision"},"70":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » 🙋‍♀️ Cast of characters","id":"70","title":"🙋‍♀️ Cast of characters"},"71":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » Alan: the experienced \"GC'd language\" developer, new to Rust","id":"71","title":"Alan: the experienced \"GC'd language\" developer, new to Rust"},"72":{"body":"Alan has been programming for years. He has built systems in Ruby on Rails, node.js, and used Django too. Lately he's been learning Rust and he is tinkering with integrating Rust into some of his projects to get better performance and reliability. He's also building some projects entirely in Rust.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » Variant A: Dynamic languages","id":"72","title":"Variant A: Dynamic languages"},"73":{"body":"Alan works at a Java shop. They run a number of network services built in Java, along with some that use Kotlin or Scala. He's very familiar with the Java ecosystem and the tooling that the JVM offers. He's also sometimes had to tweak his code to work around garbage collector latencies or to reduce overall memory usage. He's curious to try porting some systems to Rust to see how it works.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » Variant B: Java","id":"73","title":"Variant B: Java"},"74":{"body":"Alan is developing networking programs in Kotlin. He loves Kotlin for its expressive syntax and clean integration with Java. Still, he sometimes encounters problems running his services due to garbage collection latencies or overall memory usage. He's heard that Rust can be fun to use too, and is curious to try it out.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » Variant C: Kotlin","id":"74","title":"Variant C: Kotlin"},"75":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » 🤔 Frequently Asked Questions","id":"75","title":"🤔 Frequently Asked Questions"},"76":{"body":"The promise of better performance and memory usage than the languages he's been using. Rust's safety guarantees are important too; he's considered using C++ in the past but always judged the maintenance burden would be too high.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » What does Alan want most from Async Rust?","id":"76","title":"What does Alan want most from Async Rust?"},"77":{"body":"A focus on ease of use, a strong ecosystem, and great tooling.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Alan » What expectations does Alan bring from his current environment?","id":"77","title":"What expectations does Alan bring from his current environment?"},"78":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Grace » 🙋‍♀️ Cast of characters","id":"78","title":"🙋‍♀️ Cast of characters"},"79":{"body":"Grace has been writing C and C++ for a number of years. She's accustomed to hacking lots of low-level details to coax the most performance she can from her code. She's also experienced her share of epic debugging sessions resulting from memory errors in C. She's intrigued by Rust: she likes the idea of getting the same control and performance she gets from C but with the productivity benefits she gets from memory safety. She's currently experimenting with introducing Rust into some of the systems she works on, and she's considering Rust for a few greenfield projects as well.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Grace » Grace: the systems programming expert, new to Rust","id":"79","title":"Grace: the systems programming expert, new to Rust"},"8":{"body":"We believe Rust can become one of the most popular choices for building distributed systems, ranging from embedded devices to foundational cloud services. Whatever they're using it for, we want all developers to love using Async Rust. For that to happen, we need to move Async Rust beyond the \"MVP\" state it's in today and make it accessible to everyone. This document is a collaborative effort to build a shared vision for Async Rust. Our goal is to engage the entire community in a collective act of the imagination: how can we make the end-to-end experience of using Async I/O not only a pragmatic choice, but a joyful one?","breadcrumbs":"🔮 The vision » What is this","id":"8","title":"What is this"},"80":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Grace » 🤔 Frequently Asked Questions","id":"80","title":"🤔 Frequently Asked Questions"},"81":{"body":"Grace is most interested in memory safety. She is comfortable with C and C++ but she's also aware of the maintenance burden that arises from the lack of memory safety.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Grace » What does Grace want most from Async Rust?","id":"81","title":"What does Grace want most from Async Rust?"},"82":{"body":"Grace expects to be able to get the same performance she used to get from C or C++. Grace is accustomed to various bits of low-level tooling, such as gdb or perf. It's nice if Rust works reasonably well with those tools, but she'd be happy to have access to better alternatives if they were available. She's happy using cargo instead of make, for example.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Grace » What expectations does Grace bring from her current environment?","id":"82","title":"What expectations does Grace bring from her current environment?"},"83":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Niklaus » 🙋‍♀️ Cast of characters","id":"83","title":"🙋‍♀️ Cast of characters"},"84":{"body":"He's always been interested in programming but doesn't have experience with it. He's been working as a tech writer and decided to dip his toe in by opening PRs to improve the documentation for one of the libraries he was playing with. The feedback was positive so he fixed a small bug. He's now considering getting involved in a deeper way.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Niklaus » Niklaus: new programmer from an unconventional background","id":"84","title":"Niklaus: new programmer from an unconventional background"},"85":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Niklaus » 🤔 Frequently Asked Questions","id":"85","title":"🤔 Frequently Asked Questions"},"86":{"body":"Niklaus values accessibility. He's learning a lot of new things at once and it can be overwhelming.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Niklaus » What does Niklaus want most from Async Rust?","id":"86","title":"What does Niklaus want most from Async Rust?"},"87":{"body":"Niklaus expects a strong and supportive community. The Rust community enabled him to have early success, and he is excited to have it support him and for it to help him grow more.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Niklaus » What expectations does Niklaus bring from his current environment?","id":"87","title":"What expectations does Niklaus bring from his current environment?"},"88":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Barbara » 🙋‍♀️ Cast of characters","id":"88","title":"🙋‍♀️ Cast of characters"},"89":{"body":"Barbara has been using Rust since the 0.1 release. She remembers some of the crazy syntax in Ye Olde Rust of Yore and secretly still misses the alt keyword (don't tell anyone). Lately she's maintaining various projects in the async space.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Barbara » Barbara: the experienced Rust developer","id":"89","title":"Barbara: the experienced Rust developer"},"9":{"body":"The \"vision document\" starts with a cast of characters . Each character is tied to a particular Rust value (e.g., performance, productivity, etc) determined by their background; this background also informs the expectations they bring when using Rust. Grace , for example, wants to keep the same level of performance she currently get with C, but with the productivity benefits of memory safety. Alan , meanwhile, is hoping Rust will give him higher performance without losing the safety and ergonomics that he enjoys with garbage collected languages. For each character, we write \"status quo\" stories that describe the challenges they face as they try to achieve their goals (and typically fail in dramatic fashion!), These stories are not fiction. They are an amalgamation of the real experiences of people using Async Rust, as reported to us by interviews, blog posts, and tweets. Writing these stories helps us gauge the cumulative impact of the various papercuts and challenges that one encounters when using Async Rust. The ultimate goal of the vision doc, of course, is not just to tell us where we are now, but where we are going and how we will get there. For this, we include \"shiny future\" stories that tell us how those same characters will fare in a few years time, when we've had a chance to improve the Async Rust experience.","breadcrumbs":"🔮 The vision » Where we are and where we are going","id":"9","title":"Where we are and where we are going"},"90":{"body":"","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Barbara » 🤔 Frequently Asked Questions","id":"90","title":"🤔 Frequently Asked Questions"},"91":{"body":"She is using Rust for its feeling of productivity, and she expects Async Rust to continue in that tradition. She maintains several existing projects, so stability is important to her.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Barbara » What does Barbara want most from Async Rust?","id":"91","title":"What does Barbara want most from Async Rust?"},"92":{"body":"She wants a design that feels like the rest of Rust. She loves Rust and she expects Async Rust to share its overall values.","breadcrumbs":"🔮 The vision » 🙋‍♀️ Cast of characters » Barbara » What expectations does Barbara bring from her current environment?","id":"92","title":"What expectations does Barbara bring from her current environment?"},"93":{"body":"","breadcrumbs":"🔮 The vision » ⚡ Projects » ⚡ Projects","id":"93","title":"⚡ Projects"},"94":{"body":"This section describes various sample projects that are referenced in our stories. Each project is meant to represent some domain that we are targeting.","breadcrumbs":"🔮 The vision » ⚡ Projects » What is this?","id":"94","title":"What is this?"},"95":{"body":"See the sidebar for the full list.","breadcrumbs":"🔮 The vision » ⚡ Projects » List of projects","id":"95","title":"List of projects"},"96":{"body":"Don't despair! This is just a list of fun projects that we've needed for stories. If you'd like to add a project for your story, feel free to do so! Note though that you may find that some existing project has the same basic characteristics as your project, in which case it's probably better to reuse the existing project.","breadcrumbs":"🔮 The vision » ⚡ Projects » Don't find a project like yours here?","id":"96","title":"Don't find a project like yours here?"},"97":{"body":"This is a template for adding new projects. See the instructions for more details on how to add new project!","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » ⚡ Projects: NAME (DOMAIN)","id":"97","title":"⚡ Projects: NAME (DOMAIN)"},"98":{"body":"This is a sample project for use within the various \"status quo\" or \"shiny future\" stories.","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » What is this?","id":"98","title":"What is this?"},"99":{"body":"Give a fun description of the project here! Include whatever details are needed.","breadcrumbs":"🔮 The vision » ⚡ Projects » Template » Description","id":"99","title":"Description"}},"length":604,"save":true},"fields":["title","body","breadcrumbs"],"index":{"body":{"root":{"0":{".":{".":{"1":{"0":{"df":1,"docs":{"380":{"tf":2.23606797749979}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{"df":2,"docs":{"199":{"tf":1.4142135623730951},"89":{"tf":1.0}}},"4":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"7":{".":{"1":{"1":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"3":{"1":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"6":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"df":3,"docs":{"15":{"tf":1.0},"553":{"tf":1.0},"599":{"tf":1.0}}},"3":{"df":1,"docs":{"365":{"tf":1.0}}},"4":{"df":3,"docs":{"14":{"tf":2.0},"15":{"tf":1.0},"16":{"tf":1.0}}},"df":8,"docs":{"217":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":3.1622776601683795},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":3.1622776601683795},"419":{"tf":1.0},"568":{"tf":1.0}},"x":{"0":{"0":{"0":{"0":{"5":{"5":{"5":{"5":{"5":{"5":{"5":{"7":{"6":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"7":{"3":{"c":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"8":{"df":0,"docs":{},"f":{"7":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"9":{"0":{"5":{"2":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"5":{"c":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"5":{"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"d":{"3":{"b":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"2":{"df":0,"docs":{},"f":{"7":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"6":{"9":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"5":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"9":{"c":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"b":{"0":{"b":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{"b":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"9":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"2":{"2":{"df":0,"docs":{},"f":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"3":{"0":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"0":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"7":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"a":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"8":{"0":{"5":{"a":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"a":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"1":{"2":{"5":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"4":{"a":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"0":{"9":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"3":{"2":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"df":0,"docs":{},"f":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"6":{"a":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"d":{"0":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"2":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"0":{"9":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"d":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"7":{"4":{"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"8":{"2":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"a":{"d":{"9":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"b":{"8":{"d":{"a":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"4":{"7":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"8":{"7":{"b":{"b":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"8":{"d":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"2":{"2":{"9":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"0":{"b":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"6":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"9":{"9":{"0":{"9":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"6":{"4":{"a":{"8":{"2":{"df":0,"docs":{},"f":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"f":{"7":{"d":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"7":{"0":{"a":{"c":{"3":{"df":1,"docs":{"404":{"tf":2.0}}},"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"0":{"0":{"d":{"8":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"0":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"1":{"1":{"b":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"7":{"c":{"2":{"df":0,"docs":{},"f":{"0":{"9":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"d":{"5":{"df":0,"docs":{},"e":{"5":{"8":{"a":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"e":{"3":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"6":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"b":{"2":{"6":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"1":{"4":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"8":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"8":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"4":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"d":{"0":{"0":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"4":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"0":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"6":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"7":{"c":{"3":{"b":{"5":{"c":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"1":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":2.449489742783178}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},".":{"0":{"df":2,"docs":{"548":{"tf":1.0},"599":{"tf":1.0}}},"1":{"1":{".":{"3":{"df":1,"docs":{"419":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"404":{"tf":1.0}}},"3":{".":{"0":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"6":{":":{"9":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"6":{":":{"5":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"9":{":":{"5":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"6":{"3":{":":{"3":{"1":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"5":{"4":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{"1":{":":{"1":{"3":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"5":{"2":{":":{"4":{"3":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"7":{"1":{":":{"9":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{".":{"0":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"6":{"2":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"3":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"6":{"1":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"3":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"7":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"8":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"/":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"_":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"4":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"8":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"2":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"7":{"9":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"2":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"9":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"5":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"2":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"9":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{".":{"0":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"2":{"9":{":":{"2":{"1":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"x":{"df":3,"docs":{"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0}}}},"0":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"0":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":5,"docs":{"138":{"tf":1.0},"196":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0}}},"4":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"5":{"df":1,"docs":{"373":{"tf":1.0}}},"df":4,"docs":{"284":{"tf":1.4142135623730951},"380":{"tf":2.23606797749979},"397":{"tf":1.0},"404":{"tf":1.0}},"x":{"df":1,"docs":{"469":{"tf":1.0}}}},"1":{"df":5,"docs":{"284":{"tf":1.0},"307":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"2":{"9":{"df":1,"docs":{"268":{"tf":1.0}}},"df":5,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"503":{"tf":1.0},"599":{"tf":1.0}}},"3":{",":{"1":{"0":{",":{"1":{"6":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"0":{"0":{"df":1,"docs":{"555":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.0}}},"4":{"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"5":{"0":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"6":{"0":{"0":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}},"df":4,"docs":{"284":{"tf":1.0},"347":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"7":{"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"8":{"9":{"df":1,"docs":{"268":{"tf":1.0}}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"9":{":":{"1":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.0}}},"c":{"df":1,"docs":{"211":{"tf":1.0}}},"df":20,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"234":{"tf":1.0},"284":{"tf":1.4142135623730951},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.4142135623730951},"418":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":1.4142135623730951},"456":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":1.0},"564":{"tf":1.0}},"e":{"c":{"c":{"6":{"2":{"9":{"9":{"d":{"b":{"9":{"df":0,"docs":{},"e":{"c":{"8":{"2":{"3":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":3,"docs":{"268":{"tf":1.0},"284":{"tf":4.123105625617661},"397":{"tf":2.8284271247461903}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"182":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"2":{".":{"0":{"df":2,"docs":{"5":{"tf":1.4142135623730951},"6":{"tf":1.0}}},"df":0,"docs":{}},"/":{"3":{"/":{"6":{"df":1,"docs":{"235":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"0":{"0":{"df":2,"docs":{"336":{"tf":1.4142135623730951},"431":{"tf":1.0}}},"2":{"0":{"df":1,"docs":{"230":{"tf":1.0}}},"1":{"df":6,"docs":{"14":{"tf":2.0},"15":{"tf":1.0},"16":{"tf":1.0},"550":{"tf":1.4142135623730951},"553":{"tf":1.0},"599":{"tf":1.0}}},"4":{"df":1,"docs":{"538":{"tf":1.0}}},"df":0,"docs":{}},"df":5,"docs":{"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"1":{"df":2,"docs":{"196":{"tf":1.0},"404":{"tf":1.0}}},"2":{"df":2,"docs":{"310":{"tf":1.0},"404":{"tf":1.0}}},"3":{"df":2,"docs":{"404":{"tf":1.0},"440":{"tf":1.4142135623730951}}},"4":{":":{"1":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"404":{"tf":1.0}}},"5":{"df":1,"docs":{"404":{"tf":1.0}}},"6":{"df":1,"docs":{"404":{"tf":1.0}}},"7":{"7":{"0":{"a":{"3":{"0":{"d":{"9":{"df":0,"docs":{},"f":{"2":{"5":{"9":{"6":{"6":{"6":{"df":0,"docs":{},"f":{"b":{"4":{"7":{"0":{"d":{"6":{"df":0,"docs":{},"f":{"1":{"1":{"c":{"df":0,"docs":{},"f":{"1":{"8":{"5":{"1":{"df":0,"docs":{},"e":{"b":{"b":{"2":{"d":{"5":{"7":{"9":{"a":{"1":{"4":{"8":{"0":{"a":{"8":{"1":{"7":{"3":{"d":{"3":{"8":{"5":{"5":{"5":{"7":{"2":{"7":{"4":{"8":{"3":{"8":{"5":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"196":{"tf":1.0},"404":{"tf":1.0}}},"8":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":17,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"284":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"423":{"tf":1.0},"440":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"486":{"tf":1.0},"538":{"tf":1.0}}},"3":{"0":{"df":5,"docs":{"14":{"tf":2.0},"16":{"tf":1.0},"284":{"tf":1.0},"404":{"tf":1.0},"470":{"tf":1.7320508075688772}}},"1":{"df":1,"docs":{"404":{"tf":1.0}}},"2":{"df":2,"docs":{"347":{"tf":1.0},"404":{"tf":1.0}}},"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":9,"docs":{"284":{"tf":1.0},"328":{"tf":1.0},"397":{"tf":1.4142135623730951},"40":{"tf":1.0},"404":{"tf":1.0},"417":{"tf":1.0},"470":{"tf":1.0},"486":{"tf":1.0},"538":{"tf":1.0}},"r":{"d":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}}},"4":{"0":{"df":1,"docs":{"370":{"tf":1.0}}},"3":{"1":{"2":{"2":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"0":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":7,"docs":{"284":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"522":{"tf":1.7320508075688772}},"g":{"b":{"df":1,"docs":{"245":{"tf":1.0}}},"df":0,"docs":{}}},"5":{"0":{"0":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"k":{"b":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}}},"2":{"df":2,"docs":{"370":{"tf":1.0},"448":{"tf":1.0}}},"3":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"4":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"5":{"df":1,"docs":{"448":{"tf":1.0}}},"6":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"7":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"8":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"9":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"df":8,"docs":{"211":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"404":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.4142135623730951},"469":{"tf":1.0}}},"6":{"0":{"df":2,"docs":{"448":{"tf":1.0},"470":{"tf":1.7320508075688772}}},"2":{"2":{"9":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}},"s":{"df":1,"docs":{"221":{"tf":1.0}}}},"7":{"5":{"df":1,"docs":{"411":{"tf":1.0}}},"6":{"df":1,"docs":{"287":{"tf":1.0}}},"8":{"6":{"df":1,"docs":{"268":{"tf":1.0}}},"7":{"df":1,"docs":{"268":{"tf":1.0}}},"8":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"9":{"7":{"0":{"9":{"0":{"8":{"9":{"2":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.0}}},"8":{"0":{"8":{"0":{"df":2,"docs":{"538":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"df":1,"docs":{"292":{"tf":1.0}}},"df":6,"docs":{"209":{"tf":1.0},"284":{"tf":1.0},"358":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"503":{"tf":1.0}}},"9":{"6":{"df":1,"docs":{"336":{"tf":1.0}}},"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.4142135623730951},"397":{"tf":1.0},"404":{"tf":1.0}}},"_":{"df":7,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"328":{"tf":1.4142135623730951},"380":{"tf":2.0},"418":{"tf":1.0},"421":{"tf":2.0},"470":{"tf":1.0}}},"a":{".":{"c":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"(":{"b":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},">":{"(":{"&":{"'":{"a":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"343":{"tf":1.4142135623730951}}}}}},"b":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"453":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":7,"docs":{"217":{"tf":1.0},"292":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"472":{"tf":1.0},"517":{"tf":1.4142135623730951},"529":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.0}}}},"v":{"df":12,"docs":{"121":{"tf":1.0},"226":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.4142135623730951},"392":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"539":{"tf":1.0},"6":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"599":{"tf":1.0},"65":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":1,"docs":{"181":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":20,"docs":{"110":{"tf":1.4142135623730951},"112":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.4142135623730951},"203":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"27":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"33":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":2.23606797749979},"370":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"394":{"tf":1.0},"47":{"tf":1.0},"544":{"tf":1.0},"599":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"(":{"a":{"d":{"d":{"df":0,"docs":{},"r":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":8,"docs":{"15":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"258":{"tf":1.0},"336":{"tf":1.0},"421":{"tf":1.4142135623730951},"423":{"tf":1.0},"534":{"tf":1.0}}}},"s":{"df":0,"docs":{},"s":{"df":21,"docs":{"156":{"tf":1.0},"211":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"336":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.7320508075688772},"418":{"tf":2.0},"419":{"tf":1.4142135623730951},"421":{"tf":1.0},"422":{"tf":2.449489742783178},"423":{"tf":1.7320508075688772},"503":{"tf":1.0},"508":{"tf":1.4142135623730951},"512":{"tf":1.0},"62":{"tf":1.4142135623730951},"65":{"tf":1.0},"8":{"tf":1.0},"82":{"tf":1.0},"86":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"278":{"tf":1.0},"460":{"tf":1.0}}}}}}}},"r":{"d":{"df":2,"docs":{"342":{"tf":1.0},"422":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"218":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"478":{"tf":1.0}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":6,"docs":{"178":{"tf":1.0},"191":{"tf":1.0},"237":{"tf":1.0},"380":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0}}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":11,"docs":{"153":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"40":{"tf":1.0},"431":{"tf":1.0},"437":{"tf":1.4142135623730951},"464":{"tf":1.0},"49":{"tf":1.4142135623730951},"61":{"tf":1.0},"9":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"g":{"df":2,"docs":{"34":{"tf":1.0},"600":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"q":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.7320508075688772}}}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"328":{"tf":1.7320508075688772},"451":{"tf":1.0}}}}}},"t":{"df":6,"docs":{"217":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.0},"497":{"tf":1.0},"53":{"tf":1.0},"8":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"125":{"tf":1.0},"276":{"tf":1.0},"599":{"tf":1.0}}}},"v":{"df":8,"docs":{"12":{"tf":1.0},"15":{"tf":1.0},"177":{"tf":1.0},"389":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"419":{"tf":1.0},"422":{"tf":1.0}}},"x":{"df":4,"docs":{"192":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"237":{"tf":1.4142135623730951}}}},"o":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"422":{"tf":1.0}}},"df":2,"docs":{"177":{"tf":1.4142135623730951},"422":{"tf":2.23606797749979}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":70,"docs":{"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"178":{"tf":1.4142135623730951},"182":{"tf":1.0},"186":{"tf":1.0},"188":{"tf":1.0},"194":{"tf":1.0},"200":{"tf":1.0},"208":{"tf":1.0},"211":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"237":{"tf":1.0},"243":{"tf":1.0},"246":{"tf":1.0},"254":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.4142135623730951},"306":{"tf":1.0},"318":{"tf":1.0},"321":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"349":{"tf":1.0},"355":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":1.4142135623730951},"396":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"423":{"tf":1.0},"430":{"tf":1.0},"435":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"452":{"tf":1.0},"455":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"467":{"tf":1.0},"475":{"tf":1.0},"477":{"tf":1.0},"487":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"502":{"tf":1.4142135623730951},"519":{"tf":1.0},"537":{"tf":1.0},"562":{"tf":1.0}}}},"df":0,"docs":{}}}},"d":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":5,"docs":{"147":{"tf":1.0},"249":{"tf":1.0},"319":{"tf":1.7320508075688772},"336":{"tf":1.0},"522":{"tf":1.0}}}}},"d":{"df":87,"docs":{"156":{"tf":1.0},"157":{"tf":1.0},"158":{"tf":1.0},"159":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"178":{"tf":1.7320508075688772},"186":{"tf":1.0},"194":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.4142135623730951},"208":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":2.23606797749979},"211":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.7320508075688772},"220":{"tf":1.0},"221":{"tf":1.4142135623730951},"24":{"tf":1.0},"258":{"tf":1.0},"26":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"310":{"tf":1.0},"315":{"tf":1.0},"329":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":2.0},"34":{"tf":1.0},"346":{"tf":1.0},"36":{"tf":1.0},"369":{"tf":1.0},"370":{"tf":2.0},"379":{"tf":1.0},"38":{"tf":1.0},"380":{"tf":1.4142135623730951},"381":{"tf":1.0},"39":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.4142135623730951},"416":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.4142135623730951},"44":{"tf":1.0},"447":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"48":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"50":{"tf":1.0},"501":{"tf":1.0},"508":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.4142135623730951},"537":{"tf":1.0},"538":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0},"61":{"tf":1.4142135623730951},"96":{"tf":1.0},"97":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":12,"docs":{"16":{"tf":1.0},"191":{"tf":1.0},"221":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.4142135623730951},"341":{"tf":1.0},"389":{"tf":1.0},"417":{"tf":1.0},"469":{"tf":1.0},"507":{"tf":1.0},"6":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"372":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":8,"docs":{"155":{"tf":1.0},"16":{"tf":1.0},"29":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.0},"431":{"tf":1.4142135623730951},"46":{"tf":1.0},"470":{"tf":1.0}}}}}}},"df":27,"docs":{"157":{"tf":1.0},"16":{"tf":1.0},"177":{"tf":1.0},"199":{"tf":1.0},"21":{"tf":1.0},"214":{"tf":1.0},"221":{"tf":1.0},"26":{"tf":1.0},"286":{"tf":1.0},"328":{"tf":1.4142135623730951},"370":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.0},"39":{"tf":1.0},"408":{"tf":1.0},"421":{"tf":1.0},"453":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"478":{"tf":1.0},"489":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.4142135623730951},"562":{"tf":1.0},"599":{"tf":1.4142135623730951},"97":{"tf":1.0}},"j":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":35,"docs":{"15":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"199":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.4142135623730951},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"42":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"51":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"68":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"53":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":7,"docs":{"179":{"tf":1.0},"209":{"tf":1.0},"302":{"tf":1.0},"417":{"tf":1.0},"47":{"tf":1.0},"538":{"tf":1.0},"579":{"tf":1.0}}}}},"v":{"a":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"156":{"tf":1.0},"383":{"tf":1.0}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":5,"docs":{"128":{"tf":1.0},"338":{"tf":1.0},"403":{"tf":1.0},"417":{"tf":1.0},"517":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"502":{"tf":1.0}}}}}}},"i":{"c":{"df":4,"docs":{"245":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"340":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"357":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"370":{"tf":1.0},"397":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}},"r":{"a":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"57":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"16":{"tf":1.0},"292":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"g":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":20,"docs":{"199":{"tf":1.0},"200":{"tf":1.7320508075688772},"214":{"tf":1.0},"234":{"tf":1.4142135623730951},"237":{"tf":1.0},"258":{"tf":1.0},"292":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"313":{"tf":1.4142135623730951},"336":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.4142135623730951},"458":{"tf":1.0},"504":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.7320508075688772},"599":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"df":8,"docs":{"125":{"tf":1.0},"16":{"tf":1.0},"246":{"tf":1.0},"272":{"tf":1.4142135623730951},"292":{"tf":1.0},"370":{"tf":1.0},"503":{"tf":1.0},"59":{"tf":1.0}}}}}}},"df":1,"docs":{"199":{"tf":1.0}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"(":{"&":{"[":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"320":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":7,"docs":{"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"320":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":7,"docs":{"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"320":{"tf":1.4142135623730951}}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"276":{"tf":1.0},"349":{"tf":1.0},"372":{"tf":1.0}}}}}},"o":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"209":{"tf":1.0}}}}},"h":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}},"i":{"df":0,"docs":{},"m":{"df":7,"docs":{"10":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":2.0},"16":{"tf":1.0},"435":{"tf":1.0},"49":{"tf":1.0},"61":{"tf":1.0}}},"r":{"df":1,"docs":{"48":{"tf":1.0}}}},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"458":{"tf":1.0},"562":{"tf":1.0}}}}},"l":{"a":{"df":0,"docs":{},"n":{"'":{"df":11,"docs":{"187":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"230":{"tf":1.0},"234":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.7320508075688772},"284":{"tf":1.0},"41":{"tf":1.0},"512":{"tf":1.0},"518":{"tf":1.0}}},"/":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":1,"docs":{"296":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"489":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"157":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":115,"docs":{"156":{"tf":4.123105625617661},"165":{"tf":1.0},"167":{"tf":2.23606797749979},"168":{"tf":1.7320508075688772},"169":{"tf":1.4142135623730951},"171":{"tf":1.0},"173":{"tf":1.4142135623730951},"175":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.7320508075688772},"179":{"tf":1.0},"181":{"tf":1.0},"183":{"tf":1.0},"185":{"tf":1.0},"187":{"tf":1.4142135623730951},"188":{"tf":1.7320508075688772},"189":{"tf":1.4142135623730951},"190":{"tf":1.7320508075688772},"191":{"tf":1.0},"192":{"tf":1.0},"193":{"tf":1.0},"195":{"tf":2.0},"196":{"tf":1.7320508075688772},"197":{"tf":1.0},"198":{"tf":1.7320508075688772},"199":{"tf":2.23606797749979},"200":{"tf":2.0},"201":{"tf":1.0},"205":{"tf":1.7320508075688772},"207":{"tf":1.0},"209":{"tf":5.291502622129181},"213":{"tf":2.0},"214":{"tf":1.0},"215":{"tf":1.0},"217":{"tf":3.872983346207417},"218":{"tf":1.4142135623730951},"219":{"tf":1.0},"221":{"tf":3.605551275463989},"225":{"tf":1.4142135623730951},"226":{"tf":1.0},"227":{"tf":1.0},"230":{"tf":2.23606797749979},"231":{"tf":1.4142135623730951},"232":{"tf":1.7320508075688772},"233":{"tf":1.4142135623730951},"234":{"tf":1.0},"235":{"tf":1.7320508075688772},"237":{"tf":1.7320508075688772},"239":{"tf":1.4142135623730951},"241":{"tf":1.0},"242":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":3.0},"246":{"tf":2.23606797749979},"248":{"tf":1.7320508075688772},"250":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":2.0},"259":{"tf":1.7320508075688772},"263":{"tf":1.4142135623730951},"265":{"tf":1.0},"266":{"tf":1.0},"268":{"tf":4.242640687119285},"272":{"tf":1.4142135623730951},"273":{"tf":1.0},"274":{"tf":1.0},"276":{"tf":3.7416573867739413},"278":{"tf":1.0},"280":{"tf":1.4142135623730951},"282":{"tf":1.0},"284":{"tf":3.7416573867739413},"288":{"tf":1.7320508075688772},"290":{"tf":1.0},"292":{"tf":3.3166247903554},"300":{"tf":3.0},"309":{"tf":1.0},"340":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"370":{"tf":1.0},"386":{"tf":1.0},"394":{"tf":1.7320508075688772},"397":{"tf":1.4142135623730951},"41":{"tf":1.0},"414":{"tf":1.0},"436":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"500":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.7320508075688772},"509":{"tf":1.0},"510":{"tf":1.4142135623730951},"521":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"525":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.4142135623730951},"529":{"tf":1.0},"542":{"tf":1.7320508075688772},"65":{"tf":1.0},"67":{"tf":1.0},"71":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.0},"77":{"tf":1.0},"9":{"tf":1.0}}},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"198":{"tf":1.0}}}}},"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"572":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"df":3,"docs":{"147":{"tf":1.0},"356":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}}}}}},"i":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"292":{"tf":1.0}}}},"c":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"271":{"tf":1.0}}},"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"d":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"271":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"257":{"tf":1.0}}}},"v":{"df":1,"docs":{"268":{"tf":1.0}}}},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":15,"docs":{"122":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.4142135623730951},"209":{"tf":2.23606797749979},"242":{"tf":1.0},"245":{"tf":1.7320508075688772},"246":{"tf":1.0},"248":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"338":{"tf":1.0},"341":{"tf":1.7320508075688772},"61":{"tf":1.0},"62":{"tf":1.4142135623730951}}},"df":0,"docs":{},"w":{"df":22,"docs":{"134":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.7320508075688772},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"342":{"tf":1.0},"360":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"423":{"tf":2.0},"436":{"tf":1.0},"470":{"tf":1.4142135623730951},"521":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":7,"docs":{"154":{"tf":1.4142135623730951},"200":{"tf":1.0},"361":{"tf":1.0},"389":{"tf":1.0},"487":{"tf":1.0},"538":{"tf":1.0},"73":{"tf":1.0}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":27,"docs":{"120":{"tf":1.0},"174":{"tf":1.0},"177":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.0},"205":{"tf":1.0},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"235":{"tf":1.0},"258":{"tf":1.0},"264":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"29":{"tf":1.0},"317":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.4142135623730951},"408":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.4142135623730951},"456":{"tf":1.4142135623730951},"475":{"tf":1.7320508075688772},"498":{"tf":1.0},"515":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"89":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"34":{"tf":1.0}}}}},"df":0,"docs":{},"n":{"df":43,"docs":{"158":{"tf":1.0},"16":{"tf":1.4142135623730951},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"25":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.4142135623730951},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.7320508075688772},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.4142135623730951},"498":{"tf":1.0},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"55":{"tf":1.0},"561":{"tf":1.0},"579":{"tf":1.0},"82":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":8,"docs":{"192":{"tf":1.0},"21":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"3":{"tf":1.0},"311":{"tf":1.0},"375":{"tf":1.0},"61":{"tf":1.0}}}}}}}},"w":{"a":{"df":0,"docs":{},"y":{"df":31,"docs":{"10":{"tf":1.0},"139":{"tf":1.0},"156":{"tf":2.0},"165":{"tf":1.0},"211":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.4142135623730951},"350":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"389":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"418":{"tf":1.0},"42":{"tf":1.0},"504":{"tf":1.0},"52":{"tf":1.0},"538":{"tf":1.0},"76":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"z":{"df":2,"docs":{"53":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"212":{"tf":1.0}}}}}},"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"385":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"487":{"tf":1.0},"59":{"tf":1.0}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":1,"docs":{"130":{"tf":1.0}}}}}}}}}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"'":{"df":2,"docs":{"125":{"tf":1.0},"129":{"tf":1.4142135623730951}}},"df":3,"docs":{"125":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0}}}}}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":7,"docs":{"231":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.0},"394":{"tf":1.0},"470":{"tf":1.0},"513":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"16":{"tf":1.0}}}}},"n":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":2,"docs":{"251":{"tf":1.0},"61":{"tf":1.7320508075688772}},"u":{"df":1,"docs":{"372":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":4,"docs":{"271":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"538":{"tf":1.0}}}},"z":{"df":1,"docs":{"380":{"tf":1.7320508075688772}}}}}},"d":{"/":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"341":{"tf":1.0},"380":{"tf":1.0},"412":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"218":{"tf":1.0}}}},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"156":{"tf":1.0},"298":{"tf":1.0}}}}},"l":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"189":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":6,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"380":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"502":{"tf":2.0}}},"u":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"357":{"tf":1.0},"486":{"tf":1.0}}},"df":0,"docs":{}}},"y":{"df":5,"docs":{"198":{"tf":1.0},"256":{"tf":1.0},"312":{"tf":1.0},"401":{"tf":1.0},"521":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{"df":0,"docs":{},"m":{"df":1,"docs":{"218":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"h":{"df":30,"docs":{"156":{"tf":1.0},"201":{"tf":1.0},"218":{"tf":1.0},"241":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.4142135623730951},"265":{"tf":1.0},"272":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.4142135623730951},"300":{"tf":1.0},"313":{"tf":1.0},"318":{"tf":1.0},"325":{"tf":1.0},"336":{"tf":1.0},"344":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"437":{"tf":1.0},"464":{"tf":1.0},"475":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"511":{"tf":1.0},"59":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":42,"docs":{"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"22":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.4142135623730951},"275":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.4142135623730951},"306":{"tf":1.0},"335":{"tf":1.0},"342":{"tf":1.0},"346":{"tf":1.0},"363":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"437":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"50":{"tf":1.0},"501":{"tf":1.0},"502":{"tf":1.0},"519":{"tf":1.0},"534":{"tf":1.0},"537":{"tf":1.0},"57":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":2,"docs":{"380":{"tf":1.0},"417":{"tf":1.0}}}}},"df":0,"docs":{}}},"y":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"408":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"156":{"tf":1.0},"258":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"558":{"tf":1.0},"89":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":26,"docs":{"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"244":{"tf":1.0},"245":{"tf":1.0},"25":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.4142135623730951},"41":{"tf":2.0},"421":{"tf":1.0},"497":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"558":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"217":{"tf":1.0}}}}},"w":{"a":{"df":0,"docs":{},"y":{"df":4,"docs":{"309":{"tf":1.0},"359":{"tf":1.0},"389":{"tf":1.0},"503":{"tf":1.0}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"125":{"tf":1.0},"209":{"tf":1.0},"423":{"tf":1.0},"448":{"tf":1.0}}}}}}}},"p":{"a":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"5":{"tf":1.4142135623730951},"6":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":40,"docs":{"156":{"tf":1.7320508075688772},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"224":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.0},"294":{"tf":1.4142135623730951},"296":{"tf":1.0},"300":{"tf":1.4142135623730951},"309":{"tf":1.0},"321":{"tf":2.8284271247461903},"323":{"tf":1.4142135623730951},"324":{"tf":1.0},"336":{"tf":2.23606797749979},"338":{"tf":1.0},"342":{"tf":1.0},"349":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"423":{"tf":1.0},"454":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":2.0},"504":{"tf":1.4142135623730951},"507":{"tf":1.0},"508":{"tf":1.4142135623730951},"511":{"tf":1.0},"513":{"tf":1.0},"515":{"tf":1.0},"522":{"tf":1.4142135623730951},"526":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"535":{"tf":1.0},"599":{"tf":1.0}}},"p":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"268":{"tf":1.0},"372":{"tf":1.0}}}},"df":7,"docs":{"188":{"tf":1.0},"189":{"tf":1.4142135623730951},"190":{"tf":1.0},"201":{"tf":1.0},"336":{"tf":2.8284271247461903},"419":{"tf":1.0},"599":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"r":{"df":9,"docs":{"156":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.4142135623730951},"347":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"417":{"tf":1.0},"440":{"tf":4.242640687119285}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"195":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"df":1,"docs":{"192":{"tf":1.0}},"i":{"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":23,"docs":{"110":{"tf":1.7320508075688772},"111":{"tf":1.0},"116":{"tf":1.0},"118":{"tf":1.0},"127":{"tf":1.0},"132":{"tf":1.0},"136":{"tf":2.0},"139":{"tf":1.0},"145":{"tf":1.0},"179":{"tf":1.0},"195":{"tf":1.4142135623730951},"209":{"tf":1.0},"230":{"tf":1.0},"244":{"tf":1.4142135623730951},"284":{"tf":2.0},"336":{"tf":4.123105625617661},"356":{"tf":1.0},"357":{"tf":1.4142135623730951},"456":{"tf":1.0},"470":{"tf":1.0},"496":{"tf":1.0},"503":{"tf":1.0},"57":{"tf":1.0}}},"df":11,"docs":{"156":{"tf":1.0},"183":{"tf":1.0},"237":{"tf":1.0},"307":{"tf":1.0},"312":{"tf":1.0},"32":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"480":{"tf":1.0},"522":{"tf":1.4142135623730951},"565":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":2,"docs":{"110":{"tf":1.0},"383":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"a":{"c":{"df":0,"docs":{},"h":{"df":13,"docs":{"276":{"tf":1.7320508075688772},"292":{"tf":1.0},"341":{"tf":1.0},"361":{"tf":1.0},"37":{"tf":1.4142135623730951},"389":{"tf":1.0},"392":{"tf":1.0},"440":{"tf":1.0},"463":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":12,"docs":{"17":{"tf":1.0},"217":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"3":{"tf":1.0},"41":{"tf":1.4142135623730951},"470":{"tf":1.0},"51":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"558":{"tf":1.0}}}}},"v":{"df":2,"docs":{"16":{"tf":1.0},"17":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"15":{"tf":1.0}}}}}},"r":{"3":{"7":{"df":1,"docs":{"602":{"tf":1.0}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"205":{"tf":1.0},"34":{"tf":1.4142135623730951},"341":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}}},"c":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"<":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"268":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"328":{"tf":1.7320508075688772}}}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"328":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":4,"docs":{"328":{"tf":1.0},"394":{"tf":1.0},"470":{"tf":1.4142135623730951},"539":{"tf":2.0}},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":7,"docs":{"278":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"431":{"tf":1.0},"433":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":6,"docs":{"258":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"487":{"tf":1.0},"496":{"tf":1.0},"65":{"tf":1.0}}},"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":10,"docs":{"217":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"310":{"tf":1.0},"317":{"tf":1.0},"341":{"tf":1.0},"460":{"tf":1.0},"503":{"tf":1.0},"552":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":3,"docs":{"230":{"tf":1.4142135623730951},"231":{"tf":1.0},"232":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"g":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"c":{"=":{"1":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"217":{"tf":1.0},"245":{"tf":1.0},"292":{"tf":1.0},"573":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"0":{")":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{")":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"u":{"df":2,"docs":{"278":{"tf":1.0},"456":{"tf":1.0}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"294":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"538":{"tf":1.0},"581":{"tf":1.0}}}}}}},"v":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"c":{"8":{"8":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"s":{"df":8,"docs":{"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"42":{"tf":1.0},"543":{"tf":1.0},"573":{"tf":1.0},"81":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"252":{"tf":1.0}}}}}},"m":{"7":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"d":{"df":29,"docs":{"112":{"tf":1.0},"130":{"tf":1.0},"153":{"tf":1.0},"200":{"tf":1.0},"205":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"259":{"tf":1.0},"276":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"311":{"tf":1.0},"336":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.7320508075688772},"394":{"tf":1.0},"421":{"tf":1.0},"433":{"tf":1.0},"458":{"tf":1.0},"486":{"tf":1.0},"502":{"tf":1.0},"544":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.7320508075688772},"73":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":3,"docs":{"232":{"tf":1.0},"276":{"tf":1.0},"397":{"tf":1.0}}}},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}}}},"t":{"df":2,"docs":{"209":{"tf":1.0},"410":{"tf":1.0}},"i":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"457":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"358":{"tf":1.0}}},"df":0,"docs":{}},"k":{"df":82,"docs":{"100":{"tf":1.0},"109":{"tf":1.0},"113":{"tf":1.0},"117":{"tf":1.0},"126":{"tf":1.0},"135":{"tf":1.0},"144":{"tf":1.0},"154":{"tf":1.4142135623730951},"160":{"tf":1.0},"169":{"tf":1.0},"170":{"tf":1.0},"178":{"tf":1.0},"180":{"tf":1.0},"192":{"tf":1.0},"198":{"tf":1.0},"200":{"tf":1.0},"202":{"tf":1.0},"209":{"tf":2.0},"210":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"222":{"tf":1.0},"236":{"tf":1.0},"247":{"tf":1.0},"260":{"tf":1.0},"268":{"tf":1.4142135623730951},"269":{"tf":1.0},"27":{"tf":1.0},"277":{"tf":1.0},"284":{"tf":1.0},"285":{"tf":1.0},"293":{"tf":1.0},"30":{"tf":1.0},"300":{"tf":1.7320508075688772},"301":{"tf":1.0},"314":{"tf":1.0},"328":{"tf":1.0},"329":{"tf":1.0},"337":{"tf":1.0},"340":{"tf":1.0},"348":{"tf":1.0},"362":{"tf":1.0},"370":{"tf":1.0},"371":{"tf":1.0},"381":{"tf":1.0},"385":{"tf":1.0},"390":{"tf":1.0},"398":{"tf":1.0},"409":{"tf":1.0},"42":{"tf":1.4142135623730951},"424":{"tf":1.0},"43":{"tf":1.0},"432":{"tf":1.0},"441":{"tf":1.0},"448":{"tf":1.0},"449":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.0},"471":{"tf":1.0},"479":{"tf":1.0},"487":{"tf":1.0},"492":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.0},"505":{"tf":1.0},"51":{"tf":1.0},"524":{"tf":1.0},"53":{"tf":1.4142135623730951},"54":{"tf":1.0},"540":{"tf":1.0},"556":{"tf":1.0},"582":{"tf":1.0},"593":{"tf":1.0},"66":{"tf":1.0},"75":{"tf":1.0},"80":{"tf":1.0},"85":{"tf":1.0},"90":{"tf":1.0}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":6,"docs":{"264":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"349":{"tf":1.4142135623730951},"51":{"tf":1.0},"561":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"40":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"15":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"!":{"(":{"1":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{".":{"0":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":3,"docs":{"469":{"tf":1.4142135623730951},"558":{"tf":2.0},"559":{"tf":1.7320508075688772}},"e":{"df":1,"docs":{"556":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"463":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}},"o":{"c":{"df":0,"docs":{},"i":{"df":4,"docs":{"218":{"tf":1.4142135623730951},"370":{"tf":1.0},"431":{"tf":1.0},"579":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"m":{"df":10,"docs":{"196":{"tf":1.0},"200":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"317":{"tf":1.0},"343":{"tf":1.4142135623730951},"470":{"tf":1.0},"539":{"tf":1.0},"62":{"tf":1.0}},"p":{"df":0,"docs":{},"t":{"df":3,"docs":{"173":{"tf":1.0},"393":{"tf":1.0},"460":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"196":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"n":{"c":{"/":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"370":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":15,"docs":{"195":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.0},"230":{"tf":1.0},"300":{"tf":1.7320508075688772},"332":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.4142135623730951},"418":{"tf":1.0},"426":{"tf":1.0},"61":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":1,"docs":{"370":{"tf":1.0}}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"t":{"d":{":":{":":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"276":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":2,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"df":0,"docs":{},"{":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"276":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"257":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"392":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":2.23606797749979},"211":{"tf":1.0},"221":{"tf":2.23606797749979}}}}},"df":0,"docs":{}}}},"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"558":{"tf":1.0}}}}},"df":0,"docs":{}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{">":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"421":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":235,"docs":{"0":{"tf":1.0},"11":{"tf":2.0},"110":{"tf":1.0},"136":{"tf":1.0},"153":{"tf":1.7320508075688772},"156":{"tf":6.557438524302},"158":{"tf":1.0},"16":{"tf":1.0},"166":{"tf":1.0},"167":{"tf":1.4142135623730951},"169":{"tf":1.0},"173":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"181":{"tf":1.4142135623730951},"186":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"192":{"tf":1.4142135623730951},"194":{"tf":1.0},"195":{"tf":1.4142135623730951},"196":{"tf":2.23606797749979},"197":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951},"203":{"tf":1.4142135623730951},"208":{"tf":1.0},"209":{"tf":3.0},"211":{"tf":2.0},"216":{"tf":1.0},"217":{"tf":3.872983346207417},"218":{"tf":3.0},"219":{"tf":1.0},"220":{"tf":1.0},"221":{"tf":4.123105625617661},"223":{"tf":1.4142135623730951},"224":{"tf":1.4142135623730951},"228":{"tf":1.0},"23":{"tf":1.7320508075688772},"230":{"tf":1.4142135623730951},"233":{"tf":1.0},"237":{"tf":1.4142135623730951},"239":{"tf":1.4142135623730951},"24":{"tf":1.0},"240":{"tf":1.4142135623730951},"241":{"tf":1.0},"243":{"tf":1.0},"244":{"tf":1.0},"25":{"tf":1.0},"253":{"tf":1.0},"254":{"tf":1.0},"257":{"tf":3.0},"258":{"tf":2.0},"259":{"tf":3.4641016151377544},"261":{"tf":2.0},"263":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.0},"267":{"tf":1.0},"268":{"tf":3.1622776601683795},"27":{"tf":1.0},"270":{"tf":1.4142135623730951},"272":{"tf":1.0},"273":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":2.449489742783178},"278":{"tf":1.4142135623730951},"283":{"tf":1.0},"284":{"tf":2.6457513110645907},"288":{"tf":1.0},"289":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":4.242640687119285},"294":{"tf":1.4142135623730951},"299":{"tf":1.0},"3":{"tf":1.4142135623730951},"300":{"tf":3.872983346207417},"305":{"tf":1.0},"306":{"tf":1.0},"307":{"tf":2.449489742783178},"308":{"tf":1.0},"309":{"tf":2.0},"310":{"tf":2.0},"311":{"tf":2.0},"312":{"tf":1.4142135623730951},"313":{"tf":1.4142135623730951},"315":{"tf":2.23606797749979},"320":{"tf":1.0},"321":{"tf":2.23606797749979},"322":{"tf":1.0},"323":{"tf":1.7320508075688772},"324":{"tf":1.4142135623730951},"325":{"tf":1.0},"326":{"tf":1.0},"327":{"tf":1.0},"328":{"tf":1.7320508075688772},"330":{"tf":2.0},"331":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":2.0},"340":{"tf":1.0},"341":{"tf":2.6457513110645907},"342":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":2.23606797749979},"349":{"tf":1.4142135623730951},"350":{"tf":1.4142135623730951},"354":{"tf":1.0},"355":{"tf":1.0},"357":{"tf":3.1622776601683795},"358":{"tf":2.8284271247461903},"359":{"tf":1.4142135623730951},"360":{"tf":2.449489742783178},"363":{"tf":2.449489742783178},"365":{"tf":1.7320508075688772},"366":{"tf":1.4142135623730951},"367":{"tf":2.6457513110645907},"368":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":2.0},"370":{"tf":5.0990195135927845},"375":{"tf":1.0},"378":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":4.242640687119285},"382":{"tf":1.0},"383":{"tf":2.23606797749979},"385":{"tf":1.0},"386":{"tf":1.0},"387":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":3.0},"391":{"tf":2.23606797749979},"392":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.4142135623730951},"396":{"tf":1.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.4142135623730951},"4":{"tf":1.0},"40":{"tf":1.0},"403":{"tf":1.4142135623730951},"406":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":2.0},"414":{"tf":1.0},"416":{"tf":1.0},"419":{"tf":1.7320508075688772},"430":{"tf":1.0},"433":{"tf":1.0},"439":{"tf":1.0},"440":{"tf":1.0},"442":{"tf":1.0},"447":{"tf":1.0},"448":{"tf":2.449489742783178},"450":{"tf":1.0},"455":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.4142135623730951},"460":{"tf":1.7320508075688772},"462":{"tf":1.4142135623730951},"467":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":4.0},"472":{"tf":1.0},"475":{"tf":1.4142135623730951},"477":{"tf":1.0},"478":{"tf":1.4142135623730951},"480":{"tf":1.0},"481":{"tf":1.0},"483":{"tf":1.7320508075688772},"487":{"tf":1.0},"490":{"tf":1.7320508075688772},"501":{"tf":1.7320508075688772},"502":{"tf":2.23606797749979},"504":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"510":{"tf":1.0},"512":{"tf":1.0},"519":{"tf":1.7320508075688772},"522":{"tf":3.605551275463989},"523":{"tf":1.0},"525":{"tf":1.4142135623730951},"526":{"tf":2.0},"528":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"537":{"tf":1.7320508075688772},"538":{"tf":3.0},"541":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.7320508075688772},"545":{"tf":2.23606797749979},"546":{"tf":2.0},"547":{"tf":1.4142135623730951},"548":{"tf":1.7320508075688772},"549":{"tf":1.0},"553":{"tf":1.0},"556":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.0},"561":{"tf":1.0},"564":{"tf":1.4142135623730951},"566":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":1.0},"575":{"tf":1.4142135623730951},"576":{"tf":1.0},"579":{"tf":1.7320508075688772},"580":{"tf":1.0},"581":{"tf":1.0},"584":{"tf":1.0},"585":{"tf":1.0},"586":{"tf":1.0},"590":{"tf":1.0},"594":{"tf":1.0},"595":{"tf":1.0},"597":{"tf":1.0},"599":{"tf":3.872983346207417},"600":{"tf":1.0},"601":{"tf":1.0},"61":{"tf":2.6457513110645907},"64":{"tf":1.0},"76":{"tf":1.0},"8":{"tf":2.0},"81":{"tf":1.0},"86":{"tf":1.0},"89":{"tf":1.0},"9":{"tf":1.7320508075688772},"91":{"tf":1.4142135623730951},"92":{"tf":1.0}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":21,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"218":{"tf":1.4142135623730951},"230":{"tf":1.0},"232":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":2.0},"261":{"tf":1.0},"278":{"tf":1.0},"309":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"341":{"tf":1.0},"370":{"tf":1.0},"456":{"tf":1.4142135623730951},"458":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.7320508075688772}},"i":{"df":4,"docs":{"389":{"tf":1.0},"391":{"tf":1.7320508075688772},"393":{"tf":1.0},"394":{"tf":1.4142135623730951}}}}}}},"i":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":2,"docs":{"370":{"tf":1.0},"574":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"574":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"62":{"tf":1.0}},"i":{"c":{"df":0,"docs":{},"u":{"6":{"4":{"df":1,"docs":{"328":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"p":{"df":2,"docs":{"209":{"tf":1.0},"548":{"tf":1.4142135623730951}}}},"t":{"a":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":1,"docs":{"571":{"tf":1.0}}},"k":{"df":1,"docs":{"125":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"487":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":14,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"213":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"330":{"tf":1.0},"349":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.0},"469":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"200":{"tf":1.0},"340":{"tf":1.0},"515":{"tf":1.0}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":6,"docs":{"209":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"380":{"tf":1.0},"494":{"tf":1.4142135623730951},"539":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"431":{"tf":1.4142135623730951}}}}},"o":{"df":0,"docs":{},"r":{"'":{"df":4,"docs":{"280":{"tf":1.0},"295":{"tf":1.0},"303":{"tf":1.0},"364":{"tf":1.0}}},"df":15,"docs":{"171":{"tf":1.4142135623730951},"192":{"tf":1.0},"199":{"tf":1.0},"238":{"tf":1.0},"252":{"tf":1.0},"262":{"tf":1.0},"366":{"tf":1.0},"384":{"tf":1.0},"423":{"tf":1.0},"426":{"tf":1.0},"444":{"tf":1.0},"478":{"tf":1.0},"483":{"tf":1.0},"513":{"tf":1.0},"54":{"tf":1.4142135623730951}}}}},"o":{"df":1,"docs":{"347":{"tf":1.4142135623730951}},"m":{"a":{"df":0,"docs":{},"t":{"df":4,"docs":{"178":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0}}}},"df":1,"docs":{"526":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":19,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"111":{"tf":1.0},"147":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.0},"209":{"tf":1.0},"284":{"tf":1.4142135623730951},"318":{"tf":1.0},"336":{"tf":1.0},"394":{"tf":1.0},"403":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0},"82":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"359":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"i":{"d":{"df":13,"docs":{"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"252":{"tf":1.0},"272":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.0},"417":{"tf":1.4142135623730951},"474":{"tf":1.0},"478":{"tf":1.7320508075688772},"513":{"tf":1.0},"564":{"tf":1.0},"62":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":35,"docs":{"156":{"tf":2.0},"169":{"tf":1.7320508075688772},"171":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"195":{"tf":1.4142135623730951},"196":{"tf":1.0},"205":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"268":{"tf":2.23606797749979},"271":{"tf":1.0},"292":{"tf":1.7320508075688772},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"315":{"tf":1.0},"320":{"tf":1.0},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"403":{"tf":1.0},"419":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0},"522":{"tf":1.7320508075688772},"523":{"tf":1.4142135623730951},"526":{"tf":1.0},"539":{"tf":1.4142135623730951},"556":{"tf":1.0},"558":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}},"r":{"d":{"df":8,"docs":{"14":{"tf":1.0},"15":{"tf":1.0},"16":{"tf":1.0},"19":{"tf":1.7320508075688772},"55":{"tf":1.0},"58":{"tf":1.4142135623730951},"59":{"tf":2.0},"60":{"tf":1.0}}},"df":8,"docs":{"171":{"tf":1.0},"230":{"tf":1.0},"412":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"584":{"tf":1.0},"585":{"tf":1.0},"81":{"tf":1.0}}},"y":{"df":4,"docs":{"199":{"tf":1.0},"221":{"tf":1.0},"357":{"tf":1.0},"419":{"tf":1.0}}}},"df":1,"docs":{"599":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"223":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"325":{"tf":1.0}}},"df":0,"docs":{}}}}},"b":{"+":{">":{"5":{"5":{"df":1,"docs":{"448":{"tf":1.0}}},"6":{"df":1,"docs":{"448":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"k":{"df":21,"docs":{"209":{"tf":1.0},"218":{"tf":1.0},"237":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.0},"278":{"tf":1.0},"289":{"tf":1.0},"310":{"tf":1.0},"389":{"tf":1.0},"417":{"tf":1.4142135623730951},"425":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.0},"498":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"539":{"tf":1.4142135623730951},"579":{"tf":1.0},"598":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"178":{"tf":1.0},"230":{"tf":1.0}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":21,"docs":{"127":{"tf":1.0},"164":{"tf":1.0},"214":{"tf":1.0},"248":{"tf":1.0},"28":{"tf":1.0},"280":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.4142135623730951},"300":{"tf":1.0},"316":{"tf":1.0},"336":{"tf":1.4142135623730951},"418":{"tf":1.0},"433":{"tf":1.0},"436":{"tf":1.0},"440":{"tf":1.0},"444":{"tf":1.0},"460":{"tf":1.0},"538":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"237":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":5,"docs":{"284":{"tf":1.0},"397":{"tf":2.23606797749979},"404":{"tf":1.0},"405":{"tf":1.4142135623730951},"539":{"tf":1.0}},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"2":{"5":{":":{"1":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"338":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"d":{"df":5,"docs":{"189":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"397":{"tf":1.4142135623730951}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"603":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"e":{"df":2,"docs":{"460":{"tf":1.0},"53":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"116":{"tf":1.0},"457":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"g":{"df":2,"docs":{"217":{"tf":1.0},"370":{"tf":1.0}}}},"r":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"b":{"a":{"df":0,"docs":{},"r":{"a":{"'":{"df":15,"docs":{"209":{"tf":1.0},"300":{"tf":1.0},"318":{"tf":1.0},"341":{"tf":1.4142135623730951},"342":{"tf":1.0},"344":{"tf":1.0},"356":{"tf":1.4142135623730951},"359":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.4142135623730951},"385":{"tf":1.0},"389":{"tf":1.0},"41":{"tf":1.0},"480":{"tf":1.0},"539":{"tf":1.0}}},"df":101,"docs":{"156":{"tf":4.58257569495584},"169":{"tf":1.4142135623730951},"171":{"tf":1.0},"174":{"tf":1.0},"178":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":3.872983346207417},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"221":{"tf":2.449489742783178},"225":{"tf":1.4142135623730951},"226":{"tf":1.0},"240":{"tf":1.0},"245":{"tf":1.7320508075688772},"251":{"tf":1.0},"264":{"tf":1.4142135623730951},"268":{"tf":3.0},"272":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.4142135623730951},"297":{"tf":1.0},"298":{"tf":1.0},"300":{"tf":3.3166247903554},"304":{"tf":1.4142135623730951},"305":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"316":{"tf":1.0},"318":{"tf":1.4142135623730951},"320":{"tf":1.0},"321":{"tf":2.0},"322":{"tf":1.0},"324":{"tf":1.0},"326":{"tf":1.0},"328":{"tf":3.0},"332":{"tf":1.0},"334":{"tf":1.0},"336":{"tf":4.358898943540674},"339":{"tf":1.0},"340":{"tf":1.4142135623730951},"344":{"tf":1.0},"345":{"tf":1.0},"347":{"tf":3.1622776601683795},"352":{"tf":1.0},"354":{"tf":1.0},"357":{"tf":1.4142135623730951},"359":{"tf":1.4142135623730951},"360":{"tf":1.4142135623730951},"361":{"tf":1.0},"366":{"tf":1.7320508075688772},"367":{"tf":1.0},"368":{"tf":1.0},"370":{"tf":2.449489742783178},"376":{"tf":1.0},"378":{"tf":1.0},"380":{"tf":4.242640687119285},"382":{"tf":1.4142135623730951},"383":{"tf":1.0},"385":{"tf":1.0},"386":{"tf":1.4142135623730951},"387":{"tf":1.0},"389":{"tf":3.0},"393":{"tf":1.4142135623730951},"395":{"tf":1.0},"397":{"tf":1.4142135623730951},"401":{"tf":1.0},"404":{"tf":1.0},"406":{"tf":1.0},"408":{"tf":2.0},"41":{"tf":1.0},"413":{"tf":1.4142135623730951},"415":{"tf":1.0},"417":{"tf":2.23606797749979},"420":{"tf":1.0},"421":{"tf":2.449489742783178},"423":{"tf":1.0},"425":{"tf":1.0},"427":{"tf":1.4142135623730951},"445":{"tf":1.0},"458":{"tf":1.4142135623730951},"463":{"tf":1.0},"475":{"tf":1.0},"478":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.7320508075688772},"513":{"tf":1.4142135623730951},"525":{"tf":1.0},"531":{"tf":1.4142135623730951},"536":{"tf":1.0},"538":{"tf":4.358898943540674},"539":{"tf":2.6457513110645907},"541":{"tf":1.0},"545":{"tf":1.4142135623730951},"65":{"tf":1.0},"67":{"tf":1.0},"89":{"tf":1.4142135623730951},"91":{"tf":1.0},"92":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":4,"docs":{"380":{"tf":1.0},"504":{"tf":1.0},"576":{"tf":1.0},"578":{"tf":1.4142135623730951}},"e":{"df":1,"docs":{"232":{"tf":1.0}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"572":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"e":{"df":39,"docs":{"15":{"tf":1.0},"154":{"tf":1.4142135623730951},"162":{"tf":1.0},"17":{"tf":1.0},"173":{"tf":1.0},"18":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"24":{"tf":1.0},"250":{"tf":1.0},"268":{"tf":1.4142135623730951},"28":{"tf":1.0},"294":{"tf":1.4142135623730951},"296":{"tf":1.0},"303":{"tf":1.0},"336":{"tf":2.0},"340":{"tf":1.0},"341":{"tf":1.4142135623730951},"364":{"tf":1.0},"38":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"422":{"tf":1.0},"434":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.0},"473":{"tf":1.0},"502":{"tf":1.0},"516":{"tf":1.0},"542":{"tf":1.0},"570":{"tf":1.0},"596":{"tf":1.0},"62":{"tf":1.4142135623730951},"65":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"393":{"tf":1.0}}}}}},"i":{"c":{"df":13,"docs":{"156":{"tf":2.0},"167":{"tf":1.0},"195":{"tf":1.0},"258":{"tf":1.0},"309":{"tf":1.0},"318":{"tf":1.0},"359":{"tf":1.0},"374":{"tf":1.0},"383":{"tf":1.0},"397":{"tf":1.0},"469":{"tf":1.0},"573":{"tf":1.0},"96":{"tf":1.0}}},"df":1,"docs":{"550":{"tf":1.0}}}}},"df":5,"docs":{"12":{"tf":1.0},"211":{"tf":1.4142135623730951},"217":{"tf":1.0},"421":{"tf":1.7320508075688772},"73":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"414":{"tf":1.0}}},"r":{"df":1,"docs":{"382":{"tf":1.0}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}}}}}}}},"c":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"328":{"tf":1.0},"470":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":12,"docs":{"112":{"tf":1.0},"139":{"tf":1.0},"259":{"tf":1.0},"278":{"tf":1.4142135623730951},"292":{"tf":1.0},"321":{"tf":1.0},"372":{"tf":1.0},"456":{"tf":1.0},"532":{"tf":1.0},"54":{"tf":1.0},"562":{"tf":1.0},"8":{"tf":1.0}}}}},"df":26,"docs":{"127":{"tf":1.0},"130":{"tf":1.0},"189":{"tf":1.0},"209":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"272":{"tf":1.0},"309":{"tf":1.0},"316":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"460":{"tf":1.0},"503":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0},"55":{"tf":1.0},"599":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":32,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"169":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"183":{"tf":1.0},"195":{"tf":1.0},"198":{"tf":1.0},"218":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.0},"359":{"tf":1.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.4142135623730951},"402":{"tf":1.0},"414":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.0},"445":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"502":{"tf":1.4142135623730951},"538":{"tf":1.7320508075688772},"599":{"tf":1.4142135623730951},"61":{"tf":1.0}}}}},"g":{"a":{"df":0,"docs":{},"n":{"df":3,"docs":{"389":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":10,"docs":{"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"235":{"tf":1.0},"284":{"tf":1.7320508075688772},"289":{"tf":1.0},"313":{"tf":1.0},"336":{"tf":1.4142135623730951},"380":{"tf":1.0},"458":{"tf":1.0},"599":{"tf":1.0}},"n":{"df":1,"docs":{"363":{"tf":1.0}}}}}},"h":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"300":{"tf":1.0}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"448":{"tf":1.0},"450":{"tf":1.0},"538":{"tf":1.0}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"462":{"tf":1.0}}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":6,"docs":{"134":{"tf":1.0},"240":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"246":{"tf":1.0}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":5,"docs":{"336":{"tf":1.0},"408":{"tf":1.0},"470":{"tf":1.0},"538":{"tf":1.0},"8":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"w":{"df":2,"docs":{"404":{"tf":1.0},"516":{"tf":1.0}}}},"t":{"df":1,"docs":{"457":{"tf":1.0}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}}}},"df":7,"docs":{"209":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.0},"363":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.4142135623730951},"538":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"341":{"tf":1.0}}}},"df":0,"docs":{},"t":{"df":15,"docs":{"259":{"tf":1.0},"278":{"tf":1.0},"41":{"tf":1.0},"427":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"464":{"tf":1.0},"495":{"tf":1.0},"514":{"tf":1.4142135623730951},"532":{"tf":1.4142135623730951},"54":{"tf":1.0},"546":{"tf":1.7320508075688772},"79":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"499":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":18,"docs":{"110":{"tf":1.0},"156":{"tf":1.4142135623730951},"159":{"tf":1.0},"16":{"tf":1.4142135623730951},"168":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"32":{"tf":1.0},"389":{"tf":1.0},"421":{"tf":1.0},"457":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"48":{"tf":1.0},"486":{"tf":1.0},"491":{"tf":1.0},"55":{"tf":1.0},"59":{"tf":1.0}}}},"t":{"df":1,"docs":{"538":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":33,"docs":{"131":{"tf":1.0},"138":{"tf":1.0},"214":{"tf":1.0},"258":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.4142135623730951},"33":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951},"36":{"tf":1.0},"363":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"423":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.7320508075688772},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"72":{"tf":1.0},"76":{"tf":1.0},"82":{"tf":1.0},"96":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":24,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"278":{"tf":1.0},"311":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"383":{"tf":1.7320508075688772},"391":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.4142135623730951},"456":{"tf":1.0},"469":{"tf":1.4142135623730951},"47":{"tf":1.0},"470":{"tf":1.7320508075688772},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":3,"docs":{"209":{"tf":1.0},"573":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}}}},"i":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"463":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"b":{"df":0,"docs":{},"v":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":10,"docs":{"15":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"315":{"tf":1.0},"356":{"tf":1.4142135623730951},"359":{"tf":1.7320508075688772},"380":{"tf":1.0},"478":{"tf":1.0},"487":{"tf":1.4142135623730951},"599":{"tf":1.0}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"161":{"tf":1.0},"28":{"tf":1.0},"302":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"573":{"tf":1.0}}},"df":0,"docs":{}}}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"139":{"tf":1.0}}}}}}},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"313":{"tf":1.0},"370":{"tf":1.0},"448":{"tf":1.0}}}}},"d":{"(":{"1":{"5":{"0":{"_":{"df":0,"docs":{},"i":{"6":{"4":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"456":{"tf":1.0}}}}}},"df":0,"docs":{}},"t":{"df":28,"docs":{"178":{"tf":1.0},"18":{"tf":1.0},"190":{"tf":1.4142135623730951},"217":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.0},"3":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"358":{"tf":1.4142135623730951},"359":{"tf":1.7320508075688772},"363":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":1.4142135623730951},"375":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.0},"513":{"tf":1.0},"539":{"tf":1.0},"552":{"tf":1.0},"561":{"tf":1.0},"599":{"tf":1.7320508075688772},"82":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"174":{"tf":1.0},"259":{"tf":1.7320508075688772}}}}}}},"l":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"300":{"tf":1.0},"380":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"361":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}}},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":2,"docs":{"347":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"n":{"(":{"d":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"309":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"o":{">":{"(":{"df":0,"docs":{},"f":{"df":1,"docs":{"309":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":11,"docs":{"218":{"tf":1.0},"308":{"tf":1.4142135623730951},"309":{"tf":2.0},"310":{"tf":1.0},"313":{"tf":1.0},"318":{"tf":1.7320508075688772},"320":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.0},"325":{"tf":2.449489742783178},"478":{"tf":1.0}}}}},"df":39,"docs":{"110":{"tf":1.0},"156":{"tf":1.7320508075688772},"189":{"tf":1.0},"190":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":2.23606797749979},"270":{"tf":1.7320508075688772},"271":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.7320508075688772},"300":{"tf":1.0},"309":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"323":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.7320508075688772},"350":{"tf":1.0},"360":{"tf":1.4142135623730951},"365":{"tf":2.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"385":{"tf":1.0},"399":{"tf":1.0},"408":{"tf":1.0},"412":{"tf":1.0},"422":{"tf":1.0},"448":{"tf":1.4142135623730951},"456":{"tf":2.0},"470":{"tf":1.4142135623730951},"522":{"tf":1.4142135623730951},"526":{"tf":1.0},"538":{"tf":2.6457513110645907},"539":{"tf":1.0},"558":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"<":{"c":{"df":1,"docs":{"470":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"df":23,"docs":{"162":{"tf":1.0},"192":{"tf":1.0},"199":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"276":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"319":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.4142135623730951},"36":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"365":{"tf":2.0},"367":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"486":{"tf":1.0},"599":{"tf":2.0},"60":{"tf":1.0},"9":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"258":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"560":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"e":{"df":1,"docs":{"218":{"tf":1.0}}}}},"o":{"a":{"df":0,"docs":{},"r":{"d":{"df":5,"docs":{"245":{"tf":1.0},"460":{"tf":1.0},"557":{"tf":1.4142135623730951},"558":{"tf":1.4142135623730951},"559":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"357":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":5,"docs":{"195":{"tf":1.7320508075688772},"201":{"tf":1.0},"258":{"tf":1.4142135623730951},"292":{"tf":2.8284271247461903},"523":{"tf":1.4142135623730951}}},"y":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"195":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"258":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"232":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"k":{"/":{"0":{"7":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"s":{"/":{"0":{"3":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"_":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":1,"docs":{"271":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":11,"docs":{"268":{"tf":1.0},"358":{"tf":2.0},"360":{"tf":1.4142135623730951},"365":{"tf":1.0},"370":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.7320508075688772},"483":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"599":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"284":{"tf":1.0},"380":{"tf":1.0}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"389":{"tf":1.0},"394":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":17,"docs":{"156":{"tf":1.0},"189":{"tf":1.0},"217":{"tf":3.4641016151377544},"218":{"tf":2.6457513110645907},"294":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.4142135623730951},"415":{"tf":1.0},"417":{"tf":4.358898943540674},"418":{"tf":2.0},"419":{"tf":3.4641016151377544},"421":{"tf":2.8284271247461903},"422":{"tf":2.0},"423":{"tf":1.4142135623730951},"425":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"235":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":17,"docs":{"1":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"209":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"418":{"tf":1.0},"470":{"tf":1.0},"544":{"tf":1.4142135623730951},"55":{"tf":1.0},"57":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"389":{"tf":1.0}}}},"df":0,"docs":{}}}}},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"538":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"d":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"472":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"268":{"tf":1.0}}}}},"df":11,"docs":{"198":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.4142135623730951},"475":{"tf":1.0},"538":{"tf":1.7320508075688772},"564":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"x":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":2,"docs":{"156":{"tf":1.0},"380":{"tf":1.4142135623730951}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":4,"docs":{"156":{"tf":1.0},"221":{"tf":1.0},"370":{"tf":1.0},"375":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}}}}}},"df":5,"docs":{"156":{"tf":1.0},"246":{"tf":1.0},"251":{"tf":1.0},"380":{"tf":1.4142135623730951},"572":{"tf":1.0}}}}}},"df":0,"docs":{}},"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":8,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"292":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"448":{"tf":1.4142135623730951},"502":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"211":{"tf":1.0}}}},"df":16,"docs":{"156":{"tf":1.0},"209":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.4142135623730951},"265":{"tf":1.0},"292":{"tf":1.7320508075688772},"370":{"tf":2.0},"380":{"tf":2.23606797749979},"397":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.4142135623730951},"515":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":2.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"<":{"'":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"y":{"df":1,"docs":{"300":{"tf":1.0}}}},"r":{"a":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"300":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":46,"docs":{"15":{"tf":2.23606797749979},"158":{"tf":1.0},"16":{"tf":2.23606797749979},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"46":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"486":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"55":{"tf":1.0},"58":{"tf":1.0},"59":{"tf":1.0},"60":{"tf":1.0}}}}}}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"200":{"tf":2.0},"276":{"tf":1.0},"336":{"tf":1.0}}}},"d":{"df":1,"docs":{"389":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"602":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"53":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"df":10,"docs":{"171":{"tf":1.0},"223":{"tf":1.0},"328":{"tf":1.7320508075688772},"380":{"tf":1.0},"421":{"tf":1.4142135623730951},"448":{"tf":1.0},"450":{"tf":1.4142135623730951},"451":{"tf":1.0},"470":{"tf":1.0},"552":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"341":{"tf":1.4142135623730951}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"404":{"tf":1.0},"448":{"tf":2.0},"450":{"tf":1.0},"453":{"tf":1.0}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"268":{"tf":1.0},"370":{"tf":1.0}}}}},"df":0,"docs":{}},"i":{"d":{"df":0,"docs":{},"g":{"df":6,"docs":{"156":{"tf":1.4142135623730951},"300":{"tf":1.0},"305":{"tf":1.0},"311":{"tf":1.0},"456":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"359":{"tf":1.0},"503":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"179":{"tf":1.0},"358":{"tf":1.0},"503":{"tf":1.0}}}}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"394":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"g":{"df":16,"docs":{"156":{"tf":1.0},"268":{"tf":1.0},"382":{"tf":1.0},"41":{"tf":2.0},"410":{"tf":1.0},"427":{"tf":1.0},"433":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.0},"62":{"tf":1.0},"64":{"tf":1.0},"77":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"9":{"tf":1.0},"92":{"tf":1.0}}}}},"o":{"a":{"d":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"279":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"258":{"tf":1.0},"261":{"tf":1.0}}}}},"df":0,"docs":{}},"c":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"s":{"df":3,"docs":{"16":{"tf":1.0},"25":{"tf":1.0},"397":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"217":{"tf":1.0},"542":{"tf":1.0},"62":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"336":{"tf":1.0}}}},"t":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}},"u":{"b":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"565":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"418":{"tf":1.0}}},"df":0,"docs":{}}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"418":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":2,"docs":{"370":{"tf":1.0},"418":{"tf":2.23606797749979}},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"347":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"d":{"(":{"3":{"2":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":4,"docs":{"195":{"tf":2.0},"209":{"tf":1.0},"336":{"tf":2.449489742783178},"418":{"tf":1.7320508075688772}},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"g":{"df":26,"docs":{"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"168":{"tf":1.0},"173":{"tf":1.0},"182":{"tf":1.0},"2":{"tf":1.0},"200":{"tf":1.0},"237":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"347":{"tf":1.0},"397":{"tf":2.0},"417":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.4142135623730951},"434":{"tf":1.0},"456":{"tf":1.0},"46":{"tf":1.0},"556":{"tf":2.23606797749979},"557":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.0}}},"i":{"df":0,"docs":{},"l":{"d":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"110":{"tf":1.0}}}},"df":30,"docs":{"11":{"tf":1.0},"110":{"tf":1.4142135623730951},"130":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":2.23606797749979},"195":{"tf":1.0},"221":{"tf":1.0},"240":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"312":{"tf":1.0},"326":{"tf":1.0},"328":{"tf":1.4142135623730951},"330":{"tf":1.4142135623730951},"333":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.4142135623730951},"383":{"tf":1.0},"389":{"tf":1.0},"458":{"tf":1.0},"466":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"473":{"tf":1.0},"486":{"tf":1.0},"597":{"tf":1.0},"72":{"tf":1.0},"8":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"df":17,"docs":{"103":{"tf":1.0},"108":{"tf":1.0},"11":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0},"195":{"tf":1.0},"211":{"tf":1.0},"276":{"tf":1.0},"307":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"323":{"tf":1.0},"599":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"198":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"481":{"tf":1.0},"517":{"tf":1.0}}}},"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":5,"docs":{"171":{"tf":1.0},"191":{"tf":1.0},"349":{"tf":1.0},"76":{"tf":1.0},"81":{"tf":1.0}}}}},"df":0,"docs":{},"n":{"df":1,"docs":{"156":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"df":5,"docs":{"130":{"tf":1.0},"139":{"tf":1.4142135623730951},"292":{"tf":1.0},"347":{"tf":1.4142135623730951},"52":{"tf":1.0}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"188":{"tf":1.0},"336":{"tf":1.0},"453":{"tf":1.0},"503":{"tf":1.0}}}}}},"y":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"z":{"df":0,"docs":{},"z":{"df":1,"docs":{"538":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"328":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"e":{"df":5,"docs":{"195":{"tf":1.0},"209":{"tf":1.4142135623730951},"245":{"tf":1.0},"336":{"tf":2.0},"347":{"tf":1.4142135623730951}}}}}},"c":{"+":{"+":{"2":{"0":{"'":{"df":1,"docs":{"347":{"tf":1.0}}},"df":1,"docs":{"347":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"/":{"c":{"df":4,"docs":{"259":{"tf":1.0},"460":{"tf":1.0},"474":{"tf":1.0},"65":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"156":{"tf":1.0},"165":{"tf":1.0},"167":{"tf":2.0},"168":{"tf":1.0},"169":{"tf":2.23606797749979}}}},"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"189":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"555":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}},"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"c":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":11,"docs":{"292":{"tf":1.0},"294":{"tf":2.0},"296":{"tf":1.0},"300":{"tf":1.0},"324":{"tf":1.0},"336":{"tf":4.795831523312719},"341":{"tf":1.0},"344":{"tf":1.4142135623730951},"418":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":51,"docs":{"150":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":2.23606797749979},"209":{"tf":2.8284271247461903},"217":{"tf":2.6457513110645907},"218":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":2.0},"268":{"tf":1.7320508075688772},"276":{"tf":2.6457513110645907},"284":{"tf":1.0},"300":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.4142135623730951},"320":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":3.4641016151377544},"341":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.8284271247461903},"389":{"tf":1.0},"391":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"417":{"tf":3.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.4142135623730951},"457":{"tf":2.0},"470":{"tf":1.0},"478":{"tf":1.0},"487":{"tf":1.0},"502":{"tf":1.7320508075688772},"503":{"tf":1.0},"54":{"tf":1.0},"578":{"tf":1.0},"61":{"tf":1.0}},"e":{"df":1,"docs":{"349":{"tf":1.0}},"r":{"df":5,"docs":{"217":{"tf":1.0},"336":{"tf":1.0},"349":{"tf":1.0},"403":{"tf":1.0},"573":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"419":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"m":{"df":0,"docs":{},"e":{"df":5,"docs":{"130":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"404":{"tf":1.0},"470":{"tf":1.0}},"r":{"a":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"457":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"457":{"tf":1.0}}}}}},"df":4,"docs":{"456":{"tf":2.449489742783178},"457":{"tf":2.0},"458":{"tf":2.449489742783178},"462":{"tf":1.0}}},"df":0,"docs":{}}}},"n":{"'":{"df":0,"docs":{},"t":{"df":21,"docs":{"156":{"tf":1.4142135623730951},"178":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.4142135623730951},"292":{"tf":1.7320508075688772},"307":{"tf":1.0},"312":{"tf":1.0},"315":{"tf":1.0},"322":{"tf":1.0},"370":{"tf":1.4142135623730951},"397":{"tf":1.0},"408":{"tf":1.0},"534":{"tf":1.0},"54":{"tf":1.0},"578":{"tf":1.0},"59":{"tf":1.4142135623730951}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":6,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"178":{"tf":1.7320508075688772},"181":{"tf":1.0},"341":{"tf":1.0},"349":{"tf":1.4142135623730951}}}}},"d":{"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"245":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"a":{"b":{"df":0,"docs":{},"l":{"df":7,"docs":{"110":{"tf":1.4142135623730951},"292":{"tf":1.0},"338":{"tf":1.4142135623730951},"456":{"tf":1.0},"503":{"tf":1.0},"507":{"tf":1.0},"515":{"tf":1.0}}}},"c":{"df":2,"docs":{"538":{"tf":1.7320508075688772},"539":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":2,"docs":{"15":{"tf":1.0},"389":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"539":{"tf":1.0}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":4,"docs":{"218":{"tf":1.4142135623730951},"560":{"tf":1.0},"561":{"tf":1.7320508075688772},"581":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":11,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.0},"198":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.0},"417":{"tf":1.4142135623730951},"456":{"tf":1.0},"515":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"276":{"tf":1.0}}}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"156":{"tf":1.0},"218":{"tf":1.0},"328":{"tf":1.0},"334":{"tf":1.0}}}}}}}},"g":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":3,"docs":{"221":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.0}}}}}}},"df":6,"docs":{"110":{"tf":1.0},"422":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.4142135623730951},"523":{"tf":1.0},"82":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":40,"docs":{"154":{"tf":1.0},"164":{"tf":1.0},"178":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.7320508075688772},"261":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.4142135623730951},"320":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.4142135623730951},"417":{"tf":1.0},"423":{"tf":1.4142135623730951},"451":{"tf":1.0},"462":{"tf":1.0},"516":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"561":{"tf":1.0},"564":{"tf":1.0},"57":{"tf":1.0},"572":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.7320508075688772},"62":{"tf":1.0},"96":{"tf":1.0}}},"t":{"df":7,"docs":{"352":{"tf":1.0},"63":{"tf":1.0},"70":{"tf":1.0},"78":{"tf":1.0},"83":{"tf":1.0},"88":{"tf":1.0},"9":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"200":{"tf":1.0},"25":{"tf":1.0},"322":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"558":{"tf":1.0}},"i":{"df":3,"docs":{"16":{"tf":1.0},"19":{"tf":1.4142135623730951},"59":{"tf":1.7320508075688772}}}}}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}}},"s":{"df":17,"docs":{"171":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"271":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.0},"349":{"tf":1.0},"417":{"tf":1.4142135623730951},"469":{"tf":1.0},"481":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}},"s":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"349":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":38,"docs":{"12":{"tf":1.0},"127":{"tf":1.0},"156":{"tf":2.8284271247461903},"206":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":2.23606797749979},"214":{"tf":2.0},"245":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.0},"258":{"tf":2.0},"259":{"tf":2.0},"263":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"414":{"tf":1.0},"431":{"tf":1.0},"435":{"tf":1.0},"440":{"tf":1.4142135623730951},"454":{"tf":1.0},"456":{"tf":2.0},"457":{"tf":2.8284271247461903},"458":{"tf":1.0},"460":{"tf":1.7320508075688772},"462":{"tf":2.23606797749979},"463":{"tf":1.4142135623730951},"521":{"tf":1.4142135623730951},"74":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":2.0},"81":{"tf":1.4142135623730951},"82":{"tf":1.4142135623730951},"9":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"r":{"df":2,"docs":{"357":{"tf":1.0},"558":{"tf":1.0}}}},"df":0,"docs":{}},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":2.0}}}}}},"df":8,"docs":{"415":{"tf":1.0},"417":{"tf":3.3166247903554},"421":{"tf":3.0},"422":{"tf":1.4142135623730951},"423":{"tf":2.6457513110645907},"425":{"tf":1.0},"428":{"tf":1.0},"565":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"125":{"tf":1.4142135623730951}}}},"r":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"10":{"tf":1.0},"129":{"tf":1.0},"504":{"tf":1.0},"530":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":12,"docs":{"125":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"259":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"349":{"tf":1.0},"367":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.0},"504":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"338":{"tf":1.0},"546":{"tf":1.0},"598":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"f":{"d":{"df":2,"docs":{"469":{"tf":1.0},"470":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"188":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"h":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"389":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"n":{"df":5,"docs":{"313":{"tf":1.0},"315":{"tf":1.0},"380":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.0}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":51,"docs":{"153":{"tf":1.0},"156":{"tf":1.7320508075688772},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"278":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"317":{"tf":1.0},"321":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"355":{"tf":1.0},"356":{"tf":1.0},"369":{"tf":1.0},"370":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"561":{"tf":1.0},"584":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}}},"n":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"df":5,"docs":{"330":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"475":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":34,"docs":{"11":{"tf":1.0},"152":{"tf":1.0},"171":{"tf":1.0},"18":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.4142135623730951},"233":{"tf":1.0},"257":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"313":{"tf":1.0},"328":{"tf":1.7320508075688772},"338":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.7320508075688772},"456":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"485":{"tf":1.0},"487":{"tf":1.4142135623730951},"503":{"tf":1.4142135623730951},"507":{"tf":1.0},"516":{"tf":1.0},"522":{"tf":1.0},"526":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0},"545":{"tf":1.0},"62":{"tf":1.0}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"'":{"df":1,"docs":{"538":{"tf":1.0}}},"(":{"1":{"0":{"0":{"df":1,"docs":{"448":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"d":{":":{":":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":10,"docs":{"169":{"tf":1.7320508075688772},"276":{"tf":1.0},"279":{"tf":1.0},"370":{"tf":1.4142135623730951},"394":{"tf":1.0},"408":{"tf":1.7320508075688772},"538":{"tf":3.605551275463989},"539":{"tf":3.0},"585":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"268":{"tf":1.0},"358":{"tf":1.0},"522":{"tf":1.0}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":58,"docs":{"153":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"192":{"tf":1.7320508075688772},"206":{"tf":1.4142135623730951},"214":{"tf":1.0},"218":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"251":{"tf":1.0},"264":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"28":{"tf":1.4142135623730951},"281":{"tf":1.0},"289":{"tf":1.4142135623730951},"297":{"tf":1.0},"317":{"tf":1.0},"32":{"tf":2.0},"333":{"tf":1.0},"339":{"tf":1.0},"340":{"tf":1.0},"35":{"tf":1.0},"353":{"tf":1.0},"365":{"tf":1.0},"367":{"tf":1.7320508075688772},"377":{"tf":1.4142135623730951},"380":{"tf":1.0},"385":{"tf":2.0},"386":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"402":{"tf":1.4142135623730951},"414":{"tf":1.0},"428":{"tf":1.4142135623730951},"436":{"tf":1.0},"445":{"tf":1.4142135623730951},"45":{"tf":1.7320508075688772},"453":{"tf":1.4142135623730951},"463":{"tf":1.0},"474":{"tf":1.7320508075688772},"475":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.4142135623730951},"496":{"tf":1.0},"54":{"tf":1.0},"63":{"tf":1.0},"64":{"tf":1.4142135623730951},"65":{"tf":1.0},"68":{"tf":1.0},"69":{"tf":1.0},"70":{"tf":1.0},"78":{"tf":1.0},"83":{"tf":1.0},"88":{"tf":1.0},"9":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"21":{"tf":1.0},"339":{"tf":1.0},"96":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":1,"docs":{"209":{"tf":1.0}}},"m":{"df":1,"docs":{"257":{"tf":1.0}}}},"t":{"df":4,"docs":{"200":{"tf":1.0},"268":{"tf":1.4142135623730951},"271":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"191":{"tf":1.0},"213":{"tf":1.0}}},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}}}}}}}},"c":{"df":0,"docs":{},"k":{"df":19,"docs":{"12":{"tf":1.0},"136":{"tf":1.0},"19":{"tf":1.0},"199":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.4142135623730951},"417":{"tf":3.1622776601683795},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"423":{"tf":1.0},"428":{"tf":1.0},"456":{"tf":1.0},"51":{"tf":1.0},"538":{"tf":1.7320508075688772},"558":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"189":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"i":{"c":{"df":20,"docs":{"155":{"tf":1.0},"156":{"tf":2.0},"237":{"tf":1.0},"250":{"tf":1.4142135623730951},"300":{"tf":1.4142135623730951},"304":{"tf":1.4142135623730951},"34":{"tf":1.4142135623730951},"350":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.4142135623730951},"360":{"tf":1.0},"361":{"tf":1.0},"363":{"tf":1.4142135623730951},"421":{"tf":1.0},"433":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"599":{"tf":1.0},"8":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"s":{"df":42,"docs":{"156":{"tf":1.4142135623730951},"163":{"tf":1.0},"173":{"tf":1.0},"183":{"tf":1.0},"192":{"tf":1.0},"205":{"tf":1.4142135623730951},"213":{"tf":1.0},"218":{"tf":1.0},"225":{"tf":1.0},"239":{"tf":1.0},"250":{"tf":1.0},"263":{"tf":1.0},"272":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"280":{"tf":1.0},"288":{"tf":1.0},"296":{"tf":1.0},"302":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.0},"332":{"tf":1.0},"339":{"tf":1.0},"349":{"tf":1.0},"352":{"tf":1.0},"359":{"tf":1.7320508075688772},"366":{"tf":1.0},"376":{"tf":1.0},"382":{"tf":1.0},"393":{"tf":1.0},"401":{"tf":1.0},"413":{"tf":1.0},"427":{"tf":1.0},"435":{"tf":1.0},"444":{"tf":1.0},"452":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"474":{"tf":1.0},"482":{"tf":1.0},"531":{"tf":1.0},"599":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":6,"docs":{"213":{"tf":1.0},"300":{"tf":1.0},"45":{"tf":1.0},"469":{"tf":1.0},"474":{"tf":1.0},"579":{"tf":1.0}},"n":{"df":5,"docs":{"156":{"tf":1.0},"235":{"tf":1.0},"356":{"tf":1.4142135623730951},"394":{"tf":1.0},"474":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"403":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"l":{"df":2,"docs":{"292":{"tf":1.0},"539":{"tf":2.0}}}},"df":0,"docs":{}},"t":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"159":{"tf":1.0},"491":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"41":{"tf":1.0},"512":{"tf":1.0}}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":5,"docs":{"423":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0},"598":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"389":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"110":{"tf":1.0},"263":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"s":{"df":2,"docs":{"292":{"tf":1.4142135623730951},"294":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"n":{"df":5,"docs":{"178":{"tf":1.4142135623730951},"221":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"74":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"217":{"tf":1.0},"370":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}},"r":{"df":6,"docs":{"156":{"tf":1.0},"246":{"tf":1.4142135623730951},"383":{"tf":1.0},"391":{"tf":1.0},"460":{"tf":1.0},"558":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"380":{"tf":1.0},"393":{"tf":1.0},"458":{"tf":1.0},"61":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"c":{"df":0,"docs":{},"k":{"df":3,"docs":{"404":{"tf":1.0},"405":{"tf":1.0},"522":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"_":{"df":1,"docs":{"347":{"tf":1.0}}},"df":9,"docs":{"187":{"tf":1.0},"230":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"276":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"431":{"tf":1.0},"542":{"tf":1.0}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"221":{"tf":1.4142135623730951}}}}}}}}},"f":{"df":0,"docs":{},"f":{"df":3,"docs":{"156":{"tf":1.0},"261":{"tf":1.0},"392":{"tf":1.0}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"168":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":3,"docs":{"268":{"tf":1.0},"336":{"tf":1.0},"470":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":12,"docs":{"130":{"tf":1.0},"178":{"tf":2.449489742783178},"200":{"tf":1.0},"201":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"276":{"tf":2.23606797749979},"309":{"tf":1.0},"458":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.0},"566":{"tf":1.0}},"r":{"df":2,"docs":{"10":{"tf":1.0},"347":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"35":{"tf":1.0},"391":{"tf":1.0}}}},"t":{"df":1,"docs":{"380":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":19,"docs":{"156":{"tf":1.0},"217":{"tf":2.449489742783178},"218":{"tf":1.4142135623730951},"276":{"tf":1.0},"292":{"tf":1.7320508075688772},"307":{"tf":1.0},"310":{"tf":2.23606797749979},"324":{"tf":1.0},"380":{"tf":3.3166247903554},"385":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.4142135623730951},"401":{"tf":1.0},"404":{"tf":1.4142135623730951},"450":{"tf":1.0},"458":{"tf":2.0},"460":{"tf":1.0},"572":{"tf":1.0},"586":{"tf":1.0}},"e":{"'":{"df":1,"docs":{"217":{"tf":1.0}}},"@":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"r":{"c":{"\\":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"6":{":":{"4":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"1":{":":{"4":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":1,"docs":{"440":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"u":{"d":{"df":4,"docs":{"116":{"tf":1.0},"125":{"tf":1.4142135623730951},"129":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"e":{"df":1,"docs":{"284":{"tf":1.0}}}}},"o":{"_":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"347":{"tf":1.0}}}}}}}}},"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"79":{"tf":1.0}}}},"c":{"df":0,"docs":{},"o":{"a":{"df":3,"docs":{"187":{"tf":1.0},"188":{"tf":1.0},"504":{"tf":1.0}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"e":{"b":{"a":{"df":0,"docs":{},"s":{"df":4,"docs":{"240":{"tf":1.0},"245":{"tf":1.0},"389":{"tf":1.0},"546":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":96,"docs":{"108":{"tf":1.0},"156":{"tf":2.0},"159":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.4142135623730951},"171":{"tf":1.7320508075688772},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"190":{"tf":1.0},"197":{"tf":1.4142135623730951},"198":{"tf":1.0},"200":{"tf":1.4142135623730951},"209":{"tf":4.123105625617661},"211":{"tf":1.7320508075688772},"214":{"tf":1.0},"217":{"tf":2.6457513110645907},"221":{"tf":1.4142135623730951},"239":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":2.0},"251":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"258":{"tf":1.7320508075688772},"259":{"tf":2.0},"261":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":3.0},"270":{"tf":1.7320508075688772},"272":{"tf":1.4142135623730951},"276":{"tf":1.7320508075688772},"284":{"tf":1.4142135623730951},"286":{"tf":1.4142135623730951},"292":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"315":{"tf":1.7320508075688772},"322":{"tf":1.7320508075688772},"323":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":4.0},"340":{"tf":1.0},"341":{"tf":2.23606797749979},"342":{"tf":2.449489742783178},"343":{"tf":1.4142135623730951},"344":{"tf":1.0},"345":{"tf":1.0},"347":{"tf":3.1622776601683795},"350":{"tf":1.4142135623730951},"351":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":4.123105625617661},"383":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.7320508075688772},"397":{"tf":2.23606797749979},"399":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":2.449489742783178},"417":{"tf":1.7320508075688772},"418":{"tf":2.23606797749979},"419":{"tf":1.4142135623730951},"434":{"tf":1.0},"440":{"tf":1.7320508075688772},"448":{"tf":1.0},"450":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":2.23606797749979},"462":{"tf":1.0},"470":{"tf":2.0},"491":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.4142135623730951},"504":{"tf":1.0},"507":{"tf":1.4142135623730951},"515":{"tf":1.0},"521":{"tf":1.4142135623730951},"522":{"tf":2.0},"533":{"tf":1.0},"538":{"tf":2.6457513110645907},"543":{"tf":1.0},"559":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"73":{"tf":1.0},"79":{"tf":1.0}}}},"df":2,"docs":{"268":{"tf":1.0},"276":{"tf":1.0}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"15":{"tf":1.0},"156":{"tf":1.4142135623730951}}}}},"l":{"df":0,"docs":{},"l":{"a":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"15":{"tf":1.0},"517":{"tf":1.0},"8":{"tf":1.0}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"df":1,"docs":{"389":{"tf":1.0}}}},"t":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":2,"docs":{"300":{"tf":1.0},"328":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"15":{"tf":1.4142135623730951},"16":{"tf":1.0},"218":{"tf":1.0},"307":{"tf":1.4142135623730951},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.7320508075688772},"320":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"136":{"tf":1.0},"73":{"tf":1.0}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"218":{"tf":2.23606797749979}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"n":{"df":2,"docs":{"558":{"tf":1.0},"559":{"tf":1.0}}}}}},"m":{"b":{"df":1,"docs":{"248":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":19,"docs":{"110":{"tf":1.0},"156":{"tf":1.4142135623730951},"192":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.0},"336":{"tf":1.7320508075688772},"360":{"tf":1.0},"389":{"tf":1.0},"418":{"tf":1.0},"55":{"tf":1.0},"561":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.7320508075688772},"587":{"tf":1.0},"588":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0}},"e":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":38,"docs":{"125":{"tf":1.0},"177":{"tf":1.0},"189":{"tf":1.4142135623730951},"192":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.4142135623730951},"217":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"248":{"tf":1.0},"25":{"tf":1.0},"268":{"tf":1.4142135623730951},"278":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"300":{"tf":1.4142135623730951},"324":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"41":{"tf":1.0},"433":{"tf":1.0},"456":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"67":{"tf":1.0},"68":{"tf":1.0}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"110":{"tf":1.0},"81":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"284":{"tf":1.4142135623730951},"440":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":19,"docs":{"14":{"tf":1.4142135623730951},"16":{"tf":1.4142135623730951},"17":{"tf":1.0},"178":{"tf":1.0},"196":{"tf":1.0},"24":{"tf":1.0},"25":{"tf":1.4142135623730951},"276":{"tf":1.0},"287":{"tf":1.4142135623730951},"29":{"tf":2.0},"292":{"tf":1.0},"37":{"tf":1.0},"42":{"tf":2.0},"50":{"tf":1.0},"52":{"tf":1.0},"54":{"tf":1.7320508075688772},"55":{"tf":1.0},"556":{"tf":1.4142135623730951},"59":{"tf":1.0}}}},"r":{"c":{"df":2,"docs":{"134":{"tf":1.0},"138":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}},"o":{"df":0,"docs":{},"n":{"df":12,"docs":{"156":{"tf":1.7320508075688772},"199":{"tf":1.0},"270":{"tf":1.0},"296":{"tf":1.4142135623730951},"347":{"tf":1.0},"367":{"tf":1.0},"442":{"tf":1.0},"450":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"549":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"323":{"tf":1.0},"560":{"tf":1.0},"571":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"df":22,"docs":{"108":{"tf":1.0},"11":{"tf":1.4142135623730951},"15":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.7320508075688772},"292":{"tf":1.0},"340":{"tf":1.4142135623730951},"341":{"tf":1.0},"357":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"385":{"tf":1.0},"41":{"tf":1.0},"431":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.0},"544":{"tf":1.0},"549":{"tf":1.0},"65":{"tf":1.4142135623730951},"8":{"tf":1.0},"87":{"tf":1.4142135623730951}}}}},"p":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":4,"docs":{"130":{"tf":1.0},"131":{"tf":1.0},"139":{"tf":1.0},"292":{"tf":1.0}}}},"r":{"df":7,"docs":{"156":{"tf":1.4142135623730951},"209":{"tf":1.0},"345":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"61":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"(":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"417":{"tf":1.0},"421":{"tf":1.0}}}}}}},"t":{"df":7,"docs":{"111":{"tf":1.0},"237":{"tf":1.4142135623730951},"336":{"tf":1.0},"545":{"tf":1.0},"548":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"367":{"tf":1.0}}},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"153":{"tf":1.0}}}},"t":{"df":1,"docs":{"302":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"138":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"l":{"df":60,"docs":{"110":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":2.23606797749979},"168":{"tf":1.0},"190":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.4142135623730951},"200":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":2.23606797749979},"223":{"tf":1.0},"226":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"246":{"tf":1.7320508075688772},"248":{"tf":1.0},"251":{"tf":1.0},"253":{"tf":1.0},"256":{"tf":2.449489742783178},"257":{"tf":1.7320508075688772},"258":{"tf":1.4142135623730951},"261":{"tf":1.4142135623730951},"263":{"tf":1.0},"268":{"tf":2.6457513110645907},"272":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"315":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":2.0},"370":{"tf":2.0},"380":{"tf":2.8284271247461903},"383":{"tf":1.7320508075688772},"386":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.4142135623730951},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"440":{"tf":1.7320508075688772},"445":{"tf":1.0},"470":{"tf":2.0},"472":{"tf":1.0},"502":{"tf":1.0},"508":{"tf":1.0},"512":{"tf":1.0},"518":{"tf":1.0},"521":{"tf":2.449489742783178},"522":{"tf":1.4142135623730951},"525":{"tf":1.0},"538":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":7,"docs":{"168":{"tf":1.0},"196":{"tf":1.0},"201":{"tf":1.0},"246":{"tf":1.0},"257":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":27,"docs":{"116":{"tf":1.0},"12":{"tf":1.0},"139":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.7320508075688772},"181":{"tf":1.0},"268":{"tf":1.0},"273":{"tf":1.0},"284":{"tf":1.0},"312":{"tf":1.0},"318":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"403":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"562":{"tf":1.0},"596":{"tf":1.0},"62":{"tf":1.0}}},"x":{"df":16,"docs":{"156":{"tf":1.4142135623730951},"190":{"tf":1.0},"218":{"tf":1.4142135623730951},"226":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.4142135623730951},"258":{"tf":1.0},"259":{"tf":1.7320508075688772},"278":{"tf":1.7320508075688772},"311":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.4142135623730951},"350":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}}}},"i":{"c":{"df":8,"docs":{"156":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.0},"300":{"tf":1.0},"349":{"tf":1.0},"418":{"tf":1.0},"456":{"tf":1.0},"497":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"n":{"df":12,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0},"237":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"419":{"tf":1.0},"470":{"tf":1.0},"517":{"tf":1.0}}},"s":{"df":2,"docs":{"211":{"tf":1.0},"529":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"147":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"336":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"t":{"df":9,"docs":{"116":{"tf":1.0},"273":{"tf":1.0},"469":{"tf":2.23606797749979},"470":{"tf":1.7320508075688772},"472":{"tf":1.0},"475":{"tf":1.0},"487":{"tf":1.0},"503":{"tf":1.0},"543":{"tf":1.0}}}}}},"n":{"c":{"a":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"375":{"tf":1.0}}}}}},"<":{"'":{"a":{">":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"375":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":14,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"188":{"tf":1.4142135623730951},"197":{"tf":1.0},"245":{"tf":1.0},"288":{"tf":1.0},"332":{"tf":1.0},"336":{"tf":1.0},"359":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.0},"47":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"n":{"df":29,"docs":{"104":{"tf":1.0},"105":{"tf":1.0},"119":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"130":{"tf":1.4142135623730951},"131":{"tf":1.0},"136":{"tf":1.0},"137":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.7320508075688772},"148":{"tf":1.0},"149":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"308":{"tf":1.0},"370":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"511":{"tf":1.0},"569":{"tf":1.0},"57":{"tf":1.0},"577":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"u":{"d":{"df":2,"docs":{"284":{"tf":1.0},"336":{"tf":1.4142135623730951}}},"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":2,"docs":{"458":{"tf":1.0},"548":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":10,"docs":{"156":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"374":{"tf":1.0},"470":{"tf":1.0},"521":{"tf":1.0},"599":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"178":{"tf":1.0},"218":{"tf":1.0},"418":{"tf":1.0},"6":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"171":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":2,"docs":{"256":{"tf":1.0},"521":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"d":{"df":10,"docs":{"110":{"tf":1.0},"221":{"tf":1.0},"237":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"360":{"tf":1.0},"469":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"347":{"tf":1.0},"431":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"m":{"df":3,"docs":{"178":{"tf":1.0},"230":{"tf":1.0},"284":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"157":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"340":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"s":{"df":16,"docs":{"178":{"tf":1.4142135623730951},"200":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"268":{"tf":1.7320508075688772},"278":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"300":{"tf":1.4142135623730951},"309":{"tf":1.0},"328":{"tf":1.0},"361":{"tf":1.0},"397":{"tf":1.0},"42":{"tf":1.0},"481":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"n":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"178":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":3,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"292":{"tf":2.0}},"e":{"c":{"df":0,"docs":{},"t":{"df":9,"docs":{"177":{"tf":2.23606797749979},"178":{"tf":2.449489742783178},"276":{"tf":1.4142135623730951},"397":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":2.0},"436":{"tf":1.0},"503":{"tf":1.0},"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"s":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":4,"docs":{"119":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"125":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":3,"docs":{"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"304":{"tf":1.0}}}},"r":{"df":0,"docs":{},"v":{"df":1,"docs":{"271":{"tf":1.0}}}}},"i":{"d":{"df":13,"docs":{"155":{"tf":1.0},"156":{"tf":1.0},"179":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.4142135623730951},"221":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"498":{"tf":1.0},"55":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"203":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.0},"304":{"tf":1.0},"516":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":5,"docs":{"156":{"tf":1.0},"178":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"531":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"l":{"df":7,"docs":{"217":{"tf":1.0},"336":{"tf":2.0},"380":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.7320508075688772},"542":{"tf":1.0},"548":{"tf":1.0}},"e":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"(":{"\"":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"410":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"284":{"tf":1.0}}}}}}},"df":3,"docs":{"328":{"tf":2.0},"347":{"tf":1.0},"380":{"tf":1.7320508075688772}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"108":{"tf":1.0},"218":{"tf":1.0},"336":{"tf":1.4142135623730951},"579":{"tf":1.0}},"t":{"df":3,"docs":{"486":{"tf":1.0},"546":{"tf":1.0},"560":{"tf":1.0}}}}}},"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":12,"docs":{"12":{"tf":1.0},"136":{"tf":1.0},"152":{"tf":1.0},"195":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"23":{"tf":1.0},"29":{"tf":1.0},"42":{"tf":1.0},"485":{"tf":1.0},"52":{"tf":1.0},"539":{"tf":1.0}}}},"df":1,"docs":{"366":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"284":{"tf":1.0}}}},"m":{"df":4,"docs":{"199":{"tf":1.0},"276":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0}},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"412":{"tf":1.0}}}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":10,"docs":{"112":{"tf":1.0},"154":{"tf":1.4142135623730951},"16":{"tf":1.0},"217":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"347":{"tf":1.7320508075688772},"562":{"tf":1.0},"573":{"tf":1.0},"597":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"116":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":2,"docs":{"302":{"tf":1.0},"62":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"156":{"tf":1.0},"349":{"tf":1.0},"422":{"tf":1.0},"562":{"tf":1.0}},"i":{"df":1,"docs":{"358":{"tf":1.0}}}}},"x":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"&":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"328":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"<":{"'":{"_":{"df":5,"docs":{"217":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":1.7320508075688772},"508":{"tf":1.0},"568":{"tf":1.0}}},"a":{"df":1,"docs":{"421":{"tf":1.0}}},"b":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":2.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"=":{"0":{"df":0,"docs":{},"x":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"a":{"df":0,"docs":{},"f":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":29,"docs":{"197":{"tf":1.0},"200":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"292":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"320":{"tf":1.0},"336":{"tf":2.0},"343":{"tf":1.0},"349":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":2.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"504":{"tf":1.0},"573":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":8,"docs":{"169":{"tf":1.0},"209":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.0},"448":{"tf":1.4142135623730951},"456":{"tf":1.0},"91":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"561":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":8,"docs":{"120":{"tf":1.4142135623730951},"16":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.0},"389":{"tf":1.0},"6":{"tf":1.4142135623730951},"603":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":4,"docs":{"15":{"tf":1.0},"292":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"470":{"tf":1.0}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":12,"docs":{"131":{"tf":1.4142135623730951},"156":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"324":{"tf":1.0},"349":{"tf":1.0},"440":{"tf":1.4142135623730951},"448":{"tf":1.0},"469":{"tf":1.0},"539":{"tf":1.0},"61":{"tf":1.0},"79":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"_":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":3,"docs":{"213":{"tf":1.0},"309":{"tf":1.0},"341":{"tf":1.0}}}},"r":{"df":0,"docs":{},"s":{"df":9,"docs":{"154":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"357":{"tf":1.0},"359":{"tf":1.4142135623730951},"36":{"tf":1.0},"561":{"tf":1.0},"597":{"tf":1.7320508075688772},"598":{"tf":1.0}}},"t":{"df":9,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"324":{"tf":1.0},"440":{"tf":1.4142135623730951},"460":{"tf":1.0},"522":{"tf":1.0}}}},"y":{"df":4,"docs":{"27":{"tf":1.0},"494":{"tf":1.0},"507":{"tf":1.0},"526":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"456":{"tf":1.0}}},"df":0,"docs":{}}}}},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":1,"docs":{"380":{"tf":1.0}}}},"l":{"df":1,"docs":{"522":{"tf":1.0}}},"p":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"6":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"9":{"9":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"41":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0}}}}},"r":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"3":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"i":{"df":10,"docs":{"209":{"tf":1.0},"213":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"380":{"tf":1.0},"397":{"tf":1.0},"423":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"397":{"tf":2.0}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"336":{"tf":1.4142135623730951},"338":{"tf":1.0}},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{">":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"397":{"tf":2.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"404":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{":":{":":{"_":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"a":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"$":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"b":{"c":{"c":{"9":{"1":{"5":{"df":0,"docs":{},"e":{"6":{"6":{"8":{"c":{"7":{"c":{"a":{"1":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"u":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"e":{"d":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":19,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"188":{"tf":1.0},"209":{"tf":1.0},"278":{"tf":1.4142135623730951},"3":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.4142135623730951},"347":{"tf":1.7320508075688772},"389":{"tf":1.7320508075688772},"394":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.4142135623730951},"47":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"516":{"tf":1.0},"544":{"tf":1.0}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":9,"docs":{"156":{"tf":1.0},"29":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.4142135623730951},"42":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"328":{"tf":1.0},"380":{"tf":1.0}}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}}}}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"469":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"df":10,"docs":{"134":{"tf":1.0},"156":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"223":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"343":{"tf":2.449489742783178},"347":{"tf":1.0},"422":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"292":{"tf":1.0},"482":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"t":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":3,"docs":{"268":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":2.449489742783178}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.4142135623730951}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"259":{"tf":1.0},"389":{"tf":1.0}}}}},"df":0,"docs":{}}}}}},"p":{"df":0,"docs":{},"l":{"df":7,"docs":{"11":{"tf":1.0},"183":{"tf":1.0},"195":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0}}}},"r":{"df":0,"docs":{},"s":{"df":11,"docs":{"213":{"tf":1.0},"307":{"tf":1.4142135623730951},"310":{"tf":1.0},"336":{"tf":1.0},"36":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.4142135623730951},"431":{"tf":1.0},"515":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"156":{"tf":1.0},"29":{"tf":1.0},"370":{"tf":1.0},"42":{"tf":1.0},"47":{"tf":1.0}}},"y":{"df":1,"docs":{"54":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":2,"docs":{"347":{"tf":1.0},"502":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"p":{"df":0,"docs":{},"u":{"df":6,"docs":{"127":{"tf":1.0},"331":{"tf":1.0},"347":{"tf":2.23606797749979},"350":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"65":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"404":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"221":{"tf":1.0}}},":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"<":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"268":{"tf":1.7320508075688772}}}}}}}}}},"df":0,"docs":{}}}}}}},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"a":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{":":{":":{"d":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":38,"docs":{"156":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"187":{"tf":1.0},"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"22":{"tf":1.0},"221":{"tf":1.7320508075688772},"246":{"tf":1.0},"257":{"tf":1.0},"276":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"321":{"tf":1.4142135623730951},"324":{"tf":1.0},"325":{"tf":2.449489742783178},"338":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"370":{"tf":2.23606797749979},"372":{"tf":1.7320508075688772},"380":{"tf":1.4142135623730951},"383":{"tf":1.7320508075688772},"385":{"tf":1.0},"458":{"tf":1.0},"478":{"tf":1.7320508075688772},"481":{"tf":1.4142135623730951},"504":{"tf":1.0},"517":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"538":{"tf":2.0},"545":{"tf":1.7320508075688772},"546":{"tf":1.4142135623730951},"547":{"tf":1.0},"548":{"tf":1.0},"6":{"tf":1.0},"61":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":12,"docs":{"103":{"tf":1.0},"112":{"tf":1.4142135623730951},"120":{"tf":1.0},"129":{"tf":1.4142135623730951},"137":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.4142135623730951},"232":{"tf":1.0},"276":{"tf":1.0},"380":{"tf":1.0},"440":{"tf":1.0},"504":{"tf":1.0}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"l":{"df":1,"docs":{"408":{"tf":1.0}}}},"z":{"df":0,"docs":{},"i":{"df":1,"docs":{"89":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":37,"docs":{"110":{"tf":1.4142135623730951},"154":{"tf":1.0},"157":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"188":{"tf":1.0},"21":{"tf":1.0},"221":{"tf":1.4142135623730951},"230":{"tf":1.0},"232":{"tf":1.0},"24":{"tf":1.4142135623730951},"256":{"tf":1.0},"259":{"tf":1.0},"26":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"309":{"tf":1.0},"31":{"tf":1.0},"319":{"tf":1.7320508075688772},"328":{"tf":1.4142135623730951},"341":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"38":{"tf":1.4142135623730951},"39":{"tf":1.0},"417":{"tf":1.0},"44":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"472":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.0},"508":{"tf":1.0},"521":{"tf":1.0},"64":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"59":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"i":{"c":{"df":4,"docs":{"190":{"tf":1.0},"276":{"tf":1.0},"286":{"tf":1.0},"312":{"tf":1.0}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"b":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}}},"df":3,"docs":{"268":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"'":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"259":{"tf":1.0}}}}},"u":{"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"+":{"c":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":1,"docs":{"448":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"248":{"tf":1.0},"431":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":2,"docs":{"153":{"tf":1.0},"9":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"258":{"tf":1.0}}},"u":{"df":3,"docs":{"198":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":35,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"330":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.4142135623730951},"360":{"tf":1.0},"370":{"tf":1.0},"391":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":1.0},"456":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"507":{"tf":1.4142135623730951},"508":{"tf":1.0},"516":{"tf":1.0},"538":{"tf":1.4142135623730951},"550":{"tf":1.0},"567":{"tf":1.0},"572":{"tf":1.0},"576":{"tf":1.0},"65":{"tf":1.0},"77":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"9":{"tf":1.0},"92":{"tf":1.0}}}}}},"s":{"df":1,"docs":{"153":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"538":{"tf":1.0}}}}},"v":{"df":3,"docs":{"188":{"tf":1.0},"268":{"tf":1.0},"470":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":25,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.0},"123":{"tf":1.0},"128":{"tf":1.0},"129":{"tf":1.0},"130":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.4142135623730951},"328":{"tf":1.0},"330":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"412":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"492":{"tf":1.0},"503":{"tf":1.0},"514":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0}}}}}},"t":{"df":3,"docs":{"110":{"tf":1.0},"153":{"tf":1.0},"209":{"tf":1.0}}}},"x":{".":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"0":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"f":{"5":{"0":{"df":1,"docs":{"404":{"tf":2.8284271247461903}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":10,"docs":{"197":{"tf":1.0},"217":{"tf":1.0},"328":{"tf":2.6457513110645907},"336":{"tf":1.7320508075688772},"418":{"tf":1.7320508075688772},"419":{"tf":1.0},"421":{"tf":3.4641016151377544},"422":{"tf":1.7320508075688772},"423":{"tf":1.0},"568":{"tf":1.0}}},"y":{"c":{"df":0,"docs":{},"l":{"df":2,"docs":{"313":{"tf":1.0},"539":{"tf":2.0}}}},"df":0,"docs":{}}},"d":{"a":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"218":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"417":{"tf":1.4142135623730951},"425":{"tf":1.0}}}},"l":{"df":1,"docs":{"436":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"k":{"df":3,"docs":{"199":{"tf":1.0},"284":{"tf":1.0},"538":{"tf":1.0}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"603":{"tf":1.0}}}}}}}},"t":{"a":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"312":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":9,"docs":{"116":{"tf":1.0},"156":{"tf":1.4142135623730951},"175":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"179":{"tf":1.0},"315":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.0}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"127":{"tf":1.0}}}}}},"df":31,"docs":{"125":{"tf":1.4142135623730951},"153":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"168":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":2.449489742783178},"217":{"tf":2.0},"218":{"tf":1.0},"276":{"tf":1.4142135623730951},"307":{"tf":1.7320508075688772},"308":{"tf":1.4142135623730951},"309":{"tf":1.0},"312":{"tf":2.23606797749979},"320":{"tf":1.0},"347":{"tf":2.23606797749979},"370":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"419":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":2.6457513110645907},"538":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"564":{"tf":1.4142135623730951},"599":{"tf":1.0},"62":{"tf":1.0}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":1,"docs":{"209":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"478":{"tf":1.0}}}},"y":{"'":{"df":1,"docs":{"284":{"tf":1.0}}},"df":10,"docs":{"239":{"tf":1.0},"244":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"359":{"tf":1.0},"361":{"tf":1.0},"397":{"tf":1.0},"503":{"tf":1.4142135623730951},"54":{"tf":1.0},"599":{"tf":1.0}}}},"b":{"df":1,"docs":{"599":{"tf":1.4142135623730951}}},"d":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":2.23606797749979}}}}}}}},"df":3,"docs":{"150":{"tf":1.0},"347":{"tf":2.0},"539":{"tf":1.4142135623730951}},"e":{"a":{"d":{"df":1,"docs":{"284":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":8,"docs":{"309":{"tf":1.4142135623730951},"315":{"tf":1.0},"318":{"tf":2.0},"319":{"tf":1.4142135623730951},"323":{"tf":1.0},"325":{"tf":1.0},"408":{"tf":1.0},"539":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":19,"docs":{"189":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"231":{"tf":1.0},"240":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"341":{"tf":1.4142135623730951},"380":{"tf":1.0},"394":{"tf":1.0},"401":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"521":{"tf":1.0},"537":{"tf":1.0},"599":{"tf":1.4142135623730951}},"t":{"df":2,"docs":{"256":{"tf":1.0},"521":{"tf":1.0}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"!":{"(":{"\"":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":16,"docs":{"156":{"tf":1.4142135623730951},"168":{"tf":1.0},"174":{"tf":1.0},"203":{"tf":1.0},"282":{"tf":1.0},"286":{"tf":1.7320508075688772},"309":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.0},"414":{"tf":1.7320508075688772},"433":{"tf":1.0},"452":{"tf":1.0},"599":{"tf":1.0},"79":{"tf":1.0}},"g":{"df":10,"docs":{"171":{"tf":1.0},"284":{"tf":2.6457513110645907},"286":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"309":{"tf":1.0},"404":{"tf":1.0},"408":{"tf":1.0},"414":{"tf":1.0},"448":{"tf":1.4142135623730951},"453":{"tf":1.7320508075688772}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":1,"docs":{"214":{"tf":1.0}}}}}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"270":{"tf":1.0},"273":{"tf":1.0},"502":{"tf":1.0},"526":{"tf":1.0}}}}},"i":{"d":{"df":34,"docs":{"125":{"tf":1.0},"134":{"tf":1.0},"178":{"tf":1.0},"187":{"tf":1.4142135623730951},"189":{"tf":1.0},"209":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"233":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":2.23606797749979},"284":{"tf":1.7320508075688772},"292":{"tf":1.0},"300":{"tf":2.0},"307":{"tf":1.0},"308":{"tf":1.4142135623730951},"309":{"tf":1.4142135623730951},"313":{"tf":1.0},"32":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"357":{"tf":1.4142135623730951},"358":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"408":{"tf":1.0},"431":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.4142135623730951},"469":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.7320508075688772},"562":{"tf":1.0},"84":{"tf":1.0}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"237":{"tf":1.0}}}},"s":{"df":6,"docs":{"248":{"tf":1.0},"302":{"tf":1.4142135623730951},"303":{"tf":1.0},"357":{"tf":1.0},"359":{"tf":1.7320508075688772},"389":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"r":{"df":4,"docs":{"209":{"tf":1.0},"230":{"tf":1.0},"370":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":1,"docs":{"309":{"tf":1.0}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":2,"docs":{"341":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"478":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"457":{"tf":1.7320508075688772}},"e":{"df":0,"docs":{},"p":{"df":7,"docs":{"171":{"tf":1.0},"192":{"tf":1.0},"211":{"tf":1.0},"268":{"tf":1.0},"313":{"tf":1.0},"347":{"tf":1.0},"408":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"408":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.0},"84":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"183":{"tf":1.0}}}}}},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":12,"docs":{"116":{"tf":1.0},"190":{"tf":1.0},"321":{"tf":1.0},"502":{"tf":1.7320508075688772},"507":{"tf":1.0},"511":{"tf":1.0},"526":{"tf":1.4142135623730951},"527":{"tf":1.0},"529":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.4142135623730951},"599":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"246":{"tf":1.0},"292":{"tf":1.0}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":1,"docs":{"418":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"df":8,"docs":{"209":{"tf":1.7320508075688772},"292":{"tf":1.0},"380":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"532":{"tf":1.0},"6":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":5,"docs":{"3":{"tf":1.0},"336":{"tf":1.0},"343":{"tf":1.0},"567":{"tf":1.0},"568":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"300":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"a":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"df":2,"docs":{"380":{"tf":3.605551275463989},"516":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":2,"docs":{"196":{"tf":1.0},"397":{"tf":1.7320508075688772}}}},"t":{"a":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}},"v":{"df":1,"docs":{"414":{"tf":1.0}}}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":3,"docs":{"181":{"tf":1.0},"423":{"tf":1.0},"480":{"tf":1.0}}}}}}}},"n":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"125":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"412":{"tf":1.0}}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"349":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":28,"docs":{"174":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"237":{"tf":2.0},"240":{"tf":1.0},"300":{"tf":1.0},"323":{"tf":1.0},"349":{"tf":1.4142135623730951},"353":{"tf":1.0},"370":{"tf":2.6457513110645907},"380":{"tf":1.0},"408":{"tf":1.0},"414":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"470":{"tf":2.0},"513":{"tf":1.0},"516":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"542":{"tf":1.0},"562":{"tf":1.0},"580":{"tf":1.0},"599":{"tf":1.7320508075688772}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":7,"docs":{"116":{"tf":1.0},"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"429":{"tf":1.0},"456":{"tf":1.0},"511":{"tf":1.0},"538":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"358":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"u":{"df":1,"docs":{"328":{"tf":2.0}},"e":{"df":0,"docs":{},"u":{"df":1,"docs":{"539":{"tf":1.4142135623730951}}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":39,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"218":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"423":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"e":{"(":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":19,"docs":{"182":{"tf":1.0},"233":{"tf":1.0},"25":{"tf":1.0},"343":{"tf":1.0},"36":{"tf":1.0},"41":{"tf":1.0},"483":{"tf":1.0},"486":{"tf":1.4142135623730951},"487":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"550":{"tf":1.0},"552":{"tf":1.0},"560":{"tf":1.4142135623730951},"597":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"9":{"tf":1.0},"94":{"tf":1.0}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":7,"docs":{"108":{"tf":1.0},"116":{"tf":1.0},"125":{"tf":1.0},"134":{"tf":1.0},"143":{"tf":1.0},"584":{"tf":1.0},"99":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"347":{"tf":1.4142135623730951},"349":{"tf":1.7320508075688772}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":31,"docs":{"11":{"tf":1.0},"143":{"tf":1.0},"156":{"tf":2.449489742783178},"278":{"tf":1.0},"3":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.4142135623730951},"363":{"tf":1.7320508075688772},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"41":{"tf":1.0},"433":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":2.8284271247461903},"486":{"tf":1.0},"487":{"tf":1.4142135623730951},"49":{"tf":1.4142135623730951},"494":{"tf":1.0},"515":{"tf":1.0},"539":{"tf":1.0},"560":{"tf":2.0},"561":{"tf":2.0},"562":{"tf":2.0},"566":{"tf":1.0},"570":{"tf":1.0},"61":{"tf":1.7320508075688772},"62":{"tf":1.0},"67":{"tf":1.0},"92":{"tf":1.0}}}},"r":{"df":8,"docs":{"183":{"tf":1.0},"421":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"571":{"tf":1.0},"599":{"tf":1.0}}}},"k":{"df":1,"docs":{"370":{"tf":1.0}}},"p":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"209":{"tf":1.0},"96":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"245":{"tf":1.0}}}},"i":{"df":0,"docs":{},"t":{"df":5,"docs":{"188":{"tf":1.0},"276":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.0},"389":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"178":{"tf":2.23606797749979},"181":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"401":{"tf":1.0},"579":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":38,"docs":{"12":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.0},"19":{"tf":1.0},"200":{"tf":1.0},"218":{"tf":1.0},"225":{"tf":1.0},"27":{"tf":1.4142135623730951},"29":{"tf":1.4142135623730951},"302":{"tf":1.0},"33":{"tf":1.7320508075688772},"349":{"tf":1.0},"353":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"42":{"tf":1.4142135623730951},"437":{"tf":1.0},"450":{"tf":1.0},"457":{"tf":1.0},"47":{"tf":1.7320508075688772},"48":{"tf":1.4142135623730951},"485":{"tf":1.0},"489":{"tf":1.0},"504":{"tf":1.0},"513":{"tf":1.4142135623730951},"516":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"544":{"tf":1.0},"599":{"tf":1.0},"79":{"tf":1.0},"97":{"tf":1.0},"99":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"336":{"tf":1.0},"419":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"358":{"tf":1.0}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":7,"docs":{"276":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.4142135623730951},"389":{"tf":1.0},"516":{"tf":1.0},"538":{"tf":1.0},"9":{"tf":1.0}}}}}}}},"v":{"df":2,"docs":{"284":{"tf":1.0},"289":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":46,"docs":{"110":{"tf":2.0},"116":{"tf":1.0},"120":{"tf":1.0},"127":{"tf":1.0},"131":{"tf":1.0},"136":{"tf":1.4142135623730951},"146":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"189":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":2.23606797749979},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.4142135623730951},"239":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.4142135623730951},"286":{"tf":1.7320508075688772},"287":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.0},"339":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"393":{"tf":1.0},"403":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0},"548":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.4142135623730951},"71":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0},"89":{"tf":1.0}}}}}},"i":{"c":{"df":1,"docs":{"8":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":1,"docs":{"336":{"tf":1.0}}}}},"s":{"df":1,"docs":{"423":{"tf":1.0}}}}}},"i":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":9,"docs":{"171":{"tf":1.0},"209":{"tf":1.0},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"315":{"tf":1.0},"397":{"tf":1.0},"434":{"tf":1.0},"436":{"tf":1.0},"456":{"tf":1.0}},"t":{"df":3,"docs":{"209":{"tf":1.0},"292":{"tf":1.0},"572":{"tf":1.0}}}}}}}},"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":13,"docs":{"199":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.4142135623730951},"234":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"463":{"tf":1.0},"497":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"292":{"tf":1.0},"599":{"tf":1.0}}}}}},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":87,"docs":{"101":{"tf":1.0},"110":{"tf":1.0},"111":{"tf":1.0},"118":{"tf":1.7320508075688772},"127":{"tf":1.4142135623730951},"136":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"156":{"tf":1.4142135623730951},"164":{"tf":1.4142135623730951},"174":{"tf":1.0},"184":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.4142135623730951},"195":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"218":{"tf":1.0},"22":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"251":{"tf":1.0},"258":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.4142135623730951},"273":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.4142135623730951},"281":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"317":{"tf":1.0},"32":{"tf":1.0},"333":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"350":{"tf":1.0},"353":{"tf":1.0},"359":{"tf":1.0},"367":{"tf":1.4142135623730951},"37":{"tf":1.0},"372":{"tf":1.4142135623730951},"375":{"tf":1.0},"377":{"tf":1.0},"383":{"tf":1.7320508075688772},"385":{"tf":1.0},"386":{"tf":1.4142135623730951},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":2.23606797749979},"402":{"tf":1.0},"414":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0},"428":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"448":{"tf":1.0},"45":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0},"470":{"tf":1.0},"475":{"tf":1.0},"483":{"tf":1.4142135623730951},"490":{"tf":1.0},"501":{"tf":1.0},"507":{"tf":1.4142135623730951},"515":{"tf":1.0},"519":{"tf":1.0},"52":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.4142135623730951},"54":{"tf":1.0},"55":{"tf":1.4142135623730951},"599":{"tf":1.7320508075688772},"61":{"tf":1.0},"64":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"138":{"tf":1.0}}}}}}}},"i":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":18,"docs":{"122":{"tf":1.0},"181":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"278":{"tf":1.4142135623730951},"300":{"tf":1.0},"324":{"tf":1.0},"330":{"tf":1.0},"350":{"tf":1.0},"372":{"tf":1.0},"375":{"tf":1.0},"389":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.0},"570":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0}},"i":{"df":3,"docs":{"156":{"tf":1.0},"392":{"tf":1.0},"421":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"g":{"df":7,"docs":{"234":{"tf":1.0},"246":{"tf":1.0},"271":{"tf":1.0},"311":{"tf":1.0},"408":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"341":{"tf":1.0}}}}}}}},"p":{"df":2,"docs":{"261":{"tf":1.0},"84":{"tf":1.0}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"214":{"tf":1.0},"394":{"tf":1.0},"508":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":10,"docs":{"16":{"tf":1.0},"211":{"tf":1.0},"3":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"457":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"603":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":6,"docs":{"157":{"tf":1.0},"21":{"tf":1.0},"26":{"tf":1.0},"39":{"tf":1.0},"489":{"tf":1.0},"562":{"tf":1.0}}}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"358":{"tf":1.0},"359":{"tf":1.0}}}}},"s":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":1,"docs":{"278":{"tf":1.7320508075688772}},"e":{"df":1,"docs":{"27":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"576":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":17,"docs":{"209":{"tf":1.0},"358":{"tf":1.4142135623730951},"380":{"tf":1.0},"41":{"tf":2.0},"478":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.4142135623730951},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.4142135623730951}}}}}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"457":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"d":{"df":4,"docs":{"357":{"tf":1.0},"363":{"tf":1.0},"392":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"278":{"tf":1.0}}}},"df":0,"docs":{}}},"v":{"df":12,"docs":{"179":{"tf":1.0},"245":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.4142135623730951},"347":{"tf":1.0},"359":{"tf":1.4142135623730951},"372":{"tf":1.0},"389":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"599":{"tf":1.0}}}},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":19,"docs":{"156":{"tf":1.0},"172":{"tf":1.0},"209":{"tf":1.0},"212":{"tf":1.0},"221":{"tf":1.0},"25":{"tf":1.4142135623730951},"278":{"tf":1.0},"3":{"tf":1.0},"347":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.4142135623730951},"380":{"tf":1.0},"4":{"tf":1.0},"52":{"tf":1.0},"538":{"tf":1.0},"57":{"tf":1.0},"571":{"tf":1.0},"599":{"tf":1.0},"602":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"k":{"df":1,"docs":{"539":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":1,"docs":{"41":{"tf":1.0}}}}},"m":{"a":{"df":0,"docs":{},"y":{"df":2,"docs":{"370":{"tf":1.0},"408":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"276":{"tf":1.0},"334":{"tf":1.0}}}}}},"p":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":4,"docs":{"223":{"tf":1.0},"336":{"tf":1.0},"504":{"tf":1.0},"516":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"a":{"d":{"df":1,"docs":{"54":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"300":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":1,"docs":{"211":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.0},"211":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":7,"docs":{"116":{"tf":1.0},"125":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.0},"8":{"tf":1.0}}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"'":{"df":1,"docs":{"119":{"tf":1.4142135623730951}}},"df":11,"docs":{"114":{"tf":1.0},"116":{"tf":1.4142135623730951},"118":{"tf":1.0},"119":{"tf":1.0},"120":{"tf":1.0},"122":{"tf":1.0},"209":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":2.0}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.7320508075688772}}}}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":2,"docs":{"380":{"tf":1.0},"408":{"tf":1.0}}}}},"j":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":1,"docs":{"72":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"_":{"a":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"_":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"502":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"g":{"c":{"d":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"178":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"310":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":5,"docs":{"307":{"tf":1.7320508075688772},"308":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.4142135623730951}}}}}},"df":1,"docs":{"307":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"c":{"df":26,"docs":{"12":{"tf":1.0},"15":{"tf":1.0},"17":{"tf":1.0},"178":{"tf":1.0},"181":{"tf":1.0},"23":{"tf":1.0},"246":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"309":{"tf":1.0},"311":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.6457513110645907},"383":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"47":{"tf":1.0},"487":{"tf":1.0},"49":{"tf":1.0},"552":{"tf":1.0},"560":{"tf":1.4142135623730951},"561":{"tf":1.4142135623730951},"562":{"tf":1.7320508075688772},"599":{"tf":1.0},"603":{"tf":1.0},"9":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":37,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"12":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.0},"167":{"tf":1.0},"17":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"18":{"tf":1.4142135623730951},"190":{"tf":1.0},"203":{"tf":1.0},"217":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"246":{"tf":1.0},"268":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"365":{"tf":1.0},"367":{"tf":1.4142135623730951},"380":{"tf":1.0},"391":{"tf":1.0},"457":{"tf":1.0},"478":{"tf":2.6457513110645907},"480":{"tf":1.0},"485":{"tf":1.0},"487":{"tf":1.4142135623730951},"51":{"tf":1.7320508075688772},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"560":{"tf":1.4142135623730951},"562":{"tf":1.0},"599":{"tf":1.4142135623730951},"8":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.0}}}}}}}},"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"456":{"tf":1.0}}}},"df":18,"docs":{"156":{"tf":1.0},"189":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"248":{"tf":1.0},"312":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"331":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.4142135623730951},"413":{"tf":1.0},"458":{"tf":1.4142135623730951},"475":{"tf":1.0},"487":{"tf":1.0},"504":{"tf":1.0},"550":{"tf":1.0},"599":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":43,"docs":{"155":{"tf":1.0},"156":{"tf":2.23606797749979},"165":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.4142135623730951},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"217":{"tf":1.0},"232":{"tf":1.0},"252":{"tf":1.0},"276":{"tf":1.7320508075688772},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.0},"311":{"tf":1.0},"313":{"tf":1.0},"33":{"tf":1.0},"35":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"404":{"tf":1.0},"405":{"tf":1.0},"408":{"tf":1.4142135623730951},"418":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"423":{"tf":1.0},"431":{"tf":1.0},"445":{"tf":1.4142135623730951},"457":{"tf":1.7320508075688772},"47":{"tf":1.0},"527":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"544":{"tf":1.0},"559":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"139":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"472":{"tf":1.0},"94":{"tf":1.0},"97":{"tf":1.0}}}}},"df":0,"docs":{}},"n":{"'":{"df":0,"docs":{},"t":{"df":45,"docs":{"11":{"tf":1.0},"136":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"156":{"tf":1.7320508075688772},"192":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"25":{"tf":1.0},"258":{"tf":1.0},"27":{"tf":1.0},"315":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"367":{"tf":1.4142135623730951},"397":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.0},"405":{"tf":1.7320508075688772},"408":{"tf":1.0},"41":{"tf":1.0},"410":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.4142135623730951},"463":{"tf":1.0},"48":{"tf":1.0},"481":{"tf":1.0},"483":{"tf":1.0},"49":{"tf":1.0},"499":{"tf":1.0},"50":{"tf":1.0},"503":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.4142135623730951},"68":{"tf":1.0},"89":{"tf":1.0},"96":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"e":{"df":18,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"188":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"423":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"558":{"tf":1.0},"56":{"tf":1.0}}}},"t":{"df":1,"docs":{"539":{"tf":1.0}}},"u":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"538":{"tf":1.0},"599":{"tf":1.0}}},"t":{"df":4,"docs":{"268":{"tf":1.0},"278":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":0,"docs":{},"n":{"df":17,"docs":{"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"322":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"457":{"tf":1.0},"463":{"tf":1.0},"539":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"319":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"167":{"tf":1.7320508075688772},"268":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}}}},"r":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":43,"docs":{"15":{"tf":1.4142135623730951},"152":{"tf":1.0},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"17":{"tf":1.4142135623730951},"176":{"tf":1.4142135623730951},"186":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"208":{"tf":1.4142135623730951},"216":{"tf":1.4142135623730951},"220":{"tf":1.4142135623730951},"228":{"tf":1.4142135623730951},"243":{"tf":1.4142135623730951},"254":{"tf":1.4142135623730951},"267":{"tf":1.4142135623730951},"275":{"tf":1.4142135623730951},"283":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"299":{"tf":1.4142135623730951},"306":{"tf":1.4142135623730951},"327":{"tf":1.4142135623730951},"335":{"tf":1.4142135623730951},"346":{"tf":1.4142135623730951},"355":{"tf":1.4142135623730951},"369":{"tf":1.4142135623730951},"379":{"tf":1.4142135623730951},"388":{"tf":1.4142135623730951},"396":{"tf":1.4142135623730951},"407":{"tf":1.4142135623730951},"416":{"tf":1.4142135623730951},"430":{"tf":1.4142135623730951},"439":{"tf":1.4142135623730951},"447":{"tf":1.4142135623730951},"455":{"tf":1.4142135623730951},"467":{"tf":1.4142135623730951},"477":{"tf":1.4142135623730951},"485":{"tf":1.0},"490":{"tf":1.4142135623730951},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"562":{"tf":1.0},"61":{"tf":1.7320508075688772}}}},"g":{"df":1,"docs":{"472":{"tf":1.0}}},"m":{"a":{"df":1,"docs":{"311":{"tf":1.0}},"t":{"df":2,"docs":{"153":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"203":{"tf":1.0}}},"df":0,"docs":{}}}},"w":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"223":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"17":{"tf":1.0},"245":{"tf":1.0},"27":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"300":{"tf":1.0}}},"df":0,"docs":{},"m":{"df":5,"docs":{"188":{"tf":1.0},"359":{"tf":1.0},"37":{"tf":1.0},"389":{"tf":1.0},"487":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"e":{"df":7,"docs":{"10":{"tf":1.0},"189":{"tf":1.0},"192":{"tf":1.0},"309":{"tf":1.0},"336":{"tf":1.0},"557":{"tf":1.0},"61":{"tf":1.0}},"n":{"df":2,"docs":{"342":{"tf":1.0},"474":{"tf":1.0}}},"r":{"df":1,"docs":{"456":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":1.0}}}}}}},"df":13,"docs":{"156":{"tf":1.7320508075688772},"169":{"tf":1.4142135623730951},"175":{"tf":1.0},"178":{"tf":1.7320508075688772},"268":{"tf":2.23606797749979},"270":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"341":{"tf":2.0},"412":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"594":{"tf":1.0},"599":{"tf":1.0}}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":13,"docs":{"156":{"tf":1.0},"214":{"tf":1.0},"218":{"tf":1.0},"336":{"tf":1.0},"357":{"tf":1.0},"383":{"tf":1.0},"417":{"tf":1.0},"436":{"tf":1.0},"440":{"tf":1.0},"450":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0},"74":{"tf":1.0}}},"m":{"df":0,"docs":{},"p":{"df":1,"docs":{"598":{"tf":1.0}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"276":{"tf":1.0}}}},"i":{"c":{"df":3,"docs":{"200":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":2.0}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":6,"docs":{"218":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":2.0},"380":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.7320508075688772}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"(":{"5":{"df":1,"docs":{"458":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":11,"docs":{"15":{"tf":1.0},"16":{"tf":1.0},"230":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.0},"365":{"tf":1.0},"391":{"tf":1.0},"46":{"tf":1.0},"521":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0}}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":1,"docs":{"214":{"tf":1.0}}}}},"df":0,"docs":{}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":6,"docs":{"223":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.4142135623730951},"410":{"tf":1.0},"516":{"tf":1.0},"72":{"tf":1.0}}}},"df":5,"docs":{"292":{"tf":1.0},"328":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":1.0},"515":{"tf":1.0}}}}},"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"g":{"df":15,"docs":{"136":{"tf":1.0},"156":{"tf":1.0},"211":{"tf":1.0},"270":{"tf":1.0},"341":{"tf":1.0},"372":{"tf":1.0},"383":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"453":{"tf":1.0},"548":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}},"0":{"2":{"7":{"7":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"h":{"df":35,"docs":{"153":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.0},"218":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"27":{"tf":1.0},"278":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":2.0},"389":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.4142135623730951},"496":{"tf":1.0},"508":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951},"94":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"380":{"tf":1.0},"538":{"tf":1.4142135623730951}}}}},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":11,"docs":{"136":{"tf":1.0},"156":{"tf":1.0},"192":{"tf":1.0},"270":{"tf":1.0},"363":{"tf":1.0},"456":{"tf":1.0},"502":{"tf":1.0},"560":{"tf":1.0},"561":{"tf":1.4142135623730951},"65":{"tf":1.0},"87":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"276":{"tf":1.0},"61":{"tf":1.0}}}}}}},"s":{"df":3,"docs":{"359":{"tf":1.0},"41":{"tf":1.0},"77":{"tf":1.0}},"i":{"df":26,"docs":{"120":{"tf":1.0},"121":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.4142135623730951},"190":{"tf":1.0},"200":{"tf":1.0},"211":{"tf":1.0},"245":{"tf":1.0},"278":{"tf":1.0},"330":{"tf":1.0},"343":{"tf":1.0},"370":{"tf":1.0},"391":{"tf":1.4142135623730951},"393":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.4142135623730951},"456":{"tf":1.4142135623730951},"504":{"tf":1.0},"510":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"528":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":8,"docs":{"131":{"tf":1.0},"226":{"tf":1.0},"284":{"tf":1.0},"389":{"tf":1.0},"516":{"tf":1.0},"532":{"tf":1.0},"538":{"tf":1.0},"572":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":7,"docs":{"130":{"tf":1.0},"268":{"tf":1.0},"315":{"tf":1.0},"341":{"tf":1.0},"350":{"tf":1.0},"507":{"tf":1.0},"511":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"555":{"tf":1.0}}}}}},"y":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"221":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"380":{"tf":1.0}}}},"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":30,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"231":{"tf":1.4142135623730951},"237":{"tf":1.0},"278":{"tf":1.0},"302":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"340":{"tf":1.4142135623730951},"341":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":2.0},"360":{"tf":1.0},"363":{"tf":1.7320508075688772},"372":{"tf":1.4142135623730951},"383":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0},"431":{"tf":1.4142135623730951},"47":{"tf":1.4142135623730951},"478":{"tf":1.0},"480":{"tf":1.0},"526":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"61":{"tf":1.4142135623730951},"65":{"tf":1.0},"73":{"tf":1.0},"77":{"tf":1.0}}}}}}}}}},"d":{"df":1,"docs":{"309":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":30,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"358":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"402":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"201":{"tf":1.0},"453":{"tf":1.0}}}}}},"u":{"c":{"df":1,"docs":{"363":{"tf":1.0}}},"df":0,"docs":{}}},"df":6,"docs":{"134":{"tf":1.0},"138":{"tf":1.0},"209":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.7320508075688772},"603":{"tf":1.0}},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":7,"docs":{"181":{"tf":1.0},"259":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"389":{"tf":1.0},"422":{"tf":1.0},"462":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"c":{"df":0,"docs":{},"i":{"df":3,"docs":{"156":{"tf":1.4142135623730951},"223":{"tf":1.0},"341":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":4,"docs":{"341":{"tf":1.4142135623730951},"37":{"tf":1.0},"486":{"tf":1.0},"8":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"110":{"tf":1.0}}}}}}}}}}}}},"g":{"df":1,"docs":{"391":{"tf":1.0}}},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"603":{"tf":1.0}}}}}},"l":{"a":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"343":{"tf":1.0},"42":{"tf":1.0},"54":{"tf":1.0}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":1,"docs":{"65":{"tf":1.0}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"307":{"tf":1.0},"310":{"tf":1.0}}}}}}},"i":{"d":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"209":{"tf":1.4142135623730951},"342":{"tf":1.0},"343":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"55":{"tf":1.0}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"211":{"tf":1.0},"252":{"tf":1.0},"341":{"tf":1.0},"562":{"tf":1.0}}}}}}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":2,"docs":{"3":{"tf":1.0},"515":{"tf":1.0}}}}}},"df":3,"docs":{"209":{"tf":1.0},"310":{"tf":1.0},"486":{"tf":1.0}},"e":{"d":{"df":16,"docs":{"106":{"tf":1.0},"110":{"tf":2.449489742783178},"111":{"tf":1.0},"156":{"tf":1.4142135623730951},"321":{"tf":1.0},"322":{"tf":1.0},"334":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":2.0},"370":{"tf":1.0},"456":{"tf":1.7320508075688772},"463":{"tf":1.0},"515":{"tf":2.0},"61":{"tf":1.0},"62":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":1,"docs":{"284":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{"2":{"0":{"0":{"0":{"df":1,"docs":{"603":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"j":{"df":0,"docs":{},"i":{"df":1,"docs":{"552":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":1,"docs":{"231":{"tf":1.0}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"156":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"469":{"tf":1.0}}}}},"n":{"a":{"b":{"df":0,"docs":{},"l":{"df":12,"docs":{"178":{"tf":1.0},"259":{"tf":1.0},"321":{"tf":1.0},"343":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"470":{"tf":1.0},"530":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"358":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"457":{"tf":1.0}}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":13,"docs":{"153":{"tf":1.0},"177":{"tf":1.0},"182":{"tf":1.0},"25":{"tf":1.0},"263":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"318":{"tf":1.0},"321":{"tf":1.0},"470":{"tf":1.0},"74":{"tf":1.0},"9":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"g":{"df":6,"docs":{"15":{"tf":1.0},"152":{"tf":1.0},"268":{"tf":1.0},"462":{"tf":1.0},"485":{"tf":1.0},"54":{"tf":1.0}}}},"df":0,"docs":{}}}}},"d":{"df":25,"docs":{"11":{"tf":1.4142135623730951},"15":{"tf":1.4142135623730951},"156":{"tf":1.0},"16":{"tf":1.0},"218":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"284":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"322":{"tf":1.0},"370":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"47":{"tf":1.4142135623730951},"504":{"tf":1.0},"58":{"tf":1.0},"599":{"tf":1.4142135623730951},"60":{"tf":1.0},"8":{"tf":1.4142135623730951}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"232":{"tf":1.4142135623730951},"370":{"tf":1.0},"408":{"tf":1.7320508075688772},"538":{"tf":2.0}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":1,"docs":{"138":{"tf":1.0}}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"171":{"tf":1.0}}},"df":0,"docs":{}}}},"g":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"27":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":6,"docs":{"138":{"tf":1.0},"212":{"tf":1.0},"231":{"tf":1.0},"389":{"tf":1.7320508075688772},"393":{"tf":1.0},"433":{"tf":1.0}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":3,"docs":{"276":{"tf":1.0},"486":{"tf":1.0},"9":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"195":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":24,"docs":{"156":{"tf":1.0},"173":{"tf":1.0},"178":{"tf":1.0},"189":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"318":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.7320508075688772},"427":{"tf":1.0},"431":{"tf":1.0},"470":{"tf":1.0},"480":{"tf":1.0},"503":{"tf":1.0},"530":{"tf":1.0}}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"u":{"df":1,"docs":{"539":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":4,"docs":{"120":{"tf":1.0},"16":{"tf":1.0},"517":{"tf":1.0},"539":{"tf":1.0}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"156":{"tf":1.0},"240":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{"1":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":2,"docs":{"363":{"tf":1.0},"538":{"tf":1.4142135623730951}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"113":{"tf":1.0},"27":{"tf":1.0}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"r":{"df":15,"docs":{"116":{"tf":1.0},"127":{"tf":1.0},"218":{"tf":1.0},"268":{"tf":1.4142135623730951},"284":{"tf":1.0},"313":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"442":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.7320508075688772},"506":{"tf":1.0},"72":{"tf":1.0},"8":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"257":{"tf":1.0},"284":{"tf":1.0},"431":{"tf":1.4142135623730951}}}}},"u":{"df":0,"docs":{},"m":{"df":4,"docs":{"199":{"tf":1.7320508075688772},"209":{"tf":1.0},"214":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":19,"docs":{"108":{"tf":1.0},"110":{"tf":1.4142135623730951},"146":{"tf":1.0},"156":{"tf":1.0},"218":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.4142135623730951},"286":{"tf":1.0},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"344":{"tf":1.4142135623730951},"425":{"tf":1.0},"457":{"tf":1.7320508075688772},"546":{"tf":1.0},"61":{"tf":1.4142135623730951},"77":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"92":{"tf":1.0}}}}}}},"z":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"f":{"d":{"=":{"3":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"i":{"c":{"df":1,"docs":{"79":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"62":{"tf":1.0}},"l":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"q":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":9,"docs":{"213":{"tf":1.0},"214":{"tf":1.0},"259":{"tf":1.0},"336":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"458":{"tf":1.4142135623730951},"526":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":4,"docs":{"156":{"tf":1.0},"292":{"tf":1.0},"487":{"tf":1.0},"9":{"tf":1.0}}}}}}},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"t":{"'":{"df":1,"docs":{"287":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"414":{"tf":1.0}}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"261":{"tf":1.0}}},"df":0,"docs":{}},"r":{"(":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"_":{"df":1,"docs":{"276":{"tf":1.0}}},"df":3,"docs":{"292":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"440":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"328":{"tf":1.0}}}}}}}}},"df":1,"docs":{"292":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"[":{"df":0,"docs":{},"e":{"0":{"2":{"7":{"7":{"df":6,"docs":{"292":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"0":{"8":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"9":{"7":{"df":2,"docs":{"217":{"tf":1.0},"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"5":{"8":{"df":2,"docs":{"196":{"tf":1.0},"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"0":{"6":{"df":2,"docs":{"209":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}},"3":{"3":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":41,"docs":{"110":{"tf":1.4142135623730951},"196":{"tf":1.7320508075688772},"197":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"226":{"tf":1.0},"244":{"tf":1.0},"258":{"tf":1.4142135623730951},"261":{"tf":1.7320508075688772},"263":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"272":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.7320508075688772},"307":{"tf":1.0},"310":{"tf":1.4142135623730951},"317":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.4142135623730951},"370":{"tf":2.0},"380":{"tf":3.605551275463989},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"394":{"tf":1.0},"419":{"tf":1.7320508075688772},"42":{"tf":1.0},"433":{"tf":1.0},"440":{"tf":2.23606797749979},"442":{"tf":1.0},"448":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":2.0},"522":{"tf":1.4142135623730951},"599":{"tf":1.0},"79":{"tf":1.0}}}}}},"s":{"c":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"538":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":7,"docs":{"112":{"tf":1.0},"136":{"tf":1.0},"221":{"tf":1.4142135623730951},"237":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"376":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}}}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"156":{"tf":1.4142135623730951},"469":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"c":{"df":12,"docs":{"136":{"tf":1.0},"230":{"tf":1.0},"235":{"tf":1.0},"302":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"363":{"tf":1.0},"41":{"tf":1.0},"419":{"tf":1.0},"599":{"tf":1.7320508075688772},"62":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"423":{"tf":1.0}}}},"n":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":50,"docs":{"118":{"tf":1.0},"127":{"tf":1.0},"156":{"tf":1.7320508075688772},"171":{"tf":1.0},"192":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"251":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.4142135623730951},"261":{"tf":1.4142135623730951},"263":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.7320508075688772},"288":{"tf":1.0},"292":{"tf":1.4142135623730951},"297":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"313":{"tf":1.0},"324":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":2.0},"399":{"tf":1.0},"405":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"478":{"tf":1.0},"54":{"tf":1.0},"542":{"tf":1.0}},"t":{"df":13,"docs":{"156":{"tf":1.4142135623730951},"185":{"tf":1.0},"190":{"tf":1.7320508075688772},"191":{"tf":1.0},"192":{"tf":2.23606797749979},"336":{"tf":2.8284271247461903},"342":{"tf":1.7320508075688772},"412":{"tf":1.0},"462":{"tf":1.0},"504":{"tf":1.7320508075688772},"555":{"tf":1.0},"599":{"tf":2.23606797749979},"62":{"tf":1.7320508075688772}},"s":{"=":{"0":{"df":0,"docs":{},"x":{"5":{"5":{"5":{"5":{"5":{"5":{"7":{"1":{"1":{"3":{"4":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"b":{"a":{"4":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":11,"docs":{"195":{"tf":1.0},"200":{"tf":1.0},"245":{"tf":1.0},"300":{"tf":1.0},"347":{"tf":1.0},"431":{"tf":1.7320508075688772},"448":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"49":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"361":{"tf":1.0}}}}},"y":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":2,"docs":{"231":{"tf":1.0},"300":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":9,"docs":{"174":{"tf":1.0},"184":{"tf":1.0},"264":{"tf":1.0},"534":{"tf":1.0},"600":{"tf":1.0},"601":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0},"8":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":12,"docs":{"156":{"tf":1.0},"217":{"tf":1.7320508075688772},"245":{"tf":1.0},"257":{"tf":1.0},"261":{"tf":1.0},"309":{"tf":1.0},"324":{"tf":1.0},"457":{"tf":1.0},"504":{"tf":1.4142135623730951},"522":{"tf":1.0},"530":{"tf":1.0},"599":{"tf":1.7320508075688772}}}},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"156":{"tf":1.0},"408":{"tf":1.0},"421":{"tf":1.0},"538":{"tf":1.0}}}}}}}}},"i":{"d":{"df":5,"docs":{"162":{"tf":1.0},"28":{"tf":1.0},"36":{"tf":1.0},"597":{"tf":1.0},"598":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":6,"docs":{"156":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"478":{"tf":1.0},"560":{"tf":1.0},"599":{"tf":1.0}}}}}},"x":{"a":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"380":{"tf":1.0},"431":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":13,"docs":{"218":{"tf":1.0},"258":{"tf":1.0},"322":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.4142135623730951},"40":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"481":{"tf":1.0},"49":{"tf":1.0},"504":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"431":{"tf":1.0}}}},"p":{"df":0,"docs":{},"l":{"df":48,"docs":{"147":{"tf":1.0},"152":{"tf":1.0},"159":{"tf":1.0},"167":{"tf":1.0},"178":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"237":{"tf":1.0},"257":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"336":{"tf":1.0},"365":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"393":{"tf":1.0},"403":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"418":{"tf":1.4142135623730951},"419":{"tf":1.7320508075688772},"421":{"tf":1.0},"422":{"tf":1.4142135623730951},"423":{"tf":1.4142135623730951},"433":{"tf":1.0},"436":{"tf":1.0},"440":{"tf":1.7320508075688772},"450":{"tf":1.0},"47":{"tf":1.0},"485":{"tf":1.0},"491":{"tf":1.0},"502":{"tf":1.0},"517":{"tf":1.0},"529":{"tf":1.0},"56":{"tf":1.0},"564":{"tf":1.0},"57":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0},"599":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.0}},"e":{"(":{"df":0,"docs":{},"x":{"df":1,"docs":{"564":{"tf":1.0}}}},"df":0,"docs":{},"s":{"/":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"8":{"4":{":":{"1":{"5":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"c":{"df":0,"docs":{},"e":{"df":2,"docs":{"347":{"tf":1.0},"431":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"111":{"tf":1.0}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"t":{"df":8,"docs":{"264":{"tf":1.0},"317":{"tf":1.0},"383":{"tf":1.0},"445":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0},"61":{"tf":1.0}}}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"t":{"df":19,"docs":{"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"41":{"tf":2.0},"478":{"tf":1.0},"497":{"tf":1.0},"510":{"tf":1.4142135623730951},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"528":{"tf":1.4142135623730951},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}},"e":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"448":{"tf":1.0}}}}},"df":0,"docs":{}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":2,"docs":{"408":{"tf":1.0},"538":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":25,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.0},"178":{"tf":1.4142135623730951},"181":{"tf":1.0},"209":{"tf":1.7320508075688772},"211":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.0},"308":{"tf":1.0},"318":{"tf":1.0},"336":{"tf":2.0},"341":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"419":{"tf":1.0},"457":{"tf":2.23606797749979},"458":{"tf":1.0},"460":{"tf":1.4142135623730951},"462":{"tf":1.0},"463":{"tf":1.0},"470":{"tf":2.23606797749979},"502":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"462":{"tf":1.0}}},"df":31,"docs":{"156":{"tf":1.7320508075688772},"209":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.7320508075688772},"258":{"tf":1.4142135623730951},"268":{"tf":1.0},"326":{"tf":1.0},"328":{"tf":2.0},"330":{"tf":2.0},"333":{"tf":1.0},"336":{"tf":3.605551275463989},"341":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"349":{"tf":1.0},"359":{"tf":1.4142135623730951},"360":{"tf":1.0},"408":{"tf":1.4142135623730951},"462":{"tf":1.0},"470":{"tf":2.23606797749979},"480":{"tf":1.7320508075688772},"483":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"545":{"tf":2.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.7320508075688772},"549":{"tf":1.0},"599":{"tf":1.4142135623730951},"62":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}},"h":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"248":{"tf":1.0},"538":{"tf":1.0},"598":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":27,"docs":{"120":{"tf":1.0},"130":{"tf":1.4142135623730951},"14":{"tf":1.4142135623730951},"156":{"tf":1.4142135623730951},"192":{"tf":1.0},"204":{"tf":1.0},"211":{"tf":1.0},"22":{"tf":1.0},"235":{"tf":1.0},"276":{"tf":1.0},"315":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.0},"493":{"tf":1.0},"498":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"91":{"tf":1.0},"96":{"tf":1.4142135623730951}}}}},"p":{"a":{"df":0,"docs":{},"n":{"d":{"df":33,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"396":{"tf":1.0},"404":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"437":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"539":{"tf":1.0},"562":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":39,"docs":{"152":{"tf":1.0},"16":{"tf":1.0},"18":{"tf":1.0},"196":{"tf":1.4142135623730951},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"28":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"317":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"408":{"tf":1.7320508075688772},"41":{"tf":2.23606797749979},"417":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"485":{"tf":1.0},"487":{"tf":1.0},"497":{"tf":1.0},"51":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.4142135623730951},"547":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.0},"65":{"tf":2.0},"77":{"tf":1.0},"82":{"tf":1.4142135623730951},"87":{"tf":1.4142135623730951},"9":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":5,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.0},"410":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":107,"docs":{"11":{"tf":1.4142135623730951},"127":{"tf":1.0},"136":{"tf":1.0},"153":{"tf":1.0},"154":{"tf":1.0},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"173":{"tf":1.0},"174":{"tf":1.0},"176":{"tf":1.4142135623730951},"183":{"tf":1.0},"186":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"205":{"tf":1.0},"208":{"tf":1.4142135623730951},"209":{"tf":1.0},"214":{"tf":1.0},"216":{"tf":1.4142135623730951},"218":{"tf":1.0},"220":{"tf":1.4142135623730951},"228":{"tf":1.0},"23":{"tf":2.0},"235":{"tf":1.0},"238":{"tf":1.0},"24":{"tf":1.0},"243":{"tf":1.0},"249":{"tf":1.0},"25":{"tf":1.4142135623730951},"250":{"tf":1.0},"254":{"tf":1.0},"256":{"tf":1.0},"259":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.4142135623730951},"264":{"tf":1.0},"267":{"tf":1.4142135623730951},"27":{"tf":1.0},"275":{"tf":1.4142135623730951},"278":{"tf":1.0},"283":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"295":{"tf":1.0},"299":{"tf":1.4142135623730951},"303":{"tf":1.0},"306":{"tf":1.4142135623730951},"316":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.0},"327":{"tf":1.0},"331":{"tf":1.0},"333":{"tf":1.0},"335":{"tf":1.4142135623730951},"346":{"tf":1.4142135623730951},"353":{"tf":1.0},"355":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":2.0},"369":{"tf":1.4142135623730951},"379":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"382":{"tf":1.4142135623730951},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":2.8284271247461903},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.4142135623730951},"396":{"tf":1.4142135623730951},"403":{"tf":1.0},"407":{"tf":1.4142135623730951},"414":{"tf":1.0},"416":{"tf":1.4142135623730951},"421":{"tf":1.0},"430":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"439":{"tf":1.0},"443":{"tf":1.0},"447":{"tf":1.4142135623730951},"451":{"tf":1.0},"455":{"tf":1.0},"456":{"tf":1.0},"461":{"tf":1.0},"467":{"tf":1.4142135623730951},"47":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":1.0},"475":{"tf":2.0},"477":{"tf":1.4142135623730951},"49":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"597":{"tf":1.0},"79":{"tf":1.0},"8":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"n":{"c":{"df":16,"docs":{"221":{"tf":1.0},"272":{"tf":1.0},"289":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.4142135623730951},"339":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"376":{"tf":1.0},"389":{"tf":1.0},"393":{"tf":1.4142135623730951},"435":{"tf":1.0},"65":{"tf":1.4142135623730951},"71":{"tf":1.0},"79":{"tf":1.0},"89":{"tf":1.0}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"196":{"tf":1.4142135623730951},"209":{"tf":1.0},"357":{"tf":1.0},"392":{"tf":1.0}}}}}}},"t":{"df":7,"docs":{"127":{"tf":1.0},"153":{"tf":1.0},"209":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"245":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"218":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":23,"docs":{"178":{"tf":1.4142135623730951},"198":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.7320508075688772},"217":{"tf":1.0},"218":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"347":{"tf":1.0},"42":{"tf":1.0},"440":{"tf":1.0},"45":{"tf":1.0},"457":{"tf":1.4142135623730951},"458":{"tf":1.0},"48":{"tf":1.0},"480":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"583":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":6,"docs":{"211":{"tf":1.0},"250":{"tf":1.0},"252":{"tf":1.0},"380":{"tf":1.0},"421":{"tf":1.0},"460":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":6,"docs":{"178":{"tf":1.0},"199":{"tf":1.0},"268":{"tf":1.4142135623730951},"458":{"tf":1.0},"470":{"tf":1.0},"6":{"tf":1.0}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":8,"docs":{"11":{"tf":1.0},"268":{"tf":1.0},"330":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"460":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"s":{"df":4,"docs":{"300":{"tf":2.0},"336":{"tf":1.0},"349":{"tf":1.0},"507":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"359":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":8,"docs":{"136":{"tf":1.0},"211":{"tf":1.0},"231":{"tf":1.0},"292":{"tf":2.0},"458":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.0},"74":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":7,"docs":{"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"218":{"tf":1.0},"292":{"tf":1.4142135623730951},"330":{"tf":1.0},"511":{"tf":1.0},"65":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":5,"docs":{"177":{"tf":1.0},"3":{"tf":1.0},"389":{"tf":1.0},"503":{"tf":1.0},"59":{"tf":1.0}}},"t":{"df":1,"docs":{"352":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"df":8,"docs":{"185":{"tf":1.0},"240":{"tf":1.0},"256":{"tf":1.0},"3":{"tf":1.0},"336":{"tf":1.4142135623730951},"521":{"tf":1.0},"535":{"tf":1.0},"599":{"tf":1.0}}}}},"r":{"a":{"df":5,"docs":{"178":{"tf":1.0},"246":{"tf":1.0},"259":{"tf":1.0},"397":{"tf":1.0},"503":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":11,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"130":{"tf":1.0},"179":{"tf":1.0},"268":{"tf":1.0},"349":{"tf":1.0},"408":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0}}}}}}},"y":{"df":1,"docs":{"25":{"tf":1.0}}}},"f":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{")":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"a":{"c":{"a":{"d":{"df":1,"docs":{"515":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":40,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"237":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"9":{"tf":1.0}}},"t":{"df":9,"docs":{"137":{"tf":1.0},"237":{"tf":1.0},"268":{"tf":1.4142135623730951},"300":{"tf":1.0},"321":{"tf":1.0},"37":{"tf":1.0},"457":{"tf":1.0},"517":{"tf":1.0},"55":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"261":{"tf":1.0},"302":{"tf":1.0},"336":{"tf":1.0}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"16":{"tf":1.0},"29":{"tf":1.0},"42":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":9,"docs":{"153":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.4142135623730951},"457":{"tf":1.0},"470":{"tf":1.0},"9":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"127":{"tf":1.0}}}}},"r":{"df":3,"docs":{"18":{"tf":1.0},"256":{"tf":1.0},"521":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":8,"docs":{"171":{"tf":1.0},"177":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"317":{"tf":1.0},"442":{"tf":1.0},"475":{"tf":1.0},"530":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"l":{"df":3,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"289":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"214":{"tf":1.0}}}}},"s":{"df":1,"docs":{"470":{"tf":1.0}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"r":{"df":13,"docs":{"120":{"tf":1.0},"264":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"317":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.4142135623730951},"435":{"tf":1.0},"440":{"tf":1.0},"475":{"tf":1.0},"530":{"tf":1.0},"559":{"tf":1.0},"73":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"df":1,"docs":{"67":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"143":{"tf":1.0}}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"q":{"df":52,"docs":{"158":{"tf":1.0},"16":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"22":{"tf":1.4142135623730951},"220":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":2.23606797749979},"283":{"tf":1.0},"29":{"tf":1.4142135623730951},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"309":{"tf":1.0},"32":{"tf":1.0},"329":{"tf":1.0},"335":{"tf":1.0},"34":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"40":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":2.23606797749979},"416":{"tf":1.0},"42":{"tf":1.4142135623730951},"447":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.0},"467":{"tf":1.0},"47":{"tf":1.0},"477":{"tf":1.0},"48":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"492":{"tf":1.0},"50":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"59":{"tf":1.0}}},"r":{"df":13,"docs":{"111":{"tf":1.0},"197":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.0},"217":{"tf":1.0},"336":{"tf":1.0},"361":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.0},"599":{"tf":1.0}},"e":{"df":2,"docs":{"41":{"tf":2.0},"9":{"tf":1.0}}},"n":{"df":0,"docs":{},"z":{"df":1,"docs":{"602":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":5,"docs":{"153":{"tf":1.0},"201":{"tf":1.0},"522":{"tf":1.0},"545":{"tf":1.0},"9":{"tf":1.0}}}}}},"t":{"df":6,"docs":{"119":{"tf":1.0},"121":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"231":{"tf":1.0},"357":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"178":{"tf":1.0},"389":{"tf":1.0},"469":{"tf":1.0},"532":{"tf":1.0}},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":2,"docs":{"370":{"tf":1.0},"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":1,"docs":{"231":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":4,"docs":{"131":{"tf":1.0},"245":{"tf":1.0},"363":{"tf":1.0},"513":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"167":{"tf":1.0},"356":{"tf":1.0},"478":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"61":{"tf":1.0}}}}}}},"df":4,"docs":{"217":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"292":{"tf":2.6457513110645907},"380":{"tf":1.4142135623730951}},"e":{"a":{"df":0,"docs":{},"r":{"df":7,"docs":{"235":{"tf":1.0},"237":{"tf":1.0},"256":{"tf":1.0},"300":{"tf":1.0},"363":{"tf":1.0},"408":{"tf":1.0},"521":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":30,"docs":{"138":{"tf":1.0},"16":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.0},"230":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"239":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.0},"300":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"341":{"tf":2.23606797749979},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.7320508075688772},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"46":{"tf":1.0},"469":{"tf":1.0},"486":{"tf":1.4142135623730951},"509":{"tf":1.0},"538":{"tf":1.0},"560":{"tf":1.0},"561":{"tf":1.0},"60":{"tf":1.0},"602":{"tf":1.0}},"e":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"_":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"d":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":7,"docs":{"15":{"tf":1.0},"17":{"tf":1.0},"209":{"tf":1.0},"24":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"547":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":71,"docs":{"152":{"tf":1.0},"156":{"tf":1.0},"158":{"tf":1.0},"159":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"17":{"tf":1.0},"176":{"tf":1.0},"178":{"tf":1.4142135623730951},"186":{"tf":1.0},"187":{"tf":1.0},"189":{"tf":1.4142135623730951},"194":{"tf":1.0},"197":{"tf":1.0},"2":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"221":{"tf":1.0},"261":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.7320508075688772},"28":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"306":{"tf":1.0},"329":{"tf":1.0},"33":{"tf":1.0},"331":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"35":{"tf":1.0},"359":{"tf":1.4142135623730951},"369":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.7320508075688772},"381":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0},"447":{"tf":1.0},"449":{"tf":1.0},"457":{"tf":1.4142135623730951},"467":{"tf":1.0},"47":{"tf":1.0},"477":{"tf":1.0},"485":{"tf":1.0},"487":{"tf":1.0},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"501":{"tf":1.0},"509":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.0},"537":{"tf":1.0},"556":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.0},"96":{"tf":1.0}}}},"l":{"df":0,"docs":{},"t":{"df":5,"docs":{"218":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":2.23606797749979}}}},"t":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"(":{"&":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"df":2,"docs":{"523":{"tf":1.7320508075688772},"535":{"tf":1.0}},"s":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"523":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":3,"docs":{"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"312":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":24,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"195":{"tf":1.0},"209":{"tf":1.0},"232":{"tf":1.0},"259":{"tf":1.4142135623730951},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"359":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.23606797749979},"389":{"tf":1.0},"397":{"tf":1.0},"410":{"tf":1.0},"431":{"tf":1.0},"486":{"tf":1.0},"516":{"tf":1.0},"556":{"tf":1.0},"79":{"tf":1.0},"9":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"284":{"tf":1.0},"377":{"tf":1.0}}}}}},"i":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"154":{"tf":1.0},"23":{"tf":1.0},"9":{"tf":1.0}}}}}}},"d":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"294":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":3,"docs":{"296":{"tf":1.0},"328":{"tf":1.0},"508":{"tf":1.0}}},"df":0,"docs":{}},"r":{"c":{"df":1,"docs":{"138":{"tf":1.0}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"110":{"tf":1.0},"370":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"r":{"df":22,"docs":{"178":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.4142135623730951},"251":{"tf":1.0},"268":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"317":{"tf":1.0},"347":{"tf":1.7320508075688772},"353":{"tf":1.0},"370":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"41":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"49":{"tf":1.4142135623730951},"499":{"tf":1.0},"52":{"tf":1.0},"53":{"tf":1.0},"539":{"tf":1.0},"552":{"tf":1.0},"599":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"199":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"196":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"_":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"195":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"b":{"\"":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":4,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},":":{":":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"(":{"\"":{"a":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"\"":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"522":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"522":{"tf":2.23606797749979},"523":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":23,"docs":{"157":{"tf":1.4142135623730951},"16":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.4142135623730951},"199":{"tf":1.7320508075688772},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"21":{"tf":1.4142135623730951},"24":{"tf":1.0},"257":{"tf":2.0},"258":{"tf":1.0},"26":{"tf":1.4142135623730951},"279":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.4142135623730951},"44":{"tf":1.0},"489":{"tf":1.4142135623730951},"522":{"tf":2.8284271247461903},"523":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0}}},"l":{"df":3,"docs":{"458":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.4142135623730951}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"|":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"312":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"312":{"tf":2.0},"431":{"tf":1.0}}}}}},"n":{"a":{"df":0,"docs":{},"l":{"df":9,"docs":{"15":{"tf":1.0},"197":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"389":{"tf":1.0},"470":{"tf":1.0},"61":{"tf":1.0}}}},"d":{"df":63,"docs":{"140":{"tf":1.0},"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"175":{"tf":1.0},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"190":{"tf":1.4142135623730951},"199":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":2.0},"246":{"tf":1.0},"248":{"tf":1.0},"25":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"261":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"276":{"tf":2.0},"278":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"370":{"tf":2.23606797749979},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"397":{"tf":1.0},"401":{"tf":1.0},"408":{"tf":2.23606797749979},"410":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.7320508075688772},"436":{"tf":1.0},"458":{"tf":1.0},"46":{"tf":1.0},"469":{"tf":1.0},"493":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"510":{"tf":1.0},"512":{"tf":1.0},"528":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"543":{"tf":1.0},"55":{"tf":1.0},"559":{"tf":1.0},"57":{"tf":1.0},"96":{"tf":1.4142135623730951}}},"df":1,"docs":{"397":{"tf":1.0}},"e":{"df":10,"docs":{"137":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.7320508075688772},"268":{"tf":1.0},"309":{"tf":1.0},"336":{"tf":1.0},"458":{"tf":1.0},"511":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}},"i":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":14,"docs":{"189":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"374":{"tf":1.0},"521":{"tf":1.0},"558":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"309":{"tf":1.0},"448":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":46,"docs":{"136":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"187":{"tf":1.4142135623730951},"188":{"tf":1.0},"189":{"tf":1.0},"196":{"tf":1.4142135623730951},"198":{"tf":1.0},"232":{"tf":1.4142135623730951},"233":{"tf":1.4142135623730951},"246":{"tf":1.0},"251":{"tf":1.0},"257":{"tf":1.4142135623730951},"259":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"300":{"tf":1.0},"312":{"tf":1.0},"328":{"tf":1.7320508075688772},"354":{"tf":1.0},"356":{"tf":1.4142135623730951},"358":{"tf":1.0},"359":{"tf":1.0},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":2.449489742783178},"386":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.7320508075688772},"457":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"465":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"502":{"tf":1.0},"522":{"tf":1.7320508075688772},"525":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951},"61":{"tf":1.0}}}},"t":{"df":1,"docs":{"470":{"tf":1.0}}}},"t":{"df":14,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"35":{"tf":1.4142135623730951},"370":{"tf":1.0},"383":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"435":{"tf":1.0},"515":{"tf":1.0},"527":{"tf":1.0},"531":{"tf":1.0},"65":{"tf":1.0}}},"x":{"df":16,"docs":{"155":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.0},"174":{"tf":1.0},"2":{"tf":1.0},"234":{"tf":1.0},"237":{"tf":1.4142135623730951},"246":{"tf":1.0},"261":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.0},"431":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":1.0},"556":{"tf":1.4142135623730951},"84":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"g":{"df":4,"docs":{"178":{"tf":1.0},"244":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.0}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"209":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"110":{"tf":1.0},"336":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"8":{":":{"3":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"116":{"tf":1.0},"129":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"531":{"tf":1.0}}}}}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":1,"docs":{"177":{"tf":1.0}}}}}}}},"n":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":59,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.4142135623730951},"196":{"tf":1.7320508075688772},"197":{"tf":1.4142135623730951},"199":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.7320508075688772},"217":{"tf":2.8284271247461903},"221":{"tf":2.23606797749979},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.4142135623730951},"292":{"tf":3.7416573867739413},"307":{"tf":2.23606797749979},"308":{"tf":1.7320508075688772},"309":{"tf":2.0},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"313":{"tf":1.0},"320":{"tf":1.4142135623730951},"328":{"tf":2.449489742783178},"336":{"tf":2.6457513110645907},"341":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"370":{"tf":3.3166247903554},"375":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"418":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":3.1622776601683795},"448":{"tf":2.0},"450":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"522":{"tf":2.449489742783178},"523":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.4142135623730951},"564":{"tf":1.4142135623730951},"568":{"tf":1.4142135623730951},"573":{"tf":1.0},"575":{"tf":1.4142135623730951},"576":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":2.23606797749979},"580":{"tf":1.4142135623730951},"581":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"(":{"&":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"s":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"c":{"df":0,"docs":{},"u":{"df":8,"docs":{"110":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.0},"16":{"tf":1.0},"41":{"tf":1.0},"46":{"tf":1.0},"472":{"tf":1.0},"77":{"tf":1.0}},"s":{"df":6,"docs":{"203":{"tf":1.0},"3":{"tf":1.4142135623730951},"389":{"tf":1.0},"402":{"tf":1.0},"435":{"tf":1.0},"551":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"36":{"tf":1.0}}}}},"df":0,"docs":{},"k":{"df":7,"docs":{"153":{"tf":1.0},"16":{"tf":1.0},"19":{"tf":1.0},"25":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.0},"572":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}},"o":{"df":0,"docs":{},"w":{"df":21,"docs":{"156":{"tf":1.0},"157":{"tf":1.0},"177":{"tf":1.0},"195":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"22":{"tf":1.0},"221":{"tf":1.7320508075688772},"230":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"357":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":2.23606797749979},"389":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"489":{"tf":1.0},"538":{"tf":1.0},"561":{"tf":1.0}}}},"w":{"df":1,"docs":{"370":{"tf":1.0}}},"y":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{":":{":":{"c":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"(":{"[":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"<":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"m":{"df":0,"docs":{},"o":{"df":1,"docs":{"363":{"tf":1.0}}}},"o":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"581":{"tf":1.0}}}}}}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"`":{"_":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{".":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"2":{"7":{"2":{"df":0,"docs":{},"e":{"2":{"b":{"5":{"df":0,"docs":{},"e":{"8":{"0":{"8":{"2":{"6":{"4":{"a":{"2":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"p":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"4":{"d":{"a":{"d":{"2":{"6":{"7":{"b":{"4":{"df":0,"docs":{},"f":{"1":{"0":{"5":{"3":{"5":{"d":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"c":{"$":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{".":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"d":{"6":{"2":{"d":{"2":{"a":{"2":{"4":{"1":{"7":{"c":{"0":{"df":0,"docs":{},"f":{"2":{"df":0,"docs":{},"e":{"a":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"p":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"4":{"8":{"2":{"df":0,"docs":{},"f":{"2":{"5":{"3":{"6":{"5":{"1":{"b":{"9":{"6":{"8":{"df":0,"docs":{},"e":{"6":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},".":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"f":{"5":{"b":{"2":{"9":{"5":{"df":0,"docs":{},"f":{"c":{"c":{"0":{"8":{"3":{"7":{"df":0,"docs":{},"f":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"1":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"2":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"df":0,"docs":{},"f":{"6":{"0":{"df":0,"docs":{},"f":{"0":{"5":{"df":0,"docs":{},"f":{"9":{"df":0,"docs":{},"e":{"9":{"d":{"6":{"df":0,"docs":{},"f":{"3":{"0":{"7":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{".":{".":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"a":{"2":{"4":{"7":{"2":{"a":{"9":{"a":{"5":{"4":{"df":0,"docs":{},"f":{"0":{"df":0,"docs":{},"e":{"5":{"0":{"4":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"m":{"a":{"df":0,"docs":{},"y":{"b":{"df":0,"docs":{},"e":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"y":{"b":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"d":{"b":{"6":{"d":{"b":{"4":{"0":{"c":{"2":{"b":{"3":{"df":0,"docs":{},"f":{"2":{"df":0,"docs":{},"f":{"1":{"b":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"t":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"1":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"a":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"c":{"5":{"5":{"9":{"b":{"1":{"df":0,"docs":{},"f":{"3":{"df":0,"docs":{},"f":{"7":{"0":{"8":{"a":{"7":{"b":{"0":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"b":{"a":{"8":{"6":{"a":{"df":0,"docs":{},"f":{"c":{"3":{"df":0,"docs":{},"f":{"8":{"1":{"9":{"7":{"5":{"6":{"1":{"(":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"6":{"1":{"7":{"d":{"4":{"9":{"d":{"0":{"8":{"4":{"1":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"0":{"d":{"(":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"6":{"4":{"5":{"9":{"0":{"8":{"6":{"df":0,"docs":{},"f":{"c":{"0":{"4":{"1":{"9":{"4":{"3":{"df":0,"docs":{},"f":{"(":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"d":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"2":{"4":{"c":{"5":{"8":{"c":{"d":{"1":{"df":0,"docs":{},"e":{"1":{"1":{"2":{"1":{"3":{"6":{"df":0,"docs":{},"f":{"df":1,"docs":{"404":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"a":{"8":{"6":{"9":{"4":{"b":{"c":{"6":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"5":{"1":{"8":{"2":{"c":{"d":{"(":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"9":{"6":{"5":{"c":{"2":{"8":{"c":{"9":{"c":{"df":0,"docs":{},"e":{"0":{"6":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"7":{"3":{"df":1,"docs":{"404":{"tf":2.23606797749979}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"_":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{":":{":":{"_":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"8":{"5":{"6":{"d":{"6":{"4":{"8":{"3":{"6":{"7":{"8":{"9":{"5":{"3":{"9":{"1":{"(":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{":":{":":{"df":0,"docs":{},"h":{"9":{"a":{"2":{"df":0,"docs":{},"f":{"7":{"0":{"c":{"5":{"c":{"8":{"df":0,"docs":{},"e":{"6":{"3":{"2":{"8":{"8":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"5":{"5":{"5":{"5":{"5":{"5":{"6":{"df":0,"docs":{},"e":{"2":{"a":{"4":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{":":{":":{"df":0,"docs":{},"h":{"1":{"2":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"d":{"0":{"9":{"0":{"6":{"b":{"9":{"4":{"d":{"0":{"9":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"5":{"5":{"5":{"5":{"5":{"5":{"6":{"df":0,"docs":{},"e":{"2":{"a":{"4":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"_":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"a":{"2":{"2":{"9":{"c":{"df":0,"docs":{},"f":{"a":{"0":{"c":{"1":{"a":{"2":{"df":0,"docs":{},"e":{"1":{"3":{"df":0,"docs":{},"f":{"(":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"7":{"c":{"0":{"6":{"7":{"1":{"2":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"b":{"df":0,"docs":{},"f":{"c":{"6":{"1":{"d":{"9":{"df":0,"docs":{},"f":{"7":{"4":{"7":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"7":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"3":{"3":{"b":{"2":{"7":{"0":{"a":{"df":0,"docs":{},"f":{"5":{"8":{"4":{"4":{"1":{"9":{"df":0,"docs":{},"f":{"1":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"0":{"7":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"4":{"a":{"9":{"c":{"2":{"6":{"0":{"2":{"df":0,"docs":{},"e":{"7":{"b":{"8":{"2":{"8":{"4":{"0":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"0":{"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"5":{"df":0,"docs":{},"f":{"6":{"b":{"a":{"d":{"d":{"2":{"d":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"a":{"d":{"df":0,"docs":{},"f":{"5":{"5":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"2":{"7":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"6":{"b":{"2":{"1":{"1":{"c":{"df":0,"docs":{},"e":{"1":{"9":{"d":{"b":{"8":{"9":{"8":{"9":{"d":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"2":{"8":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":4,"docs":{"404":{"tf":1.0},"504":{"tf":1.0},"576":{"tf":1.0},"579":{"tf":1.7320508075688772}},"t":{"df":1,"docs":{"472":{"tf":1.0}},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"156":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"111":{"tf":1.0}}}}}}}}},"r":{"<":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":1,"docs":{"440":{"tf":2.0}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"e":{"a":{"c":{"df":0,"docs":{},"h":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"r":{"df":1,"docs":{"440":{"tf":1.0}}}}},"df":1,"docs":{"440":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"a":{"df":0,"docs":{},"y":{"df":4,"docs":{"156":{"tf":1.0},"354":{"tf":1.0},"356":{"tf":1.0},"525":{"tf":1.0}}}},"c":{"df":10,"docs":{"136":{"tf":1.0},"218":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.0},"300":{"tf":1.0},"330":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":2,"docs":{"156":{"tf":1.0},"211":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"497":{"tf":1.0}}}},"v":{"df":2,"docs":{"200":{"tf":1.0},"284":{"tf":1.0}}}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"156":{"tf":1.0}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"292":{"tf":1.0}}}}}}}},"k":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}},"m":{"df":8,"docs":{"209":{"tf":1.0},"218":{"tf":1.0},"237":{"tf":1.0},"417":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.0},"478":{"tf":1.0},"600":{"tf":1.0}},"u":{"df":0,"docs":{},"l":{"a":{"df":1,"docs":{"469":{"tf":1.0}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":3,"docs":{"3":{"tf":1.0},"502":{"tf":1.0},"508":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"df":2,"docs":{"370":{"tf":1.0},"456":{"tf":1.7320508075688772}}}}},"u":{"df":0,"docs":{},"m":{"df":4,"docs":{"11":{"tf":1.0},"178":{"tf":1.4142135623730951},"292":{"tf":1.0},"380":{"tf":1.0}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":8,"docs":{"179":{"tf":1.0},"221":{"tf":1.0},"276":{"tf":1.0},"340":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"412":{"tf":1.0},"423":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"n":{"d":{"a":{"df":0,"docs":{},"t":{"df":10,"docs":{"0":{"tf":1.0},"116":{"tf":1.0},"16":{"tf":1.0},"24":{"tf":1.0},"25":{"tf":1.0},"3":{"tf":1.0},"383":{"tf":1.0},"4":{"tf":1.0},"557":{"tf":1.0},"8":{"tf":1.0}}}},"df":23,"docs":{"1":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.0},"16":{"tf":1.4142135623730951},"196":{"tf":1.0},"246":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"276":{"tf":1.0},"328":{"tf":1.4142135623730951},"340":{"tf":1.0},"356":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.4142135623730951},"394":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.4142135623730951},"470":{"tf":1.7320508075688772},"478":{"tf":1.0},"526":{"tf":1.0},"53":{"tf":1.0},"598":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":2,"docs":{"231":{"tf":1.0},"64":{"tf":1.0}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"156":{"tf":1.0},"258":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"209":{"tf":1.7320508075688772},"278":{"tf":1.4142135623730951},"338":{"tf":1.0},"599":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"458":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":9,"docs":{"201":{"tf":1.0},"284":{"tf":1.4142135623730951},"313":{"tf":1.0},"399":{"tf":1.0},"404":{"tf":5.744562646538029},"456":{"tf":2.23606797749979},"457":{"tf":2.0},"458":{"tf":2.23606797749979},"469":{"tf":1.0}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":16,"docs":{"110":{"tf":1.0},"111":{"tf":1.0},"131":{"tf":1.0},"137":{"tf":1.0},"156":{"tf":1.0},"187":{"tf":1.0},"189":{"tf":1.0},"192":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.4142135623730951},"290":{"tf":1.0},"292":{"tf":3.0},"296":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"61":{"tf":1.0}}}}}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"431":{"tf":1.0}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"237":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"d":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":48,"docs":{"110":{"tf":1.0},"158":{"tf":1.0},"159":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"2":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"329":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0},"447":{"tf":1.0},"449":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0},"55":{"tf":1.0},"96":{"tf":1.0}}},"q":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":55,"docs":{"100":{"tf":1.0},"109":{"tf":1.0},"117":{"tf":1.0},"126":{"tf":1.0},"135":{"tf":1.0},"144":{"tf":1.0},"154":{"tf":1.4142135623730951},"160":{"tf":1.0},"170":{"tf":1.0},"180":{"tf":1.0},"192":{"tf":1.0},"202":{"tf":1.0},"210":{"tf":1.0},"218":{"tf":1.0},"222":{"tf":1.0},"236":{"tf":1.0},"247":{"tf":1.0},"260":{"tf":1.0},"269":{"tf":1.0},"277":{"tf":1.0},"285":{"tf":1.0},"293":{"tf":1.0},"30":{"tf":1.0},"301":{"tf":1.0},"314":{"tf":1.0},"329":{"tf":1.0},"337":{"tf":1.0},"348":{"tf":1.0},"362":{"tf":1.0},"371":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"398":{"tf":1.0},"409":{"tf":1.0},"424":{"tf":1.0},"43":{"tf":1.0},"432":{"tf":1.0},"441":{"tf":1.0},"449":{"tf":1.0},"459":{"tf":1.0},"470":{"tf":1.4142135623730951},"471":{"tf":1.0},"479":{"tf":1.0},"487":{"tf":1.0},"492":{"tf":1.0},"505":{"tf":1.0},"524":{"tf":1.0},"540":{"tf":1.0},"582":{"tf":1.0},"593":{"tf":1.0},"66":{"tf":1.0},"75":{"tf":1.0},"80":{"tf":1.0},"85":{"tf":1.0},"90":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"178":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"191":{"tf":1.0}}}}}}}}}}},"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"555":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":5,"docs":{"168":{"tf":1.4142135623730951},"276":{"tf":1.0},"370":{"tf":1.0},"544":{"tf":1.0},"583":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"389":{"tf":1.0},"52":{"tf":1.0},"566":{"tf":1.0}}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"m":{"<":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"<":{"[":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"307":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"310":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"504":{"tf":1.0},"61":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"408":{"tf":1.0},"561":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":8,"docs":{"136":{"tf":1.0},"178":{"tf":1.0},"213":{"tf":1.0},"276":{"tf":1.4142135623730951},"309":{"tf":1.0},"310":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"w":{"df":1,"docs":{"410":{"tf":1.0}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":12,"docs":{"110":{"tf":1.4142135623730951},"128":{"tf":1.4142135623730951},"156":{"tf":1.4142135623730951},"230":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"405":{"tf":1.0},"47":{"tf":1.0},"498":{"tf":1.0},"538":{"tf":1.0},"560":{"tf":1.0},"95":{"tf":1.0}},"i":{"df":12,"docs":{"195":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"270":{"tf":1.0},"324":{"tf":1.0},"360":{"tf":1.0},"470":{"tf":1.0},"487":{"tf":1.0},"51":{"tf":1.0},"62":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"217":{"tf":1.0}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"2":{"7":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"9":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":56,"docs":{"156":{"tf":1.4142135623730951},"167":{"tf":1.0},"169":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":1.7320508075688772},"209":{"tf":2.0},"214":{"tf":1.0},"217":{"tf":3.1622776601683795},"218":{"tf":2.449489742783178},"221":{"tf":1.4142135623730951},"245":{"tf":1.4142135623730951},"257":{"tf":1.7320508075688772},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":3.0},"300":{"tf":1.0},"307":{"tf":2.0},"308":{"tf":1.0},"309":{"tf":1.7320508075688772},"311":{"tf":1.4142135623730951},"320":{"tf":1.4142135623730951},"324":{"tf":1.7320508075688772},"336":{"tf":2.6457513110645907},"344":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":3.605551275463989},"372":{"tf":1.4142135623730951},"374":{"tf":1.0},"375":{"tf":1.4142135623730951},"380":{"tf":2.0},"383":{"tf":1.4142135623730951},"389":{"tf":1.0},"393":{"tf":1.0},"399":{"tf":1.0},"403":{"tf":1.0},"417":{"tf":1.0},"448":{"tf":2.449489742783178},"450":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"515":{"tf":1.0},"522":{"tf":1.4142135623730951},"526":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"553":{"tf":1.0},"566":{"tf":1.0},"573":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"61":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"374":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"d":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"319":{"tf":1.0},"342":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":7,"docs":{"190":{"tf":1.0},"268":{"tf":1.0},"498":{"tf":1.0},"64":{"tf":1.0},"74":{"tf":1.0},"96":{"tf":1.0},"99":{"tf":1.0}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":14,"docs":{"111":{"tf":1.0},"112":{"tf":1.0},"211":{"tf":1.0},"256":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.0},"420":{"tf":1.0},"470":{"tf":1.0},"521":{"tf":1.0},"530":{"tf":1.0}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"526":{"tf":1.0}}}},"t":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"(":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"0":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"419":{"tf":1.4142135623730951}}},"1":{"df":1,"docs":{"419":{"tf":1.0}}},">":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"292":{"tf":3.1622776601683795},"421":{"tf":1.4142135623730951}},"u":{"df":0,"docs":{},"r":{"df":147,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"147":{"tf":1.0},"15":{"tf":1.7320508075688772},"156":{"tf":2.8284271247461903},"16":{"tf":1.7320508075688772},"167":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":1.0},"171":{"tf":2.449489742783178},"18":{"tf":1.0},"188":{"tf":1.0},"19":{"tf":1.0},"199":{"tf":2.6457513110645907},"204":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.0},"217":{"tf":2.6457513110645907},"218":{"tf":2.8284271247461903},"221":{"tf":2.0},"246":{"tf":2.449489742783178},"252":{"tf":1.7320508075688772},"258":{"tf":1.0},"268":{"tf":2.449489742783178},"271":{"tf":1.0},"278":{"tf":1.4142135623730951},"284":{"tf":2.0},"292":{"tf":2.23606797749979},"294":{"tf":1.0},"307":{"tf":1.7320508075688772},"308":{"tf":1.0},"310":{"tf":1.0},"312":{"tf":1.0},"318":{"tf":1.4142135623730951},"320":{"tf":1.0},"322":{"tf":1.0},"325":{"tf":1.4142135623730951},"328":{"tf":3.0},"331":{"tf":1.4142135623730951},"334":{"tf":1.0},"336":{"tf":5.830951894845301},"338":{"tf":2.23606797749979},"340":{"tf":1.7320508075688772},"341":{"tf":4.123105625617661},"342":{"tf":2.449489742783178},"343":{"tf":2.0},"347":{"tf":2.0},"37":{"tf":1.7320508075688772},"370":{"tf":2.6457513110645907},"374":{"tf":1.4142135623730951},"38":{"tf":1.0},"380":{"tf":5.916079783099616},"383":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"40":{"tf":2.23606797749979},"41":{"tf":3.7416573867739413},"415":{"tf":1.0},"417":{"tf":1.4142135623730951},"419":{"tf":1.4142135623730951},"42":{"tf":1.0},"421":{"tf":2.0},"423":{"tf":1.0},"426":{"tf":1.0},"431":{"tf":1.0},"433":{"tf":1.0},"44":{"tf":1.0},"45":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":2.6457513110645907},"458":{"tf":2.0},"46":{"tf":1.7320508075688772},"460":{"tf":1.4142135623730951},"47":{"tf":1.7320508075688772},"484":{"tf":1.0},"485":{"tf":1.0},"486":{"tf":1.0},"489":{"tf":2.0},"49":{"tf":1.4142135623730951},"490":{"tf":1.4142135623730951},"494":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"499":{"tf":1.4142135623730951},"500":{"tf":1.0},"501":{"tf":1.4142135623730951},"502":{"tf":1.0},"508":{"tf":1.0},"51":{"tf":1.7320508075688772},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.4142135623730951},"516":{"tf":1.4142135623730951},"517":{"tf":1.0},"518":{"tf":1.0},"519":{"tf":1.4142135623730951},"52":{"tf":1.0},"522":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.4142135623730951},"53":{"tf":1.4142135623730951},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.4142135623730951},"534":{"tf":1.4142135623730951},"535":{"tf":1.0},"536":{"tf":1.0},"537":{"tf":1.4142135623730951},"54":{"tf":1.4142135623730951},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"55":{"tf":1.0},"560":{"tf":1.0},"57":{"tf":2.0},"578":{"tf":1.4142135623730951},"579":{"tf":1.7320508075688772},"58":{"tf":1.0},"580":{"tf":1.4142135623730951},"584":{"tf":1.0},"59":{"tf":1.4142135623730951},"596":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.0},"600":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}},"e":{"'":{"df":2,"docs":{"347":{"tf":1.0},"457":{"tf":1.0}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"1":{"9":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":3,"docs":{"284":{"tf":1.0},"336":{"tf":1.0},"417":{"tf":1.0}}}}}},"df":0,"docs":{}},"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":11,"docs":{"199":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"309":{"tf":1.0},"328":{"tf":1.7320508075688772},"370":{"tf":2.23606797749979},"375":{"tf":1.0},"380":{"tf":1.4142135623730951},"579":{"tf":1.0},"580":{"tf":1.4142135623730951}}}}}}}}},"=":{"(":{"_":{"_":{"0":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":1.0}}}}},"s":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"(":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"380":{"tf":2.0}}},"df":0,"docs":{}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"_":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"_":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"df":1,"docs":{"380":{"tf":1.0}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"(":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{")":{")":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"_":{"df":1,"docs":{"380":{"tf":2.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"185":{"tf":1.0},"189":{"tf":1.0}}}},"df":0,"docs":{}}}}}},":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"d":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"308":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"310":{"tf":1.7320508075688772},"380":{"tf":1.0},"440":{"tf":4.123105625617661}},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"383":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"383":{"tf":1.0}},"l":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"383":{"tf":1.0}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.0}}}}},"{":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"370":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"311":{"tf":1.4142135623730951},"312":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":2.449489742783178}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"<":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"440":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}}},"{":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"1":{"df":1,"docs":{"419":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"[":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"@":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"[":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"@":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"e":{"d":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"<":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}}}}}}}}}}},"g":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":8,"docs":{"217":{"tf":1.0},"218":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"408":{"tf":1.7320508075688772},"410":{"tf":1.0},"460":{"tf":1.0},"508":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"182":{"tf":1.0},"400":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"b":{"a":{"df":0,"docs":{},"g":{"df":4,"docs":{"136":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"df":1,"docs":{"599":{"tf":1.0}},"e":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":1,"docs":{"417":{"tf":1.0}}}}}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"172":{"tf":1.0},"209":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"538":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"153":{"tf":1.0},"9":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":5,"docs":{"246":{"tf":1.0},"383":{"tf":1.0},"469":{"tf":1.0},"552":{"tf":1.0},"599":{"tf":1.0}}}}},"c":{"'":{"d":{"df":6,"docs":{"241":{"tf":1.0},"265":{"tf":1.0},"347":{"tf":1.0},"463":{"tf":1.0},"65":{"tf":1.4142135623730951},"71":{"tf":1.0}}},"df":0,"docs":{}},"_":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"a":{"df":1,"docs":{"218":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"c":{"df":1,"docs":{"214":{"tf":1.4142135623730951}}},"d":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"504":{"tf":2.0}}},"df":5,"docs":{"209":{"tf":1.0},"218":{"tf":2.23606797749979},"239":{"tf":1.0},"431":{"tf":1.0},"65":{"tf":1.0}},"e":{"d":{"df":3,"docs":{"127":{"tf":1.0},"248":{"tf":1.0},"250":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"d":{"b":{"df":9,"docs":{"156":{"tf":1.0},"284":{"tf":2.6457513110645907},"289":{"tf":1.0},"446":{"tf":1.0},"448":{"tf":2.6457513110645907},"452":{"tf":1.0},"453":{"tf":1.0},"543":{"tf":1.0},"82":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"c":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"n":{"df":1,"docs":{"573":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"@":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":0,"docs":{},"}":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":1,"docs":{"440":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":36,"docs":{"114":{"tf":1.0},"119":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.4142135623730951},"201":{"tf":1.0},"211":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"27":{"tf":1.0},"319":{"tf":1.0},"321":{"tf":1.0},"33":{"tf":1.4142135623730951},"336":{"tf":1.0},"349":{"tf":1.4142135623730951},"359":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.4142135623730951},"385":{"tf":1.0},"393":{"tf":1.0},"421":{"tf":1.0},"47":{"tf":1.4142135623730951},"486":{"tf":1.0},"492":{"tf":1.0},"502":{"tf":1.0},"513":{"tf":1.0},"515":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":2.0},"576":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}},"y":{".":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"470":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"169":{"tf":1.0}},"e":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"167":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}}}},"df":34,"docs":{"129":{"tf":1.0},"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"168":{"tf":1.0},"2":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"245":{"tf":1.0},"246":{"tf":1.0},"251":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"307":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.4142135623730951},"328":{"tf":1.0},"347":{"tf":1.0},"363":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":1.7320508075688772},"431":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"46":{"tf":1.0},"522":{"tf":1.0},"526":{"tf":1.0},"529":{"tf":1.4142135623730951},"560":{"tf":1.0},"599":{"tf":1.4142135623730951},"65":{"tf":1.7320508075688772},"79":{"tf":1.7320508075688772},"84":{"tf":1.0}}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":5,"docs":{"156":{"tf":1.4142135623730951},"415":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0}},"l":{"/":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"421":{"tf":1.0},"423":{"tf":1.0}}}}},"df":0,"docs":{}},"q":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"427":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":1,"docs":{"178":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{"df":1,"docs":{"172":{"tf":1.0}}},"df":0,"docs":{}}}},"v":{"df":0,"docs":{},"e":{"df":40,"docs":{"152":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"179":{"tf":1.0},"19":{"tf":1.0},"191":{"tf":1.4142135623730951},"196":{"tf":1.0},"201":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"261":{"tf":1.0},"27":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"322":{"tf":1.0},"33":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.7320508075688772},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"401":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":1.0},"442":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.0},"485":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"542":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.0},"58":{"tf":1.0},"9":{"tf":1.0},"99":{"tf":1.0}},"n":{"df":7,"docs":{"10":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"276":{"tf":1.0},"417":{"tf":1.0},"478":{"tf":1.0},"545":{"tf":1.0}}},"r":{"df":1,"docs":{"469":{"tf":1.0}}}}}},"l":{"a":{"d":{"df":2,"docs":{"113":{"tf":1.0},"51":{"tf":1.0}}},"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"217":{"tf":1.0},"460":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"b":{"a":{"df":0,"docs":{},"l":{"df":7,"docs":{"209":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"336":{"tf":1.7320508075688772},"504":{"tf":1.0},"507":{"tf":1.0},"62":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"433":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"u":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"8":{"0":{":":{"1":{"9":{"df":1,"docs":{"397":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"2":{"7":{":":{"5":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"5":{"1":{"9":{":":{"1":{"2":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"4":{"8":{":":{"9":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"2":{":":{"1":{"6":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"a":{"df":0,"docs":{},"l":{"df":19,"docs":{"11":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.0},"27":{"tf":1.4142135623730951},"276":{"tf":1.0},"29":{"tf":1.4142135623730951},"3":{"tf":1.0},"40":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"437":{"tf":1.0},"458":{"tf":1.0},"487":{"tf":1.0},"496":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"576":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"b":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{}},"df":46,"docs":{"127":{"tf":1.0},"139":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"18":{"tf":1.4142135623730951},"187":{"tf":1.7320508075688772},"203":{"tf":1.0},"209":{"tf":1.7320508075688772},"221":{"tf":1.0},"226":{"tf":1.0},"24":{"tf":1.0},"250":{"tf":1.0},"270":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.4142135623730951},"309":{"tf":1.0},"358":{"tf":1.4142135623730951},"38":{"tf":1.0},"389":{"tf":1.7320508075688772},"392":{"tf":1.0},"394":{"tf":1.0},"414":{"tf":1.0},"425":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"497":{"tf":1.0},"506":{"tf":1.0},"51":{"tf":1.4142135623730951},"517":{"tf":1.0},"53":{"tf":1.0},"532":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0},"559":{"tf":1.4142135623730951},"573":{"tf":1.0},"599":{"tf":1.4142135623730951},"60":{"tf":1.0},"9":{"tf":1.4142135623730951}},"e":{"df":15,"docs":{"112":{"tf":1.0},"130":{"tf":1.0},"140":{"tf":1.0},"169":{"tf":1.0},"221":{"tf":1.0},"245":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.0},"417":{"tf":1.0},"457":{"tf":1.0},"478":{"tf":1.0}}},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":2,"docs":{"230":{"tf":1.0},"231":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"54":{"tf":1.0}}}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"e":{"df":2,"docs":{"221":{"tf":1.0},"309":{"tf":1.0}}}},"o":{"d":{"df":32,"docs":{"110":{"tf":1.0},"190":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"225":{"tf":1.0},"231":{"tf":1.0},"235":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"271":{"tf":1.0},"309":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"475":{"tf":1.0},"506":{"tf":1.0},"511":{"tf":1.0},"528":{"tf":1.4142135623730951},"529":{"tf":1.0},"559":{"tf":1.0},"56":{"tf":1.4142135623730951},"57":{"tf":1.4142135623730951}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":3,"docs":{"257":{"tf":1.0},"284":{"tf":1.4142135623730951},"555":{"tf":1.0}}}},"k":{"df":1,"docs":{"156":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"370":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"a":{"df":1,"docs":{"240":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":6,"docs":{"153":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"340":{"tf":1.0},"538":{"tf":1.0}}}},"o":{"df":0,"docs":{},"x":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}},"r":{"a":{"b":{"df":3,"docs":{"391":{"tf":1.0},"456":{"tf":1.0},"526":{"tf":1.0}}},"c":{"df":0,"docs":{},"e":{"'":{"df":7,"docs":{"41":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0}}},"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"b":{"a":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"157":{"tf":1.0}}},"df":0,"docs":{}}},"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"489":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":49,"docs":{"156":{"tf":2.6457513110645907},"192":{"tf":1.0},"206":{"tf":1.0},"214":{"tf":1.7320508075688772},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"226":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"429":{"tf":1.0},"431":{"tf":1.7320508075688772},"435":{"tf":1.4142135623730951},"437":{"tf":1.0},"438":{"tf":1.0},"440":{"tf":1.4142135623730951},"444":{"tf":1.0},"446":{"tf":1.0},"448":{"tf":2.6457513110645907},"452":{"tf":1.0},"453":{"tf":1.0},"454":{"tf":1.0},"456":{"tf":2.8284271247461903},"457":{"tf":2.449489742783178},"458":{"tf":2.449489742783178},"460":{"tf":1.0},"462":{"tf":1.7320508075688772},"463":{"tf":1.0},"464":{"tf":1.4142135623730951},"465":{"tf":1.0},"470":{"tf":1.7320508075688772},"474":{"tf":1.4142135623730951},"475":{"tf":1.0},"511":{"tf":1.4142135623730951},"529":{"tf":1.4142135623730951},"543":{"tf":2.0},"65":{"tf":1.0},"67":{"tf":1.0},"79":{"tf":1.4142135623730951},"81":{"tf":1.4142135623730951},"82":{"tf":1.7320508075688772},"9":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"111":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"61":{"tf":1.0}}}},"n":{"d":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"h":{"df":4,"docs":{"12":{"tf":1.0},"470":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"542":{"tf":1.0}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"z":{"df":1,"docs":{"539":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"p":{"df":3,"docs":{"246":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":13,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"209":{"tf":1.0},"211":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.0},"257":{"tf":1.0},"259":{"tf":1.0},"311":{"tf":1.0},"358":{"tf":1.0},"599":{"tf":1.4142135623730951},"65":{"tf":1.0},"77":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":5,"docs":{"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"560":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"469":{"tf":1.0}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"79":{"tf":1.0}}},"df":0,"docs":{}}}}}},"t":{"df":1,"docs":{"258":{"tf":1.0}}}},"w":{"df":1,"docs":{"389":{"tf":1.0}}}},"i":{"d":{"df":2,"docs":{"469":{"tf":2.0},"470":{"tf":1.0}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"599":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":7,"docs":{"1":{"tf":1.0},"12":{"tf":1.0},"15":{"tf":1.0},"16":{"tf":1.4142135623730951},"3":{"tf":1.4142135623730951},"470":{"tf":1.0},"557":{"tf":1.0}}}},"w":{"df":8,"docs":{"134":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"28":{"tf":1.0},"41":{"tf":1.0},"53":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}}}},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"199":{"tf":1.0}}}},"df":0,"docs":{}}}},"t":{";":{"b":{"df":1,"docs":{"12":{"tf":1.0}}},"c":{"df":1,"docs":{"12":{"tf":1.0}}},"d":{"df":1,"docs":{"12":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":1,"docs":{"539":{"tf":1.4142135623730951}}},"u":{"a":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":8,"docs":{"198":{"tf":1.0},"328":{"tf":1.4142135623730951},"410":{"tf":1.0},"422":{"tf":1.0},"456":{"tf":1.4142135623730951},"469":{"tf":1.0},"529":{"tf":1.0},"76":{"tf":1.0}}}}}},"d":{"df":4,"docs":{"268":{"tf":2.0},"270":{"tf":1.0},"272":{"tf":1.0},"565":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":4,"docs":{"209":{"tf":1.0},"48":{"tf":1.0},"486":{"tf":1.0},"599":{"tf":1.0}}}}},"i":{"d":{"a":{"df":0,"docs":{},"n":{"c":{"df":4,"docs":{"156":{"tf":1.0},"203":{"tf":1.0},"363":{"tf":1.0},"472":{"tf":1.0}}},"df":0,"docs":{}}},"df":4,"docs":{"522":{"tf":1.0},"526":{"tf":1.0},"572":{"tf":1.0},"64":{"tf":1.0}}},"df":1,"docs":{"192":{"tf":1.0}}},"r":{"df":0,"docs":{},"u":{"df":1,"docs":{"259":{"tf":1.0}}}},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}}},"h":{"a":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"367":{"tf":1.0},"417":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"431":{"tf":1.0},"79":{"tf":1.0}},"i":{"df":1,"docs":{"457":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{}}},"df":1,"docs":{"380":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"f":{"df":4,"docs":{"200":{"tf":1.0},"300":{"tf":1.0},"480":{"tf":1.4142135623730951},"53":{"tf":1.0}}},"v":{"df":1,"docs":{"276":{"tf":1.0}}}},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"516":{"tf":1.0}}}}}},"n":{"d":{"df":12,"docs":{"188":{"tf":1.0},"235":{"tf":1.0},"250":{"tf":1.0},"272":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"367":{"tf":1.4142135623730951},"433":{"tf":1.0},"440":{"tf":1.0},"453":{"tf":1.0},"517":{"tf":1.0}},"i":{"df":1,"docs":{"397":{"tf":1.0}}},"l":{"df":18,"docs":{"110":{"tf":1.0},"125":{"tf":1.0},"156":{"tf":1.4142135623730951},"175":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.4142135623730951},"309":{"tf":1.4142135623730951},"320":{"tf":1.0},"336":{"tf":2.8284271247461903},"340":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"412":{"tf":1.0},"418":{"tf":1.0},"470":{"tf":1.4142135623730951},"57":{"tf":1.0}},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"268":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}},".":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"d":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":2,"docs":{"309":{"tf":1.0},"320":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},":":{":":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"320":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"292":{"tf":1.0}}},"(":{"df":0,"docs":{},"s":{")":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},".":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":5,"docs":{"232":{"tf":1.4142135623730951},"268":{"tf":2.0},"292":{"tf":3.4641016151377544},"408":{"tf":1.0},"538":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":2.6457513110645907}}}}}}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.449489742783178}}}}}}}}}}}},"df":0,"docs":{},"g":{"df":7,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"189":{"tf":1.0},"200":{"tf":1.0},"282":{"tf":1.0},"284":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":28,"docs":{"140":{"tf":1.0},"156":{"tf":1.0},"165":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.0},"178":{"tf":1.0},"217":{"tf":1.0},"234":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"309":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"408":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.0},"46":{"tf":1.0},"483":{"tf":1.0},"502":{"tf":1.4142135623730951},"509":{"tf":1.0},"527":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"8":{"tf":1.0}}}},"i":{"df":27,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"188":{"tf":1.0},"21":{"tf":1.0},"214":{"tf":1.0},"221":{"tf":1.4142135623730951},"232":{"tf":1.0},"234":{"tf":1.0},"246":{"tf":1.0},"257":{"tf":1.4142135623730951},"259":{"tf":1.7320508075688772},"268":{"tf":1.7320508075688772},"311":{"tf":1.0},"315":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.4142135623730951},"389":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.4142135623730951},"529":{"tf":1.0},"530":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.7320508075688772},"59":{"tf":1.0},"82":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"54":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"522":{"tf":1.0},"538":{"tf":1.0}}}}}}},"r":{"d":{"df":29,"docs":{"110":{"tf":1.4142135623730951},"136":{"tf":1.0},"156":{"tf":3.0},"171":{"tf":1.0},"175":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"248":{"tf":1.0},"251":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"340":{"tf":1.0},"349":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.4142135623730951},"507":{"tf":1.0},"51":{"tf":1.0},"53":{"tf":1.0},"533":{"tf":1.0},"575":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":10,"docs":{"156":{"tf":1.0},"195":{"tf":1.0},"251":{"tf":1.0},"278":{"tf":1.0},"389":{"tf":1.0},"418":{"tf":1.0},"436":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.4142135623730951},"503":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"515":{"tf":1.0}}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":6,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"344":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"df":2,"docs":{"278":{"tf":1.0},"367":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"17":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":1,"docs":{"419":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"200":{"tf":1.0},"284":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":3,"docs":{"156":{"tf":1.4142135623730951},"193":{"tf":1.0},"258":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":29,"docs":{"110":{"tf":1.0},"112":{"tf":1.0},"116":{"tf":1.0},"129":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"178":{"tf":1.0},"190":{"tf":1.0},"225":{"tf":1.0},"231":{"tf":1.0},"237":{"tf":1.0},"245":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"289":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"357":{"tf":1.4142135623730951},"359":{"tf":1.4142135623730951},"367":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"421":{"tf":1.0},"436":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.4142135623730951},"46":{"tf":1.0},"462":{"tf":1.0},"538":{"tf":1.0},"64":{"tf":1.0}},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"451":{"tf":1.0},"488":{"tf":1.0}}}},"df":0,"docs":{}}}},"z":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"319":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":2,"docs":{"292":{"tf":1.4142135623730951},"470":{"tf":1.0}},"e":{"'":{"d":{"df":1,"docs":{"470":{"tf":1.0}}},"df":19,"docs":{"178":{"tf":1.4142135623730951},"195":{"tf":1.0},"196":{"tf":1.0},"198":{"tf":1.0},"221":{"tf":1.0},"230":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.7320508075688772},"284":{"tf":1.7320508075688772},"300":{"tf":1.0},"510":{"tf":1.0},"528":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.4142135623730951},"73":{"tf":1.7320508075688772},"74":{"tf":1.0},"76":{"tf":1.4142135623730951},"84":{"tf":1.7320508075688772},"86":{"tf":1.0}},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"209":{"tf":1.0},"268":{"tf":1.4142135623730951}}}}},"a":{"d":{"df":4,"docs":{"359":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.0},"460":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"552":{"tf":1.0}}}}}},"p":{"df":6,"docs":{"136":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"250":{"tf":1.0},"251":{"tf":1.4142135623730951},"380":{"tf":1.0}}},"r":{"d":{"df":7,"docs":{"217":{"tf":1.0},"284":{"tf":1.0},"287":{"tf":1.0},"307":{"tf":1.0},"357":{"tf":1.0},"428":{"tf":1.0},"74":{"tf":1.0}}},"df":3,"docs":{"245":{"tf":1.0},"268":{"tf":1.0},"538":{"tf":1.0}},"t":{"b":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"457":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"t":{"df":2,"docs":{"276":{"tf":1.0},"278":{"tf":1.0}}},"v":{"df":0,"docs":{},"i":{"df":1,"docs":{"189":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"462":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"347":{"tf":1.0},"349":{"tf":1.4142135623730951}}}}}}}}}}},"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"258":{"tf":1.0}}},"df":0,"docs":{}},"l":{"d":{"df":4,"docs":{"268":{"tf":2.0},"421":{"tf":1.4142135623730951},"555":{"tf":1.0},"564":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}},"p":{"df":59,"docs":{"110":{"tf":1.0},"12":{"tf":1.4142135623730951},"14":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.4142135623730951},"16":{"tf":1.0},"168":{"tf":1.4142135623730951},"178":{"tf":1.7320508075688772},"181":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"23":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.7320508075688772},"268":{"tf":1.0},"284":{"tf":2.0},"286":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.4142135623730951},"33":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"37":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"374":{"tf":1.0},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"389":{"tf":1.4142135623730951},"391":{"tf":1.7320508075688772},"397":{"tf":1.0},"434":{"tf":1.0},"445":{"tf":1.0},"47":{"tf":1.0},"472":{"tf":1.0},"478":{"tf":1.0},"485":{"tf":1.0},"493":{"tf":1.0},"496":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":2.23606797749979},"544":{"tf":1.4142135623730951},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.4142135623730951},"600":{"tf":1.0},"601":{"tf":1.0},"64":{"tf":1.0},"87":{"tf":1.0},"9":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"156":{"tf":2.449489742783178},"292":{"tf":1.4142135623730951},"368":{"tf":1.0},"370":{"tf":1.4142135623730951},"372":{"tf":1.0},"374":{"tf":1.0}}}}}},"n":{"c":{"df":5,"docs":{"217":{"tf":1.0},"318":{"tf":1.0},"322":{"tf":1.0},"377":{"tf":1.0},"417":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":1,"docs":{"245":{"tf":1.0}},"e":{"'":{"df":1,"docs":{"539":{"tf":1.0}}},"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"271":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":51,"docs":{"10":{"tf":1.0},"122":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"159":{"tf":1.0},"16":{"tf":1.4142135623730951},"160":{"tf":1.0},"169":{"tf":1.0},"190":{"tf":1.0},"2":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"24":{"tf":1.0},"249":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"322":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"329":{"tf":1.0},"336":{"tf":1.7320508075688772},"38":{"tf":1.0},"380":{"tf":1.4142135623730951},"381":{"tf":1.0},"389":{"tf":1.0},"390":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.4142135623730951},"398":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.4142135623730951},"449":{"tf":1.0},"457":{"tf":1.0},"486":{"tf":1.0},"491":{"tf":1.0},"498":{"tf":1.4142135623730951},"499":{"tf":1.0},"511":{"tf":1.0},"538":{"tf":1.4142135623730951},"551":{"tf":1.0},"56":{"tf":1.4142135623730951},"57":{"tf":1.0},"583":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.0},"96":{"tf":1.0},"99":{"tf":1.0}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":4,"docs":{"300":{"tf":1.4142135623730951},"328":{"tf":1.0},"370":{"tf":1.0},"448":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"300":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"321":{"tf":1.0}}}}}}}},"i":{"c":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"125":{"tf":1.0}}}}},"df":0,"docs":{}},"d":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"350":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"230":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":12,"docs":{"131":{"tf":1.0},"134":{"tf":1.0},"137":{"tf":1.0},"143":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"394":{"tf":1.0},"431":{"tf":1.0},"469":{"tf":1.0},"558":{"tf":1.4142135623730951},"599":{"tf":1.0},"76":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"119":{"tf":1.0},"156":{"tf":1.0},"214":{"tf":1.0},"292":{"tf":1.0},"450":{"tf":1.0},"9":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"61":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"125":{"tf":1.0},"129":{"tf":1.7320508075688772},"336":{"tf":1.0},"414":{"tf":1.0}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":4,"docs":{"164":{"tf":1.0},"28":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0}}}}}}}}},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"268":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0}}}}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"41":{"tf":1.0},"515":{"tf":1.0},"533":{"tf":1.4142135623730951},"547":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"547":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"df":4,"docs":{"168":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.0},"380":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"417":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951}}}}}}},"t":{"df":15,"docs":{"209":{"tf":1.0},"214":{"tf":1.0},"244":{"tf":1.0},"25":{"tf":1.0},"321":{"tf":1.0},"351":{"tf":1.0},"408":{"tf":1.0},"418":{"tf":1.0},"429":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":2.449489742783178},"539":{"tf":1.7320508075688772},"564":{"tf":1.0}}}},"m":{"df":0,"docs":{},"m":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}},"o":{"b":{"b":{"df":0,"docs":{},"i":{"df":1,"docs":{"213":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"l":{"d":{"df":8,"docs":{"209":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"237":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":1.0},"4":{"tf":1.0},"421":{"tf":1.4142135623730951}}},"df":0,"docs":{},"e":{"df":3,"docs":{"258":{"tf":1.0},"300":{"tf":1.0},"458":{"tf":1.0}}},"i":{"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"230":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"/":{"a":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"n":{"/":{".":{"c":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":2,"docs":{"268":{"tf":1.0},"284":{"tf":4.358898943540674}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{".":{"c":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"246":{"tf":1.0}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"61":{"tf":1.0}}}}},"o":{"d":{"df":1,"docs":{"358":{"tf":1.0}}},"df":0,"docs":{},"k":{"df":3,"docs":{"457":{"tf":1.0},"546":{"tf":1.0},"61":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"df":10,"docs":{"140":{"tf":1.0},"188":{"tf":1.0},"196":{"tf":1.4142135623730951},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"358":{"tf":1.0},"37":{"tf":1.0},"394":{"tf":1.0},"9":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"199":{"tf":1.0},"61":{"tf":1.0}}}}}}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"67":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"df":5,"docs":{"168":{"tf":1.0},"200":{"tf":1.0},"300":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{":":{"/":{"/":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"w":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{".":{"a":{"df":0,"docs":{},"p":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"221":{"tf":2.23606797749979}}}}}}}},"df":17,"docs":{"156":{"tf":1.4142135623730951},"167":{"tf":1.0},"169":{"tf":1.7320508075688772},"195":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.4142135623730951},"231":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.7320508075688772},"292":{"tf":1.7320508075688772},"298":{"tf":1.0},"300":{"tf":3.1622776601683795},"302":{"tf":1.7320508075688772},"303":{"tf":1.0},"370":{"tf":1.0}},"s":{":":{"/":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"365":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"279":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"o":{"c":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"365":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"349":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"/":{"b":{"9":{"df":0,"docs":{},"f":{"c":{"c":{"d":{"df":0,"docs":{},"e":{"0":{"0":{"df":0,"docs":{},"e":{"7":{"3":{"5":{"6":{"a":{"5":{"df":0,"docs":{},"e":{"3":{"3":{"6":{"6":{"6":{"5":{"a":{"7":{"df":0,"docs":{},"e":{"4":{"8":{"2":{"d":{"4":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"4":{"3":{"9":{"d":{"7":{"1":{"4":{"/":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"c":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"c":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"#":{"df":0,"docs":{},"l":{"1":{"2":{"1":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"2":{"6":{"9":{"1":{"b":{"a":{"b":{"9":{"2":{"8":{"2":{"3":{"a":{"8":{"5":{"9":{"5":{"d":{"1":{"d":{"4":{"5":{"6":{"df":0,"docs":{},"e":{"d":{"5":{"df":0,"docs":{},"f":{"a":{"9":{"6":{"8":{"3":{"6":{"4":{"1":{"d":{"7":{"6":{"#":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"279":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"d":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":1,"docs":{"279":{"tf":1.7320508075688772}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"196":{"tf":1.0},"380":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":0,"docs":{},"v":{"/":{"df":0,"docs":{},"y":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":1,"docs":{"331":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"365":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"/":{"1":{"3":{"7":{"0":{"1":{"4":{"3":{"0":{"2":{"2":{"8":{"0":{"1":{"8":{"4":{"6":{"2":{"7":{"5":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"5":{"7":{"2":{"6":{"0":{"5":{"6":{"7":{"3":{"8":{"8":{"1":{"7":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{},"j":{"c":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"/":{"1":{"3":{"5":{"9":{"8":{"2":{"0":{"4":{"3":{"1":{"1":{"5":{"1":{"2":{"6":{"7":{"8":{"4":{"3":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":2,"docs":{"302":{"tf":1.0},"442":{"tf":1.0}}}},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"'":{"df":1,"docs":{"503":{"tf":1.0}}},":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"504":{"tf":1.0}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"502":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"503":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"504":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":4,"docs":{"502":{"tf":1.7320508075688772},"503":{"tf":2.0},"504":{"tf":2.23606797749979},"511":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"15":{"tf":1.0},"59":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"217":{"tf":1.0},"284":{"tf":1.0}}}},"d":{"df":0,"docs":{},"r":{"df":2,"docs":{"139":{"tf":1.0},"380":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":1,"docs":{"431":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"40":{"tf":1.0}}}}},"y":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":4,"docs":{"156":{"tf":1.4142135623730951},"466":{"tf":1.0},"469":{"tf":1.0},"473":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":1,"docs":{"470":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.7320508075688772}}}}}}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}}}}}},"i":{"'":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{},"m":{"df":5,"docs":{"281":{"tf":1.0},"296":{"tf":1.0},"34":{"tf":1.0},"506":{"tf":1.0},"599":{"tf":1.0}}},"v":{"df":4,"docs":{"198":{"tf":1.0},"287":{"tf":1.0},"462":{"tf":1.0},"599":{"tf":1.0}}}},".":{"df":7,"docs":{"154":{"tf":1.0},"272":{"tf":1.0},"336":{"tf":1.0},"417":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0}}},"/":{"df":0,"docs":{},"o":{"df":17,"docs":{"209":{"tf":1.0},"218":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"3":{"tf":1.0},"331":{"tf":1.0},"408":{"tf":1.7320508075688772},"412":{"tf":1.0},"487":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"517":{"tf":1.4142135623730951},"522":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":2.0},"8":{"tf":1.0}}}},"6":{"4":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":0,"docs":{}},"d":{"df":12,"docs":{"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"453":{"tf":1.4142135623730951},"522":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0}},"e":{"'":{"df":1,"docs":{"453":{"tf":1.0}}},"/":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"542":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"a":{"df":26,"docs":{"157":{"tf":1.4142135623730951},"16":{"tf":1.7320508075688772},"24":{"tf":1.7320508075688772},"25":{"tf":1.4142135623730951},"26":{"tf":1.0},"268":{"tf":1.4142135623730951},"3":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.7320508075688772},"39":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.0},"46":{"tf":1.0},"487":{"tf":1.0},"49":{"tf":1.0},"497":{"tf":1.0},"50":{"tf":1.0},"53":{"tf":1.0},"54":{"tf":1.4142135623730951},"55":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"560":{"tf":1.0},"59":{"tf":1.0},"79":{"tf":1.0}},"l":{"df":11,"docs":{"138":{"tf":1.0},"146":{"tf":1.0},"16":{"tf":1.0},"162":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"29":{"tf":1.0},"36":{"tf":1.0},"42":{"tf":1.0},"421":{"tf":1.0},"450":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"276":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":9,"docs":{"209":{"tf":1.7320508075688772},"213":{"tf":1.0},"284":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.0},"347":{"tf":1.0},"431":{"tf":1.7320508075688772},"526":{"tf":1.4142135623730951},"61":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}},"df":1,"docs":{"470":{"tf":1.0}}}}},"l":{"df":2,"docs":{"10":{"tf":1.0},"328":{"tf":1.7320508075688772}}},"x":{"df":1,"docs":{"380":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"190":{"tf":1.0},"199":{"tf":1.0},"336":{"tf":1.4142135623730951}}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"259":{"tf":1.4142135623730951}}}},"m":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"189":{"tf":1.0},"217":{"tf":2.23606797749979}},"i":{"df":0,"docs":{},"n":{"df":5,"docs":{"259":{"tf":1.4142135623730951},"380":{"tf":1.0},"508":{"tf":1.4142135623730951},"546":{"tf":1.0},"8":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"df":8,"docs":{"169":{"tf":1.0},"209":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"309":{"tf":1.0},"418":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"328":{"tf":1.0},"417":{"tf":1.0}}}}},"p":{"a":{"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"153":{"tf":1.0},"32":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.4142135623730951},"343":{"tf":1.4142135623730951},"376":{"tf":1.0},"470":{"tf":1.4142135623730951},"496":{"tf":1.4142135623730951},"54":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"127":{"tf":1.0},"196":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951}}}},"l":{"<":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.0}}},"t":{"df":2,"docs":{"418":{"tf":1.0},"421":{"tf":1.0}}}},"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"df":24,"docs":{"189":{"tf":1.0},"190":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":1.0},"204":{"tf":1.0},"221":{"tf":1.0},"268":{"tf":1.7320508075688772},"292":{"tf":1.7320508075688772},"294":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":2.23606797749979},"336":{"tf":1.0},"347":{"tf":1.7320508075688772},"370":{"tf":1.4142135623730951},"421":{"tf":1.0},"440":{"tf":7.0710678118654755},"458":{"tf":1.4142135623730951},"460":{"tf":1.0},"538":{"tf":1.4142135623730951},"578":{"tf":1.0},"579":{"tf":1.7320508075688772},"580":{"tf":1.7320508075688772}},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":52,"docs":{"141":{"tf":1.0},"143":{"tf":1.0},"156":{"tf":1.4142135623730951},"167":{"tf":1.4142135623730951},"190":{"tf":1.4142135623730951},"192":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.4142135623730951},"201":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"221":{"tf":2.6457513110645907},"223":{"tf":1.0},"224":{"tf":1.0},"276":{"tf":2.23606797749979},"278":{"tf":1.0},"292":{"tf":1.7320508075688772},"3":{"tf":1.0},"300":{"tf":2.23606797749979},"302":{"tf":1.0},"303":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":3.3166247903554},"340":{"tf":1.0},"347":{"tf":2.0},"370":{"tf":2.0},"380":{"tf":1.0},"389":{"tf":1.0},"399":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"450":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"504":{"tf":1.0},"51":{"tf":1.0},"515":{"tf":1.0},"517":{"tf":1.0},"560":{"tf":1.0},"570":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}}},"i":{"c":{"df":1,"docs":{"358":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"268":{"tf":1.0},"292":{"tf":1.0},"419":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"188":{"tf":1.0},"389":{"tf":1.0}}}}}}},"df":21,"docs":{"110":{"tf":1.0},"120":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"129":{"tf":1.0},"199":{"tf":1.0},"21":{"tf":1.0},"211":{"tf":1.0},"261":{"tf":1.0},"278":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.0},"470":{"tf":1.0},"51":{"tf":1.0},"522":{"tf":1.0},"539":{"tf":1.0},"57":{"tf":1.0},"62":{"tf":1.4142135623730951},"76":{"tf":1.0},"91":{"tf":1.0}}}},"s":{"df":1,"docs":{"218":{"tf":1.0}},"s":{"df":8,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"294":{"tf":1.0},"324":{"tf":1.0},"359":{"tf":1.0},"470":{"tf":1.0},"51":{"tf":1.0},"598":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"v":{"df":14,"docs":{"14":{"tf":1.0},"16":{"tf":1.4142135623730951},"17":{"tf":1.0},"181":{"tf":1.0},"209":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"37":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"54":{"tf":1.4142135623730951},"603":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.0}}}}}}},"n":{"/":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"a":{"c":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"16":{"tf":1.0}}}},"df":0,"docs":{}},"df":25,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"54":{"tf":1.0}}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"156":{"tf":1.0}}}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":21,"docs":{"156":{"tf":1.0},"213":{"tf":1.0},"22":{"tf":1.0},"261":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"392":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"41":{"tf":1.4142135623730951},"431":{"tf":1.0},"448":{"tf":1.0},"478":{"tf":1.0},"483":{"tf":1.0},"49":{"tf":1.0},"530":{"tf":1.0},"538":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0},"99":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":1,"docs":{"6":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"268":{"tf":1.0}},"p":{"a":{"df":0,"docs":{},"t":{"df":7,"docs":{"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"338":{"tf":1.0},"359":{"tf":1.0},"546":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":4,"docs":{"360":{"tf":1.0},"417":{"tf":1.0},"461":{"tf":1.0},"61":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"393":{"tf":1.0}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":6,"docs":{"223":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.4142135623730951},"470":{"tf":1.0},"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"41":{"tf":1.0},"516":{"tf":1.0},"534":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0}}}}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"e":{"df":3,"docs":{"235":{"tf":1.0},"380":{"tf":1.4142135623730951},"448":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":8,"docs":{"146":{"tf":1.0},"325":{"tf":1.0},"370":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.0},"517":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}}},"x":{"df":1,"docs":{"470":{"tf":1.0}}}},"i":{"c":{"df":3,"docs":{"155":{"tf":1.0},"336":{"tf":1.0},"470":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"245":{"tf":1.0},"417":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"v":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"u":{"df":4,"docs":{"199":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"116":{"tf":1.0},"431":{"tf":1.0}}}}}}}},"df":1,"docs":{"140":{"tf":1.0}},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"470":{"tf":1.0},"472":{"tf":1.0}}}},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"359":{"tf":1.0}}},"df":0,"docs":{}}}}},"o":{"!":{"(":{"\"":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.7320508075688772},"539":{"tf":1.0}},"r":{"df":0,"docs":{},"m":{"df":12,"docs":{"178":{"tf":1.0},"196":{"tf":1.0},"261":{"tf":1.0},"309":{"tf":1.0},"328":{"tf":1.0},"342":{"tf":2.0},"357":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"440":{"tf":1.0},"456":{"tf":1.0},"9":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":6,"docs":{"114":{"tf":1.0},"123":{"tf":1.0},"127":{"tf":2.0},"130":{"tf":1.0},"517":{"tf":1.0},"530":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"110":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"t":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"188":{"tf":1.0}}}}}},"df":7,"docs":{"217":{"tf":1.0},"328":{"tf":1.4142135623730951},"408":{"tf":1.0},"470":{"tf":1.4142135623730951},"502":{"tf":1.0},"538":{"tf":1.7320508075688772},"547":{"tf":1.0}}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"448":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"336":{"tf":2.0},"404":{"tf":2.449489742783178},"423":{"tf":1.0},"568":{"tf":1.0}}}}},"n":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"545":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"538":{"tf":1.0}}}}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"d":{"df":10,"docs":{"217":{"tf":1.0},"292":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"320":{"tf":1.0},"325":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"408":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}}}},"df":1,"docs":{"538":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":18,"docs":{"156":{"tf":1.0},"211":{"tf":1.4142135623730951},"271":{"tf":1.0},"309":{"tf":1.0},"406":{"tf":1.0},"408":{"tf":1.4142135623730951},"410":{"tf":1.7320508075688772},"412":{"tf":1.0},"413":{"tf":1.0},"431":{"tf":1.0},"538":{"tf":2.8284271247461903},"541":{"tf":1.0},"543":{"tf":1.4142135623730951},"544":{"tf":1.0},"545":{"tf":1.7320508075688772},"546":{"tf":1.4142135623730951},"547":{"tf":1.0},"548":{"tf":1.4142135623730951}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"268":{"tf":1.0},"284":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"110":{"tf":1.0}}}}},"t":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"245":{"tf":1.0},"284":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}}},"n":{"c":{"df":5,"docs":{"211":{"tf":1.0},"318":{"tf":1.7320508075688772},"421":{"tf":1.0},"422":{"tf":1.4142135623730951},"437":{"tf":1.0}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"522":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"380":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":26,"docs":{"110":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.0},"201":{"tf":1.0},"203":{"tf":1.0},"217":{"tf":1.0},"246":{"tf":1.0},"259":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"312":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":1.0},"422":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"55":{"tf":1.0},"82":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"152":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.4142135623730951},"169":{"tf":1.0},"2":{"tf":1.0},"24":{"tf":1.0},"38":{"tf":1.0},"485":{"tf":1.0},"489":{"tf":1.0},"559":{"tf":1.7320508075688772},"97":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":8,"docs":{"178":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"453":{"tf":1.0},"545":{"tf":1.4142135623730951},"546":{"tf":1.0},"547":{"tf":1.0}}}}}}}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"288":{"tf":1.0}}},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"294":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":22,"docs":{"110":{"tf":1.0},"156":{"tf":2.23606797749979},"192":{"tf":1.4142135623730951},"211":{"tf":1.0},"268":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"431":{"tf":1.0},"454":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"504":{"tf":1.7320508075688772},"507":{"tf":1.0},"526":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"599":{"tf":1.4142135623730951},"62":{"tf":1.4142135623730951},"72":{"tf":1.0},"74":{"tf":1.0}}}},"l":{"df":1,"docs":{"461":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"j":{"df":1,"docs":{"414":{"tf":1.0}}}}}},"n":{"d":{"df":3,"docs":{"408":{"tf":1.0},"51":{"tf":1.0},"558":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":2,"docs":{"110":{"tf":1.0},"331":{"tf":1.0}}},"t":{"df":2,"docs":{"460":{"tf":1.0},"54":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"11":{"tf":1.0},"6":{"tf":1.0}}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"177":{"tf":1.0},"257":{"tf":1.0},"296":{"tf":1.0},"561":{"tf":1.0}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"470":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"422":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":11,"docs":{"2":{"tf":1.0},"276":{"tf":1.0},"353":{"tf":1.0},"380":{"tf":1.4142135623730951},"399":{"tf":1.0},"440":{"tf":1.0},"49":{"tf":1.0},"556":{"tf":1.0},"561":{"tf":1.4142135623730951},"81":{"tf":1.0},"84":{"tf":1.0}}}}},"f":{"a":{"c":{"df":16,"docs":{"112":{"tf":1.0},"209":{"tf":1.7320508075688772},"231":{"tf":1.0},"300":{"tf":2.23606797749979},"315":{"tf":1.0},"336":{"tf":2.6457513110645907},"41":{"tf":1.0},"418":{"tf":1.0},"423":{"tf":1.4142135623730951},"426":{"tf":1.0},"456":{"tf":2.449489742783178},"457":{"tf":1.0},"513":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.0},"542":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"57":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"341":{"tf":1.0},"417":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"v":{"df":1,"docs":{"456":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":6,"docs":{"276":{"tf":1.0},"307":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.4142135623730951},"403":{"tf":1.0},"458":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":14,"docs":{"129":{"tf":1.0},"190":{"tf":1.0},"198":{"tf":1.0},"224":{"tf":1.0},"268":{"tf":1.0},"323":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"393":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"549":{"tf":1.0},"565":{"tf":1.0},"571":{"tf":1.0}},"e":{"df":0,"docs":{},"t":{"df":3,"docs":{"127":{"tf":1.0},"385":{"tf":1.0},"52":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"278":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"156":{"tf":1.0},"278":{"tf":1.0},"457":{"tf":1.0},"535":{"tf":1.0},"61":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":3,"docs":{"110":{"tf":1.0},"336":{"tf":1.0},"344":{"tf":1.4142135623730951}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"313":{"tf":1.0}}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":2,"docs":{"365":{"tf":1.0},"9":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"v":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"559":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}}}}}}}},"r":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"237":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":1,"docs":{"79":{"tf":1.0}}}}},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":9,"docs":{"2":{"tf":1.0},"218":{"tf":1.0},"308":{"tf":1.0},"360":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"513":{"tf":1.0},"79":{"tf":1.0}},"t":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"268":{"tf":1.4142135623730951},"380":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"171":{"tf":1.0},"218":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"516":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}},"y":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":9,"docs":{"134":{"tf":1.0},"209":{"tf":1.4142135623730951},"213":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":2.0},"389":{"tf":1.0},"420":{"tf":1.0},"431":{"tf":1.0},"538":{"tf":1.0}}}}}}},"o":{"c":{"df":1,"docs":{"336":{"tf":1.0}}},"df":0,"docs":{},"k":{"df":8,"docs":{"156":{"tf":1.0},"178":{"tf":1.0},"286":{"tf":1.0},"320":{"tf":1.0},"336":{"tf":1.7320508075688772},"344":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}},"l":{"df":0,"docs":{},"v":{"df":13,"docs":{"11":{"tf":1.0},"156":{"tf":1.0},"18":{"tf":1.0},"2":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"300":{"tf":1.0},"375":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"478":{"tf":1.0},"499":{"tf":1.4142135623730951},"84":{"tf":1.0}}}}}}},"o":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"596":{"tf":1.0}}}}},"df":5,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"325":{"tf":1.0},"349":{"tf":1.0},"530":{"tf":1.0}}},"r":{"c":{"df":1,"docs":{"187":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":25,"docs":{"137":{"tf":1.0},"156":{"tf":1.0},"199":{"tf":1.4142135623730951},"221":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"304":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"312":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.4142135623730951},"404":{"tf":1.0},"41":{"tf":1.0},"423":{"tf":1.0},"448":{"tf":1.4142135623730951},"523":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"342":{"tf":1.0},"534":{"tf":1.0}}}},"s":{"df":0,"docs":{},"u":{"df":56,"docs":{"130":{"tf":1.0},"140":{"tf":1.0},"157":{"tf":1.4142135623730951},"16":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"192":{"tf":1.7320508075688772},"196":{"tf":1.4142135623730951},"211":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.4142135623730951},"226":{"tf":1.0},"234":{"tf":1.0},"24":{"tf":1.4142135623730951},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"25":{"tf":1.7320508075688772},"252":{"tf":1.0},"256":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"271":{"tf":1.7320508075688772},"272":{"tf":1.4142135623730951},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":2.23606797749979},"286":{"tf":1.7320508075688772},"288":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.4142135623730951},"340":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"373":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.4142135623730951},"411":{"tf":1.0},"440":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"481":{"tf":1.0},"521":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0},"558":{"tf":3.0},"559":{"tf":1.7320508075688772},"560":{"tf":1.0},"562":{"tf":1.0},"564":{"tf":1.4142135623730951},"599":{"tf":1.0}}}}},"t":{"'":{"d":{"df":2,"docs":{"196":{"tf":1.0},"517":{"tf":1.0}}},"df":56,"docs":{"116":{"tf":1.0},"118":{"tf":1.0},"120":{"tf":1.0},"122":{"tf":1.0},"125":{"tf":1.0},"128":{"tf":1.0},"140":{"tf":1.0},"150":{"tf":1.0},"156":{"tf":2.6457513110645907},"181":{"tf":1.0},"198":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"217":{"tf":2.8284271247461903},"218":{"tf":2.6457513110645907},"225":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.0},"252":{"tf":1.7320508075688772},"258":{"tf":1.0},"259":{"tf":1.4142135623730951},"261":{"tf":1.0},"265":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.7320508075688772},"292":{"tf":1.0},"310":{"tf":1.4142135623730951},"312":{"tf":1.0},"321":{"tf":1.0},"324":{"tf":1.0},"347":{"tf":1.0},"356":{"tf":1.4142135623730951},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"391":{"tf":1.4142135623730951},"394":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"483":{"tf":1.0},"502":{"tf":1.4142135623730951},"538":{"tf":1.0},"54":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":1.7320508075688772},"62":{"tf":1.0},"8":{"tf":1.0},"82":{"tf":1.0},"96":{"tf":1.0}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.0}}}}},"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"157":{"tf":1.0},"489":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":9,"docs":{"196":{"tf":1.4142135623730951},"197":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"418":{"tf":1.0},"553":{"tf":1.0},"557":{"tf":1.0},"568":{"tf":1.0},"599":{"tf":1.0}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"324":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":19,"docs":{"110":{"tf":1.0},"156":{"tf":1.7320508075688772},"207":{"tf":1.0},"307":{"tf":1.7320508075688772},"308":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.7320508075688772},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"313":{"tf":1.4142135623730951},"315":{"tf":1.0},"322":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.4142135623730951},"458":{"tf":1.0},"573":{"tf":1.7320508075688772},"599":{"tf":1.0},"61":{"tf":1.4142135623730951}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":16,"docs":{"155":{"tf":1.0},"156":{"tf":1.7320508075688772},"187":{"tf":1.0},"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"218":{"tf":1.4142135623730951},"312":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.0},"457":{"tf":1.0},"499":{"tf":1.0},"538":{"tf":1.0},"560":{"tf":1.0},"62":{"tf":1.0}}}}}}}},"j":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"m":{"df":1,"docs":{"153":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"m":{"c":{"df":0,"docs":{},"m":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"198":{"tf":1.0}}}}}},"v":{"a":{"df":7,"docs":{"127":{"tf":1.0},"209":{"tf":2.8284271247461903},"213":{"tf":1.7320508075688772},"214":{"tf":1.0},"414":{"tf":1.0},"73":{"tf":2.0},"74":{"tf":1.0}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":10,"docs":{"196":{"tf":1.0},"205":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.7320508075688772},"232":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.7320508075688772},"394":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"r":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"602":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}},"o":{"b":{"df":4,"docs":{"221":{"tf":1.0},"268":{"tf":1.0},"358":{"tf":1.0},"502":{"tf":1.0}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"311":{"tf":1.4142135623730951},"380":{"tf":1.0}},"l":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"1":{":":{"1":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":8,"docs":{"268":{"tf":1.0},"292":{"tf":1.0},"312":{"tf":1.0},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.0},"587":{"tf":1.0},"599":{"tf":1.0}}}},"n":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"603":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":4,"docs":{"136":{"tf":1.0},"268":{"tf":1.0},"356":{"tf":1.0},"370":{"tf":1.0}}}}}}},"y":{"df":2,"docs":{"276":{"tf":1.0},"8":{"tf":1.0}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"213":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"s":{"df":2,"docs":{"280":{"tf":1.0},"380":{"tf":1.0}}},"u":{"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"76":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":2,"docs":{"217":{"tf":1.0},"245":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"m":{"df":1,"docs":{"73":{"tf":1.0}}}},"z":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"602":{"tf":1.0}}}}},"df":0,"docs":{}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":42,"docs":{"134":{"tf":1.4142135623730951},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"199":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"216":{"tf":1.0},"218":{"tf":1.0},"220":{"tf":1.0},"240":{"tf":1.0},"258":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.4142135623730951},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"9":{"tf":1.0}}}},"p":{"df":0,"docs":{},"t":{"df":4,"docs":{"127":{"tf":1.0},"320":{"tf":1.0},"389":{"tf":1.0},"419":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"(":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"(":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":3,"docs":{"336":{"tf":4.47213595499958},"344":{"tf":1.0},"503":{"tf":1.0}}}}}},"y":{"df":13,"docs":{"154":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"268":{"tf":1.7320508075688772},"339":{"tf":1.0},"470":{"tf":1.0},"494":{"tf":1.0},"507":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":2.23606797749979},"552":{"tf":1.0},"583":{"tf":1.0},"61":{"tf":1.4142135623730951}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":8,"docs":{"196":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.0},"385":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":1.0},"89":{"tf":1.0}}},"df":0,"docs":{}}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"167":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"a":{"df":1,"docs":{"473":{"tf":1.0}}},"df":0,"docs":{}}}}}},"n":{"d":{"df":18,"docs":{"156":{"tf":1.4142135623730951},"200":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"264":{"tf":1.0},"330":{"tf":1.0},"349":{"tf":1.4142135623730951},"370":{"tf":1.0},"389":{"tf":1.0},"412":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"47":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"478":{"tf":1.0}}}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":3,"docs":{"218":{"tf":1.0},"246":{"tf":1.0},"389":{"tf":1.0}}}},"o":{"df":0,"docs":{},"w":{"df":71,"docs":{"118":{"tf":1.0},"130":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"171":{"tf":1.0},"181":{"tf":1.0},"188":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.4142135623730951},"230":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"246":{"tf":1.4142135623730951},"25":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.4142135623730951},"304":{"tf":1.0},"319":{"tf":1.0},"321":{"tf":1.0},"340":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.4142135623730951},"370":{"tf":1.0},"372":{"tf":1.0},"377":{"tf":1.0},"380":{"tf":2.449489742783178},"383":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"401":{"tf":1.0},"405":{"tf":1.0},"408":{"tf":2.0},"41":{"tf":1.0},"413":{"tf":1.0},"417":{"tf":1.0},"442":{"tf":1.0},"445":{"tf":1.0},"456":{"tf":1.4142135623730951},"458":{"tf":1.0},"465":{"tf":1.0},"475":{"tf":1.4142135623730951},"48":{"tf":1.0},"483":{"tf":1.0},"49":{"tf":1.4142135623730951},"499":{"tf":1.0},"50":{"tf":1.0},"508":{"tf":1.0},"511":{"tf":1.4142135623730951},"52":{"tf":1.0},"521":{"tf":1.0},"529":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"g":{"df":13,"docs":{"153":{"tf":1.0},"156":{"tf":1.0},"192":{"tf":1.0},"196":{"tf":1.0},"232":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"330":{"tf":1.0},"383":{"tf":1.0},"385":{"tf":1.0},"427":{"tf":1.0},"476":{"tf":1.0},"559":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"271":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":7,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"276":{"tf":1.0},"402":{"tf":1.0},"436":{"tf":1.0},"469":{"tf":1.0},"54":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"/":{"df":0,"docs":{},"s":{"c":{"a":{"df":0,"docs":{},"l":{"a":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"73":{"tf":1.0},"74":{"tf":1.7320508075688772}}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"249":{"tf":1.0}}}}}}}}},"u":{"b":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":3.7416573867739413}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"440":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"l":{"a":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"539":{"tf":2.0}}}}},"c":{"df":0,"docs":{},"k":{"df":16,"docs":{"156":{"tf":1.4142135623730951},"181":{"tf":1.0},"211":{"tf":1.0},"231":{"tf":1.0},"256":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"361":{"tf":1.0},"363":{"tf":1.0},"433":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"521":{"tf":1.0},"572":{"tf":1.0},"81":{"tf":1.0}}}},"df":0,"docs":{},"m":{"b":{"d":{"a":{"df":2,"docs":{"457":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}}},"n":{"d":{"df":1,"docs":{"156":{"tf":1.0}}},"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"271":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"/":{"c":{"df":0,"docs":{},"h":{"1":{"7":{"df":1,"docs":{"365":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":7,"docs":{"258":{"tf":1.0},"284":{"tf":1.0},"305":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"322":{"tf":1.0},"523":{"tf":1.0}}}}}},"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"#":{"7":{"0":{"2":{"6":{"3":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"4":{"3":{"1":{"2":{"2":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"7":{"4":{"7":{"8":{"df":1,"docs":{"271":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"2":{"2":{"9":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":3,"docs":{"17":{"tf":1.0},"580":{"tf":1.0},"599":{"tf":1.0}},"u":{"a":{"df":0,"docs":{},"g":{"df":55,"docs":{"110":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.7320508075688772},"156":{"tf":1.7320508075688772},"173":{"tf":1.0},"183":{"tf":1.0},"192":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"223":{"tf":1.0},"230":{"tf":2.0},"239":{"tf":1.4142135623730951},"241":{"tf":1.4142135623730951},"248":{"tf":1.0},"250":{"tf":1.4142135623730951},"251":{"tf":1.0},"261":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"272":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.4142135623730951},"3":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"316":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.4142135623730951},"350":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"367":{"tf":1.7320508075688772},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"394":{"tf":1.4142135623730951},"403":{"tf":1.4142135623730951},"414":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"475":{"tf":1.0},"511":{"tf":1.0},"516":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.4142135623730951},"67":{"tf":1.0},"71":{"tf":1.0},"72":{"tf":1.0},"76":{"tf":1.0},"9":{"tf":1.0}},"e":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"df":1,"docs":{"480":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":3,"docs":{"309":{"tf":1.4142135623730951},"318":{"tf":1.4142135623730951},"347":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"g":{"df":17,"docs":{"116":{"tf":1.0},"127":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0},"156":{"tf":1.0},"209":{"tf":2.0},"211":{"tf":1.0},"214":{"tf":1.0},"245":{"tf":1.4142135623730951},"252":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":2.0},"358":{"tf":1.0},"392":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"209":{"tf":1.0},"245":{"tf":1.0},"515":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"_":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":7,"docs":{"217":{"tf":1.7320508075688772},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"356":{"tf":1.0},"380":{"tf":1.7320508075688772},"431":{"tf":1.0},"553":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":3,"docs":{"562":{"tf":1.0},"72":{"tf":1.0},"89":{"tf":1.0}},"n":{"c":{"df":6,"docs":{"143":{"tf":1.0},"284":{"tf":1.0},"356":{"tf":1.0},"431":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":17,"docs":{"16":{"tf":1.0},"171":{"tf":1.0},"201":{"tf":1.0},"221":{"tf":1.0},"237":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"312":{"tf":1.0},"313":{"tf":1.0},"347":{"tf":1.0},"417":{"tf":1.0},"46":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":5,"docs":{"116":{"tf":1.0},"233":{"tf":1.0},"237":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"h":{"df":4,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"284":{"tf":1.0},"502":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}},"y":{"df":2,"docs":{"10":{"tf":1.0},"349":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"431":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0}}}}},"z":{"df":0,"docs":{},"i":{"df":1,"docs":{"380":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"421":{"tf":1.0},"422":{"tf":1.0}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":19,"docs":{"1":{"tf":1.4142135623730951},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"17":{"tf":1.4142135623730951},"183":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.4142135623730951},"270":{"tf":1.0},"278":{"tf":1.0},"319":{"tf":1.4142135623730951},"323":{"tf":1.0},"325":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"460":{"tf":1.0},"513":{"tf":1.0},"515":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":3,"docs":{"211":{"tf":1.0},"240":{"tf":1.0},"515":{"tf":1.0}}},"r":{"df":0,"docs":{},"n":{"df":40,"docs":{"136":{"tf":1.0},"153":{"tf":1.0},"18":{"tf":1.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"195":{"tf":1.4142135623730951},"199":{"tf":1.0},"221":{"tf":1.0},"240":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.0},"358":{"tf":1.4142135623730951},"360":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.4142135623730951},"382":{"tf":1.0},"383":{"tf":2.449489742783178},"389":{"tf":1.0},"397":{"tf":1.0},"440":{"tf":1.0},"445":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.7320508075688772},"502":{"tf":1.0},"503":{"tf":1.0},"54":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.4142135623730951},"545":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.0},"86":{"tf":1.0}}}},"v":{"df":10,"docs":{"25":{"tf":1.0},"278":{"tf":1.0},"361":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"389":{"tf":1.0},"457":{"tf":1.0},"50":{"tf":1.0},"54":{"tf":1.0},"57":{"tf":1.0}}}},"d":{"df":5,"docs":{"336":{"tf":1.0},"385":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0},"56":{"tf":1.0}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":8,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"302":{"tf":1.0},"408":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":1.0},"558":{"tf":1.0},"59":{"tf":1.0}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"380":{"tf":1.0},"458":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"s":{"df":7,"docs":{"138":{"tf":1.0},"196":{"tf":1.0},"209":{"tf":1.0},"304":{"tf":1.0},"319":{"tf":1.0},"333":{"tf":1.4142135623730951},"367":{"tf":1.0}}}},"t":{"'":{"df":4,"docs":{"200":{"tf":1.0},"300":{"tf":1.0},"408":{"tf":1.4142135623730951},"538":{"tf":1.0}}},"df":3,"docs":{"178":{"tf":1.0},"214":{"tf":1.0},"421":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":12,"docs":{"119":{"tf":1.0},"131":{"tf":1.0},"134":{"tf":1.0},"137":{"tf":1.7320508075688772},"156":{"tf":1.4142135623730951},"190":{"tf":1.0},"336":{"tf":1.0},"431":{"tf":1.0},"61":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.0}}},"r":{"a":{"df":0,"docs":{},"g":{"df":3,"docs":{"211":{"tf":1.0},"389":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"2":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"c":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{".":{"6":{"`":{"_":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"c":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":1,"docs":{"404":{"tf":1.0}}},"df":3,"docs":{"17":{"tf":1.0},"171":{"tf":1.0},"408":{"tf":1.0}},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":60,"docs":{"127":{"tf":1.0},"145":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":2.449489742783178},"179":{"tf":1.0},"218":{"tf":1.4142135623730951},"221":{"tf":2.23606797749979},"230":{"tf":1.0},"231":{"tf":1.0},"235":{"tf":1.4142135623730951},"240":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"261":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"300":{"tf":3.0},"302":{"tf":2.0},"303":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.4142135623730951},"336":{"tf":2.449489742783178},"344":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.7320508075688772},"360":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"399":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"431":{"tf":1.0},"438":{"tf":1.0},"440":{"tf":1.4142135623730951},"456":{"tf":2.449489742783178},"457":{"tf":1.4142135623730951},"460":{"tf":1.4142135623730951},"461":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"503":{"tf":1.0},"513":{"tf":1.0},"521":{"tf":1.4142135623730951},"523":{"tf":1.0},"526":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"535":{"tf":1.0},"56":{"tf":1.0},"599":{"tf":2.0},"61":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"61":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}}}},"y":{"'":{"df":2,"docs":{"268":{"tf":1.0},"349":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"d":{"df":1,"docs":{"41":{"tf":1.0}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":2,"docs":{"5":{"tf":2.449489742783178},"6":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"y":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"595":{"tf":1.0}}}},"df":0,"docs":{}}},"df":39,"docs":{"122":{"tf":1.0},"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":10,"docs":{"217":{"tf":2.8284271247461903},"218":{"tf":3.0},"221":{"tf":1.4142135623730951},"259":{"tf":1.0},"292":{"tf":2.0},"375":{"tf":1.4142135623730951},"421":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"462":{"tf":1.0},"581":{"tf":1.0}}}}}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"343":{"tf":1.0}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}}}}}}}}},"k":{"df":0,"docs":{},"e":{"df":4,"docs":{"417":{"tf":1.0},"531":{"tf":1.4142135623730951},"54":{"tf":1.0},"79":{"tf":1.0}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"475":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":8,"docs":{"189":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"370":{"tf":1.0},"391":{"tf":1.0},"478":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"e":{"df":10,"docs":{"168":{"tf":1.0},"217":{"tf":1.0},"232":{"tf":1.0},"284":{"tf":1.0},"383":{"tf":1.0},"397":{"tf":1.7320508075688772},"448":{"tf":2.0},"453":{"tf":1.0},"538":{"tf":2.23606797749979},"559":{"tf":1.0}}},"k":{"df":27,"docs":{"143":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.0},"159":{"tf":1.0},"162":{"tf":1.0},"196":{"tf":1.0},"245":{"tf":1.0},"276":{"tf":1.0},"28":{"tf":1.0},"336":{"tf":1.0},"343":{"tf":1.0},"36":{"tf":1.4142135623730951},"41":{"tf":1.4142135623730951},"419":{"tf":1.0},"481":{"tf":1.0},"486":{"tf":1.0},"489":{"tf":1.0},"491":{"tf":1.0},"493":{"tf":1.0},"498":{"tf":1.0},"516":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"560":{"tf":1.0},"562":{"tf":1.0},"597":{"tf":1.0}}},"t":{"df":4,"docs":{"171":{"tf":1.0},"526":{"tf":1.0},"563":{"tf":1.0},"566":{"tf":1.0}}},"u":{"df":0,"docs":{},"x":{"df":3,"docs":{"209":{"tf":1.0},"245":{"tf":1.0},"397":{"tf":2.8284271247461903}}}}},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"67":{"tf":1.0}}}}},"t":{"df":13,"docs":{"217":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"370":{"tf":1.0},"436":{"tf":1.0},"499":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":2.8284271247461903},"539":{"tf":1.4142135623730951},"558":{"tf":1.0},"598":{"tf":1.0},"61":{"tf":1.0},"95":{"tf":1.4142135623730951},"96":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"538":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"p":{"a":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"440":{"tf":4.242640687119285}},"s":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"325":{"tf":1.0},"419":{"tf":1.0}},"r":{"df":1,"docs":{"534":{"tf":1.0}}}},"t":{"df":0,"docs":{},"l":{"df":11,"docs":{"129":{"tf":1.0},"153":{"tf":1.0},"201":{"tf":1.0},"221":{"tf":1.4142135623730951},"336":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"413":{"tf":1.0},"456":{"tf":1.0},"522":{"tf":1.0},"544":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":8,"docs":{"156":{"tf":1.4142135623730951},"18":{"tf":1.4142135623730951},"217":{"tf":1.0},"284":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"51":{"tf":1.0},"562":{"tf":1.0}}}}},"l":{"d":{"b":{"df":2,"docs":{"289":{"tf":1.0},"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"v":{"df":0,"docs":{},"m":{"df":2,"docs":{"336":{"tf":1.0},"599":{"tf":1.0}}}}},"o":{"a":{"d":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"217":{"tf":1.7320508075688772}},"e":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"217":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":5,"docs":{"217":{"tf":1.7320508075688772},"268":{"tf":1.0},"307":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}},"c":{"a":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"4":{"8":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"2":{":":{"1":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":9,"docs":{"209":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"397":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.4142135623730951},"538":{"tf":1.0}}},"t":{"df":1,"docs":{"539":{"tf":1.0}}}},"df":0,"docs":{},"k":{"<":{"df":0,"docs":{},"u":{"3":{"2":{"df":1,"docs":{"564":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":12,"docs":{"156":{"tf":2.0},"266":{"tf":1.0},"268":{"tf":3.3166247903554},"270":{"tf":1.0},"272":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"341":{"tf":1.4142135623730951},"363":{"tf":1.0},"517":{"tf":1.4142135623730951},"565":{"tf":1.0},"599":{"tf":1.0}}}},"df":1,"docs":{"246":{"tf":1.0}},"g":{"!":{"(":{"\"":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"178":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"!":{"(":{"\"":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"{":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":7,"docs":{"178":{"tf":1.7320508075688772},"217":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"408":{"tf":2.0},"431":{"tf":2.6457513110645907},"538":{"tf":1.7320508075688772}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":1,"docs":{"412":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"i":{"c":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":9,"docs":{"112":{"tf":1.0},"139":{"tf":1.0},"200":{"tf":1.0},"232":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.0},"423":{"tf":1.0},"462":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"g":{"df":19,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"203":{"tf":1.0},"217":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"340":{"tf":1.0},"380":{"tf":2.6457513110645907},"383":{"tf":1.7320508075688772},"389":{"tf":1.0},"422":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.4142135623730951},"478":{"tf":1.0},"481":{"tf":1.0},"539":{"tf":1.0},"65":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"268":{"tf":1.0},"353":{"tf":1.0},"385":{"tf":1.0},"402":{"tf":1.0},"417":{"tf":1.0},"599":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"k":{"df":60,"docs":{"125":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.4142135623730951},"168":{"tf":1.0},"169":{"tf":1.0},"190":{"tf":2.0},"197":{"tf":1.0},"2":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":2.449489742783178},"217":{"tf":2.0},"224":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.4142135623730951},"25":{"tf":1.0},"268":{"tf":2.0},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"300":{"tf":1.0},"32":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"347":{"tf":1.7320508075688772},"357":{"tf":1.0},"358":{"tf":2.0},"363":{"tf":1.0},"37":{"tf":1.0},"380":{"tf":3.4641016151377544},"383":{"tf":1.0},"389":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"404":{"tf":1.0},"405":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.7320508075688772},"470":{"tf":1.0},"472":{"tf":1.0},"475":{"tf":1.0},"481":{"tf":1.0},"485":{"tf":1.0},"486":{"tf":1.0},"496":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"506":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0},"62":{"tf":1.0}}},"p":{"df":15,"docs":{"156":{"tf":1.7320508075688772},"185":{"tf":1.0},"190":{"tf":1.7320508075688772},"192":{"tf":2.0},"200":{"tf":2.0},"328":{"tf":2.0},"336":{"tf":1.0},"440":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.4142135623730951},"462":{"tf":1.0},"463":{"tf":1.0},"504":{"tf":1.7320508075688772},"599":{"tf":2.23606797749979},"62":{"tf":1.7320508075688772}}},"s":{"df":1,"docs":{"11":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"389":{"tf":1.0},"9":{"tf":1.0}}},"s":{"df":2,"docs":{"457":{"tf":1.0},"572":{"tf":1.0}}},"t":{"df":6,"docs":{"156":{"tf":1.0},"215":{"tf":1.0},"226":{"tf":1.0},"273":{"tf":1.0},"367":{"tf":1.0},"431":{"tf":1.0}}}},"t":{"df":40,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"264":{"tf":1.0},"268":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"313":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"338":{"tf":1.4142135623730951},"341":{"tf":1.0},"365":{"tf":1.0},"367":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.4142135623730951},"399":{"tf":1.0},"402":{"tf":1.0},"418":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.0},"521":{"tf":1.0},"55":{"tf":1.0},"564":{"tf":1.0},"599":{"tf":1.4142135623730951},"65":{"tf":1.0},"79":{"tf":1.0},"86":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":10,"docs":{"230":{"tf":1.0},"41":{"tf":1.0},"457":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0},"92":{"tf":1.0}}}},"w":{"df":9,"docs":{"108":{"tf":1.0},"134":{"tf":1.0},"143":{"tf":1.0},"190":{"tf":1.0},"347":{"tf":1.0},"356":{"tf":1.0},"558":{"tf":1.4142135623730951},"79":{"tf":1.0},"82":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"156":{"tf":1.0},"319":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"408":{"tf":1.0}}}}},"u":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"271":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"k":{"df":2,"docs":{"174":{"tf":1.0},"244":{"tf":1.0}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"328":{"tf":1.0},"360":{"tf":1.0},"542":{"tf":1.0}}}}}}},"df":0,"docs":{}},"w":{"df":0,"docs":{},"p":{"df":1,"docs":{"284":{"tf":1.0}}}}},"m":{"a":{"c":{"df":1,"docs":{"187":{"tf":1.0}},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":6,"docs":{"197":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":2.0},"318":{"tf":1.7320508075688772}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"397":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"o":{"df":5,"docs":{"246":{"tf":1.7320508075688772},"252":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"392":{"tf":1.4142135623730951}}}}},"d":{"df":0,"docs":{},"e":{"df":13,"docs":{"169":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"235":{"tf":1.0},"246":{"tf":1.0},"268":{"tf":1.4142135623730951},"336":{"tf":1.0},"34":{"tf":1.0},"361":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"417":{"tf":1.4142135623730951},"423":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"1":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{":":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"df":1,"docs":{"404":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":31,"docs":{"177":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"233":{"tf":1.0},"244":{"tf":1.4142135623730951},"257":{"tf":2.0},"258":{"tf":1.7320508075688772},"284":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":2.23606797749979},"311":{"tf":1.0},"313":{"tf":1.0},"320":{"tf":1.0},"380":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":1.4142135623730951},"425":{"tf":1.0},"448":{"tf":2.449489742783178},"457":{"tf":1.0},"494":{"tf":1.0},"502":{"tf":2.0},"507":{"tf":1.0},"522":{"tf":2.449489742783178},"523":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.4142135623730951},"546":{"tf":1.0},"590":{"tf":1.0},"599":{"tf":1.0}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":10,"docs":{"121":{"tf":1.0},"276":{"tf":2.0},"328":{"tf":1.0},"366":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"469":{"tf":1.0},"65":{"tf":1.0},"89":{"tf":1.0},"91":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":5,"docs":{"41":{"tf":1.0},"417":{"tf":1.0},"65":{"tf":1.0},"76":{"tf":1.0},"81":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":7,"docs":{"161":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"29":{"tf":1.0},"342":{"tf":1.0},"42":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}},"k":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"190":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}},"df":109,"docs":{"101":{"tf":1.0},"110":{"tf":1.4142135623730951},"118":{"tf":1.0},"122":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"145":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":2.6457513110645907},"158":{"tf":1.0},"16":{"tf":1.0},"166":{"tf":1.0},"167":{"tf":1.0},"173":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"186":{"tf":1.0},"188":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.4142135623730951},"216":{"tf":1.0},"217":{"tf":1.0},"22":{"tf":1.4142135623730951},"220":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"23":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"267":{"tf":1.0},"268":{"tf":1.7320508075688772},"275":{"tf":1.0},"278":{"tf":1.7320508075688772},"283":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.7320508075688772},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"303":{"tf":1.0},"304":{"tf":1.0},"306":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.0},"322":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.4142135623730951},"335":{"tf":1.0},"336":{"tf":1.7320508075688772},"34":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"346":{"tf":1.0},"349":{"tf":1.4142135623730951},"352":{"tf":1.0},"354":{"tf":1.0},"357":{"tf":1.0},"359":{"tf":1.7320508075688772},"363":{"tf":1.4142135623730951},"369":{"tf":1.0},"370":{"tf":1.4142135623730951},"375":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.7320508075688772},"386":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"396":{"tf":1.0},"40":{"tf":1.4142135623730951},"407":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.4142135623730951},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"428":{"tf":1.0},"447":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":2.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"503":{"tf":1.4142135623730951},"515":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.0},"525":{"tf":1.0},"53":{"tf":1.0},"536":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.7320508075688772},"55":{"tf":1.0},"558":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"64":{"tf":1.0},"8":{"tf":1.4142135623730951},"82":{"tf":1.0}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":1,"docs":{"209":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"n":{"a":{"df":0,"docs":{},"g":{"df":17,"docs":{"136":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"288":{"tf":1.0},"292":{"tf":1.0},"341":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.7320508075688772},"470":{"tf":1.4142135623730951},"538":{"tf":1.0},"599":{"tf":1.0}}}},"d":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"598":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"259":{"tf":1.7320508075688772}},"i":{"df":49,"docs":{"110":{"tf":1.0},"118":{"tf":1.7320508075688772},"120":{"tf":1.0},"130":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.7320508075688772},"138":{"tf":1.0},"146":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.7320508075688772},"157":{"tf":1.0},"16":{"tf":1.0},"171":{"tf":1.0},"211":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.4142135623730951},"325":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"400":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"46":{"tf":1.0},"462":{"tf":1.0},"489":{"tf":1.0},"515":{"tf":1.4142135623730951},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0},"579":{"tf":1.0},"598":{"tf":1.0},"62":{"tf":1.0}},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"349":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"341":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"341":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0}}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":11,"docs":{"196":{"tf":1.0},"199":{"tf":1.0},"221":{"tf":1.4142135623730951},"24":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"26":{"tf":1.0},"284":{"tf":1.0},"38":{"tf":1.0},"417":{"tf":1.4142135623730951},"425":{"tf":1.0}}}},"df":0,"docs":{},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"456":{"tf":1.4142135623730951},"457":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"456":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"p":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":7,"docs":{"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"320":{"tf":1.0}}}}}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"5":{"7":{":":{"7":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"c":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":8,"docs":{"110":{"tf":1.0},"188":{"tf":1.0},"289":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"470":{"tf":1.0},"526":{"tf":1.0},"599":{"tf":1.0}}},"r":{"df":1,"docs":{"356":{"tf":1.0}},"k":{"df":9,"docs":{"268":{"tf":1.0},"292":{"tf":1.0},"316":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":1.0},"558":{"tf":1.4142135623730951},"559":{"tf":1.0},"573":{"tf":1.4142135623730951},"599":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"356":{"tf":1.0}}},"df":1,"docs":{"389":{"tf":1.0}}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":11,"docs":{"110":{"tf":1.0},"16":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":2.23606797749979},"211":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":2.0},"328":{"tf":2.0},"440":{"tf":1.0},"46":{"tf":1.0},"517":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"367":{"tf":1.0}}}}},"h":{".":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"469":{"tf":1.0}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":8,"docs":{"217":{"tf":1.0},"237":{"tf":1.0},"349":{"tf":1.0},"445":{"tf":1.0},"480":{"tf":1.0},"513":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"213":{"tf":1.0},"230":{"tf":1.0},"470":{"tf":1.0}}}}},"x":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":2,"docs":{"315":{"tf":1.0},"517":{"tf":1.0}},"e":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"=":{"1":{"0":{"2":{"4":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"487":{"tf":1.0}}}}}}},"df":1,"docs":{"319":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"529":{"tf":1.0}}}}}}},"y":{"b":{"df":19,"docs":{"128":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"311":{"tf":1.0},"32":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"419":{"tf":1.7320508075688772},"421":{"tf":1.4142135623730951},"437":{"tf":1.0},"456":{"tf":1.0},"498":{"tf":1.0},"506":{"tf":1.0},"68":{"tf":1.0}},"e":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"9":{"5":{":":{"3":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"n":{"df":20,"docs":{"127":{"tf":1.0},"129":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":2.23606797749979},"169":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"197":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"240":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"418":{"tf":1.0},"47":{"tf":1.0},"552":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"350":{"tf":1.0}}}}},"t":{"df":52,"docs":{"118":{"tf":1.0},"128":{"tf":1.0},"152":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"18":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"259":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"343":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"460":{"tf":1.0},"467":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"485":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"561":{"tf":1.0},"598":{"tf":1.0},"94":{"tf":1.0}},"i":{"df":0,"docs":{},"m":{"df":4,"docs":{"18":{"tf":1.0},"209":{"tf":1.0},"256":{"tf":1.0},"521":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"276":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"211":{"tf":1.0},"268":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":9,"docs":{"156":{"tf":1.0},"259":{"tf":1.4142135623730951},"421":{"tf":1.0},"508":{"tf":1.0},"513":{"tf":1.0},"516":{"tf":1.0},"573":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"i":{"a":{"df":2,"docs":{"276":{"tf":1.0},"538":{"tf":1.0}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"558":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":8,"docs":{"2":{"tf":1.4142135623730951},"211":{"tf":1.0},"431":{"tf":1.4142135623730951},"470":{"tf":1.0},"554":{"tf":1.0},"555":{"tf":1.4142135623730951},"556":{"tf":1.0},"558":{"tf":1.0}}}},"m":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"16":{"tf":1.4142135623730951},"276":{"tf":1.0},"457":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.7320508075688772}}},"y":{"'":{"df":1,"docs":{"209":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":26,"docs":{"110":{"tf":1.0},"122":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"195":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":2.449489742783178},"213":{"tf":1.0},"218":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"451":{"tf":1.0},"456":{"tf":2.0},"460":{"tf":1.0},"462":{"tf":1.0},"511":{"tf":1.4142135623730951},"65":{"tf":1.4142135623730951},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.4142135623730951},"81":{"tf":1.4142135623730951},"9":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"189":{"tf":1.0},"211":{"tf":1.0},"460":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":11,"docs":{"221":{"tf":1.4142135623730951},"231":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"349":{"tf":1.4142135623730951},"358":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"549":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"556":{"tf":1.7320508075688772},"558":{"tf":1.0},"559":{"tf":3.3166247903554}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"559":{"tf":1.0}}}}}}}}},"u":{"df":1,"docs":{"188":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"300":{"tf":1.0}}},"g":{"df":12,"docs":{"157":{"tf":1.0},"16":{"tf":2.23606797749979},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"16":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"108":{"tf":1.0}}},"s":{"a":{"df":0,"docs":{},"g":{"df":22,"docs":{"177":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"276":{"tf":2.23606797749979},"370":{"tf":1.4142135623730951},"380":{"tf":2.6457513110645907},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"408":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"469":{"tf":2.0},"470":{"tf":1.7320508075688772},"538":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":2,"docs":{"370":{"tf":1.0},"408":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"218":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"d":{"df":24,"docs":{"178":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951},"209":{"tf":2.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"276":{"tf":2.0},"284":{"tf":1.0},"309":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"344":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.0},"504":{"tf":1.0},"54":{"tf":1.7320508075688772},"572":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"431":{"tf":1.0},"539":{"tf":1.0}}},"df":0,"docs":{}}}}},"h":{"df":0,"docs":{},"z":{"df":1,"docs":{"503":{"tf":1.4142135623730951}}}},"i":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":3,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"336":{"tf":1.4142135623730951}}}}}}}}},"df":1,"docs":{"116":{"tf":1.0}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}}}}}}}},"d":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"m":{"b":{"df":1,"docs":{"603":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":3,"docs":{"231":{"tf":1.0},"232":{"tf":1.0},"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":9,"docs":{"227":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0},"470":{"tf":1.0},"62":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"134":{"tf":1.0},"139":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"j":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"292":{"tf":2.0}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"n":{"d":{"df":32,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"503":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":6,"docs":{"156":{"tf":1.4142135623730951},"341":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.4142135623730951},"478":{"tf":1.0},"61":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"127":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"268":{"tf":1.0},"284":{"tf":1.0}}}}},"o":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"462":{"tf":1.0}}}}}},"s":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"261":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":2,"docs":{"361":{"tf":1.0},"599":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"m":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"s":{"df":8,"docs":{"169":{"tf":1.0},"203":{"tf":1.0},"336":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"522":{"tf":1.0},"526":{"tf":1.0},"89":{"tf":1.0}}},"t":{"a":{"df":0,"docs":{},"k":{"df":4,"docs":{"199":{"tf":1.0},"417":{"tf":1.0},"456":{"tf":1.0},"539":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"200":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"s":{"df":1,"docs":{"456":{"tf":1.0}}}}},"t":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}},"x":{"df":11,"docs":{"134":{"tf":1.0},"143":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"217":{"tf":1.0},"261":{"tf":1.0},"315":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"394":{"tf":1.0},"46":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"188":{"tf":1.0},"347":{"tf":1.0}}}},"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"5":{"2":{":":{"4":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"1":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"8":{"0":{":":{"1":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"448":{"tf":1.0}},"l":{"df":9,"docs":{"156":{"tf":1.0},"211":{"tf":1.7320508075688772},"350":{"tf":1.0},"389":{"tf":1.0},"393":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":1.0},"460":{"tf":1.4142135623730951},"469":{"tf":1.0}}},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"389":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":6,"docs":{"217":{"tf":1.0},"286":{"tf":1.0},"336":{"tf":1.4142135623730951},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"421":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":5,"docs":{"380":{"tf":1.4142135623730951},"397":{"tf":1.0},"526":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":1,"docs":{"573":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":6,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"380":{"tf":1.7320508075688772},"389":{"tf":1.0},"408":{"tf":1.0},"503":{"tf":1.0}}}}}},"n":{"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"246":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"0":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":1,"docs":{"419":{"tf":1.0}}},"1":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"419":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":1,"docs":{"419":{"tf":1.0}}},"df":5,"docs":{"121":{"tf":1.0},"125":{"tf":1.4142135623730951},"130":{"tf":1.4142135623730951},"419":{"tf":1.7320508075688772},"545":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":7,"docs":{"106":{"tf":1.0},"108":{"tf":1.0},"110":{"tf":1.0},"111":{"tf":1.4142135623730951},"112":{"tf":1.4142135623730951},"515":{"tf":1.0},"546":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":5,"docs":{"235":{"tf":1.0},"259":{"tf":1.0},"292":{"tf":1.0},"389":{"tf":1.4142135623730951},"431":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"550":{"tf":1.0}}}}}}},"r":{"a":{"df":0,"docs":{},"l":{"df":38,"docs":{"154":{"tf":1.0},"161":{"tf":1.0},"171":{"tf":1.0},"181":{"tf":1.0},"192":{"tf":1.0},"203":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"223":{"tf":1.0},"237":{"tf":1.0},"248":{"tf":1.0},"261":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"286":{"tf":1.0},"294":{"tf":1.0},"302":{"tf":1.0},"315":{"tf":1.0},"32":{"tf":1.0},"33":{"tf":1.0},"330":{"tf":1.0},"338":{"tf":1.0},"350":{"tf":1.0},"363":{"tf":1.0},"372":{"tf":1.0},"383":{"tf":1.0},"391":{"tf":1.0},"399":{"tf":1.0},"410":{"tf":1.0},"425":{"tf":1.0},"433":{"tf":1.0},"442":{"tf":1.0},"450":{"tf":1.0},"460":{"tf":1.0},"47":{"tf":1.0},"472":{"tf":1.0},"480":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":102,"docs":{"112":{"tf":1.0},"12":{"tf":1.0},"129":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.4142135623730951},"160":{"tf":1.0},"171":{"tf":1.0},"179":{"tf":1.4142135623730951},"188":{"tf":1.0},"19":{"tf":1.0},"192":{"tf":1.0},"196":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.4142135623730951},"200":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"223":{"tf":1.0},"226":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.7320508075688772},"258":{"tf":1.0},"268":{"tf":2.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.4142135623730951},"280":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":2.0},"300":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":2.23606797749979},"310":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"329":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.4142135623730951},"359":{"tf":1.7320508075688772},"36":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":1.7320508075688772},"381":{"tf":1.0},"389":{"tf":1.7320508075688772},"390":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"394":{"tf":1.0},"398":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.4142135623730951},"418":{"tf":1.4142135623730951},"42":{"tf":1.4142135623730951},"431":{"tf":1.0},"440":{"tf":1.7320508075688772},"445":{"tf":1.0},"449":{"tf":1.0},"457":{"tf":1.4142135623730951},"460":{"tf":1.0},"469":{"tf":1.0},"481":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"492":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"506":{"tf":1.0},"516":{"tf":1.0},"521":{"tf":1.7320508075688772},"529":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.7320508075688772},"544":{"tf":1.0},"56":{"tf":1.4142135623730951},"560":{"tf":1.0},"562":{"tf":1.4142135623730951},"570":{"tf":1.0},"573":{"tf":1.0},"599":{"tf":1.4142135623730951},"64":{"tf":1.0},"65":{"tf":1.0},"69":{"tf":1.0},"87":{"tf":1.0},"97":{"tf":1.0}},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"310":{"tf":1.0}}}}},"n":{"df":1,"docs":{"456":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":7,"docs":{"129":{"tf":1.0},"211":{"tf":1.0},"250":{"tf":1.0},"331":{"tf":1.0},"343":{"tf":1.0},"417":{"tf":1.0},"458":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":3,"docs":{"204":{"tf":1.0},"41":{"tf":1.0},"592":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"217":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}}}},"v":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":34,"docs":{"10":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":2.0},"211":{"tf":1.0},"214":{"tf":1.0},"221":{"tf":1.0},"268":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.7320508075688772},"292":{"tf":1.4142135623730951},"310":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":2.23606797749979},"375":{"tf":1.0},"380":{"tf":1.7320508075688772},"385":{"tf":1.4142135623730951},"408":{"tf":1.0},"419":{"tf":1.4142135623730951},"440":{"tf":1.0},"458":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.7320508075688772},"502":{"tf":1.0},"504":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"558":{"tf":1.0},"580":{"tf":1.0},"8":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"s":{"c":{"df":1,"docs":{"539":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"s":{"df":1,"docs":{"380":{"tf":1.7320508075688772}},"g":{"df":1,"docs":{"276":{"tf":1.7320508075688772}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":52,"docs":{"103":{"tf":1.0},"112":{"tf":1.4142135623730951},"120":{"tf":1.0},"129":{"tf":1.4142135623730951},"136":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":1.0},"195":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"211":{"tf":1.0},"214":{"tf":1.0},"226":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"33":{"tf":1.0},"336":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"367":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.7320508075688772},"436":{"tf":1.4142135623730951},"445":{"tf":1.0},"448":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.4142135623730951},"478":{"tf":1.0},"480":{"tf":1.0},"521":{"tf":1.0},"53":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"319":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"318":{"tf":1.4142135623730951}}}}},"df":3,"docs":{"423":{"tf":1.0},"470":{"tf":1.0},"62":{"tf":1.0}},"p":{"df":0,"docs":{},"l":{"df":22,"docs":{"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"200":{"tf":1.4142135623730951},"23":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.4142135623730951},"284":{"tf":1.0},"32":{"tf":1.0},"328":{"tf":1.7320508075688772},"336":{"tf":1.7320508075688772},"374":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"422":{"tf":1.0},"46":{"tf":1.4142135623730951},"507":{"tf":1.0},"521":{"tf":1.0},"599":{"tf":1.4142135623730951},"62":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":2,"docs":{"336":{"tf":1.0},"341":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"n":{"d":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"302":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"451":{"tf":1.0}}}},"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"566":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":4,"docs":{"328":{"tf":1.0},"341":{"tf":1.0},"417":{"tf":2.0},"421":{"tf":2.0}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"270":{"tf":1.0}}}},"df":26,"docs":{"156":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":1.7320508075688772},"217":{"tf":2.6457513110645907},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":2.6457513110645907},"312":{"tf":1.0},"328":{"tf":2.23606797749979},"336":{"tf":2.6457513110645907},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":2.449489742783178},"418":{"tf":1.7320508075688772},"419":{"tf":1.7320508075688772},"421":{"tf":4.242640687119285},"448":{"tf":1.0},"470":{"tf":1.0},"522":{"tf":2.6457513110645907},"523":{"tf":1.0},"568":{"tf":1.0}},"e":{"df":0,"docs":{},"x":{"df":7,"docs":{"268":{"tf":2.8284271247461903},"270":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.4142135623730951},"370":{"tf":1.0},"565":{"tf":1.0},"584":{"tf":1.4142135623730951}},"g":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"r":{"d":{"df":3,"docs":{"270":{"tf":1.0},"564":{"tf":1.4142135623730951},"565":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"v":{"df":0,"docs":{},"p":{"df":1,"docs":{"8":{"tf":1.0}}}},"y":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"421":{"tf":1.4142135623730951}},"e":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"581":{"tf":1.0}}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"i":{"a":{"d":{"df":2,"docs":{"231":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"68":{"tf":1.0},"69":{"tf":1.0}}}},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"580":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"n":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"292":{"tf":1.0}}},"i":{"df":0,"docs":{},"v":{"df":2,"docs":{"336":{"tf":1.0},"440":{"tf":1.0}}}},"m":{"df":0,"docs":{},"e":{"df":21,"docs":{"113":{"tf":1.0},"157":{"tf":1.0},"163":{"tf":1.0},"258":{"tf":1.0},"28":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.4142135623730951},"478":{"tf":1.0},"489":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"56":{"tf":1.0},"57":{"tf":1.4142135623730951},"578":{"tf":1.4142135623730951},"579":{"tf":1.0},"64":{"tf":1.0},"67":{"tf":1.0},"97":{"tf":1.0}}}},"r":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"153":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"431":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"599":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":4,"docs":{"116":{"tf":1.0},"211":{"tf":1.4142135623730951},"230":{"tf":1.0},"231":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":7,"docs":{"195":{"tf":1.0},"218":{"tf":1.0},"350":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0},"503":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":1,"docs":{"209":{"tf":1.0}}}}}},"b":{"df":1,"docs":{"492":{"tf":1.0}}},"d":{"a":{"df":1,"docs":{"598":{"tf":1.0}}},"df":0,"docs":{}},"df":1,"docs":{"370":{"tf":3.3166247903554}},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"276":{"tf":1.0}}}}},"t":{"df":1,"docs":{"360":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"360":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":5,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"417":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"218":{"tf":1.0},"273":{"tf":1.0},"404":{"tf":1.0},"460":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"d":{"df":84,"docs":{"110":{"tf":1.4142135623730951},"112":{"tf":1.0},"118":{"tf":1.0},"119":{"tf":1.0},"12":{"tf":1.0},"121":{"tf":1.4142135623730951},"122":{"tf":1.0},"125":{"tf":1.0},"130":{"tf":1.4142135623730951},"139":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":3.1622776601683795},"177":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.4142135623730951},"199":{"tf":2.0},"2":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.4142135623730951},"217":{"tf":2.23606797749979},"218":{"tf":1.0},"219":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.4142135623730951},"230":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.4142135623730951},"265":{"tf":1.0},"266":{"tf":1.0},"268":{"tf":1.4142135623730951},"270":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"300":{"tf":2.449489742783178},"307":{"tf":1.0},"309":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.4142135623730951},"330":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"341":{"tf":2.0},"347":{"tf":1.0},"349":{"tf":1.0},"359":{"tf":1.0},"368":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"452":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":2.0},"480":{"tf":1.0},"485":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"504":{"tf":1.0},"511":{"tf":1.0},"517":{"tf":1.4142135623730951},"519":{"tf":1.0},"521":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0},"549":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.4142135623730951},"57":{"tf":1.0},"571":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.7320508075688772},"68":{"tf":1.0},"8":{"tf":1.0},"96":{"tf":1.0},"99":{"tf":1.0}},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"g":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"29":{"tf":1.0},"54":{"tf":1.0}}}},"df":5,"docs":{"259":{"tf":1.0},"370":{"tf":1.0},"496":{"tf":1.4142135623730951},"55":{"tf":1.0},"59":{"tf":1.0}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"469":{"tf":1.0}}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":2,"docs":{"313":{"tf":1.0},"544":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"156":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0}}}},"t":{"df":3,"docs":{"190":{"tf":1.0},"284":{"tf":1.0},"341":{"tf":1.0}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":14,"docs":{"116":{"tf":1.0},"125":{"tf":1.7320508075688772},"127":{"tf":2.0},"128":{"tf":1.0},"138":{"tf":1.0},"140":{"tf":1.0},"347":{"tf":2.0},"357":{"tf":1.4142135623730951},"360":{"tf":1.0},"433":{"tf":1.0},"503":{"tf":1.4142135623730951},"546":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":13,"docs":{"168":{"tf":1.0},"178":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.0},"502":{"tf":1.0}}}}},"w":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":6,"docs":{"278":{"tf":1.0},"303":{"tf":1.0},"359":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"599":{"tf":1.0}}}}},"df":56,"docs":{"14":{"tf":1.4142135623730951},"143":{"tf":1.0},"156":{"tf":1.4142135623730951},"157":{"tf":1.7320508075688772},"16":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"189":{"tf":1.0},"196":{"tf":1.0},"200":{"tf":1.0},"21":{"tf":2.0},"218":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"231":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.4142135623730951},"258":{"tf":1.7320508075688772},"26":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.4142135623730951},"300":{"tf":1.4142135623730951},"309":{"tf":1.7320508075688772},"316":{"tf":1.0},"319":{"tf":1.7320508075688772},"331":{"tf":1.0},"332":{"tf":1.0},"336":{"tf":1.0},"339":{"tf":1.4142135623730951},"365":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"383":{"tf":1.4142135623730951},"389":{"tf":2.23606797749979},"39":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.0},"438":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":2.6457513110645907},"482":{"tf":1.0},"489":{"tf":1.7320508075688772},"497":{"tf":1.0},"538":{"tf":1.7320508075688772},"558":{"tf":1.0},"572":{"tf":1.0},"602":{"tf":1.0},"65":{"tf":2.23606797749979},"71":{"tf":1.0},"79":{"tf":1.0},"84":{"tf":1.0},"86":{"tf":1.0},"97":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"237":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"268":{"tf":1.0}}}}},"x":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{".":{"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":1,"docs":{"458":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":1,"docs":{"457":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":23,"docs":{"139":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.4142135623730951},"200":{"tf":1.0},"211":{"tf":1.0},"259":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":2.0},"391":{"tf":1.4142135623730951},"446":{"tf":1.0},"448":{"tf":2.23606797749979},"450":{"tf":2.23606797749979},"451":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"470":{"tf":1.0},"483":{"tf":1.0},"486":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.0},"573":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"e":{"df":9,"docs":{"130":{"tf":1.0},"231":{"tf":1.0},"307":{"tf":1.0},"341":{"tf":1.4142135623730951},"365":{"tf":1.4142135623730951},"403":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.4142135623730951},"82":{"tf":1.0}},"r":{"df":2,"docs":{"380":{"tf":1.0},"599":{"tf":1.0}}}},"h":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"517":{"tf":1.0}}}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"245":{"tf":1.0},"380":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"u":{"df":28,"docs":{"156":{"tf":1.7320508075688772},"214":{"tf":1.0},"218":{"tf":1.0},"226":{"tf":1.4142135623730951},"240":{"tf":1.0},"251":{"tf":1.0},"273":{"tf":1.0},"340":{"tf":1.0},"353":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"436":{"tf":1.0},"463":{"tf":1.0},"466":{"tf":1.0},"469":{"tf":2.23606797749979},"470":{"tf":3.0},"474":{"tf":1.4142135623730951},"476":{"tf":1.0},"478":{"tf":2.8284271247461903},"482":{"tf":1.0},"512":{"tf":1.4142135623730951},"530":{"tf":1.4142135623730951},"544":{"tf":2.23606797749979},"65":{"tf":1.0},"67":{"tf":1.0},"84":{"tf":1.0},"86":{"tf":1.4142135623730951},"87":{"tf":1.4142135623730951}},"s":{"'":{"df":2,"docs":{"347":{"tf":1.0},"41":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"o":{"'":{"df":2,"docs":{"365":{"tf":1.0},"599":{"tf":1.0}}},"df":1,"docs":{"482":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":7,"docs":{"1":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"553":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0},"61":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":5,"docs":{"108":{"tf":1.0},"111":{"tf":1.0},"221":{"tf":1.7320508075688772},"340":{"tf":1.0},"546":{"tf":1.0}}},"df":0,"docs":{}}}},"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"533":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"j":{"df":4,"docs":{"189":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"72":{"tf":1.0}}}},"df":5,"docs":{"108":{"tf":1.0},"111":{"tf":1.0},"127":{"tf":1.0},"134":{"tf":1.0},"217":{"tf":2.23606797749979}},"j":{"df":2,"docs":{"231":{"tf":1.0},"280":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"199":{"tf":1.0}}}},"n":{"df":14,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.7320508075688772},"221":{"tf":1.0},"347":{"tf":1.0},"372":{"tf":1.0},"410":{"tf":1.0},"450":{"tf":1.0},"456":{"tf":1.0},"517":{"tf":1.0},"526":{"tf":1.0},"534":{"tf":1.0},"566":{"tf":1.0},"62":{"tf":1.4142135623730951}},"e":{"df":10,"docs":{"138":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"245":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"360":{"tf":1.0},"421":{"tf":1.0},"457":{"tf":1.4142135623730951},"568":{"tf":1.0}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"310":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":1,"docs":{"336":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"171":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":27,"docs":{"154":{"tf":1.0},"156":{"tf":1.4142135623730951},"18":{"tf":1.0},"196":{"tf":1.0},"209":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"292":{"tf":1.4142135623730951},"311":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"358":{"tf":1.0},"36":{"tf":1.0},"370":{"tf":2.449489742783178},"380":{"tf":1.7320508075688772},"397":{"tf":1.4142135623730951},"440":{"tf":5.656854249492381},"486":{"tf":1.0},"538":{"tf":1.4142135623730951},"560":{"tf":1.0},"596":{"tf":1.0},"597":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.4142135623730951},"96":{"tf":1.0}}},"h":{"df":4,"docs":{"217":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"408":{"tf":1.4142135623730951},"538":{"tf":1.7320508075688772}}},"i":{"c":{"df":21,"docs":{"167":{"tf":1.0},"168":{"tf":1.4142135623730951},"169":{"tf":1.0},"198":{"tf":1.4142135623730951},"199":{"tf":1.0},"257":{"tf":1.0},"268":{"tf":1.4142135623730951},"292":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"389":{"tf":1.0},"408":{"tf":1.0},"431":{"tf":1.4142135623730951},"448":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.4142135623730951},"487":{"tf":1.0},"538":{"tf":1.0}}},"df":0,"docs":{},"f":{"df":1,"docs":{"457":{"tf":1.0}},"i":{"df":1,"docs":{"328":{"tf":2.23606797749979}}}}}},"w":{"df":46,"docs":{"116":{"tf":1.0},"134":{"tf":1.0},"14":{"tf":1.7320508075688772},"155":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.7320508075688772},"233":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":2.0},"258":{"tf":1.7320508075688772},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.4142135623730951},"328":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":1.7320508075688772},"397":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.0},"421":{"tf":1.4142135623730951},"431":{"tf":1.0},"448":{"tf":1.4142135623730951},"456":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":2.0},"475":{"tf":1.0},"486":{"tf":1.0},"502":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":2.0},"538":{"tf":1.0},"546":{"tf":1.0},"552":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.0}}}},"p":{"df":0,"docs":{},"m":{"df":1,"docs":{"231":{"tf":1.0}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":2.23606797749979}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":18,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"234":{"tf":1.0},"276":{"tf":1.0},"307":{"tf":1.0},"319":{"tf":1.0},"341":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"389":{"tf":1.0},"392":{"tf":1.0},"412":{"tf":1.0},"419":{"tf":1.0},"470":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"538":{"tf":1.0},"73":{"tf":1.0},"79":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"392":{"tf":1.0}}}}}}}},"o":{"0":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"0":{"df":0,"docs":{},"o":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":13,"docs":{"198":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.0},"252":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"417":{"tf":1.7320508075688772},"418":{"tf":1.0},"437":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"464":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":5,"docs":{"178":{"tf":1.0},"188":{"tf":1.0},"319":{"tf":1.0},"380":{"tf":1.0},"538":{"tf":1.0}}}}},"t":{"a":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"429":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"423":{"tf":1.0},"61":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":8,"docs":{"156":{"tf":1.4142135623730951},"218":{"tf":1.0},"276":{"tf":1.0},"419":{"tf":1.0},"442":{"tf":1.0},"445":{"tf":1.0},"460":{"tf":1.4142135623730951},"515":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}}}}}},"c":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"357":{"tf":1.0},"431":{"tf":1.0}}}}}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"336":{"tf":1.0}}}},"r":{"df":5,"docs":{"156":{"tf":1.0},"164":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"28":{"tf":1.0}}}}},"df":0,"docs":{}},"d":{"d":{"df":2,"docs":{"200":{"tf":1.0},"217":{"tf":1.0}}},"df":0,"docs":{}},"df":2,"docs":{"309":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"f":{"df":2,"docs":{"365":{"tf":1.0},"394":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":19,"docs":{"125":{"tf":1.0},"129":{"tf":1.0},"276":{"tf":1.0},"3":{"tf":1.0},"309":{"tf":1.0},"315":{"tf":1.0},"321":{"tf":2.0},"325":{"tf":2.449489742783178},"391":{"tf":1.4142135623730951},"393":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"503":{"tf":1.0},"511":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"542":{"tf":1.0},"73":{"tf":1.0}}}},"i":{"c":{"df":0,"docs":{},"i":{"df":2,"docs":{"230":{"tf":1.0},"284":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"417":{"tf":1.0}}}}}}},"h":{"df":7,"docs":{"199":{"tf":1.0},"217":{"tf":1.0},"300":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.4142135623730951},"522":{"tf":1.0},"538":{"tf":1.4142135623730951}}},"k":{"(":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}},"df":0,"docs":{}}}},"_":{"df":2,"docs":{"276":{"tf":1.0},"328":{"tf":1.7320508075688772}}},"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":1,"docs":{"196":{"tf":1.4142135623730951}}}}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.0}}}}},"o":{"df":1,"docs":{"440":{"tf":2.0}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"r":{"df":1,"docs":{"292":{"tf":1.0}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":2.0}}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"z":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"(":{"&":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{".":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"196":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},":":{":":{"<":{"_":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"y":{"df":2,"docs":{"217":{"tf":1.0},"328":{"tf":1.0}}}},"df":14,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"231":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"312":{"tf":1.0},"321":{"tf":1.0},"36":{"tf":1.0},"487":{"tf":1.0},"493":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}},"l":{"d":{"df":4,"docs":{"168":{"tf":1.4142135623730951},"217":{"tf":1.0},"268":{"tf":1.0},"89":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"237":{"tf":1.0}}}}},"df":0,"docs":{}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"218":{"tf":1.0},"336":{"tf":1.0},"397":{"tf":1.4142135623730951}}}}},"n":{"c":{"df":28,"docs":{"15":{"tf":1.0},"156":{"tf":2.23606797749979},"167":{"tf":1.0},"169":{"tf":1.0},"188":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"32":{"tf":1.0},"321":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.4142135623730951},"394":{"tf":1.0},"408":{"tf":1.0},"423":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"504":{"tf":1.0},"510":{"tf":1.0},"538":{"tf":1.0},"547":{"tf":1.0},"562":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"86":{"tf":1.0}}},"df":83,"docs":{"11":{"tf":1.0},"112":{"tf":1.0},"118":{"tf":1.0},"130":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"167":{"tf":1.0},"177":{"tf":1.0},"187":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"213":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.7320508075688772},"221":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.4142135623730951},"244":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"252":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":2.449489742783178},"278":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"309":{"tf":1.0},"313":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.4142135623730951},"35":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":2.23606797749979},"374":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":2.23606797749979},"389":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"405":{"tf":1.0},"41":{"tf":1.7320508075688772},"417":{"tf":1.0},"42":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"431":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.4142135623730951},"478":{"tf":1.0},"481":{"tf":1.0},"502":{"tf":1.4142135623730951},"516":{"tf":1.0},"522":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":2.0},"542":{"tf":1.0},"556":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":2.23606797749979},"601":{"tf":1.0},"61":{"tf":2.0},"62":{"tf":1.4142135623730951},"69":{"tf":1.0},"8":{"tf":1.4142135623730951},"84":{"tf":1.0},"9":{"tf":1.0}},"e":{"'":{"df":2,"docs":{"211":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"370":{"tf":1.0},"457":{"tf":1.0},"538":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"o":{"df":5,"docs":{"217":{"tf":1.0},"421":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"562":{"tf":1.0}}}}},"o":{"df":1,"docs":{"365":{"tf":1.0}},"p":{"df":1,"docs":{"200":{"tf":1.0}}}},"p":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"42":{"tf":1.0}}},"q":{"df":0,"docs":{},"u":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":1,"docs":{"336":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":66,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"116":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"143":{"tf":1.0},"147":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.4142135623730951},"158":{"tf":1.0},"16":{"tf":2.0},"166":{"tf":1.0},"17":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.4142135623730951},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"21":{"tf":1.4142135623730951},"216":{"tf":1.0},"220":{"tf":1.0},"24":{"tf":1.4142135623730951},"25":{"tf":1.7320508075688772},"257":{"tf":1.0},"26":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.4142135623730951},"283":{"tf":1.0},"284":{"tf":1.4142135623730951},"29":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"39":{"tf":1.4142135623730951},"391":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"416":{"tf":1.0},"44":{"tf":1.0},"447":{"tf":1.0},"453":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"485":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"522":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0},"55":{"tf":1.0},"603":{"tf":1.0},"84":{"tf":1.0}}},"r":{"df":23,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.4142135623730951},"143":{"tf":1.0},"156":{"tf":1.0},"178":{"tf":1.4142135623730951},"181":{"tf":1.0},"209":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"261":{"tf":1.0},"268":{"tf":1.0},"292":{"tf":1.4142135623730951},"309":{"tf":1.0},"312":{"tf":1.0},"336":{"tf":1.0},"391":{"tf":1.4142135623730951},"408":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"278":{"tf":1.4142135623730951},"357":{"tf":1.0},"363":{"tf":1.0},"487":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":2,"docs":{"54":{"tf":1.0},"55":{"tf":1.0}}}}}},"s":{"df":1,"docs":{"276":{"tf":1.0}}}}},"t":{"df":2,"docs":{"456":{"tf":1.0},"538":{"tf":1.0}},"i":{"df":0,"docs":{},"m":{"df":6,"docs":{"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"343":{"tf":1.0},"529":{"tf":1.0},"62":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"423":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{".":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"t":{"df":1,"docs":{"450":{"tf":1.0}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"457":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"568":{"tf":1.0}}}},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}}},"df":21,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.4142135623730951},"231":{"tf":1.4142135623730951},"239":{"tf":1.0},"245":{"tf":1.4142135623730951},"25":{"tf":1.0},"321":{"tf":1.0},"370":{"tf":1.0},"377":{"tf":1.0},"389":{"tf":1.0},"41":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"458":{"tf":1.0},"499":{"tf":1.0},"5":{"tf":1.0},"517":{"tf":1.0},"542":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0}}}}}}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":14,"docs":{"136":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"450":{"tf":1.0}}}}},"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"n":{"df":5,"docs":{"10":{"tf":1.0},"218":{"tf":1.0},"276":{"tf":1.0},"3":{"tf":1.0},"603":{"tf":1.0}}}},"df":1,"docs":{"47":{"tf":1.0}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"11":{"tf":1.0},"462":{"tf":1.0},"544":{"tf":1.0}}}}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":15,"docs":{"134":{"tf":1.0},"199":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"218":{"tf":1.4142135623730951},"246":{"tf":1.0},"276":{"tf":1.0},"279":{"tf":1.0},"280":{"tf":1.0},"320":{"tf":1.0},"361":{"tf":1.0},"389":{"tf":1.0},"440":{"tf":1.0},"539":{"tf":1.0}}}}}},"m":{"df":1,"docs":{"235":{"tf":1.0}}}},"s":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"/":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":6,"docs":{"190":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"344":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"192":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"56":{"tf":1.0}}}},"df":0,"docs":{}}},"df":18,"docs":{"101":{"tf":1.0},"110":{"tf":1.0},"118":{"tf":1.0},"127":{"tf":1.4142135623730951},"136":{"tf":1.0},"145":{"tf":1.0},"147":{"tf":1.0},"155":{"tf":1.0},"157":{"tf":1.0},"22":{"tf":1.0},"23":{"tf":1.0},"25":{"tf":1.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"400":{"tf":1.0},"421":{"tf":1.0},"53":{"tf":1.0},"598":{"tf":1.0}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":6,"docs":{"157":{"tf":1.0},"217":{"tf":1.0},"372":{"tf":1.0},"489":{"tf":1.0},"558":{"tf":1.0},"6":{"tf":1.0}}}}}}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"370":{"tf":1.0},"599":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":1,"docs":{"10":{"tf":1.0}}}}}}},"t":{"df":98,"docs":{"10":{"tf":1.0},"12":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"157":{"tf":1.0},"164":{"tf":1.4142135623730951},"174":{"tf":1.4142135623730951},"178":{"tf":1.0},"184":{"tf":1.4142135623730951},"19":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.4142135623730951},"195":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"226":{"tf":1.0},"230":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.4142135623730951},"245":{"tf":2.23606797749979},"246":{"tf":1.0},"251":{"tf":1.4142135623730951},"258":{"tf":1.0},"264":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"271":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.0},"28":{"tf":1.4142135623730951},"281":{"tf":1.0},"284":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":2.0},"297":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"317":{"tf":1.7320508075688772},"32":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":2.0},"353":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":2.449489742783178},"377":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.4142135623730951},"394":{"tf":1.0},"397":{"tf":1.4142135623730951},"40":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.4142135623730951},"41":{"tf":1.0},"414":{"tf":1.0},"428":{"tf":1.0},"431":{"tf":1.4142135623730951},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"463":{"tf":1.0},"470":{"tf":1.4142135623730951},"475":{"tf":1.0},"483":{"tf":1.0},"487":{"tf":1.4142135623730951},"49":{"tf":1.4142135623730951},"498":{"tf":1.0},"499":{"tf":1.0},"51":{"tf":1.4142135623730951},"515":{"tf":1.0},"516":{"tf":1.0},"52":{"tf":1.0},"53":{"tf":1.4142135623730951},"534":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.4142135623730951},"556":{"tf":1.0},"74":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"300":{"tf":1.0},"349":{"tf":1.0},"538":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":9,"docs":{"209":{"tf":1.0},"217":{"tf":1.0},"244":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"421":{"tf":2.0},"448":{"tf":1.0},"538":{"tf":1.4142135623730951},"544":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"539":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":5,"docs":{"110":{"tf":1.0},"199":{"tf":1.0},"226":{"tf":1.0},"418":{"tf":1.7320508075688772},"47":{"tf":1.0}}},"df":0,"docs":{}},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"16":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":1,"docs":{"341":{"tf":1.0}}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"l":{"df":11,"docs":{"11":{"tf":1.0},"16":{"tf":1.0},"214":{"tf":1.0},"319":{"tf":1.0},"380":{"tf":1.0},"46":{"tf":1.0},"515":{"tf":1.0},"65":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"92":{"tf":1.0}}}},"df":39,"docs":{"143":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.7320508075688772},"188":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"245":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"298":{"tf":1.0},"300":{"tf":1.4142135623730951},"307":{"tf":1.0},"310":{"tf":1.0},"318":{"tf":1.4142135623730951},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"358":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.7320508075688772},"460":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"486":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0}},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":3,"docs":{"244":{"tf":1.4142135623730951},"245":{"tf":1.0},"370":{"tf":1.0}}}}}},"h":{"df":0,"docs":{},"e":{"a":{"d":{"df":11,"docs":{"209":{"tf":1.7320508075688772},"211":{"tf":1.4142135623730951},"259":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.0},"421":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0},"513":{"tf":1.4142135623730951},"543":{"tf":1.0},"61":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"278":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"308":{"tf":1.0}}},"o":{"a":{"d":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"417":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"190":{"tf":1.0}}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"m":{"df":4,"docs":{"231":{"tf":1.0},"363":{"tf":1.0},"397":{"tf":1.0},"86":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"336":{"tf":1.0}}}}}}}}},"w":{"df":0,"docs":{},"n":{"df":4,"docs":{"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"341":{"tf":1.0},"517":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"417":{"tf":2.0},"421":{"tf":3.605551275463989},"423":{"tf":1.0},"553":{"tf":1.0},"61":{"tf":1.0}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":6,"docs":{"156":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"389":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"599":{"tf":1.0}}}}}}}},"s":{"(":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"_":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"p":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"z":{"_":{"df":0,"docs":{},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"9":{"9":{"df":1,"docs":{"431":{"tf":1.0}}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"231":{"tf":1.0}}},"k":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"523":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"143":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":10,"docs":{"12":{"tf":1.0},"152":{"tf":1.4142135623730951},"157":{"tf":1.0},"177":{"tf":1.0},"19":{"tf":1.0},"198":{"tf":1.4142135623730951},"485":{"tf":1.4142135623730951},"489":{"tf":1.0},"539":{"tf":1.0},"550":{"tf":1.0}}}},"i":{"d":{"df":1,"docs":{"200":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":7,"docs":{"221":{"tf":1.0},"233":{"tf":1.0},"286":{"tf":1.0},"315":{"tf":1.0},"372":{"tf":1.0},"410":{"tf":1.0},"59":{"tf":1.0}}},"r":{"df":1,"docs":{"300":{"tf":1.0}}}},"n":{"df":1,"docs":{"389":{"tf":1.0}},"i":{"c":{"!":{"df":1,"docs":{"470":{"tf":1.0}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"3":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":14,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"234":{"tf":1.0},"309":{"tf":1.4142135623730951},"321":{"tf":1.4142135623730951},"323":{"tf":1.0},"325":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":2.449489742783178},"418":{"tf":1.0},"419":{"tf":1.0},"425":{"tf":1.0},"529":{"tf":1.0}},"k":{"df":4,"docs":{"233":{"tf":1.0},"258":{"tf":1.0},"309":{"tf":1.0},"397":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"3":{"4":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"7":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":1,"docs":{"153":{"tf":1.0}}}}},"r":{"a":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"m":{"df":1,"docs":{"360":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"<":{"df":1,"docs":{"579":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":8,"docs":{"156":{"tf":1.0},"336":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"469":{"tf":2.0},"470":{"tf":2.0},"472":{"tf":1.0},"475":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":6,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":2.0},"218":{"tf":2.8284271247461903},"458":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"a":{"df":1,"docs":{"359":{"tf":1.0}}},"d":{"df":1,"docs":{"359":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"s":{"df":1,"docs":{"217":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"235":{"tf":1.0}}}}},"t":{"df":64,"docs":{"116":{"tf":1.0},"12":{"tf":1.0},"134":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"195":{"tf":1.0},"204":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"245":{"tf":1.0},"252":{"tf":1.0},"254":{"tf":1.0},"259":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"343":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"355":{"tf":1.0},"358":{"tf":1.0},"366":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"383":{"tf":1.7320508075688772},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"448":{"tf":1.0},"455":{"tf":1.0},"457":{"tf":1.0},"467":{"tf":1.0},"47":{"tf":1.0},"474":{"tf":1.0},"477":{"tf":1.0},"481":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"503":{"tf":1.0},"516":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.0},"537":{"tf":1.0},"599":{"tf":1.0}},"i":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"363":{"tf":1.0},"393":{"tf":1.0}}}},"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":2,"docs":{"278":{"tf":1.4142135623730951},"601":{"tf":1.4142135623730951}}}},"l":{"df":1,"docs":{"469":{"tf":1.0}}},"u":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":22,"docs":{"156":{"tf":1.4142135623730951},"18":{"tf":1.0},"221":{"tf":1.0},"248":{"tf":1.0},"27":{"tf":1.0},"300":{"tf":1.0},"376":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"408":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.4142135623730951},"458":{"tf":1.0},"462":{"tf":1.4142135623730951},"478":{"tf":1.0},"487":{"tf":1.0},"527":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"561":{"tf":1.0},"62":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":1,"docs":{"221":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":7,"docs":{"110":{"tf":1.0},"143":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"286":{"tf":1.0},"315":{"tf":1.0},"350":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":2,"docs":{"221":{"tf":1.0},"380":{"tf":1.0}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"389":{"tf":1.0}}}}}}},"s":{"c":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":15,"docs":{"200":{"tf":1.0},"217":{"tf":2.23606797749979},"218":{"tf":1.0},"244":{"tf":1.0},"246":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.7320508075688772},"423":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.7320508075688772},"573":{"tf":1.0},"599":{"tf":1.0}}},"t":{"df":7,"docs":{"276":{"tf":1.0},"284":{"tf":1.0},"321":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.7320508075688772},"599":{"tf":1.0},"76":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"469":{"tf":2.8284271247461903},"470":{"tf":2.23606797749979}}}},"df":0,"docs":{},"h":{"df":10,"docs":{"156":{"tf":1.0},"286":{"tf":1.0},"394":{"tf":1.4142135623730951},"41":{"tf":1.0},"417":{"tf":1.0},"448":{"tf":1.4142135623730951},"458":{"tf":1.0},"463":{"tf":1.0},"470":{"tf":1.0},"558":{"tf":1.0}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"363":{"tf":1.0}},"n":{"df":18,"docs":{"125":{"tf":1.0},"156":{"tf":2.0},"191":{"tf":1.0},"195":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.4142135623730951},"363":{"tf":1.0},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"372":{"tf":1.0},"389":{"tf":1.0},"450":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"#":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"d":{"df":1,"docs":{"365":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"y":{"df":4,"docs":{"110":{"tf":1.0},"213":{"tf":1.0},"340":{"tf":1.0},"515":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":1,"docs":{"214":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":3,"docs":{"470":{"tf":1.0},"539":{"tf":1.4142135623730951},"558":{"tf":2.449489742783178}},"e":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"131":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"370":{"tf":1.0}}}},"n":{"df":1,"docs":{"478":{"tf":1.0}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":63,"docs":{"154":{"tf":1.4142135623730951},"158":{"tf":1.0},"16":{"tf":1.0},"164":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"23":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.4142135623730951},"291":{"tf":1.0},"292":{"tf":1.0},"306":{"tf":1.0},"317":{"tf":1.0},"319":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"331":{"tf":1.4142135623730951},"333":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"357":{"tf":1.0},"36":{"tf":1.0},"361":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"42":{"tf":1.4142135623730951},"435":{"tf":1.0},"437":{"tf":1.0},"447":{"tf":1.0},"453":{"tf":1.0},"467":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.4142135623730951},"490":{"tf":1.4142135623730951},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"53":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"54":{"tf":1.0},"583":{"tf":1.0},"597":{"tf":1.0},"60":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.4142135623730951},"64":{"tf":1.0},"9":{"tf":1.0}},"e":{"'":{"df":3,"docs":{"27":{"tf":1.0},"299":{"tf":1.0},"54":{"tf":1.0}}},"df":0,"docs":{}}}}},"r":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"336":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":8,"docs":{"319":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.0},"412":{"tf":1.7320508075688772},"421":{"tf":1.7320508075688772},"422":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"469":{"tf":1.0}},"f":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":4,"docs":{"305":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"322":{"tf":1.0}}}}}}},"df":5,"docs":{"209":{"tf":2.6457513110645907},"214":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"543":{"tf":1.0},"82":{"tf":1.0}},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"110":{"tf":1.0},"35":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"137":{"tf":1.0},"217":{"tf":1.0},"380":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"221":{"tf":2.449489742783178}}}}}}}}}},"df":41,"docs":{"134":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"207":{"tf":1.0},"209":{"tf":2.449489742783178},"211":{"tf":2.23606797749979},"213":{"tf":1.0},"223":{"tf":1.0},"256":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"292":{"tf":1.0},"308":{"tf":1.0},"312":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.7320508075688772},"345":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"408":{"tf":1.7320508075688772},"41":{"tf":1.0},"431":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"510":{"tf":1.0},"521":{"tf":1.4142135623730951},"528":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.4142135623730951},"543":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.4142135623730951},"82":{"tf":1.0},"9":{"tf":1.7320508075688772}}}}}},"h":{"a":{"df":0,"docs":{},"p":{"df":13,"docs":{"156":{"tf":1.0},"200":{"tf":1.0},"252":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"359":{"tf":1.0},"365":{"tf":1.0},"389":{"tf":1.4142135623730951},"428":{"tf":1.0},"49":{"tf":1.0},"496":{"tf":1.0},"515":{"tf":1.0},"54":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"o":{"d":{"df":44,"docs":{"15":{"tf":2.23606797749979},"158":{"tf":1.0},"16":{"tf":2.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"457":{"tf":1.0},"46":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"58":{"tf":1.0},"60":{"tf":1.0}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"146":{"tf":1.0},"177":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"244":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":16,"docs":{"200":{"tf":1.0},"213":{"tf":1.0},"218":{"tf":1.0},"238":{"tf":1.0},"262":{"tf":1.0},"303":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"364":{"tf":1.0},"384":{"tf":1.0},"443":{"tf":1.0},"451":{"tf":1.0},"461":{"tf":1.0},"474":{"tf":1.0},"558":{"tf":1.0},"64":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"29":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"259":{"tf":1.0}}}}}},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"55":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"469":{"tf":1.0},"470":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":18,"docs":{"113":{"tf":1.0},"156":{"tf":1.0},"231":{"tf":1.7320508075688772},"232":{"tf":1.4142135623730951},"237":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"35":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"408":{"tf":1.0},"480":{"tf":1.7320508075688772},"483":{"tf":1.0},"538":{"tf":1.0},"61":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"15":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"c":{"df":3,"docs":{"246":{"tf":1.0},"248":{"tf":1.0},"374":{"tf":1.0}}},"df":0,"docs":{}},"n":{":":{":":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"370":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":1.0}}}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"d":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":6,"docs":{"197":{"tf":1.0},"217":{"tf":1.0},"336":{"tf":1.7320508075688772},"418":{"tf":1.0},"421":{"tf":2.0},"568":{"tf":1.0}}}}}},"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":6,"docs":{"199":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"328":{"tf":1.4142135623730951},"370":{"tf":1.0},"375":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"328":{"tf":1.0}}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":3,"docs":{"246":{"tf":2.23606797749979},"248":{"tf":1.0},"251":{"tf":1.0}}}}}},"df":19,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.7320508075688772},"199":{"tf":1.7320508075688772},"203":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":2.449489742783178},"248":{"tf":1.0},"251":{"tf":1.7320508075688772},"252":{"tf":1.7320508075688772},"258":{"tf":1.0},"332":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.0},"383":{"tf":1.0},"394":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.4142135623730951}},"g":{"df":1,"docs":{"397":{"tf":1.7320508075688772}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"457":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"l":{"df":5,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"367":{"tf":1.0},"456":{"tf":1.0},"496":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"a":{"c":{"df":0,"docs":{},"e":{"df":13,"docs":{"2":{"tf":1.0},"251":{"tf":1.0},"40":{"tf":1.0},"402":{"tf":1.0},"421":{"tf":1.0},"442":{"tf":1.0},"465":{"tf":1.0},"475":{"tf":1.0},"497":{"tf":1.0},"52":{"tf":1.0},"539":{"tf":1.0},"562":{"tf":1.0},"598":{"tf":1.0}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"551":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"156":{"tf":1.0},"460":{"tf":1.0}}}},"n":{"df":14,"docs":{"11":{"tf":1.0},"16":{"tf":1.0},"18":{"tf":1.0},"19":{"tf":1.0},"328":{"tf":1.0},"40":{"tf":1.0},"46":{"tf":1.0},"486":{"tf":1.0},"49":{"tf":1.0},"532":{"tf":1.0},"550":{"tf":1.0},"552":{"tf":2.0},"553":{"tf":1.0},"61":{"tf":1.0}}},"y":{"df":45,"docs":{"130":{"tf":1.0},"156":{"tf":2.0},"164":{"tf":1.4142135623730951},"174":{"tf":1.4142135623730951},"184":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"206":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"218":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"251":{"tf":1.0},"259":{"tf":1.0},"264":{"tf":1.4142135623730951},"265":{"tf":1.0},"273":{"tf":1.0},"28":{"tf":1.4142135623730951},"281":{"tf":1.0},"289":{"tf":1.0},"297":{"tf":1.0},"317":{"tf":1.0},"32":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"353":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"414":{"tf":1.0},"428":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"483":{"tf":1.0},"599":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"217":{"tf":1.0}}},".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":1,"docs":{"217":{"tf":1.0}}}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"356":{"tf":1.0},"380":{"tf":1.0}}}}},"df":9,"docs":{"113":{"tf":1.0},"21":{"tf":1.0},"23":{"tf":1.0},"25":{"tf":1.0},"26":{"tf":1.0},"37":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.0},"39":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":1,"docs":{"209":{"tf":1.0}},"g":{"df":2,"docs":{"300":{"tf":1.0},"458":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"217":{"tf":1.4142135623730951},"542":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}}},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":31,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.4142135623730951},"17":{"tf":1.0},"171":{"tf":1.0},"178":{"tf":1.4142135623730951},"200":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"230":{"tf":1.0},"257":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"271":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"325":{"tf":1.0},"336":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"419":{"tf":1.0},"469":{"tf":1.0},"49":{"tf":1.0},"498":{"tf":1.0},"507":{"tf":1.0},"526":{"tf":1.0},"559":{"tf":1.0},"56":{"tf":1.0},"562":{"tf":1.0},"583":{"tf":1.0},"61":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"190":{"tf":1.0},"198":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"458":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"380":{"tf":1.0}}}},"l":{"df":0,"docs":{},"l":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"217":{"tf":1.0},"336":{"tf":1.7320508075688772},"421":{"tf":2.0}}}}}}},":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":5,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"336":{"tf":2.0},"418":{"tf":1.0},"457":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":4,"docs":{"200":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"421":{"tf":1.4142135623730951}}},"y":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"418":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"k":{"(":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}},"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"v":{"df":1,"docs":{"200":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"568":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"t":{"df":1,"docs":{"418":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"197":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":3,"docs":{"217":{"tf":1.0},"336":{"tf":1.7320508075688772},"421":{"tf":2.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"197":{"tf":1.0},"418":{"tf":1.0}}}}}}},"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"572":{"tf":1.0}}}}}}}},"df":2,"docs":{"199":{"tf":1.0},"568":{"tf":1.0}}}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"328":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":29,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"171":{"tf":1.7320508075688772},"197":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"217":{"tf":1.0},"276":{"tf":1.0},"279":{"tf":1.0},"284":{"tf":1.4142135623730951},"328":{"tf":2.8284271247461903},"336":{"tf":3.1622776601683795},"342":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"353":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":2.23606797749979},"423":{"tf":1.4142135623730951},"456":{"tf":2.0},"457":{"tf":2.449489742783178},"538":{"tf":1.0},"539":{"tf":1.0},"570":{"tf":1.0},"62":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":1,"docs":{"276":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"325":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"331":{"tf":1.4142135623730951},"470":{"tf":1.0}}},"r":{"df":3,"docs":{"167":{"tf":1.0},"321":{"tf":1.0},"599":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"347":{"tf":1.0},"599":{"tf":1.0}}}}}},"p":{"df":4,"docs":{"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"258":{"tf":1.0},"397":{"tf":1.0}},"u":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":10,"docs":{"232":{"tf":1.0},"300":{"tf":1.0},"315":{"tf":1.0},"359":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"452":{"tf":1.0},"546":{"tf":1.0},"599":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"509":{"tf":1.0}}}},"df":0,"docs":{}},"df":7,"docs":{"209":{"tf":1.0},"408":{"tf":1.0},"532":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0},"546":{"tf":1.0},"73":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"116":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":5,"docs":{"15":{"tf":1.0},"217":{"tf":1.0},"421":{"tf":1.0},"487":{"tf":1.4142135623730951},"84":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":29,"docs":{"120":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.4142135623730951},"128":{"tf":1.0},"192":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"428":{"tf":1.0},"478":{"tf":1.0},"483":{"tf":1.0},"498":{"tf":1.0},"526":{"tf":1.4142135623730951},"61":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"t":{"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"271":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":23,"docs":{"162":{"tf":1.0},"192":{"tf":1.0},"199":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.4142135623730951},"28":{"tf":1.0},"284":{"tf":1.4142135623730951},"312":{"tf":1.0},"319":{"tf":1.0},"343":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.4142135623730951},"36":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"486":{"tf":1.0},"599":{"tf":2.8284271247461903},"60":{"tf":1.0},"9":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":9,"docs":{"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"268":{"tf":1.4142135623730951},"389":{"tf":1.7320508075688772},"42":{"tf":1.0},"496":{"tf":1.0},"560":{"tf":1.0}}}}}}},"v":{"df":2,"docs":{"27":{"tf":1.0},"40":{"tf":1.0}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"108":{"tf":1.0},"127":{"tf":1.0},"259":{"tf":1.4142135623730951}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":9,"docs":{"203":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"302":{"tf":1.0},"341":{"tf":1.0},"401":{"tf":1.0},"513":{"tf":1.0},"564":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"8":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":59,"docs":{"14":{"tf":1.4142135623730951},"148":{"tf":1.0},"149":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.0},"158":{"tf":1.0},"16":{"tf":2.23606797749979},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"19":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"21":{"tf":1.4142135623730951},"216":{"tf":1.0},"217":{"tf":1.0},"22":{"tf":1.4142135623730951},"220":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.4142135623730951},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":1.4142135623730951},"283":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.4142135623730951},"396":{"tf":1.0},"40":{"tf":1.7320508075688772},"407":{"tf":1.0},"41":{"tf":1.4142135623730951},"416":{"tf":1.0},"42":{"tf":1.0},"44":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"481":{"tf":1.0},"485":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"55":{"tf":1.4142135623730951},"58":{"tf":1.0},"60":{"tf":1.0},"84":{"tf":1.0}},"e":{"c":{"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"566":{"tf":1.0}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"s":{"df":4,"docs":{"19":{"tf":1.0},"29":{"tf":1.0},"336":{"tf":1.0},"49":{"tf":1.0}}}}},"d":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"51":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":8,"docs":{"21":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"347":{"tf":1.0},"37":{"tf":1.0},"417":{"tf":1.0},"61":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"408":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":10,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"251":{"tf":1.0},"27":{"tf":1.4142135623730951},"336":{"tf":1.0},"356":{"tf":1.0},"40":{"tf":1.0},"486":{"tf":1.0},"503":{"tf":1.0},"544":{"tf":1.0}}}},"r":{"df":0,"docs":{},"v":{"df":1,"docs":{"517":{"tf":1.4142135623730951}}}}},"s":{"df":2,"docs":{"284":{"tf":1.0},"336":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"478":{"tf":1.0},"539":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"i":{"df":15,"docs":{"156":{"tf":1.4142135623730951},"178":{"tf":1.0},"188":{"tf":1.0},"21":{"tf":1.0},"221":{"tf":1.4142135623730951},"259":{"tf":1.0},"264":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"502":{"tf":1.0},"510":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"599":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":9,"docs":{"110":{"tf":1.0},"125":{"tf":1.0},"167":{"tf":1.0},"218":{"tf":1.0},"263":{"tf":1.0},"284":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.4142135623730951},"487":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":6,"docs":{"360":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"418":{"tf":1.0},"440":{"tf":1.0}},"s":{"df":5,"docs":{"209":{"tf":1.0},"284":{"tf":1.0},"313":{"tf":1.0},"360":{"tf":1.4142135623730951},"469":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"140":{"tf":1.0},"474":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"462":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":2,"docs":{"156":{"tf":1.0},"61":{"tf":1.0}}}}}},"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"(":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":5,"docs":{"245":{"tf":1.0},"284":{"tf":1.0},"336":{"tf":3.1622776601683795},"380":{"tf":2.23606797749979},"448":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"336":{"tf":2.6457513110645907}}}}}}},"l":{"df":0,"docs":{},"n":{"!":{"(":{"\"":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"320":{"tf":1.0},"380":{"tf":3.3166247903554}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"458":{"tf":1.0}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":7,"docs":{"168":{"tf":1.0},"171":{"tf":1.0},"258":{"tf":1.0},"286":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"523":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"153":{"tf":1.0},"155":{"tf":1.4142135623730951},"539":{"tf":1.0}},"i":{"df":5,"docs":{"328":{"tf":2.0},"331":{"tf":1.0},"41":{"tf":2.0},"64":{"tf":1.0},"65":{"tf":2.0}}}}}}},"v":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"187":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"b":{"a":{"b":{"df":0,"docs":{},"l":{"df":28,"docs":{"174":{"tf":1.4142135623730951},"214":{"tf":1.7320508075688772},"218":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"251":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"284":{"tf":1.0},"315":{"tf":1.0},"321":{"tf":1.0},"325":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"352":{"tf":1.0},"367":{"tf":1.0},"385":{"tf":1.0},"418":{"tf":1.0},"445":{"tf":1.0},"450":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"96":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":1,"docs":{"389":{"tf":1.0}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":80,"docs":{"155":{"tf":1.0},"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"161":{"tf":1.0},"164":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"181":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"233":{"tf":1.7320508075688772},"234":{"tf":2.0},"244":{"tf":1.0},"25":{"tf":1.4142135623730951},"251":{"tf":1.0},"256":{"tf":1.7320508075688772},"257":{"tf":1.0},"258":{"tf":2.23606797749979},"259":{"tf":1.0},"261":{"tf":1.0},"264":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"284":{"tf":1.0},"297":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"319":{"tf":1.0},"323":{"tf":1.0},"328":{"tf":1.0},"331":{"tf":1.0},"345":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951},"370":{"tf":1.0},"375":{"tf":1.0},"377":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.0},"397":{"tf":1.0},"400":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"419":{"tf":1.4142135623730951},"42":{"tf":1.0},"421":{"tf":1.0},"425":{"tf":1.0},"431":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.4142135623730951},"458":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"470":{"tf":2.0},"472":{"tf":1.4142135623730951},"475":{"tf":1.0},"478":{"tf":1.0},"490":{"tf":1.0},"499":{"tf":1.4142135623730951},"501":{"tf":1.0},"519":{"tf":1.0},"521":{"tf":1.7320508075688772},"537":{"tf":1.0},"539":{"tf":1.7320508075688772},"54":{"tf":1.0},"561":{"tf":1.0},"599":{"tf":1.0},"74":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"516":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"199":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":29,"docs":{"15":{"tf":1.0},"152":{"tf":1.0},"156":{"tf":1.0},"181":{"tf":1.0},"189":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.4142135623730951},"303":{"tf":1.0},"31":{"tf":1.0},"312":{"tf":1.0},"330":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"410":{"tf":1.0},"42":{"tf":1.4142135623730951},"421":{"tf":1.0},"44":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"469":{"tf":1.4142135623730951},"485":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.4142135623730951},"62":{"tf":1.0}}}}}},"d":{"df":1,"docs":{"292":{"tf":2.449489742783178}},"u":{"c":{"df":4,"docs":{"214":{"tf":1.0},"276":{"tf":1.0},"350":{"tf":1.0},"599":{"tf":1.0}},"t":{"df":22,"docs":{"131":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.0},"168":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.0},"318":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"349":{"tf":1.0},"351":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"470":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":1.0},"9":{"tf":1.4142135623730951},"91":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{":":{":":{"<":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{">":{"(":{"&":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"276":{"tf":1.0},"469":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"469":{"tf":1.0}}}}}}},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"383":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":3,"docs":{"209":{"tf":1.7320508075688772},"248":{"tf":1.0},"435":{"tf":1.0}}}}},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":42,"docs":{"110":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.4142135623730951},"187":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.4142135623730951},"232":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"289":{"tf":1.0},"300":{"tf":1.0},"315":{"tf":1.0},"339":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":2.0},"408":{"tf":1.0},"436":{"tf":1.0},"448":{"tf":1.7320508075688772},"457":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.7320508075688772},"474":{"tf":1.4142135623730951},"483":{"tf":1.0},"510":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"528":{"tf":1.0},"538":{"tf":2.8284271247461903},"539":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"67":{"tf":1.0},"72":{"tf":1.0},"74":{"tf":1.0},"79":{"tf":1.0},"84":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"286":{"tf":1.0}}}},"df":49,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"211":{"tf":1.0},"216":{"tf":1.0},"218":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"241":{"tf":1.0},"243":{"tf":1.0},"250":{"tf":1.4142135623730951},"254":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"339":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.4142135623730951},"467":{"tf":1.0},"469":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":10,"docs":{"156":{"tf":1.0},"18":{"tf":1.0},"268":{"tf":1.0},"342":{"tf":1.0},"380":{"tf":1.0},"412":{"tf":1.4142135623730951},"470":{"tf":1.0},"538":{"tf":1.4142135623730951},"558":{"tf":1.7320508075688772},"562":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":103,"docs":{"101":{"tf":1.0},"102":{"tf":1.0},"103":{"tf":1.0},"104":{"tf":1.0},"105":{"tf":1.0},"106":{"tf":1.0},"107":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"114":{"tf":1.0},"115":{"tf":1.0},"118":{"tf":1.7320508075688772},"120":{"tf":1.4142135623730951},"121":{"tf":1.0},"122":{"tf":1.0},"123":{"tf":1.0},"124":{"tf":1.0},"127":{"tf":1.7320508075688772},"129":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0},"132":{"tf":1.0},"133":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.0},"14":{"tf":1.0},"140":{"tf":1.0},"141":{"tf":1.0},"142":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"16":{"tf":1.4142135623730951},"187":{"tf":1.4142135623730951},"20":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":2.23606797749979},"213":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":2.23606797749979},"22":{"tf":1.4142135623730951},"221":{"tf":1.0},"224":{"tf":1.0},"230":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"244":{"tf":1.0},"249":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.7320508075688772},"258":{"tf":1.7320508075688772},"276":{"tf":2.23606797749979},"278":{"tf":1.0},"292":{"tf":1.4142135623730951},"3":{"tf":1.0},"300":{"tf":1.7320508075688772},"315":{"tf":1.0},"341":{"tf":1.4142135623730951},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"360":{"tf":1.0},"366":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"389":{"tf":2.449489742783178},"392":{"tf":1.0},"41":{"tf":1.7320508075688772},"456":{"tf":2.0},"458":{"tf":1.0},"47":{"tf":1.7320508075688772},"496":{"tf":1.0},"499":{"tf":1.0},"502":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.4142135623730951},"515":{"tf":2.0},"517":{"tf":1.0},"521":{"tf":1.4142135623730951},"522":{"tf":1.4142135623730951},"532":{"tf":1.7320508075688772},"533":{"tf":1.4142135623730951},"535":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"549":{"tf":1.0},"557":{"tf":1.4142135623730951},"558":{"tf":1.4142135623730951},"559":{"tf":1.0},"599":{"tf":1.0},"72":{"tf":1.4142135623730951},"79":{"tf":1.0},"89":{"tf":1.0},"91":{"tf":1.0},"93":{"tf":1.0},"94":{"tf":1.4142135623730951},"95":{"tf":1.0},"96":{"tf":2.449489742783178},"97":{"tf":1.7320508075688772},"98":{"tf":1.0},"99":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":2,"docs":{"55":{"tf":1.0},"59":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"211":{"tf":1.0}}},"s":{"df":9,"docs":{"156":{"tf":1.0},"188":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"278":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.0},"599":{"tf":1.0},"76":{"tf":1.0}},"e":{".":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"n":{"df":0,"docs":{},"e":{"df":2,"docs":{"330":{"tf":1.0},"433":{"tf":1.0}}}},"o":{"df":0,"docs":{},"f":{"df":2,"docs":{"422":{"tf":1.0},"431":{"tf":1.0}}}},"p":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"276":{"tf":1.0},"347":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"214":{"tf":1.0}}}},"s":{"df":10,"docs":{"14":{"tf":1.4142135623730951},"152":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.4142135623730951},"31":{"tf":1.0},"319":{"tf":1.0},"44":{"tf":1.0},"478":{"tf":1.0},"485":{"tf":1.0},"489":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"237":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0}}}}}}},"t":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"64":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"263":{"tf":1.0},"272":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"o":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":4,"docs":{"141":{"tf":1.0},"143":{"tf":1.4142135623730951},"548":{"tf":1.0},"549":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":6,"docs":{"209":{"tf":1.7320508075688772},"349":{"tf":1.0},"370":{"tf":1.7320508075688772},"408":{"tf":1.0},"538":{"tf":1.0},"548":{"tf":1.0}},"e":{"_":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"538":{"tf":1.4142135623730951},"539":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"d":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"i":{"d":{"df":34,"docs":{"11":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"125":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"168":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.4142135623730951},"241":{"tf":1.0},"245":{"tf":1.0},"252":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"457":{"tf":1.4142135623730951},"543":{"tf":1.0},"548":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"x":{"df":0,"docs":{},"i":{"df":1,"docs":{"268":{"tf":2.8284271247461903}}}}}},"u":{"b":{"(":{"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":7,"docs":{"217":{"tf":1.7320508075688772},"292":{"tf":2.23606797749979},"328":{"tf":2.8284271247461903},"380":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":2.0},"568":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"c":{"df":4,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"129":{"tf":1.0},"221":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":5,"docs":{"221":{"tf":1.0},"276":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"47":{"tf":1.0}}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":7,"docs":{"276":{"tf":2.23606797749979},"279":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"389":{"tf":1.0},"534":{"tf":1.0},"603":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"225":{"tf":1.0},"456":{"tf":1.0}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":3,"docs":{"119":{"tf":1.0},"310":{"tf":1.0},"421":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"h":{"df":7,"docs":{"173":{"tf":1.0},"209":{"tf":1.4142135623730951},"261":{"tf":1.0},"309":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0}}}},"t":{"df":14,"docs":{"195":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.4142135623730951},"258":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"53":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"55":{"tf":1.0},"562":{"tf":1.0}}},"z":{"df":0,"docs":{},"z":{"df":0,"docs":{},"l":{"df":3,"docs":{"234":{"tf":1.0},"284":{"tf":1.0},"599":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"347":{"tf":1.0}}},"df":1,"docs":{"347":{"tf":1.0}}}}}}}},"q":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"423":{"tf":1.0}}}}},"df":0,"docs":{}}},"{":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":3,"docs":{"417":{"tf":1.0},"421":{"tf":2.449489742783178},"422":{"tf":1.0}}}}}},"df":0,"docs":{},"t":{"df":2,"docs":{"192":{"tf":1.0},"599":{"tf":1.0}}},"u":{"a":{"d":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"311":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":7,"docs":{"110":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"328":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"599":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":4,"docs":{"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"209":{"tf":1.0},"347":{"tf":2.23606797749979}},"e":{"df":0,"docs":{},"s":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{":":{":":{"<":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"c":{"<":{"d":{"a":{"df":0,"docs":{},"t":{"a":{">":{">":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":79,"docs":{"100":{"tf":1.0},"109":{"tf":1.0},"117":{"tf":1.0},"126":{"tf":1.0},"135":{"tf":1.0},"144":{"tf":1.0},"154":{"tf":1.7320508075688772},"16":{"tf":1.0},"160":{"tf":1.0},"164":{"tf":1.0},"170":{"tf":1.0},"180":{"tf":1.0},"192":{"tf":1.0},"202":{"tf":1.0},"210":{"tf":1.0},"218":{"tf":1.0},"222":{"tf":1.0},"236":{"tf":1.0},"247":{"tf":1.0},"25":{"tf":1.0},"260":{"tf":1.0},"269":{"tf":1.0},"27":{"tf":1.0},"277":{"tf":1.0},"28":{"tf":1.7320508075688772},"284":{"tf":1.0},"285":{"tf":1.0},"29":{"tf":1.4142135623730951},"292":{"tf":1.0},"293":{"tf":1.0},"30":{"tf":1.0},"300":{"tf":2.23606797749979},"301":{"tf":1.0},"314":{"tf":1.0},"329":{"tf":1.0},"337":{"tf":1.0},"348":{"tf":1.0},"362":{"tf":1.0},"371":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"398":{"tf":1.0},"408":{"tf":1.0},"409":{"tf":1.0},"41":{"tf":1.7320508075688772},"42":{"tf":1.4142135623730951},"424":{"tf":1.0},"43":{"tf":1.0},"432":{"tf":1.0},"441":{"tf":1.0},"449":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.0},"471":{"tf":1.0},"479":{"tf":1.0},"487":{"tf":1.0},"492":{"tf":1.0},"505":{"tf":1.0},"506":{"tf":1.0},"509":{"tf":1.0},"524":{"tf":1.0},"529":{"tf":1.0},"534":{"tf":1.4142135623730951},"538":{"tf":1.0},"540":{"tf":1.0},"556":{"tf":1.0},"56":{"tf":1.4142135623730951},"566":{"tf":1.0},"57":{"tf":1.4142135623730951},"572":{"tf":1.0},"573":{"tf":1.4142135623730951},"582":{"tf":1.0},"593":{"tf":1.0},"599":{"tf":1.0},"66":{"tf":1.0},"75":{"tf":1.0},"80":{"tf":1.0},"85":{"tf":1.0},"90":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"e":{"df":2,"docs":{"328":{"tf":1.0},"347":{"tf":1.0}}}}},"i":{"c":{"df":1,"docs":{"150":{"tf":1.0}},"k":{"df":5,"docs":{"195":{"tf":1.0},"24":{"tf":1.0},"284":{"tf":1.0},"38":{"tf":1.0},"538":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":16,"docs":{"130":{"tf":1.0},"195":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"389":{"tf":1.0},"391":{"tf":1.0},"397":{"tf":1.0},"457":{"tf":1.0}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"187":{"tf":1.0}}}},"t":{"df":25,"docs":{"156":{"tf":1.0},"190":{"tf":1.4142135623730951},"211":{"tf":1.0},"230":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.0},"270":{"tf":1.0},"307":{"tf":1.0},"330":{"tf":1.0},"347":{"tf":1.0},"356":{"tf":1.0},"359":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"475":{"tf":1.0},"512":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"599":{"tf":1.0}}}},"o":{"df":112,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"15":{"tf":1.7320508075688772},"151":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.4142135623730951},"156":{"tf":1.0},"157":{"tf":2.0},"158":{"tf":1.7320508075688772},"16":{"tf":1.7320508075688772},"165":{"tf":1.0},"166":{"tf":1.7320508075688772},"17":{"tf":1.0},"175":{"tf":1.0},"176":{"tf":1.7320508075688772},"185":{"tf":1.0},"186":{"tf":1.7320508075688772},"19":{"tf":1.0},"193":{"tf":1.0},"194":{"tf":1.7320508075688772},"207":{"tf":1.0},"208":{"tf":1.7320508075688772},"21":{"tf":1.0},"215":{"tf":1.0},"216":{"tf":1.7320508075688772},"219":{"tf":1.0},"220":{"tf":1.7320508075688772},"227":{"tf":1.0},"228":{"tf":1.0},"23":{"tf":1.7320508075688772},"24":{"tf":1.7320508075688772},"242":{"tf":1.0},"243":{"tf":1.0},"25":{"tf":1.4142135623730951},"253":{"tf":1.0},"254":{"tf":1.0},"266":{"tf":1.0},"267":{"tf":1.7320508075688772},"27":{"tf":1.4142135623730951},"274":{"tf":1.0},"275":{"tf":1.7320508075688772},"28":{"tf":1.0},"282":{"tf":1.0},"283":{"tf":1.7320508075688772},"29":{"tf":1.4142135623730951},"290":{"tf":1.0},"291":{"tf":1.7320508075688772},"298":{"tf":1.0},"299":{"tf":1.7320508075688772},"305":{"tf":1.0},"306":{"tf":1.7320508075688772},"31":{"tf":1.0},"326":{"tf":1.0},"327":{"tf":1.0},"334":{"tf":1.0},"335":{"tf":1.7320508075688772},"345":{"tf":1.0},"346":{"tf":1.7320508075688772},"354":{"tf":1.0},"355":{"tf":1.0},"36":{"tf":1.0},"368":{"tf":1.0},"369":{"tf":1.7320508075688772},"378":{"tf":1.0},"379":{"tf":1.7320508075688772},"387":{"tf":1.0},"388":{"tf":1.0},"395":{"tf":1.0},"396":{"tf":1.7320508075688772},"40":{"tf":1.4142135623730951},"406":{"tf":1.0},"407":{"tf":1.7320508075688772},"41":{"tf":1.4142135623730951},"416":{"tf":1.7320508075688772},"42":{"tf":1.4142135623730951},"429":{"tf":1.0},"430":{"tf":1.0},"438":{"tf":1.0},"439":{"tf":1.0},"446":{"tf":1.0},"447":{"tf":1.7320508075688772},"45":{"tf":1.0},"454":{"tf":1.0},"455":{"tf":1.0},"46":{"tf":1.4142135623730951},"466":{"tf":1.0},"467":{"tf":1.7320508075688772},"476":{"tf":1.0},"477":{"tf":1.7320508075688772},"493":{"tf":1.4142135623730951},"506":{"tf":1.0},"507":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"53":{"tf":1.4142135623730951},"539":{"tf":1.0},"54":{"tf":1.0},"541":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.0},"56":{"tf":1.4142135623730951},"58":{"tf":1.0},"59":{"tf":1.4142135623730951},"597":{"tf":1.0},"598":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}}}}},"r":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}}}}},"a":{"b":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"258":{"tf":1.0},"300":{"tf":1.0}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":8,"docs":{"167":{"tf":1.4142135623730951},"178":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.4142135623730951},"374":{"tf":1.0},"469":{"tf":1.0},"521":{"tf":1.0}}},"k":{"df":2,"docs":{"125":{"tf":1.0},"127":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"259":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"134":{"tf":1.0},"72":{"tf":1.0}}},"s":{"df":3,"docs":{"154":{"tf":1.0},"292":{"tf":1.0},"57":{"tf":1.0}}}},"m":{"df":2,"docs":{"336":{"tf":2.0},"340":{"tf":1.0}}},"n":{"d":{"df":1,"docs":{"481":{"tf":1.4142135623730951}},"o":{"df":0,"docs":{},"m":{"df":2,"docs":{"27":{"tf":1.0},"370":{"tf":1.0}}}}},"df":1,"docs":{"470":{"tf":1.0}},"g":{"df":1,"docs":{"8":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"140":{"tf":1.0},"419":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":2,"docs":{"538":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"240":{"tf":1.0}}}},"df":0,"docs":{}}}}},"w":{"df":4,"docs":{"157":{"tf":1.0},"276":{"tf":1.0},"328":{"tf":1.0},"489":{"tf":1.0}},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"190":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":2,"docs":{"190":{"tf":1.0},"336":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"599":{"tf":1.0}}},"df":4,"docs":{"360":{"tf":1.0},"389":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}}},"c":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"423":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"0":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"1":{"_":{"df":0,"docs":{},"u":{"3":{"2":{"df":1,"docs":{"423":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"419":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"418":{"tf":1.0}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"_":{"df":1,"docs":{"419":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"418":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"422":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":3,"docs":{"421":{"tf":1.0},"423":{"tf":1.0},"470":{"tf":1.0}}},"df":3,"docs":{"292":{"tf":2.449489742783178},"370":{"tf":1.7320508075688772},"440":{"tf":2.0}},"e":{"a":{"c":{"df":0,"docs":{},"h":{"df":6,"docs":{"209":{"tf":1.0},"245":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"286":{"tf":1.0},"448":{"tf":1.0},"556":{"tf":1.0}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0}}}}}},"d":{"df":33,"docs":{"156":{"tf":2.23606797749979},"178":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.4142135623730951},"198":{"tf":1.4142135623730951},"199":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.4142135623730951},"249":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.7320508075688772},"357":{"tf":1.4142135623730951},"360":{"tf":1.0},"361":{"tf":1.0},"365":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.4142135623730951},"402":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.7320508075688772},"486":{"tf":1.0},"527":{"tf":1.0},"565":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"481":{"tf":1.0},"538":{"tf":1.7320508075688772}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"478":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":3,"docs":{"195":{"tf":1.0},"196":{"tf":1.4142135623730951},"199":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"i":{"df":13,"docs":{"17":{"tf":1.0},"199":{"tf":1.4142135623730951},"230":{"tf":1.7320508075688772},"232":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"380":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"551":{"tf":1.0},"560":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}},"m":{"df":3,"docs":{"221":{"tf":1.0},"538":{"tf":1.0},"543":{"tf":1.0}}},"y":{"!":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{"c":{"df":0,"docs":{},"x":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"(":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"c":{"df":0,"docs":{},"x":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"df":45,"docs":{"110":{"tf":1.0},"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"23":{"tf":1.4142135623730951},"233":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"278":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"322":{"tf":1.0},"327":{"tf":1.0},"33":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"47":{"tf":1.0},"477":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":3,"docs":{"190":{"tf":1.0},"237":{"tf":1.0},"347":{"tf":1.0}}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"156":{"tf":1.0},"487":{"tf":1.0}}}},"z":{"df":38,"docs":{"178":{"tf":1.0},"195":{"tf":1.0},"198":{"tf":1.0},"201":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.0},"383":{"tf":1.0},"41":{"tf":1.4142135623730951},"421":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"47":{"tf":1.0},"470":{"tf":1.0},"487":{"tf":1.0},"497":{"tf":1.0},"499":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":30,"docs":{"148":{"tf":1.0},"149":{"tf":1.0},"156":{"tf":1.4142135623730951},"217":{"tf":1.0},"245":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"315":{"tf":1.0},"32":{"tf":1.0},"321":{"tf":1.4142135623730951},"340":{"tf":1.0},"35":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"408":{"tf":1.4142135623730951},"423":{"tf":1.0},"47":{"tf":1.0},"478":{"tf":1.7320508075688772},"481":{"tf":1.7320508075688772},"499":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.0},"534":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"461":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"110":{"tf":1.0}}}}}},"r":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"179":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":17,"docs":{"190":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"319":{"tf":1.0},"324":{"tf":1.0},"341":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"357":{"tf":1.0},"360":{"tf":1.4142135623730951},"370":{"tf":1.0},"404":{"tf":1.0},"440":{"tf":1.0},"45":{"tf":1.0},"512":{"tf":1.0},"61":{"tf":1.0},"82":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"c":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":9,"docs":{"120":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.7320508075688772},"292":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"380":{"tf":1.0},"481":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":3,"docs":{"259":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.0}}}},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":5,"docs":{"178":{"tf":1.0},"209":{"tf":1.7320508075688772},"217":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"470":{"tf":1.0},"522":{"tf":1.0}}}}}},"r":{"d":{"df":4,"docs":{"209":{"tf":1.4142135623730951},"392":{"tf":1.0},"448":{"tf":2.0},"598":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":4,"docs":{"156":{"tf":1.0},"245":{"tf":1.4142135623730951},"370":{"tf":2.6457513110645907},"375":{"tf":1.0}}}}},"v":{"df":1,"docs":{"539":{"tf":1.0}}}},"d":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"258":{"tf":1.0},"27":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0}}}}},"df":3,"docs":{"218":{"tf":1.0},"245":{"tf":1.0},"538":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":2,"docs":{"336":{"tf":1.0},"389":{"tf":1.0}}}}}}},"o":{"df":1,"docs":{"599":{"tf":1.0}}},"u":{"c":{"df":5,"docs":{"209":{"tf":1.0},"336":{"tf":1.0},"397":{"tf":1.7320508075688772},"405":{"tf":1.0},"73":{"tf":1.0}},"t":{"df":1,"docs":{"341":{"tf":1.0}}}},"df":0,"docs":{}}},"df":9,"docs":{"192":{"tf":1.0},"200":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":3.1622776601683795},"336":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"517":{"tf":1.0},"599":{"tf":1.0}},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"258":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":3,"docs":{"417":{"tf":2.0},"422":{"tf":1.0},"425":{"tf":1.0}},"l":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"417":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":3,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"565":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":16,"docs":{"156":{"tf":1.0},"213":{"tf":1.4142135623730951},"217":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"268":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.4142135623730951},"328":{"tf":1.0},"417":{"tf":1.4142135623730951},"42":{"tf":1.0},"421":{"tf":1.0},"470":{"tf":1.0},"538":{"tf":1.4142135623730951},"598":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"154":{"tf":1.0},"94":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"198":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"336":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":40,"docs":{"155":{"tf":1.0},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"176":{"tf":1.4142135623730951},"186":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"208":{"tf":1.4142135623730951},"216":{"tf":1.4142135623730951},"220":{"tf":1.4142135623730951},"228":{"tf":1.0},"23":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"259":{"tf":1.0},"267":{"tf":1.4142135623730951},"275":{"tf":1.4142135623730951},"283":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"299":{"tf":1.4142135623730951},"306":{"tf":1.4142135623730951},"327":{"tf":1.0},"335":{"tf":1.4142135623730951},"346":{"tf":1.4142135623730951},"355":{"tf":1.0},"369":{"tf":1.4142135623730951},"37":{"tf":1.0},"379":{"tf":1.4142135623730951},"388":{"tf":1.0},"396":{"tf":1.4142135623730951},"407":{"tf":1.4142135623730951},"416":{"tf":1.4142135623730951},"430":{"tf":1.0},"439":{"tf":1.0},"444":{"tf":1.0},"447":{"tf":1.4142135623730951},"455":{"tf":1.0},"458":{"tf":1.0},"467":{"tf":1.4142135623730951},"477":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"g":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"278":{"tf":1.0},"496":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":3,"docs":{"316":{"tf":1.0},"321":{"tf":1.0},"341":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"469":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"200":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"r":{"df":2,"docs":{"203":{"tf":1.0},"292":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"156":{"tf":1.4142135623730951},"207":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":5,"docs":{"110":{"tf":1.0},"195":{"tf":1.0},"217":{"tf":1.0},"310":{"tf":1.0},"457":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"18":{"tf":1.0},"51":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"190":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0}}}}}}}}}},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"417":{"tf":1.0}}}}}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":6,"docs":{"268":{"tf":1.0},"386":{"tf":1.0},"460":{"tf":1.0},"480":{"tf":1.0},"538":{"tf":1.0},"566":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"338":{"tf":1.0}}}}}}}}}},"y":{"df":1,"docs":{"108":{"tf":1.0}}}},"df":9,"docs":{"246":{"tf":1.0},"248":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"370":{"tf":1.0},"495":{"tf":1.0},"502":{"tf":1.0},"507":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"s":{"df":6,"docs":{"218":{"tf":1.0},"328":{"tf":1.4142135623730951},"357":{"tf":1.0},"380":{"tf":1.0},"422":{"tf":1.0},"89":{"tf":1.0}}}},"df":0,"docs":{},"v":{"df":3,"docs":{"172":{"tf":1.0},"559":{"tf":1.0},"579":{"tf":1.0}}}},"i":{"a":{"b":{"df":0,"docs":{},"l":{"df":4,"docs":{"119":{"tf":1.0},"121":{"tf":1.0},"130":{"tf":1.4142135623730951},"72":{"tf":1.0}}}},"df":0,"docs":{}},"df":5,"docs":{"248":{"tf":1.0},"456":{"tf":1.4142135623730951},"462":{"tf":1.4142135623730951},"544":{"tf":1.0},"548":{"tf":1.0}},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"358":{"tf":1.0},"370":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"458":{"tf":1.0}}},"df":5,"docs":{"169":{"tf":1.0},"209":{"tf":1.0},"357":{"tf":1.0},"458":{"tf":1.0},"517":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":19,"docs":{"167":{"tf":1.0},"199":{"tf":1.0},"23":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":1.0},"25":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"311":{"tf":1.0},"37":{"tf":1.0},"380":{"tf":2.0},"385":{"tf":1.0},"419":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"89":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"231":{"tf":1.0},"448":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"v":{"df":7,"docs":{"131":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"380":{"tf":1.4142135623730951},"392":{"tf":1.0},"559":{"tf":1.0}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"391":{"tf":1.0},"538":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"217":{"tf":1.0},"542":{"tf":1.0}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":4,"docs":{"300":{"tf":1.0},"343":{"tf":1.0},"370":{"tf":1.0},"474":{"tf":1.0}},"e":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"328":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"l":{"a":{"c":{"df":9,"docs":{"157":{"tf":1.0},"279":{"tf":1.0},"310":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"470":{"tf":1.0},"489":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":2,"docs":{"300":{"tf":1.4142135623730951},"54":{"tf":1.0}}}},"o":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}}},":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"16":{"tf":1.0},"292":{"tf":2.449489742783178},"562":{"tf":1.0},"580":{"tf":1.0}},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"221":{"tf":1.0}}}},"r":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":8,"docs":{"209":{"tf":2.23606797749979},"214":{"tf":1.0},"221":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.7320508075688772},"400":{"tf":1.0},"404":{"tf":1.4142135623730951},"9":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"24":{"tf":1.0},"25":{"tf":1.0},"603":{"tf":1.0}}}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":8,"docs":{"155":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"280":{"tf":1.0},"328":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.0},"94":{"tf":1.0}}}},"o":{"'":{"df":1,"docs":{"286":{"tf":1.0}}},"d":{"df":0,"docs":{},"u":{"c":{"df":4,"docs":{"178":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"431":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"284":{"tf":1.0}}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"278":{"tf":1.0}}}}},"q":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"418":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"347":{"tf":1.4142135623730951},"579":{"tf":1.0},"580":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":18,"docs":{"165":{"tf":1.0},"169":{"tf":1.7320508075688772},"217":{"tf":2.23606797749979},"221":{"tf":2.449489742783178},"232":{"tf":1.4142135623730951},"268":{"tf":3.7416573867739413},"276":{"tf":2.23606797749979},"279":{"tf":1.0},"292":{"tf":2.23606797749979},"300":{"tf":1.4142135623730951},"307":{"tf":1.4142135623730951},"315":{"tf":1.0},"347":{"tf":2.449489742783178},"349":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":2.0},"523":{"tf":1.4142135623730951},"603":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"r":{"df":60,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"112":{"tf":1.0},"119":{"tf":1.0},"128":{"tf":1.0},"129":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0},"153":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.7320508075688772},"171":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"268":{"tf":1.4142135623730951},"270":{"tf":1.0},"273":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.7320508075688772},"302":{"tf":1.0},"319":{"tf":1.4142135623730951},"328":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"351":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":2.6457513110645907},"380":{"tf":1.0},"41":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":2.23606797749979},"431":{"tf":1.0},"440":{"tf":6.708203932499369},"442":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.0},"522":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0},"559":{"tf":1.0},"579":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.4142135623730951}}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"323":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"258":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":7,"docs":{"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"237":{"tf":1.7320508075688772},"258":{"tf":1.0},"307":{"tf":1.0},"321":{"tf":1.7320508075688772}}}}}}},"s":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"181":{"tf":1.0},"183":{"tf":1.0},"359":{"tf":1.0},"469":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":7,"docs":{"181":{"tf":1.0},"218":{"tf":1.0},"319":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.7320508075688772}}}},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"385":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"c":{"df":18,"docs":{"108":{"tf":1.0},"119":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.4142135623730951},"125":{"tf":1.0},"127":{"tf":1.0},"131":{"tf":1.0},"178":{"tf":1.0},"217":{"tf":1.0},"284":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"370":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"538":{"tf":2.8284271247461903},"539":{"tf":1.4142135623730951},"544":{"tf":1.0},"546":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"213":{"tf":1.0},"53":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"n":{"d":{"df":9,"docs":{"209":{"tf":1.0},"217":{"tf":1.0},"276":{"tf":1.0},"29":{"tf":1.0},"300":{"tf":1.4142135623730951},"336":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":20,"docs":{"167":{"tf":2.23606797749979},"168":{"tf":1.0},"169":{"tf":2.23606797749979},"189":{"tf":1.0},"195":{"tf":1.7320508075688772},"201":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":2.8284271247461903},"230":{"tf":1.0},"276":{"tf":1.7320508075688772},"28":{"tf":1.0},"292":{"tf":1.7320508075688772},"300":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":1.4142135623730951},"397":{"tf":1.0},"41":{"tf":1.0},"538":{"tf":1.4142135623730951},"580":{"tf":1.4142135623730951},"599":{"tf":1.0}},"e":{"<":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"284":{"tf":1.0},"448":{"tf":1.0}}}}},"df":4,"docs":{"357":{"tf":1.0},"389":{"tf":1.0},"457":{"tf":1.0},"92":{"tf":1.0}},"r":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"370":{"tf":1.0},"421":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"<":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"292":{"tf":1.0}},"e":{"<":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{":":{":":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"u":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"209":{"tf":1.0}}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"<":{"df":0,"docs":{},"u":{"8":{"df":2,"docs":{"196":{"tf":1.4142135623730951},"197":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":43,"docs":{"108":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":2.6457513110645907},"307":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"347":{"tf":2.6457513110645907},"374":{"tf":1.0},"377":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0},"431":{"tf":1.0},"445":{"tf":1.0},"448":{"tf":1.7320508075688772},"469":{"tf":1.0},"470":{"tf":2.0},"472":{"tf":1.0},"502":{"tf":1.4142135623730951},"521":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"561":{"tf":1.0},"578":{"tf":1.4142135623730951},"579":{"tf":1.0},"599":{"tf":1.4142135623730951},"79":{"tf":1.0}}}},"m":{"df":1,"docs":{"573":{"tf":1.0}},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":2.0}}}}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"11":{"tf":1.0},"179":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":7,"docs":{"40":{"tf":1.0},"41":{"tf":1.4142135623730951},"45":{"tf":1.0},"493":{"tf":1.0},"506":{"tf":1.0},"525":{"tf":1.0},"541":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"336":{"tf":1.0}},"e":{"df":0,"docs":{},"v":{"df":2,"docs":{"336":{"tf":1.0},"342":{"tf":1.0}}}}},"y":{"_":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":2,"docs":{"457":{"tf":1.7320508075688772},"458":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":26,"docs":{"167":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":2.6457513110645907},"209":{"tf":1.4142135623730951},"217":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"246":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":2.0},"294":{"tf":1.0},"336":{"tf":3.1622776601683795},"341":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"418":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":2.0},"458":{"tf":1.7320508075688772},"465":{"tf":1.0},"508":{"tf":1.0},"51":{"tf":1.0},"522":{"tf":1.0},"573":{"tf":1.7320508075688772}}}}}},"u":{"df":0,"docs":{},"s":{"df":4,"docs":{"196":{"tf":1.0},"205":{"tf":1.0},"571":{"tf":1.0},"96":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"399":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":1,"docs":{"463":{"tf":1.0}}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":9,"docs":{"15":{"tf":1.0},"16":{"tf":1.4142135623730951},"230":{"tf":1.0},"259":{"tf":1.0},"29":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":1.0},"42":{"tf":1.4142135623730951},"558":{"tf":2.6457513110645907}}}},"s":{"df":1,"docs":{"61":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"18":{"tf":1.0},"268":{"tf":1.0},"347":{"tf":1.0},"51":{"tf":1.0}}}}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"512":{"tf":1.0},"518":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":6,"docs":{"134":{"tf":1.0},"209":{"tf":1.0},"313":{"tf":1.0},"370":{"tf":1.0},"431":{"tf":1.0},"460":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"370":{"tf":1.0}}}}}}}}}},"f":{"c":{"df":4,"docs":{"17":{"tf":1.0},"478":{"tf":1.0},"560":{"tf":1.0},"562":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":1,"docs":{"602":{"tf":1.0}}}}}}}}},"h":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"602":{"tf":1.0}}}}}}}}},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"542":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":29,"docs":{"129":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"268":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"300":{"tf":1.4142135623730951},"304":{"tf":1.0},"319":{"tf":1.0},"321":{"tf":1.0},"359":{"tf":1.0},"361":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"394":{"tf":1.0},"421":{"tf":1.7320508075688772},"431":{"tf":1.0},"472":{"tf":1.0},"475":{"tf":1.0},"522":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0},"552":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"460":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"401":{"tf":1.0}}},"k":{"df":1,"docs":{"538":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":2.23606797749979}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":1,"docs":{"380":{"tf":1.0}}}},"o":{"a":{"d":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"df":5,"docs":{"10":{"tf":1.0},"155":{"tf":1.0},"550":{"tf":1.0},"553":{"tf":1.0},"562":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"57":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}},"i":{"df":1,"docs":{"221":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":2,"docs":{"28":{"tf":1.0},"41":{"tf":1.0}}}},"m":{"df":1,"docs":{"156":{"tf":1.0}}},"o":{"df":0,"docs":{},"m":{"df":2,"docs":{"200":{"tf":1.0},"57":{"tf":1.0}}},"t":{"df":1,"docs":{"250":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"268":{"tf":1.0},"380":{"tf":1.0}}}}}},"t":{"df":6,"docs":{"195":{"tf":1.0},"201":{"tf":1.0},"268":{"tf":3.4641016151377544},"292":{"tf":1.0},"300":{"tf":1.0},"431":{"tf":1.7320508075688772}},"e":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"/":{"\"":{")":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"_":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"_":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"/":{"\"":{")":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"(":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"_":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"(":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":3,"docs":{"268":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0}}},"s":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"(":{"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":1.0}},"e":{")":{"?":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"230":{"tf":1.0},"502":{"tf":1.0}}}}}},"w":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}},"p":{"c":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":2,"docs":{"276":{"tf":2.6457513110645907},"359":{"tf":1.0}}},"df":0,"docs":{}},"s":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"349":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"279":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"df":2,"docs":{"440":{"tf":2.0},"602":{"tf":1.0}}},"t":{".":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"f":{"df":1,"docs":{"309":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"5":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"6":{"5":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{":":{"1":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":1,"docs":{"309":{"tf":1.0}},"l":{"d":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"b":{"d":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"503":{"tf":1.0}}},"i":{"df":2,"docs":{"134":{"tf":1.0},"72":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":1,"docs":{"218":{"tf":1.4142135623730951}}}}},"l":{"df":0,"docs":{},"e":{"df":5,"docs":{"156":{"tf":1.4142135623730951},"218":{"tf":1.0},"515":{"tf":1.0},"54":{"tf":1.0},"59":{"tf":1.0}}}},"m":{"df":0,"docs":{},"q":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":1,"docs":{"323":{"tf":1.0}}}}}},"n":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":53,"docs":{"112":{"tf":1.0},"121":{"tf":1.0},"125":{"tf":2.0},"127":{"tf":1.0},"128":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":2.0},"16":{"tf":1.0},"171":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.4142135623730951},"192":{"tf":1.0},"221":{"tf":1.0},"233":{"tf":1.4142135623730951},"234":{"tf":1.0},"242":{"tf":1.0},"244":{"tf":1.0},"245":{"tf":1.0},"258":{"tf":1.4142135623730951},"273":{"tf":1.0},"284":{"tf":1.7320508075688772},"309":{"tf":1.0},"318":{"tf":1.4142135623730951},"319":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.0},"347":{"tf":1.4142135623730951},"380":{"tf":2.449489742783178},"385":{"tf":1.0},"389":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"408":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"448":{"tf":1.7320508075688772},"453":{"tf":1.0},"504":{"tf":2.449489742783178},"508":{"tf":1.0},"509":{"tf":1.0},"510":{"tf":1.0},"517":{"tf":1.0},"522":{"tf":1.4142135623730951},"523":{"tf":1.0},"528":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.4142135623730951},"73":{"tf":1.0},"74":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":80,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.7320508075688772},"128":{"tf":1.4142135623730951},"137":{"tf":1.7320508075688772},"146":{"tf":1.4142135623730951},"156":{"tf":3.1622776601683795},"167":{"tf":1.0},"189":{"tf":2.0},"190":{"tf":2.449489742783178},"191":{"tf":1.0},"192":{"tf":1.4142135623730951},"203":{"tf":1.0},"233":{"tf":1.7320508075688772},"234":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":2.0},"240":{"tf":1.0},"241":{"tf":1.0},"256":{"tf":2.0},"257":{"tf":1.0},"258":{"tf":2.6457513110645907},"261":{"tf":2.0},"265":{"tf":1.0},"268":{"tf":1.0},"278":{"tf":1.4142135623730951},"284":{"tf":1.7320508075688772},"286":{"tf":1.0},"288":{"tf":1.4142135623730951},"300":{"tf":2.23606797749979},"302":{"tf":1.0},"309":{"tf":2.0},"319":{"tf":2.23606797749979},"323":{"tf":1.0},"325":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.7320508075688772},"349":{"tf":1.7320508075688772},"358":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":2.0},"372":{"tf":1.0},"380":{"tf":1.0},"399":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":2.0},"418":{"tf":1.0},"421":{"tf":2.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"437":{"tf":1.4142135623730951},"462":{"tf":1.0},"464":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"500":{"tf":1.0},"502":{"tf":2.8284271247461903},"503":{"tf":1.0},"504":{"tf":1.4142135623730951},"507":{"tf":2.449489742783178},"508":{"tf":1.0},"509":{"tf":1.0},"511":{"tf":1.4142135623730951},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.7320508075688772},"521":{"tf":2.0},"526":{"tf":1.4142135623730951},"527":{"tf":1.7320508075688772},"529":{"tf":1.7320508075688772},"532":{"tf":1.0},"533":{"tf":1.4142135623730951},"534":{"tf":1.7320508075688772},"564":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":2.23606797749979},"62":{"tf":1.7320508075688772}},"e":{"'":{"df":1,"docs":{"349":{"tf":1.0}}},".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{")":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"f":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"167":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"179":{"tf":1.0}}}}}},"t":{"'":{"df":19,"docs":{"156":{"tf":1.0},"181":{"tf":1.0},"211":{"tf":1.4142135623730951},"218":{"tf":1.0},"231":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"289":{"tf":1.0},"338":{"tf":1.0},"350":{"tf":1.0},"363":{"tf":1.4142135623730951},"367":{"tf":1.4142135623730951},"403":{"tf":1.0},"456":{"tf":1.4142135623730951},"469":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"502":{"tf":1.0},"76":{"tf":1.0}}},"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{"=":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":1,"docs":{"556":{"tf":1.0}}}}},"c":{"df":2,"docs":{"292":{"tf":1.0},"440":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"o":{"c":{"df":1,"docs":{"465":{"tf":1.0}}},"df":0,"docs":{}}},"df":182,"docs":{"108":{"tf":1.0},"11":{"tf":1.7320508075688772},"110":{"tf":1.7320508075688772},"118":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.4142135623730951},"15":{"tf":1.0},"153":{"tf":1.7320508075688772},"156":{"tf":3.7416573867739413},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"17":{"tf":1.0},"176":{"tf":1.4142135623730951},"178":{"tf":1.0},"183":{"tf":1.0},"186":{"tf":1.4142135623730951},"187":{"tf":1.7320508075688772},"188":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"195":{"tf":1.4142135623730951},"198":{"tf":1.0},"204":{"tf":1.0},"208":{"tf":1.4142135623730951},"209":{"tf":2.8284271247461903},"211":{"tf":2.0},"213":{"tf":1.0},"216":{"tf":1.4142135623730951},"217":{"tf":1.7320508075688772},"218":{"tf":1.4142135623730951},"220":{"tf":1.4142135623730951},"221":{"tf":1.7320508075688772},"227":{"tf":1.0},"228":{"tf":1.4142135623730951},"23":{"tf":1.4142135623730951},"230":{"tf":2.23606797749979},"232":{"tf":1.0},"235":{"tf":1.4142135623730951},"237":{"tf":1.4142135623730951},"243":{"tf":1.4142135623730951},"244":{"tf":1.0},"245":{"tf":1.4142135623730951},"251":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.0},"254":{"tf":1.4142135623730951},"256":{"tf":1.7320508075688772},"257":{"tf":1.0},"258":{"tf":2.6457513110645907},"259":{"tf":2.0},"261":{"tf":2.0},"263":{"tf":1.0},"264":{"tf":1.4142135623730951},"267":{"tf":1.4142135623730951},"268":{"tf":2.6457513110645907},"27":{"tf":1.0},"270":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"275":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"283":{"tf":1.4142135623730951},"284":{"tf":2.449489742783178},"289":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"299":{"tf":1.4142135623730951},"3":{"tf":1.0},"300":{"tf":2.0},"303":{"tf":1.0},"304":{"tf":1.0},"306":{"tf":1.4142135623730951},"316":{"tf":1.4142135623730951},"317":{"tf":1.0},"327":{"tf":1.4142135623730951},"332":{"tf":1.0},"333":{"tf":1.0},"335":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"338":{"tf":1.4142135623730951},"339":{"tf":1.4142135623730951},"340":{"tf":1.4142135623730951},"341":{"tf":1.7320508075688772},"343":{"tf":1.0},"346":{"tf":1.4142135623730951},"347":{"tf":1.7320508075688772},"349":{"tf":1.0},"350":{"tf":1.0},"355":{"tf":1.4142135623730951},"356":{"tf":2.0},"357":{"tf":1.4142135623730951},"358":{"tf":1.4142135623730951},"359":{"tf":1.4142135623730951},"363":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.4142135623730951},"37":{"tf":1.7320508075688772},"370":{"tf":1.7320508075688772},"376":{"tf":1.0},"379":{"tf":1.4142135623730951},"380":{"tf":4.47213595499958},"382":{"tf":1.0},"383":{"tf":2.0},"385":{"tf":1.0},"386":{"tf":1.0},"388":{"tf":1.4142135623730951},"389":{"tf":2.0},"393":{"tf":1.0},"394":{"tf":1.0},"396":{"tf":1.4142135623730951},"399":{"tf":1.0},"40":{"tf":1.0},"405":{"tf":1.0},"407":{"tf":1.4142135623730951},"408":{"tf":1.7320508075688772},"41":{"tf":1.0},"416":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.0},"427":{"tf":1.0},"430":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"435":{"tf":1.0},"439":{"tf":1.4142135623730951},"447":{"tf":1.4142135623730951},"455":{"tf":1.4142135623730951},"456":{"tf":2.6457513110645907},"457":{"tf":1.4142135623730951},"458":{"tf":1.4142135623730951},"460":{"tf":2.23606797749979},"461":{"tf":1.0},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"467":{"tf":1.4142135623730951},"469":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"475":{"tf":1.0},"477":{"tf":1.4142135623730951},"478":{"tf":1.0},"483":{"tf":1.0},"490":{"tf":2.0},"499":{"tf":1.0},"501":{"tf":2.0},"502":{"tf":1.4142135623730951},"512":{"tf":1.4142135623730951},"519":{"tf":2.0},"521":{"tf":1.7320508075688772},"522":{"tf":1.0},"523":{"tf":1.0},"525":{"tf":1.0},"530":{"tf":1.0},"537":{"tf":2.0},"538":{"tf":1.7320508075688772},"544":{"tf":1.0},"597":{"tf":1.0},"599":{"tf":2.449489742783178},"600":{"tf":1.0},"601":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.7320508075688772},"64":{"tf":1.0},"65":{"tf":2.23606797749979},"71":{"tf":1.0},"72":{"tf":1.7320508075688772},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":2.0},"8":{"tf":2.0},"81":{"tf":1.0},"82":{"tf":1.0},"86":{"tf":1.0},"87":{"tf":1.0},"89":{"tf":1.7320508075688772},"9":{"tf":2.449489742783178},"91":{"tf":1.7320508075688772},"92":{"tf":1.7320508075688772}},"f":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"245":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"i":{"df":1,"docs":{"156":{"tf":1.0}}},"u":{"df":0,"docs":{},"p":{"df":4,"docs":{"110":{"tf":1.0},"245":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"469":{"tf":1.0}}}}}}}},"w":{"<":{"'":{"a":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"x":{"df":1,"docs":{"448":{"tf":1.0}}},"y":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"224":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}},"s":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"579":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"131":{"tf":1.0}}},"df":0,"docs":{}}}}}},"d":{"df":1,"docs":{"221":{"tf":1.0}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":11,"docs":{"110":{"tf":1.0},"178":{"tf":1.0},"198":{"tf":1.0},"320":{"tf":1.0},"336":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"470":{"tf":1.0},"563":{"tf":1.0}},"r":{"df":2,"docs":{"425":{"tf":1.0},"428":{"tf":1.0}}},"t":{"df":0,"docs":{},"i":{"df":20,"docs":{"171":{"tf":1.0},"190":{"tf":1.0},"218":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.0},"344":{"tf":1.0},"41":{"tf":1.0},"456":{"tf":1.7320508075688772},"460":{"tf":1.4142135623730951},"469":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"511":{"tf":1.4142135623730951},"521":{"tf":1.0},"529":{"tf":1.0},"65":{"tf":1.4142135623730951},"76":{"tf":1.0},"79":{"tf":1.0},"81":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}}}}},"m":{"df":0,"docs":{},"e":{"df":55,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.0},"230":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"237":{"tf":1.7320508075688772},"240":{"tf":1.0},"25":{"tf":1.0},"252":{"tf":1.0},"257":{"tf":1.0},"261":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"321":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"331":{"tf":1.0},"341":{"tf":1.0},"358":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"393":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":1.0},"423":{"tf":1.4142135623730951},"437":{"tf":1.0},"45":{"tf":1.0},"453":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"46":{"tf":1.4142135623730951},"463":{"tf":1.0},"464":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"512":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"61":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.4142135623730951},"96":{"tf":1.0}}},"p":{"df":0,"docs":{},"l":{"df":11,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.0},"142":{"tf":1.0},"209":{"tf":1.0},"336":{"tf":1.0},"496":{"tf":1.0},"94":{"tf":1.0},"98":{"tf":1.0}}}}},"n":{"d":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"315":{"tf":1.0},"321":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"389":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":7,"docs":{"246":{"tf":1.0},"258":{"tf":1.0},"330":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"470":{"tf":1.0},"57":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":5,"docs":{"122":{"tf":1.0},"199":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.4142135623730951},"417":{"tf":1.0}}}},"w":{"df":1,"docs":{"465":{"tf":1.0}}},"y":{"df":2,"docs":{"300":{"tf":1.0},"538":{"tf":1.0}}}},"c":{"a":{"df":0,"docs":{},"l":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":1,"docs":{"73":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":4,"docs":{"284":{"tf":1.0},"347":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0}}}},"n":{"df":1,"docs":{"408":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":3,"docs":{"156":{"tf":1.0},"300":{"tf":1.0},"450":{"tf":1.0}}}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"389":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":8,"docs":{"209":{"tf":1.0},"318":{"tf":1.0},"328":{"tf":3.7416573867739413},"418":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"529":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"=":{"0":{"df":0,"docs":{},"x":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"d":{"b":{"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"328":{"tf":1.0}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"531":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":3,"docs":{"178":{"tf":1.0},"389":{"tf":1.0},"47":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"458":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"330":{"tf":1.0},"460":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"198":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"217":{"tf":1.0},"539":{"tf":1.4142135623730951}}}}},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"538":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":4,"docs":{"292":{"tf":1.0},"328":{"tf":1.4142135623730951},"440":{"tf":2.8284271247461903},"470":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"507":{"tf":1.0}}}}}}}}},"n":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"r":{"c":{"df":0,"docs":{},"h":{"df":14,"docs":{"178":{"tf":1.4142135623730951},"181":{"tf":1.0},"195":{"tf":1.0},"232":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":2.23606797749979},"258":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.0},"440":{"tf":1.0},"458":{"tf":1.0},"475":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"237":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"433":{"tf":1.0}}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":15,"docs":{"130":{"tf":1.0},"16":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.7320508075688772},"431":{"tf":1.0},"458":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":2.23606797749979},"539":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"89":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":6,"docs":{"154":{"tf":1.7320508075688772},"380":{"tf":1.0},"551":{"tf":1.4142135623730951},"597":{"tf":1.4142135623730951},"598":{"tf":1.4142135623730951},"94":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"237":{"tf":1.0}}}}},"df":1,"docs":{"341":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"53":{"tf":1.0}}},"df":59,"docs":{"152":{"tf":1.4142135623730951},"156":{"tf":1.0},"157":{"tf":1.0},"161":{"tf":1.0},"178":{"tf":2.0},"188":{"tf":1.0},"190":{"tf":1.0},"196":{"tf":1.0},"209":{"tf":2.23606797749979},"217":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.4142135623730951},"27":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":2.23606797749979},"292":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"343":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.23606797749979},"393":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.4142135623730951},"408":{"tf":1.7320508075688772},"421":{"tf":1.4142135623730951},"440":{"tf":1.0},"463":{"tf":1.0},"485":{"tf":1.4142135623730951},"489":{"tf":1.0},"499":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"509":{"tf":1.0},"516":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":3.1622776601683795},"539":{"tf":1.4142135623730951},"542":{"tf":1.0},"543":{"tf":1.0},"551":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.4142135623730951},"580":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"68":{"tf":1.0},"69":{"tf":1.0},"73":{"tf":1.0},"95":{"tf":1.0},"97":{"tf":1.0}},"k":{"df":2,"docs":{"178":{"tf":1.0},"179":{"tf":1.0}}},"m":{"df":33,"docs":{"139":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":2.23606797749979},"276":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.7320508075688772},"319":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.4142135623730951},"389":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"450":{"tf":1.0},"458":{"tf":1.0},"478":{"tf":1.0},"57":{"tf":1.0},"599":{"tf":1.0}}},"n":{"df":7,"docs":{"198":{"tf":1.0},"245":{"tf":1.0},"284":{"tf":1.0},"347":{"tf":1.4142135623730951},"380":{"tf":1.0},"445":{"tf":1.4142135623730951},"502":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":13,"docs":{"15":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"192":{"tf":1.0},"211":{"tf":1.0},"246":{"tf":1.4142135623730951},"252":{"tf":1.0},"370":{"tf":1.0},"422":{"tf":1.0},"538":{"tf":1.0},"588":{"tf":1.0},"60":{"tf":1.0}}}},"df":0,"docs":{}},"f":{"(":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},".":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"418":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":1,"docs":{"167":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"167":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":1,"docs":{"370":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"_":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}},"m":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"190":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"370":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"q":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"200":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":2.0},"200":{"tf":2.0}},"e":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"268":{"tf":2.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"o":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"580":{"tf":1.4142135623730951}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"221":{"tf":1.4142135623730951}}}}}}}}}},"df":0,"docs":{}},"=":{"0":{"df":0,"docs":{},"x":{"5":{"5":{"5":{"5":{"5":{"5":{"7":{"0":{"1":{"a":{"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"d":{"b":{"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"2":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"8":{"df":1,"docs":{"284":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"d":{"0":{"0":{"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"3":{"0":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":11,"docs":{"167":{"tf":1.0},"169":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":2.23606797749979},"217":{"tf":1.0},"292":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"418":{"tf":1.0},"421":{"tf":2.8284271247461903},"568":{"tf":1.4142135623730951}}},"l":{"df":1,"docs":{"235":{"tf":1.0}}}},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"171":{"tf":1.0},"270":{"tf":1.0},"341":{"tf":1.0},"453":{"tf":1.0},"470":{"tf":1.0}}}}},"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"572":{"tf":1.0}}}}}},"n":{"d":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"189":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":20,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.4142135623730951},"195":{"tf":1.0},"268":{"tf":3.3166247903554},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.7320508075688772},"292":{"tf":2.8284271247461903},"328":{"tf":2.23606797749979},"341":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.4142135623730951},"470":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":2.0},"564":{"tf":1.0},"579":{"tf":2.23606797749979},"599":{"tf":1.0},"62":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"276":{"tf":1.0},"328":{"tf":1.0},"538":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":10,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"310":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.0},"352":{"tf":1.0},"389":{"tf":1.0}},"i":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"116":{"tf":1.0},"230":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"106":{"tf":1.0},"108":{"tf":1.4142135623730951},"111":{"tf":1.0}}}}},"t":{"df":2,"docs":{"169":{"tf":1.0},"276":{"tf":2.23606797749979}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":6,"docs":{"217":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"349":{"tf":1.0},"389":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"191":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"509":{"tf":1.0},"527":{"tf":1.0}}},"n":{"c":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"r":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"j":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"&":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"s":{")":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":2,"docs":{"182":{"tf":1.0},"400":{"tf":1.0}}}}},"i":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"292":{"tf":2.0},"347":{"tf":1.4142135623730951},"469":{"tf":1.0}},"i":{"df":0,"docs":{},"z":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"s":{"(":{"&":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":1,"docs":{"458":{"tf":1.0}}},"v":{"df":3,"docs":{"119":{"tf":1.0},"302":{"tf":1.0},"572":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":21,"docs":{"111":{"tf":1.4142135623730951},"116":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.0},"132":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":2.0},"137":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.4142135623730951},"195":{"tf":1.0},"209":{"tf":1.0},"227":{"tf":1.0},"230":{"tf":1.4142135623730951},"231":{"tf":1.7320508075688772},"233":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"276":{"tf":2.0},"599":{"tf":1.0}}}},"i":{"c":{"df":23,"docs":{"116":{"tf":1.0},"125":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.4142135623730951},"167":{"tf":2.0},"209":{"tf":1.4142135623730951},"212":{"tf":1.0},"224":{"tf":1.0},"268":{"tf":2.0},"284":{"tf":2.23606797749979},"300":{"tf":1.0},"347":{"tf":2.23606797749979},"370":{"tf":1.0},"408":{"tf":1.7320508075688772},"429":{"tf":1.0},"431":{"tf":2.0},"538":{"tf":2.449489742783178},"579":{"tf":1.4142135623730951},"580":{"tf":1.7320508075688772},"599":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"235":{"tf":1.0},"60":{"tf":1.0},"601":{"tf":1.4142135623730951},"79":{"tf":1.0}}}}}}},"t":{"df":25,"docs":{"156":{"tf":1.7320508075688772},"168":{"tf":1.0},"169":{"tf":1.7320508075688772},"199":{"tf":1.0},"209":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.0},"261":{"tf":1.0},"328":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"393":{"tf":1.0},"417":{"tf":1.0},"435":{"tf":1.0},"448":{"tf":1.7320508075688772},"450":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"490":{"tf":1.0},"501":{"tf":1.0},"516":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"l":{"df":1,"docs":{"199":{"tf":1.0}}}},"u":{"df":0,"docs":{},"p":{"df":4,"docs":{"156":{"tf":1.4142135623730951},"240":{"tf":1.0},"347":{"tf":1.0},"470":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":16,"docs":{"155":{"tf":1.0},"168":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"195":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.0},"408":{"tf":1.0},"419":{"tf":1.0},"538":{"tf":1.0},"91":{"tf":1.0}}}}}},"h":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"276":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"217":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"df":3,"docs":{"297":{"tf":1.0},"560":{"tf":1.0},"573":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"422":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"422":{"tf":1.4142135623730951}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"422":{"tf":1.0}}}}}}}}},"df":22,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"276":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.4142135623730951},"419":{"tf":1.0},"422":{"tf":1.4142135623730951},"470":{"tf":2.23606797749979},"476":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"548":{"tf":1.0},"79":{"tf":1.0},"8":{"tf":1.0},"92":{"tf":1.0}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"16":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"359":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"'":{"d":{"df":3,"docs":{"225":{"tf":1.0},"394":{"tf":1.0},"82":{"tf":1.0}}},"df":20,"docs":{"251":{"tf":1.4142135623730951},"268":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"321":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"393":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"413":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":2.23606797749979},"81":{"tf":1.0},"82":{"tf":1.0},"89":{"tf":1.0}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"308":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"129":{"tf":1.0},"370":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}}},"i":{"df":51,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"15":{"tf":1.7320508075688772},"16":{"tf":1.7320508075688772},"17":{"tf":1.0},"18":{"tf":1.0},"19":{"tf":1.0},"21":{"tf":1.0},"37":{"tf":1.4142135623730951},"38":{"tf":1.0},"40":{"tf":2.0},"41":{"tf":1.7320508075688772},"44":{"tf":1.0},"45":{"tf":1.0},"46":{"tf":1.7320508075688772},"47":{"tf":1.7320508075688772},"484":{"tf":1.0},"485":{"tf":1.0},"486":{"tf":1.0},"489":{"tf":2.0},"49":{"tf":1.4142135623730951},"490":{"tf":1.7320508075688772},"494":{"tf":1.0},"495":{"tf":1.0},"497":{"tf":1.0},"499":{"tf":1.0},"500":{"tf":1.0},"501":{"tf":1.7320508075688772},"51":{"tf":1.4142135623730951},"516":{"tf":1.0},"518":{"tf":1.0},"519":{"tf":1.7320508075688772},"53":{"tf":1.4142135623730951},"534":{"tf":1.0},"536":{"tf":1.0},"537":{"tf":1.7320508075688772},"54":{"tf":1.4142135623730951},"548":{"tf":1.0},"55":{"tf":1.0},"57":{"tf":1.4142135623730951},"58":{"tf":1.0},"59":{"tf":1.4142135623730951},"602":{"tf":1.0},"603":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}}},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"39":{"tf":1.0},"489":{"tf":1.0}}}}}}}},"df":0,"docs":{}}},"p":{"df":3,"docs":{"168":{"tf":1.0},"268":{"tf":1.4142135623730951},"560":{"tf":1.0}}}},"o":{"df":0,"docs":{},"e":{"df":1,"docs":{"276":{"tf":1.0}}},"o":{"df":0,"docs":{},"t":{"df":1,"docs":{"573":{"tf":1.0}}}},"p":{"df":2,"docs":{"284":{"tf":1.0},"73":{"tf":1.0}}},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"558":{"tf":1.0}}}},"df":7,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"233":{"tf":1.0},"268":{"tf":1.4142135623730951},"270":{"tf":1.0},"276":{"tf":1.0},"598":{"tf":1.0}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"579":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"292":{"tf":1.0}}}}}},"t":{"df":2,"docs":{"284":{"tf":1.0},"538":{"tf":1.0}}},"u":{"df":0,"docs":{},"l":{"d":{"'":{"df":0,"docs":{},"v":{"df":1,"docs":{"365":{"tf":1.0}}}},"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"178":{"tf":1.0},"375":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"w":{"df":10,"docs":{"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"27":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"522":{"tf":1.0},"539":{"tf":1.7320508075688772}},"n":{"df":2,"docs":{"246":{"tf":1.0},"347":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"i":{"d":{"df":0,"docs":{},"e":{"b":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"95":{"tf":1.0}}}},"df":0,"docs":{}},"df":3,"docs":{"181":{"tf":1.0},"224":{"tf":1.0},"389":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"(":{"&":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":3,"docs":{"196":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":3,"docs":{"196":{"tf":1.0},"199":{"tf":2.449489742783178},"200":{"tf":2.23606797749979}},"h":{"df":1,"docs":{"370":{"tf":1.0}}},"n":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"196":{"tf":1.4142135623730951}}}}}},"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"336":{"tf":1.0},"344":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":5,"docs":{"195":{"tf":1.4142135623730951},"199":{"tf":2.23606797749979},"217":{"tf":1.0},"292":{"tf":1.0},"421":{"tf":1.7320508075688772}},"e":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"196":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":4,"docs":{"195":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.0},"230":{"tf":1.0}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":6,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"366":{"tf":1.0}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"199":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"197":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951}}}}}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":33,"docs":{"167":{"tf":1.0},"171":{"tf":1.0},"192":{"tf":1.4142135623730951},"195":{"tf":1.0},"196":{"tf":1.0},"204":{"tf":1.0},"206":{"tf":1.0},"218":{"tf":1.0},"22":{"tf":1.0},"233":{"tf":1.0},"25":{"tf":1.0},"251":{"tf":1.0},"259":{"tf":1.0},"261":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"323":{"tf":1.0},"333":{"tf":1.0},"347":{"tf":1.4142135623730951},"352":{"tf":1.0},"370":{"tf":1.0},"386":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.7320508075688772},"475":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":6,"docs":{"231":{"tf":1.0},"264":{"tf":1.0},"317":{"tf":1.0},"340":{"tf":1.0},"358":{"tf":1.0},"61":{"tf":1.0}}}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"l":{"df":12,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"321":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":1.4142135623730951},"523":{"tf":1.0},"61":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"389":{"tf":1.0},"460":{"tf":1.0}}}},"i":{"c":{"df":1,"docs":{"357":{"tf":1.0}}},"df":6,"docs":{"196":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"232":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"df":4,"docs":{"292":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"l":{"df":5,"docs":{"156":{"tf":1.4142135623730951},"466":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"473":{"tf":1.0}},"t":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":21,"docs":{"156":{"tf":1.0},"177":{"tf":1.0},"189":{"tf":1.4142135623730951},"195":{"tf":1.0},"318":{"tf":1.4142135623730951},"319":{"tf":1.0},"336":{"tf":2.0},"341":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"363":{"tf":1.0},"391":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.4142135623730951},"533":{"tf":1.0},"534":{"tf":1.0},"539":{"tf":1.4142135623730951},"564":{"tf":1.0},"62":{"tf":2.0}},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"177":{"tf":1.4142135623730951}}}}}}}},"k":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"599":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":7,"docs":{"156":{"tf":1.0},"274":{"tf":1.0},"276":{"tf":2.23606797749979},"278":{"tf":1.4142135623730951},"279":{"tf":1.7320508075688772},"589":{"tf":1.0},"599":{"tf":1.4142135623730951}}}},"t":{"df":2,"docs":{"268":{"tf":1.0},"380":{"tf":1.0}},"e":{"df":4,"docs":{"138":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"232":{"tf":1.0}}},"u":{"a":{"df":0,"docs":{},"t":{"df":8,"docs":{"226":{"tf":1.0},"237":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"286":{"tf":1.0},"336":{"tf":1.0},"359":{"tf":1.0},"419":{"tf":1.0}}}},"df":0,"docs":{}}},"x":{"df":1,"docs":{"15":{"tf":1.0}}},"z":{"df":0,"docs":{},"e":{"=":{"<":{"df":0,"docs":{},"s":{"df":1,"docs":{"245":{"tf":1.0}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"568":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":15,"docs":{"11":{"tf":1.0},"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"245":{"tf":2.23606797749979},"258":{"tf":1.0},"292":{"tf":1.4142135623730951},"336":{"tf":2.0},"340":{"tf":1.0},"341":{"tf":2.23606797749979},"342":{"tf":1.4142135623730951},"343":{"tf":1.4142135623730951},"370":{"tf":1.0},"515":{"tf":1.0},"527":{"tf":1.0},"538":{"tf":1.4142135623730951}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"336":{"tf":1.0}}}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"498":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"192":{"tf":1.0},"221":{"tf":1.0}}}},"m":{"df":4,"docs":{"209":{"tf":1.0},"358":{"tf":1.0},"367":{"tf":1.0},"538":{"tf":1.4142135623730951}}},"p":{"df":2,"docs":{"41":{"tf":1.0},"448":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"457":{"tf":1.0}}}}}},"df":2,"docs":{"380":{"tf":1.0},"566":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"375":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"[":{"1":{".":{".":{"]":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"375":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"375":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"259":{"tf":1.0},"419":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"300":{"tf":1.0},"386":{"tf":1.0},"458":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"g":{"df":1,"docs":{"292":{"tf":1.0}}},"w":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"}":{"df":0,"docs":{},"}":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"df":9,"docs":{"141":{"tf":1.0},"143":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.0},"150":{"tf":1.4142135623730951},"156":{"tf":1.0},"397":{"tf":1.0},"532":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}}}}},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":13,"docs":{"209":{"tf":1.4142135623730951},"302":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.0},"356":{"tf":1.0},"380":{"tf":1.0},"458":{"tf":1.0},"474":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"245":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"252":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":1,"docs":{"188":{"tf":1.0}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"3":{"tf":1.0},"370":{"tf":1.0}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"341":{"tf":1.0}}}}}}}}},"n":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"c":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"276":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":5,"docs":{"195":{"tf":1.0},"274":{"tf":1.0},"276":{"tf":2.0},"408":{"tf":1.0},"431":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":6,"docs":{"110":{"tf":1.0},"112":{"tf":1.0},"127":{"tf":1.0},"130":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"e":{"df":2,"docs":{"539":{"tf":1.4142135623730951},"543":{"tf":1.0}}},"i":{"d":{"df":2,"docs":{"181":{"tf":1.0},"363":{"tf":1.0}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":4,"docs":{"256":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"521":{"tf":1.0}}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":34,"docs":{"129":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.4142135623730951},"181":{"tf":1.0},"183":{"tf":1.0},"190":{"tf":1.0},"200":{"tf":1.0},"223":{"tf":1.0},"226":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"279":{"tf":1.0},"286":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"410":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":1.7320508075688772},"469":{"tf":2.6457513110645907},"470":{"tf":2.23606797749979},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"560":{"tf":1.4142135623730951},"570":{"tf":1.0}}}},"v":{"df":19,"docs":{"179":{"tf":1.0},"278":{"tf":1.4142135623730951},"328":{"tf":1.0},"349":{"tf":1.0},"440":{"tf":1.0},"445":{"tf":1.7320508075688772},"457":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"478":{"tf":1.0},"490":{"tf":1.0},"499":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"54":{"tf":1.0},"561":{"tf":1.0},"579":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"470":{"tf":1.0},"473":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"(":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"167":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"195":{"tf":1.0},"196":{"tf":1.0}}}}}},"x":{".":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"457":{"tf":1.7320508075688772},"458":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.7320508075688772}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}}}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}},"df":0,"docs":{}},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":3,"docs":{"19":{"tf":1.0},"50":{"tf":1.0},"54":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"217":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":18,"docs":{"153":{"tf":1.0},"178":{"tf":1.0},"192":{"tf":1.0},"24":{"tf":1.0},"251":{"tf":1.0},"292":{"tf":1.0},"302":{"tf":1.0},"339":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"421":{"tf":1.4142135623730951},"450":{"tf":1.0},"452":{"tf":1.0},"460":{"tf":1.0},"474":{"tf":1.0},"498":{"tf":1.0},"55":{"tf":1.0},"559":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":51,"docs":{"129":{"tf":1.0},"130":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.0},"181":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"221":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"276":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"312":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.7320508075688772},"336":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"397":{"tf":1.4142135623730951},"402":{"tf":1.0},"408":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"469":{"tf":1.0},"480":{"tf":1.0},"489":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"55":{"tf":1.0},"558":{"tf":1.0},"562":{"tf":1.0},"564":{"tf":1.0},"573":{"tf":1.0},"579":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"564":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"m":{"df":29,"docs":{"156":{"tf":2.6457513110645907},"16":{"tf":1.0},"168":{"tf":1.0},"177":{"tf":1.0},"218":{"tf":1.0},"27":{"tf":1.0},"278":{"tf":1.0},"319":{"tf":1.0},"324":{"tf":1.0},"347":{"tf":1.7320508075688772},"372":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"47":{"tf":1.0},"478":{"tf":1.4142135623730951},"487":{"tf":1.0},"51":{"tf":1.0},"539":{"tf":1.4142135623730951},"571":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.4142135623730951},"73":{"tf":1.0},"74":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"t":{"df":9,"docs":{"167":{"tf":1.0},"205":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"251":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"457":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"284":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"380":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"n":{"df":6,"docs":{"190":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"328":{"tf":1.0},"431":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"453":{"tf":1.0}}}}},"o":{"df":1,"docs":{"599":{"tf":1.0}}}},"p":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"110":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"i":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}},"df":10,"docs":{"200":{"tf":1.0},"25":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"40":{"tf":1.0},"526":{"tf":1.0},"539":{"tf":1.0},"61":{"tf":1.0}}}},"u":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"284":{"tf":1.0},"393":{"tf":1.0}}},"df":0,"docs":{}},"p":{"df":2,"docs":{"292":{"tf":1.0},"294":{"tf":1.0}}},"r":{"c":{"df":56,"docs":{"103":{"tf":1.0},"112":{"tf":1.4142135623730951},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"140":{"tf":1.0},"143":{"tf":1.0},"147":{"tf":1.0},"154":{"tf":1.0},"157":{"tf":1.0},"162":{"tf":1.0},"172":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"182":{"tf":1.0},"192":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":2.8284271247461903},"212":{"tf":1.0},"218":{"tf":1.0},"224":{"tf":1.0},"238":{"tf":1.0},"245":{"tf":1.0},"249":{"tf":1.0},"262":{"tf":1.0},"27":{"tf":1.4142135623730951},"271":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.4142135623730951},"279":{"tf":1.0},"28":{"tf":1.0},"287":{"tf":1.0},"292":{"tf":1.0},"295":{"tf":1.0},"303":{"tf":1.0},"321":{"tf":1.0},"331":{"tf":1.0},"351":{"tf":1.0},"364":{"tf":1.0},"373":{"tf":1.0},"384":{"tf":1.0},"392":{"tf":1.0},"399":{"tf":1.0},"400":{"tf":1.0},"408":{"tf":1.0},"411":{"tf":1.0},"426":{"tf":1.0},"434":{"tf":1.0},"440":{"tf":1.0},"443":{"tf":1.0},"451":{"tf":1.0},"461":{"tf":1.0},"473":{"tf":1.0},"481":{"tf":1.0},"489":{"tf":1.0},"538":{"tf":1.0},"598":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"a":{"c":{"df":0,"docs":{},"e":{"df":6,"docs":{"156":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"561":{"tf":1.0},"89":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}},"w":{"df":0,"docs":{},"n":{"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":6,"docs":{"310":{"tf":2.0},"320":{"tf":1.0},"322":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.7320508075688772},"360":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{"(":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"<":{"df":0,"docs":{},"f":{">":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":1,"docs":{"217":{"tf":2.0}}},"df":0,"docs":{}}}},"df":21,"docs":{"178":{"tf":1.0},"181":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"310":{"tf":1.7320508075688772},"322":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"341":{"tf":1.4142135623730951},"344":{"tf":1.0},"347":{"tf":2.0},"349":{"tf":1.0},"403":{"tf":1.0},"408":{"tf":1.0},"412":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.7320508075688772},"538":{"tf":1.0},"599":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{},"e":{"c":{"df":1,"docs":{"156":{"tf":1.0}},"i":{"a":{"df":0,"docs":{},"l":{"df":9,"docs":{"112":{"tf":1.0},"129":{"tf":1.0},"156":{"tf":1.0},"218":{"tf":1.0},"330":{"tf":1.0},"341":{"tf":1.0},"403":{"tf":1.0},"579":{"tf":1.0},"61":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"f":{"df":28,"docs":{"156":{"tf":1.0},"164":{"tf":1.0},"182":{"tf":1.0},"187":{"tf":1.0},"192":{"tf":1.0},"201":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"232":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"33":{"tf":1.4142135623730951},"336":{"tf":1.0},"34":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"36":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"417":{"tf":1.4142135623730951},"431":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.4142135623730951},"486":{"tf":1.0},"496":{"tf":1.0},"538":{"tf":1.0},"543":{"tf":1.0},"56":{"tf":1.0}},"i":{"df":4,"docs":{"276":{"tf":1.0},"380":{"tf":1.0},"470":{"tf":1.0},"49":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"d":{"df":3,"docs":{"336":{"tf":1.0},"347":{"tf":1.0},"478":{"tf":1.0}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"380":{"tf":1.0},"40":{"tf":1.0}}}},"n":{"d":{"df":9,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"458":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}},"i":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"259":{"tf":2.6457513110645907}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"59":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"209":{"tf":1.0},"276":{"tf":1.7320508075688772}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}},"t":{"df":1,"docs":{"259":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"372":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"l":{"df":3,"docs":{"370":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"365":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":1,"docs":{"336":{"tf":1.7320508075688772}}}}}}}},"q":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"178":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"s":{"df":0,"docs":{},"q":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{"\"":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":2,"docs":{"177":{"tf":1.4142135623730951},"259":{"tf":1.4142135623730951}}}}},"x":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"a":{"df":0,"docs":{},"s":{"(":{"\"":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"177":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"z":{"df":2,"docs":{"256":{"tf":1.0},"521":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"522":{"tf":1.0}}}}}}}},"r":{"c":{"/":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"7":{"8":{"7":{":":{"9":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{":":{"2":{"7":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"1":{":":{"1":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{":":{"9":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"5":{"df":2,"docs":{"221":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{":":{"5":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{":":{"1":{"4":{"df":1,"docs":{"307":{"tf":1.0}}},"7":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{":":{"5":{"df":1,"docs":{"397":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"1":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":1,"docs":{"522":{"tf":1.4142135623730951}}},"2":{"2":{":":{"1":{"4":{"df":1,"docs":{"310":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{":":{"2":{"7":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"4":{"1":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"5":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{":":{"5":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{":":{"2":{"5":{"df":1,"docs":{"522":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"9":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"2":{":":{"2":{"6":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"1":{":":{"4":{"3":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"\\":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"3":{":":{"7":{"1":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{":":{"3":{"1":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"4":{":":{"3":{"1":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"a":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":4,"docs":{"156":{"tf":1.0},"292":{"tf":1.0},"572":{"tf":1.0},"91":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"230":{"tf":1.0}}}}}},"l":{"df":4,"docs":{"237":{"tf":1.4142135623730951},"239":{"tf":1.0},"310":{"tf":1.0},"380":{"tf":1.0}}}},"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"c":{"7":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":31,"docs":{"112":{"tf":1.0},"128":{"tf":1.0},"136":{"tf":1.0},"138":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"209":{"tf":1.7320508075688772},"218":{"tf":1.7320508075688772},"221":{"tf":1.0},"230":{"tf":1.0},"242":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":2.449489742783178},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.4142135623730951},"252":{"tf":1.0},"284":{"tf":1.4142135623730951},"313":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":2.449489742783178},"399":{"tf":1.4142135623730951},"402":{"tf":1.4142135623730951},"403":{"tf":1.0},"412":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":3,"docs":{"27":{"tf":1.0},"284":{"tf":1.4142135623730951},"470":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":3,"docs":{"156":{"tf":1.4142135623730951},"395":{"tf":1.0},"403":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"s":{"c":{"a":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":5,"docs":{"192":{"tf":1.0},"209":{"tf":1.0},"470":{"tf":1.0},"561":{"tf":1.4142135623730951},"562":{"tf":1.0}}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"487":{"tf":1.0}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"422":{"tf":2.23606797749979},"423":{"tf":1.0},"426":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"347":{"tf":1.0}}}},"n":{"d":{"a":{"df":0,"docs":{},"r":{"d":{"df":28,"docs":{"127":{"tf":1.0},"156":{"tf":1.4142135623730951},"160":{"tf":1.0},"221":{"tf":1.0},"223":{"tf":1.0},"231":{"tf":1.0},"240":{"tf":1.0},"257":{"tf":1.4142135623730951},"268":{"tf":1.0},"28":{"tf":1.0},"3":{"tf":1.0},"329":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"381":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"390":{"tf":1.0},"397":{"tf":1.0},"398":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"449":{"tf":1.0},"47":{"tf":1.4142135623730951},"523":{"tf":1.0},"530":{"tf":1.0},"599":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":1,"docs":{"245":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"300":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"478":{"tf":1.0}}}},"t":{".":{"c":{":":{"3":{"0":{"8":{":":{"1":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":67,"docs":{"14":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":2.0},"157":{"tf":1.0},"160":{"tf":1.0},"171":{"tf":1.0},"197":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":1.0},"253":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"29":{"tf":1.0},"300":{"tf":2.0},"309":{"tf":1.4142135623730951},"311":{"tf":1.4142135623730951},"324":{"tf":1.0},"329":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.4142135623730951},"366":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":2.0},"38":{"tf":1.0},"380":{"tf":2.0},"381":{"tf":1.0},"383":{"tf":1.0},"386":{"tf":1.0},"389":{"tf":1.4142135623730951},"390":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.4142135623730951},"398":{"tf":1.0},"408":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.7320508075688772},"449":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0},"472":{"tf":1.0},"475":{"tf":1.0},"480":{"tf":1.0},"489":{"tf":1.0},"516":{"tf":1.0},"521":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"525":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.0},"556":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0},"9":{"tf":1.0}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"284":{"tf":1.0}}}}},"v":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}},"df":2,"docs":{"122":{"tf":1.0},"349":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"s":{"c":{"a":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"h":{"df":0,"docs":{},"y":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},":":{":":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"199":{"tf":1.7320508075688772},"200":{"tf":1.7320508075688772}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"_":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"200":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{".":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":27,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":4.0},"200":{"tf":1.7320508075688772},"206":{"tf":1.0},"217":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":4.69041575982343},"309":{"tf":1.0},"328":{"tf":3.3166247903554},"336":{"tf":1.7320508075688772},"365":{"tf":1.0},"380":{"tf":1.0},"391":{"tf":1.0},"410":{"tf":1.0},"412":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"458":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"539":{"tf":1.0},"545":{"tf":1.0},"549":{"tf":1.0},"6":{"tf":1.0},"8":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"232":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"178":{"tf":1.4142135623730951},"343":{"tf":1.0},"450":{"tf":1.0}}}}}}},"i":{"c":{"df":16,"docs":{"136":{"tf":1.4142135623730951},"217":{"tf":2.449489742783178},"218":{"tf":1.7320508075688772},"268":{"tf":1.0},"292":{"tf":2.6457513110645907},"328":{"tf":1.7320508075688772},"336":{"tf":2.449489742783178},"347":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":2.6457513110645907},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"428":{"tf":1.0},"448":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"u":{"df":120,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"15":{"tf":1.7320508075688772},"151":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.4142135623730951},"156":{"tf":1.0},"157":{"tf":2.0},"158":{"tf":2.0},"16":{"tf":1.7320508075688772},"165":{"tf":1.0},"166":{"tf":2.0},"17":{"tf":1.0},"175":{"tf":1.0},"176":{"tf":2.0},"185":{"tf":1.0},"186":{"tf":2.0},"19":{"tf":1.0},"193":{"tf":1.0},"194":{"tf":2.0},"207":{"tf":1.0},"208":{"tf":2.0},"21":{"tf":1.0},"215":{"tf":1.0},"216":{"tf":2.0},"219":{"tf":1.0},"220":{"tf":2.0},"227":{"tf":1.0},"228":{"tf":1.4142135623730951},"23":{"tf":1.7320508075688772},"24":{"tf":1.7320508075688772},"242":{"tf":1.0},"243":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"253":{"tf":1.0},"254":{"tf":1.4142135623730951},"266":{"tf":1.0},"267":{"tf":2.0},"27":{"tf":1.4142135623730951},"274":{"tf":1.0},"275":{"tf":2.0},"28":{"tf":1.0},"282":{"tf":1.0},"283":{"tf":2.0},"29":{"tf":1.4142135623730951},"290":{"tf":1.0},"291":{"tf":2.0},"298":{"tf":1.0},"299":{"tf":2.0},"305":{"tf":1.0},"306":{"tf":2.0},"31":{"tf":1.0},"326":{"tf":1.0},"327":{"tf":1.4142135623730951},"334":{"tf":1.0},"335":{"tf":2.0},"345":{"tf":1.0},"346":{"tf":2.0},"354":{"tf":1.0},"355":{"tf":1.4142135623730951},"36":{"tf":1.0},"368":{"tf":1.0},"369":{"tf":2.0},"378":{"tf":1.0},"379":{"tf":2.0},"387":{"tf":1.0},"388":{"tf":1.4142135623730951},"395":{"tf":1.0},"396":{"tf":2.0},"40":{"tf":1.4142135623730951},"406":{"tf":1.0},"407":{"tf":2.0},"41":{"tf":1.4142135623730951},"416":{"tf":2.0},"42":{"tf":1.4142135623730951},"429":{"tf":1.0},"430":{"tf":1.4142135623730951},"438":{"tf":1.0},"439":{"tf":1.4142135623730951},"446":{"tf":1.0},"447":{"tf":2.0},"45":{"tf":1.0},"454":{"tf":1.0},"455":{"tf":1.4142135623730951},"46":{"tf":1.4142135623730951},"466":{"tf":1.0},"467":{"tf":2.0},"476":{"tf":1.0},"477":{"tf":2.0},"490":{"tf":1.0},"493":{"tf":1.4142135623730951},"501":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"519":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"53":{"tf":1.4142135623730951},"537":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"54":{"tf":1.0},"541":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.0},"553":{"tf":1.0},"56":{"tf":1.4142135623730951},"562":{"tf":1.0},"58":{"tf":1.0},"59":{"tf":1.4142135623730951},"597":{"tf":1.0},"598":{"tf":1.0},"61":{"tf":1.4142135623730951},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}},"s":{"_":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"o":{"df":2,"docs":{"157":{"tf":1.0},"26":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"y":{"df":2,"docs":{"125":{"tf":1.0},"417":{"tf":1.0}}}},"d":{"'":{"df":1,"docs":{"167":{"tf":1.0}}},"/":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"/":{"6":{"3":{"1":{"df":1,"docs":{"349":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},":":{":":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":1,"docs":{"526":{"tf":1.0}}}},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"522":{"tf":1.7320508075688772},"523":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"522":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":2,"docs":{"502":{"tf":1.0},"503":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"502":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"502":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"419":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":5,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"502":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"f":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":1,"docs":{"522":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"383":{"tf":1.0}},"e":{"<":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}}}},"df":0,"docs":{}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":2,"docs":{"380":{"tf":2.23606797749979},"383":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"=":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"307":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"310":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"+":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{">":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":1,"docs":{"440":{"tf":3.4641016151377544}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"440":{"tf":4.242640687119285}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"323":{"tf":1.0}}}}}}},"p":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"c":{":":{":":{"c":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{":":{":":{"df":0,"docs":{},"h":{"8":{"3":{"6":{"6":{"7":{"1":{"9":{"d":{"1":{"df":0,"docs":{},"f":{"6":{"1":{"5":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{":":{"d":{"df":0,"docs":{},"o":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"6":{"b":{"0":{"df":0,"docs":{},"f":{"4":{"3":{"0":{"d":{"4":{"8":{"1":{"2":{"2":{"d":{"d":{"df":0,"docs":{},"f":{"df":1,"docs":{"404":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"6":{"b":{"a":{"4":{"2":{"0":{"df":0,"docs":{},"e":{"2":{"df":0,"docs":{},"e":{"2":{"1":{"b":{"5":{"a":{"df":0,"docs":{},"f":{"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":1,"docs":{"198":{"tf":1.0}}}}},"r":{"c":{":":{":":{"df":0,"docs":{},"r":{"c":{"df":2,"docs":{"419":{"tf":1.0},"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"268":{"tf":1.0}},"g":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"r":{"d":{"<":{"'":{"_":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"457":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"<":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"397":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"397":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"383":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"v":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"y":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"<":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":24,"docs":{"156":{"tf":1.4142135623730951},"233":{"tf":1.0},"276":{"tf":1.4142135623730951},"3":{"tf":1.0},"325":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.0},"483":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.4142135623730951},"509":{"tf":1.0},"513":{"tf":1.4142135623730951},"515":{"tf":2.0},"516":{"tf":1.0},"517":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"535":{"tf":1.0},"544":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"b":{"df":3,"docs":{"399":{"tf":1.0},"478":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"319":{"tf":1.0},"328":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":3,"docs":{"156":{"tf":1.0},"261":{"tf":1.0},"470":{"tf":1.0}}}},"p":{"df":16,"docs":{"181":{"tf":1.0},"199":{"tf":1.0},"336":{"tf":2.23606797749979},"386":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.4142135623730951},"41":{"tf":1.0},"417":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"516":{"tf":1.4142135623730951},"534":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"56":{"tf":1.0}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"54":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"481":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":4,"docs":{"258":{"tf":1.0},"278":{"tf":1.0},"361":{"tf":1.0},"456":{"tf":1.4142135623730951}}},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":40,"docs":{"134":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.0},"178":{"tf":1.4142135623730951},"225":{"tf":1.0},"237":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.4142135623730951},"300":{"tf":1.0},"310":{"tf":1.0},"315":{"tf":1.0},"328":{"tf":1.0},"358":{"tf":1.0},"361":{"tf":1.0},"365":{"tf":1.0},"380":{"tf":1.4142135623730951},"401":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"413":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"456":{"tf":1.0},"48":{"tf":1.0},"485":{"tf":1.0},"49":{"tf":1.0},"538":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"558":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":1.7320508075688772},"62":{"tf":1.0},"74":{"tf":1.0},"89":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":10,"docs":{"2":{"tf":1.0},"217":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.0},"341":{"tf":1.0},"404":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.7320508075688772},"451":{"tf":1.0},"521":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"221":{"tf":1.0}}}}}},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"571":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":9,"docs":{"167":{"tf":1.0},"169":{"tf":1.0},"199":{"tf":1.4142135623730951},"209":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"380":{"tf":1.0},"572":{"tf":1.0}}},"i":{"df":308,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.7320508075688772},"142":{"tf":1.0},"15":{"tf":2.23606797749979},"151":{"tf":1.0},"152":{"tf":1.4142135623730951},"153":{"tf":2.0},"154":{"tf":2.23606797749979},"155":{"tf":2.0},"156":{"tf":2.449489742783178},"157":{"tf":1.7320508075688772},"158":{"tf":2.0},"159":{"tf":1.4142135623730951},"16":{"tf":2.6457513110645907},"161":{"tf":1.0},"162":{"tf":1.4142135623730951},"163":{"tf":1.4142135623730951},"164":{"tf":1.0},"165":{"tf":1.0},"166":{"tf":1.7320508075688772},"167":{"tf":1.0},"17":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.4142135623730951},"173":{"tf":1.0},"174":{"tf":1.4142135623730951},"175":{"tf":1.0},"176":{"tf":2.0},"18":{"tf":1.0},"181":{"tf":1.7320508075688772},"182":{"tf":1.4142135623730951},"183":{"tf":1.0},"184":{"tf":1.4142135623730951},"185":{"tf":1.0},"186":{"tf":2.0},"187":{"tf":1.0},"192":{"tf":2.23606797749979},"193":{"tf":1.0},"194":{"tf":2.0},"195":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.4142135623730951},"205":{"tf":1.0},"206":{"tf":1.4142135623730951},"207":{"tf":1.0},"208":{"tf":2.0},"209":{"tf":1.0},"21":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"215":{"tf":1.0},"216":{"tf":2.0},"217":{"tf":1.0},"218":{"tf":2.449489742783178},"219":{"tf":1.0},"220":{"tf":1.7320508075688772},"221":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":2.0},"226":{"tf":1.0},"227":{"tf":1.0},"228":{"tf":1.0},"229":{"tf":1.0},"23":{"tf":1.7320508075688772},"233":{"tf":1.0},"237":{"tf":1.0},"238":{"tf":1.0},"239":{"tf":1.0},"24":{"tf":2.0},"240":{"tf":1.0},"241":{"tf":1.4142135623730951},"242":{"tf":1.0},"243":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.7320508075688772},"25":{"tf":2.23606797749979},"250":{"tf":1.7320508075688772},"251":{"tf":1.0},"253":{"tf":1.0},"254":{"tf":1.0},"255":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.0},"267":{"tf":2.0},"268":{"tf":1.0},"27":{"tf":2.0},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"274":{"tf":1.0},"275":{"tf":2.0},"276":{"tf":1.0},"278":{"tf":1.0},"279":{"tf":1.0},"28":{"tf":2.449489742783178},"280":{"tf":1.0},"281":{"tf":1.0},"282":{"tf":1.0},"283":{"tf":2.0},"284":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.7320508075688772},"290":{"tf":1.0},"291":{"tf":2.0},"292":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"298":{"tf":1.0},"299":{"tf":2.0},"300":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0},"305":{"tf":1.0},"306":{"tf":2.0},"307":{"tf":1.0},"31":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.4142135623730951},"317":{"tf":1.0},"32":{"tf":1.7320508075688772},"325":{"tf":1.4142135623730951},"326":{"tf":1.0},"327":{"tf":1.0},"328":{"tf":1.0},"33":{"tf":1.4142135623730951},"330":{"tf":1.0},"331":{"tf":1.4142135623730951},"332":{"tf":1.4142135623730951},"333":{"tf":1.4142135623730951},"334":{"tf":1.0},"335":{"tf":2.0},"336":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.4142135623730951},"340":{"tf":1.0},"345":{"tf":1.0},"346":{"tf":1.7320508075688772},"347":{"tf":1.0},"349":{"tf":1.0},"35":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.4142135623730951},"353":{"tf":1.0},"354":{"tf":1.0},"355":{"tf":1.0},"36":{"tf":1.0},"363":{"tf":1.4142135623730951},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":2.0},"367":{"tf":1.4142135623730951},"368":{"tf":1.0},"369":{"tf":2.0},"37":{"tf":2.0},"370":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.0},"379":{"tf":2.0},"38":{"tf":1.0},"380":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"386":{"tf":1.4142135623730951},"387":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.0},"395":{"tf":1.0},"396":{"tf":2.0},"397":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":2.23606797749979},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.0},"406":{"tf":1.0},"407":{"tf":2.0},"408":{"tf":1.0},"41":{"tf":2.23606797749979},"410":{"tf":1.0},"411":{"tf":1.0},"413":{"tf":1.0},"414":{"tf":1.4142135623730951},"416":{"tf":2.0},"417":{"tf":1.0},"42":{"tf":1.4142135623730951},"425":{"tf":1.0},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0},"429":{"tf":1.0},"430":{"tf":1.0},"431":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.4142135623730951},"436":{"tf":1.0},"437":{"tf":1.4142135623730951},"438":{"tf":1.0},"439":{"tf":1.0},"44":{"tf":1.0},"440":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"447":{"tf":2.0},"448":{"tf":1.0},"45":{"tf":1.4142135623730951},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"454":{"tf":1.0},"455":{"tf":1.0},"456":{"tf":1.0},"46":{"tf":1.7320508075688772},"460":{"tf":1.0},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.4142135623730951},"466":{"tf":1.0},"467":{"tf":2.0},"468":{"tf":1.0},"47":{"tf":2.23606797749979},"472":{"tf":1.0},"473":{"tf":1.4142135623730951},"474":{"tf":1.4142135623730951},"475":{"tf":1.4142135623730951},"476":{"tf":1.0},"477":{"tf":2.0},"478":{"tf":1.0},"480":{"tf":1.4142135623730951},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"485":{"tf":1.4142135623730951},"487":{"tf":1.0},"488":{"tf":1.0},"489":{"tf":1.7320508075688772},"490":{"tf":2.0},"491":{"tf":1.4142135623730951},"492":{"tf":1.0},"493":{"tf":1.4142135623730951},"497":{"tf":1.7320508075688772},"498":{"tf":2.23606797749979},"499":{"tf":1.0},"500":{"tf":1.0},"501":{"tf":2.0},"502":{"tf":1.0},"506":{"tf":1.4142135623730951},"507":{"tf":1.0},"509":{"tf":1.0},"51":{"tf":1.4142135623730951},"518":{"tf":1.0},"519":{"tf":2.0},"520":{"tf":1.0},"525":{"tf":1.4142135623730951},"526":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.0},"534":{"tf":1.4142135623730951},"536":{"tf":1.0},"537":{"tf":2.0},"538":{"tf":1.0},"539":{"tf":1.7320508075688772},"54":{"tf":2.6457513110645907},"541":{"tf":1.4142135623730951},"55":{"tf":1.4142135623730951},"56":{"tf":1.4142135623730951},"57":{"tf":1.4142135623730951},"59":{"tf":2.449489742783178},"601":{"tf":1.0},"602":{"tf":1.4142135623730951},"603":{"tf":1.0},"64":{"tf":1.4142135623730951},"9":{"tf":2.0},"94":{"tf":1.0},"96":{"tf":1.4142135623730951},"98":{"tf":1.0}}},"y":{"'":{"df":2,"docs":{"29":{"tf":1.0},"42":{"tf":1.0}}},"]":{"[":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"v":{"df":0,"docs":{},"s":{"df":0,"docs":{},"q":{"df":3,"docs":{"166":{"tf":1.0},"220":{"tf":1.0},"346":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"179":{"tf":1.0}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"423":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"331":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":2,"docs":{"209":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}}},"y":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":2,"docs":{"309":{"tf":1.0},"375":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"m":{"'":{"df":1,"docs":{"199":{"tf":1.0}}},":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":2,"docs":{"458":{"tf":1.4142135623730951},"465":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":2,"docs":{"191":{"tf":1.0},"458":{"tf":1.0}}}}}}},"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"(":{"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":1,"docs":{"458":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":32,"docs":{"156":{"tf":2.0},"188":{"tf":1.0},"193":{"tf":1.0},"195":{"tf":2.0},"196":{"tf":1.4142135623730951},"197":{"tf":1.7320508075688772},"2":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.0},"203":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.7320508075688772},"313":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":2.6457513110645907},"387":{"tf":1.0},"389":{"tf":2.6457513110645907},"391":{"tf":2.0},"392":{"tf":1.4142135623730951},"393":{"tf":1.4142135623730951},"394":{"tf":1.7320508075688772},"4":{"tf":1.0},"418":{"tf":1.7320508075688772},"458":{"tf":2.23606797749979},"460":{"tf":1.7320508075688772},"462":{"tf":1.0},"567":{"tf":1.0},"568":{"tf":1.0},"571":{"tf":1.4142135623730951},"573":{"tf":1.4142135623730951},"599":{"tf":1.7320508075688772},"61":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":2,"docs":{"276":{"tf":1.0},"572":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"418":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"s":{"/":{"#":{"df":0,"docs":{},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"279":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"431":{"tf":1.0},"62":{"tf":1.7320508075688772}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"62":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"347":{"tf":1.0}}}},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"[":{"0":{".":{".":{"1":{"df":1,"docs":{"375":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":7,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"217":{"tf":1.7320508075688772},"268":{"tf":2.0},"276":{"tf":1.4142135623730951},"375":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"156":{"tf":1.0}}}}}}},"p":{"df":1,"docs":{"292":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"156":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":10,"docs":{"110":{"tf":1.0},"341":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"456":{"tf":1.0},"529":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"77":{"tf":1.0},"87":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"414":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":16,"docs":{"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.0},"245":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":2.0},"336":{"tf":1.0},"380":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":2.6457513110645907},"458":{"tf":1.0},"508":{"tf":1.4142135623730951},"599":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":4,"docs":{"199":{"tf":1.0},"419":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":8,"docs":{"134":{"tf":1.0},"189":{"tf":1.0},"218":{"tf":1.0},"240":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"340":{"tf":1.0},"463":{"tf":1.0}}}}}}},"u":{"c":{"df":0,"docs":{},"k":{"df":7,"docs":{"246":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"35":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"469":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"o":{"'":{"df":1,"docs":{"284":{"tf":1.0}}},"df":1,"docs":{"414":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":12,"docs":{"157":{"tf":1.0},"190":{"tf":1.0},"198":{"tf":1.0},"273":{"tf":1.0},"307":{"tf":1.4142135623730951},"308":{"tf":1.4142135623730951},"309":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"40":{"tf":1.0},"417":{"tf":1.0},"489":{"tf":1.0},"522":{"tf":1.0}}}},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"358":{"tf":1.0}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":7,"docs":{"199":{"tf":1.0},"218":{"tf":1.0},"344":{"tf":1.0},"393":{"tf":1.0},"423":{"tf":1.0},"440":{"tf":1.4142135623730951},"462":{"tf":1.0}}}}}},"u":{"b":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"469":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"271":{"tf":1.0},"475":{"tf":1.0},"598":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":41,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"17":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"58":{"tf":1.0},"6":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"d":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"359":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"159":{"tf":1.0},"491":{"tf":1.0}}}},"df":0,"docs":{},"t":{"df":3,"docs":{"155":{"tf":1.0},"156":{"tf":1.0},"515":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"l":{"df":6,"docs":{"156":{"tf":2.0},"251":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"372":{"tf":1.0},"539":{"tf":1.4142135623730951}},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"272":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"538":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"c":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}}}}},"c":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"209":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":6,"docs":{"129":{"tf":1.0},"256":{"tf":1.0},"380":{"tf":1.0},"521":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":5,"docs":{"169":{"tf":1.0},"268":{"tf":1.0},"322":{"tf":1.0},"380":{"tf":1.0},"431":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{},"h":{"df":23,"docs":{"127":{"tf":1.4142135623730951},"190":{"tf":1.0},"209":{"tf":1.0},"218":{"tf":1.0},"252":{"tf":1.0},"268":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"338":{"tf":1.0},"451":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"472":{"tf":1.0},"499":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"62":{"tf":1.0},"82":{"tf":1.0}}}},"d":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"217":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"539":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}},"i":{"c":{"df":0,"docs":{},"i":{"df":3,"docs":{"360":{"tf":1.0},"457":{"tf":1.0},"546":{"tf":1.0}}}},"df":0,"docs":{}}}},"g":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"370":{"tf":1.0},"457":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":14,"docs":{"16":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"279":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.0},"389":{"tf":1.0},"522":{"tf":1.4142135623730951},"572":{"tf":1.0},"59":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":5,"docs":{"336":{"tf":1.0},"338":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.4142135623730951},"527":{"tf":1.0}}}},"df":0,"docs":{}},"df":1,"docs":{"470":{"tf":1.0}}}},"m":{"(":{"df":0,"docs":{},"n":{"df":1,"docs":{"370":{"tf":3.4641016151377544}}}},"df":1,"docs":{"15":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"z":{"df":1,"docs":{"598":{"tf":1.0}}}},"r":{"df":2,"docs":{"156":{"tf":1.0},"494":{"tf":1.0}},"i":{"df":2,"docs":{"154":{"tf":1.4142135623730951},"597":{"tf":1.0}}},"y":{".":{"df":0,"docs":{},"m":{"d":{"df":10,"docs":{"157":{"tf":1.0},"16":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"296":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"357":{"tf":1.0}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"259":{"tf":1.0}}}}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"218":{"tf":1.0},"508":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":35,"docs":{"110":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"209":{"tf":1.0},"221":{"tf":1.7320508075688772},"230":{"tf":1.4142135623730951},"232":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.7320508075688772},"340":{"tf":1.0},"341":{"tf":1.7320508075688772},"370":{"tf":1.4142135623730951},"389":{"tf":1.0},"405":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"474":{"tf":1.0},"502":{"tf":1.0},"509":{"tf":1.4142135623730951},"53":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.4142135623730951}}}},"s":{"df":2,"docs":{"310":{"tf":1.0},"522":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":21,"docs":{"131":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"22":{"tf":1.0},"23":{"tf":1.0},"276":{"tf":1.0},"281":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"296":{"tf":1.0},"300":{"tf":1.0},"36":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.4142135623730951},"421":{"tf":1.0},"456":{"tf":1.0},"487":{"tf":1.0},"506":{"tf":1.0},"62":{"tf":1.0}}},"f":{"a":{"c":{"df":3,"docs":{"156":{"tf":1.0},"347":{"tf":1.0},"394":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":12,"docs":{"231":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"272":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.4142135623730951},"448":{"tf":1.0},"481":{"tf":1.0},"497":{"tf":1.0},"529":{"tf":1.0},"59":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"408":{"tf":1.0},"538":{"tf":1.0}}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"276":{"tf":1.0},"359":{"tf":1.0}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"284":{"tf":1.0},"297":{"tf":1.0},"546":{"tf":1.0}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"156":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}}}},"w":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"538":{"tf":1.0},"539":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":18,"docs":{"209":{"tf":1.0},"233":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"359":{"tf":1.0},"380":{"tf":1.0},"422":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"500":{"tf":1.0},"511":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"y":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":3,"docs":{"397":{"tf":1.0},"399":{"tf":1.0},"401":{"tf":1.0}}}}},"df":0,"docs":{}},"n":{"c":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"302":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":22,"docs":{"156":{"tf":2.23606797749979},"191":{"tf":1.0},"218":{"tf":1.7320508075688772},"292":{"tf":1.4142135623730951},"300":{"tf":2.6457513110645907},"305":{"tf":1.0},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"315":{"tf":1.7320508075688772},"321":{"tf":1.7320508075688772},"323":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"365":{"tf":1.0},"408":{"tf":1.7320508075688772},"423":{"tf":1.0},"448":{"tf":1.4142135623730951},"531":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":19,"docs":{"156":{"tf":1.7320508075688772},"179":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"232":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"308":{"tf":1.0},"309":{"tf":1.0},"313":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":2.23606797749979},"323":{"tf":1.0},"324":{"tf":1.4142135623730951},"344":{"tf":1.0},"389":{"tf":1.4142135623730951},"502":{"tf":1.0},"522":{"tf":1.0},"61":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{},"x":{"df":10,"docs":{"196":{"tf":1.4142135623730951},"218":{"tf":1.0},"292":{"tf":1.7320508075688772},"336":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"570":{"tf":1.0},"573":{"tf":1.0},"74":{"tf":1.0},"89":{"tf":1.0}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":1,"docs":{"502":{"tf":1.0}}}}}}},"s":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"v":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"c":{":":{"3":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":39,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.4142135623730951},"199":{"tf":1.0},"211":{"tf":1.0},"273":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.4142135623730951},"318":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"339":{"tf":1.0},"347":{"tf":1.7320508075688772},"356":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.7320508075688772},"394":{"tf":1.4142135623730951},"408":{"tf":1.0},"410":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.0},"436":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"522":{"tf":1.0},"539":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":2.449489742783178},"65":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"79":{"tf":1.4142135623730951},"8":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"192":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"t":{"0":{"df":1,"docs":{"440":{"tf":2.0}}},"1":{"df":1,"docs":{"440":{"tf":2.0}}},"=":{"0":{"df":0,"docs":{},"x":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"a":{"df":0,"docs":{},"f":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},">":{"(":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"b":{"df":1,"docs":{"397":{"tf":1.0}},"l":{"df":3,"docs":{"156":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}},"d":{"a":{"df":1,"docs":{"558":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":2,"docs":{"24":{"tf":1.0},"25":{"tf":1.0}}},"i":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}},"l":{"df":1,"docs":{"431":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":7,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.0},"128":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0},"511":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"y":{"df":3,"docs":{"154":{"tf":1.0},"161":{"tf":1.0},"28":{"tf":1.0}}}},"df":0,"docs":{}}},"df":42,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.0},"157":{"tf":1.0},"190":{"tf":1.4142135623730951},"2":{"tf":1.4142135623730951},"217":{"tf":1.0},"230":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"271":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"292":{"tf":2.0},"303":{"tf":1.0},"310":{"tf":1.0},"318":{"tf":1.4142135623730951},"319":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.4142135623730951},"374":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"393":{"tf":1.0},"40":{"tf":1.0},"418":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0},"47":{"tf":1.0},"48":{"tf":1.0},"481":{"tf":1.0},"517":{"tf":1.0},"53":{"tf":1.0},"552":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"560":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.0}},"n":{"df":7,"docs":{"17":{"tf":1.0},"353":{"tf":1.0},"402":{"tf":1.0},"440":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"599":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"k":{"df":16,"docs":{"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"268":{"tf":1.0},"279":{"tf":1.0},"28":{"tf":1.7320508075688772},"32":{"tf":1.0},"35":{"tf":1.0},"359":{"tf":1.0},"41":{"tf":1.4142135623730951},"47":{"tf":1.0},"49":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.0},"68":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"419":{"tf":1.0}}}}},"p":{"df":1,"docs":{"538":{"tf":1.7320508075688772}}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"/":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"\\":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"\\":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"244":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":7,"docs":{"211":{"tf":1.0},"284":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0},"532":{"tf":1.0},"573":{"tf":1.0},"94":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"k":{"(":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"539":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"(":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"(":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"542":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"566":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"457":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"320":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":33,"docs":{"156":{"tf":1.7320508075688772},"178":{"tf":1.7320508075688772},"189":{"tf":1.4142135623730951},"190":{"tf":1.7320508075688772},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"230":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":3.4641016151377544},"288":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"328":{"tf":5.385164807134504},"330":{"tf":1.4142135623730951},"331":{"tf":1.0},"347":{"tf":2.23606797749979},"349":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":2.449489742783178},"412":{"tf":3.0},"460":{"tf":1.0},"470":{"tf":2.8284271247461903},"475":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.7320508075688772},"538":{"tf":4.358898943540674},"539":{"tf":2.8284271247461903},"544":{"tf":1.0},"599":{"tf":1.0},"62":{"tf":2.6457513110645907}},"s":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0}}}}}}},"b":{"d":{"df":1,"docs":{"19":{"tf":1.0}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}},"p":{"df":4,"docs":{"143":{"tf":1.0},"276":{"tf":1.0},"503":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"d":{"df":2,"docs":{"12":{"tf":1.0},"539":{"tf":1.0}}},"df":6,"docs":{"199":{"tf":1.0},"211":{"tf":1.0},"268":{"tf":1.0},"380":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":2.8284271247461903}},"e":{"a":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"358":{"tf":1.4142135623730951},"359":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":20,"docs":{"110":{"tf":1.0},"120":{"tf":1.0},"134":{"tf":1.4142135623730951},"15":{"tf":1.0},"17":{"tf":1.4142135623730951},"249":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.0},"392":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":2.23606797749979},"457":{"tf":2.6457513110645907},"458":{"tf":1.4142135623730951},"460":{"tf":1.7320508075688772},"463":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"580":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"457":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"599":{"tf":1.0},"84":{"tf":1.0}},"n":{"df":0,"docs":{},"i":{"c":{"df":7,"docs":{"192":{"tf":1.0},"221":{"tf":1.0},"278":{"tf":1.0},"363":{"tf":1.0},"499":{"tf":1.0},"513":{"tf":1.0},"57":{"tf":1.4142135623730951}}},"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":3,"docs":{"156":{"tf":1.0},"319":{"tf":1.0},"417":{"tf":1.7320508075688772}}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":3,"docs":{"116":{"tf":1.0},"120":{"tf":1.0},"217":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":52,"docs":{"148":{"tf":1.0},"149":{"tf":1.0},"163":{"tf":1.0},"173":{"tf":1.0},"183":{"tf":1.0},"192":{"tf":1.0},"205":{"tf":1.0},"213":{"tf":1.0},"218":{"tf":1.0},"225":{"tf":1.0},"239":{"tf":1.0},"248":{"tf":1.0},"250":{"tf":1.0},"256":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"272":{"tf":1.4142135623730951},"28":{"tf":1.0},"280":{"tf":1.0},"288":{"tf":1.0},"296":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.0},"332":{"tf":1.0},"336":{"tf":1.4142135623730951},"339":{"tf":1.0},"352":{"tf":1.0},"366":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":1.0},"382":{"tf":1.0},"393":{"tf":1.0},"401":{"tf":1.0},"408":{"tf":1.0},"413":{"tf":1.0},"427":{"tf":1.0},"431":{"tf":1.4142135623730951},"435":{"tf":1.0},"444":{"tf":1.0},"452":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.0},"474":{"tf":1.0},"482":{"tf":1.0},"486":{"tf":1.0},"521":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"56":{"tf":1.0},"89":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"394":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":12,"docs":{"157":{"tf":1.7320508075688772},"16":{"tf":1.4142135623730951},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"458":{"tf":1.4142135623730951},"489":{"tf":1.7320508075688772},"97":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"450":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"417":{"tf":1.0},"421":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"t":{"df":4,"docs":{"278":{"tf":1.0},"300":{"tf":1.0},"452":{"tf":1.0},"456":{"tf":1.0}}}}},"n":{"d":{"df":3,"docs":{"153":{"tf":1.0},"319":{"tf":1.0},"62":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"61":{"tf":2.0}}}}},"r":{"df":0,"docs":{},"m":{"df":8,"docs":{"218":{"tf":1.0},"231":{"tf":1.0},"393":{"tf":1.0},"450":{"tf":1.0},"511":{"tf":1.0},"560":{"tf":1.0},"6":{"tf":1.0},"65":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"538":{"tf":2.23606797749979},"539":{"tf":1.4142135623730951},"542":{"tf":1.0}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":1,"docs":{"417":{"tf":1.0}}}}}}}}}},"s":{"df":0,"docs":{},"t":{"(":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"312":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"217":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"y":{"(":{"df":0,"docs":{},"|":{"a":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":9,"docs":{"110":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"417":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.7320508075688772},"62":{"tf":1.7320508075688772}}}},"x":{"df":0,"docs":{},"t":{"df":4,"docs":{"258":{"tf":1.0},"397":{"tf":1.7320508075688772},"523":{"tf":1.0},"538":{"tf":1.0}}}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":7,"docs":{"397":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"600":{"tf":1.0},"601":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"199":{"tf":1.0}}}}}}}}},"t":{"'":{"df":14,"docs":{"156":{"tf":1.0},"217":{"tf":1.4142135623730951},"237":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"352":{"tf":1.0},"36":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"487":{"tf":1.0},"493":{"tf":1.0},"504":{"tf":1.0},"65":{"tf":1.4142135623730951}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":1,"docs":{"603":{"tf":1.0}}}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":10,"docs":{"138":{"tf":1.0},"156":{"tf":1.0},"211":{"tf":1.0},"226":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"391":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"559":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"284":{"tf":1.0},"389":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"67":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"'":{"df":11,"docs":{"122":{"tf":1.0},"200":{"tf":1.0},"278":{"tf":1.4142135623730951},"300":{"tf":1.0},"309":{"tf":1.0},"336":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"410":{"tf":1.0},"475":{"tf":1.0},"558":{"tf":1.0}}},"df":1,"docs":{"599":{"tf":1.0}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":5,"docs":{"138":{"tf":1.0},"195":{"tf":1.0},"323":{"tf":1.0},"336":{"tf":1.0},"456":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":1,"docs":{"356":{"tf":1.0}}}},"y":{"'":{"df":0,"docs":{},"r":{"df":10,"docs":{"129":{"tf":1.0},"131":{"tf":1.0},"134":{"tf":1.0},"225":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"8":{"tf":1.0}}},"v":{"df":3,"docs":{"134":{"tf":1.0},"284":{"tf":1.0},"361":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"456":{"tf":1.4142135623730951}},"g":{"df":67,"docs":{"125":{"tf":1.0},"129":{"tf":1.0},"131":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":2.6457513110645907},"16":{"tf":1.0},"167":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"190":{"tf":1.0},"195":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":2.8284271247461903},"223":{"tf":1.0},"231":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.4142135623730951},"311":{"tf":1.0},"315":{"tf":1.0},"317":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.0},"412":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"428":{"tf":1.0},"456":{"tf":1.0},"46":{"tf":1.0},"47":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"499":{"tf":1.0},"504":{"tf":1.4142135623730951},"509":{"tf":1.0},"51":{"tf":1.0},"511":{"tf":1.0},"521":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"552":{"tf":1.0},"562":{"tf":1.0},"565":{"tf":1.0},"59":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.4142135623730951},"86":{"tf":1.0}}},"k":{"df":46,"docs":{"10":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"159":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.0},"258":{"tf":1.0},"264":{"tf":1.0},"266":{"tf":1.0},"276":{"tf":1.7320508075688772},"284":{"tf":1.7320508075688772},"300":{"tf":1.7320508075688772},"307":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.0},"331":{"tf":1.0},"333":{"tf":1.0},"347":{"tf":1.4142135623730951},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.0},"389":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.7320508075688772},"41":{"tf":2.0},"421":{"tf":1.4142135623730951},"456":{"tf":1.0},"487":{"tf":1.0},"491":{"tf":1.0},"498":{"tf":1.4142135623730951},"506":{"tf":1.0},"522":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"56":{"tf":1.0},"570":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.4142135623730951}}}},"r":{"d":{"df":4,"docs":{"221":{"tf":1.0},"276":{"tf":1.0},"279":{"tf":1.0},"458":{"tf":1.0}}},"df":0,"docs":{}},"s":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"(":{")":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"(":{"\"":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":1,"docs":{"408":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"367":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":40,"docs":{"118":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.7320508075688772},"190":{"tf":1.0},"192":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"213":{"tf":1.0},"218":{"tf":1.4142135623730951},"256":{"tf":1.0},"276":{"tf":1.0},"288":{"tf":1.0},"32":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"33":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"36":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.0},"423":{"tf":1.0},"448":{"tf":1.0},"458":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"480":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"538":{"tf":1.4142135623730951},"54":{"tf":1.0},"562":{"tf":1.0},"62":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":25,"docs":{"154":{"tf":1.0},"192":{"tf":1.0},"2":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"263":{"tf":1.0},"292":{"tf":1.0},"313":{"tf":1.0},"321":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.7320508075688772},"389":{"tf":1.0},"399":{"tf":1.0},"451":{"tf":1.0},"503":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"96":{"tf":1.0}},"t":{"df":9,"docs":{"156":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"328":{"tf":1.4142135623730951},"343":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"470":{"tf":1.4142135623730951},"599":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"6":{"3":{":":{"5":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"380":{"tf":1.0}}}}}},"df":41,"docs":{"189":{"tf":1.7320508075688772},"190":{"tf":1.0},"191":{"tf":1.0},"233":{"tf":1.0},"244":{"tf":1.4142135623730951},"256":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.7320508075688772},"284":{"tf":3.3166247903554},"309":{"tf":1.7320508075688772},"318":{"tf":2.0},"319":{"tf":2.8284271247461903},"328":{"tf":2.0},"331":{"tf":1.7320508075688772},"336":{"tf":2.23606797749979},"344":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"357":{"tf":1.0},"361":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.7320508075688772},"404":{"tf":1.0},"412":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"423":{"tf":2.0},"431":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"469":{"tf":1.7320508075688772},"470":{"tf":2.6457513110645907},"504":{"tf":1.0},"521":{"tf":1.0},"561":{"tf":1.0},"564":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":2.0},"62":{"tf":2.23606797749979}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"517":{"tf":1.0}}}}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"125":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"218":{"tf":1.0},"422":{"tf":1.0}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"319":{"tf":1.0}}},"df":0,"docs":{}}}}}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":4,"docs":{"230":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"545":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":23,"docs":{"168":{"tf":1.0},"169":{"tf":1.0},"190":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.0},"245":{"tf":1.7320508075688772},"276":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"303":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":2.0},"421":{"tf":1.0},"448":{"tf":1.7320508075688772},"450":{"tf":1.0},"515":{"tf":1.0}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"47":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":5,"docs":{"143":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"268":{"tf":1.4142135623730951},"431":{"tf":1.0}}}}}}}},"w":{"df":2,"docs":{"157":{"tf":1.0},"268":{"tf":1.0}},"n":{"df":1,"docs":{"261":{"tf":1.0}}}}}},"u":{"df":4,"docs":{"129":{"tf":1.0},"169":{"tf":1.0},"218":{"tf":1.0},"453":{"tf":1.0}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"232":{"tf":1.4142135623730951}}}}}},"d":{"df":0,"docs":{},"e":{"df":4,"docs":{"231":{"tf":1.0},"233":{"tf":1.0},"237":{"tf":1.0},"276":{"tf":1.4142135623730951}}}},"df":5,"docs":{"156":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"370":{"tf":1.0},"9":{"tf":1.0}},"e":{"df":2,"docs":{"431":{"tf":1.0},"62":{"tf":1.0}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"389":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"286":{"tf":1.0},"288":{"tf":1.0}}}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"14":{"tf":1.7320508075688772}}}},"m":{"df":0,"docs":{},"e":{"df":75,"docs":{"110":{"tf":1.7320508075688772},"131":{"tf":1.0},"138":{"tf":1.0},"156":{"tf":1.7320508075688772},"174":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.7320508075688772},"2":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":2.0},"214":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"226":{"tf":1.0},"230":{"tf":1.7320508075688772},"235":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"246":{"tf":1.0},"248":{"tf":1.0},"25":{"tf":1.0},"251":{"tf":1.4142135623730951},"261":{"tf":1.0},"268":{"tf":1.4142135623730951},"273":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"286":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"319":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"332":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":1.0},"347":{"tf":2.23606797749979},"359":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"389":{"tf":1.0},"393":{"tf":1.0},"397":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"417":{"tf":1.7320508075688772},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"431":{"tf":1.0},"436":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":2.449489742783178},"469":{"tf":1.4142135623730951},"470":{"tf":1.7320508075688772},"472":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"515":{"tf":1.0},"538":{"tf":1.7320508075688772},"551":{"tf":1.0},"555":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"9":{"tf":1.0}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"=":{"4":{"9":{"1":{"5":{"2":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"167":{"tf":1.0},"181":{"tf":1.0},"284":{"tf":1.4142135623730951}}}}},"r":{"df":3,"docs":{"300":{"tf":1.0},"336":{"tf":1.4142135623730951},"457":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"259":{"tf":1.0}}}},"i":{"df":1,"docs":{"380":{"tf":1.0}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"72":{"tf":1.0}}}}}},"p":{"df":1,"docs":{"153":{"tf":1.0}}}},"l":{";":{"d":{"df":0,"docs":{},"r":{"df":2,"docs":{"24":{"tf":1.0},"38":{"tf":1.0}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.7320508075688772}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"421":{"tf":1.0}}}}}},"df":0,"docs":{}},"<":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"m":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"1":{"tf":1.0},"603":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"o":{"_":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"<":{"df":0,"docs":{},"h":{"df":1,"docs":{"292":{"tf":1.0}}}},"_":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"292":{"tf":1.7320508075688772}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"<":{"df":0,"docs":{},"f":{">":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"344":{"tf":1.0}}}},"d":{"a":{"df":0,"docs":{},"y":{"df":41,"docs":{"153":{"tf":1.0},"156":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"495":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":3,"docs":{"328":{"tf":1.0},"336":{"tf":2.0},"601":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"261":{"tf":1.0},"84":{"tf":1.0}}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":8,"docs":{"156":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"531":{"tf":1.0},"599":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"'":{"df":5,"docs":{"167":{"tf":1.0},"209":{"tf":1.0},"252":{"tf":1.0},"268":{"tf":1.4142135623730951},"309":{"tf":1.7320508075688772}}},":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{":":{":":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"h":{"4":{"1":{"0":{"d":{"c":{"df":0,"docs":{},"e":{"d":{"2":{"a":{"7":{"d":{"df":0,"docs":{},"f":{"3":{"df":0,"docs":{},"e":{"c":{"8":{"(":{"df":0,"docs":{},"f":{"=":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"_":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"h":{"c":{"d":{"4":{"7":{"7":{"7":{"3":{"4":{"d":{"4":{"9":{"7":{"0":{"df":0,"docs":{},"e":{"d":{"5":{"(":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"=":{"(":{"_":{"_":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"<":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":6,"docs":{"258":{"tf":1.0},"309":{"tf":1.4142135623730951},"320":{"tf":1.0},"380":{"tf":1.0},"448":{"tf":1.7320508075688772},"450":{"tf":1.0}}}}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"a":{",":{"b":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{">":{":":{":":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":2.0}}}}}}}}}},"df":1,"docs":{"284":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"_":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"r":{"d":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{":":{":":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"309":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"284":{"tf":1.0},"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"309":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":4,"docs":{"268":{"tf":1.4142135623730951},"347":{"tf":1.0},"349":{"tf":1.0},"448":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"310":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"310":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"310":{"tf":1.0},"347":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"310":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"383":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"(":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":31,"docs":{"156":{"tf":1.4142135623730951},"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"233":{"tf":1.4142135623730951},"234":{"tf":2.23606797749979},"258":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"3":{"tf":1.0},"309":{"tf":1.7320508075688772},"318":{"tf":1.4142135623730951},"320":{"tf":1.0},"325":{"tf":1.4142135623730951},"347":{"tf":2.23606797749979},"359":{"tf":1.7320508075688772},"360":{"tf":1.4142135623730951},"365":{"tf":1.0},"370":{"tf":2.8284271247461903},"372":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":3.3166247903554},"383":{"tf":1.7320508075688772},"397":{"tf":1.4142135623730951},"431":{"tf":1.0},"434":{"tf":1.0},"437":{"tf":1.0},"470":{"tf":2.0},"517":{"tf":1.0},"544":{"tf":1.0},"548":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"l":{"d":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"240":{"tf":1.0}}}}},"n":{"df":1,"docs":{"370":{"tf":1.0}}},"o":{"df":0,"docs":{},"k":{"df":2,"docs":{"389":{"tf":1.4142135623730951},"59":{"tf":1.0}}},"l":{"'":{"df":1,"docs":{"544":{"tf":1.0}}},"b":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"453":{"tf":1.0}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"110":{"tf":1.0},"245":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":28,"docs":{"110":{"tf":1.4142135623730951},"130":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.7320508075688772},"213":{"tf":1.4142135623730951},"230":{"tf":1.0},"251":{"tf":1.0},"288":{"tf":1.0},"347":{"tf":1.0},"403":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"414":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"433":{"tf":1.0},"436":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"475":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.4142135623730951},"545":{"tf":1.0},"65":{"tf":1.0},"73":{"tf":1.0},"77":{"tf":1.0},"82":{"tf":1.4142135623730951}}}},"p":{"df":11,"docs":{"125":{"tf":1.0},"128":{"tf":1.0},"189":{"tf":1.0},"258":{"tf":1.0},"347":{"tf":1.0},"41":{"tf":2.0},"421":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"599":{"tf":1.0},"65":{"tf":2.0}},"i":{"c":{"df":2,"docs":{"16":{"tf":1.0},"480":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"a":{"d":{"d":{"df":0,"docs":{},"r":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"300":{"tf":1.0},"341":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"367":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":7,"docs":{"360":{"tf":1.0},"41":{"tf":1.0},"462":{"tf":1.0},"487":{"tf":1.0},"516":{"tf":1.0},"534":{"tf":1.0},"548":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}},"y":{"df":2,"docs":{"380":{"tf":1.4142135623730951},"448":{"tf":1.0}}}},"r":{"a":{"c":{"df":0,"docs":{},"e":{"df":13,"docs":{"209":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.7320508075688772},"399":{"tf":1.4142135623730951},"402":{"tf":1.4142135623730951},"403":{"tf":1.0},"410":{"tf":1.4142135623730951},"412":{"tf":1.4142135623730951},"453":{"tf":1.0},"470":{"tf":1.0},"545":{"tf":1.0},"548":{"tf":1.4142135623730951}},"r":{"df":1,"docs":{"469":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"289":{"tf":1.0}}}}}}}}}}}}},"df":0,"docs":{}}}},"k":{"df":9,"docs":{"18":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"271":{"tf":1.0},"470":{"tf":1.0},"552":{"tf":1.0},"557":{"tf":1.0},"560":{"tf":1.0},"562":{"tf":1.4142135623730951}}}},"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":7,"docs":{"111":{"tf":1.0},"156":{"tf":1.0},"251":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"132":{"tf":1.0},"408":{"tf":1.0},"91":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":4,"docs":{"125":{"tf":1.7320508075688772},"134":{"tf":1.0},"209":{"tf":1.4142135623730951},"213":{"tf":1.0}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":6,"docs":{"123":{"tf":1.0},"125":{"tf":2.0},"127":{"tf":1.0},"128":{"tf":1.7320508075688772},"129":{"tf":1.4142135623730951},"130":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"t":{"'":{"df":1,"docs":{"209":{"tf":1.0}}},"df":50,"docs":{"156":{"tf":2.23606797749979},"195":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":2.8284271247461903},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"219":{"tf":1.0},"221":{"tf":4.47213595499958},"223":{"tf":1.4142135623730951},"224":{"tf":1.0},"226":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.4142135623730951},"279":{"tf":1.0},"292":{"tf":2.23606797749979},"300":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.4142135623730951},"370":{"tf":3.3166247903554},"380":{"tf":2.0},"421":{"tf":1.7320508075688772},"440":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"47":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.4142135623730951},"535":{"tf":1.0},"553":{"tf":1.0},"567":{"tf":1.0},"568":{"tf":1.4142135623730951},"570":{"tf":1.0},"574":{"tf":1.0},"575":{"tf":1.4142135623730951},"576":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.4142135623730951},"580":{"tf":1.4142135623730951},"581":{"tf":1.0},"589":{"tf":1.0},"599":{"tf":2.0}},"s":{"/":{"a":{"d":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"394":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"51":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"342":{"tf":1.4142135623730951},"417":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":5,"docs":{"201":{"tf":1.0},"209":{"tf":1.0},"259":{"tf":1.0},"442":{"tf":1.0},"458":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"300":{"tf":1.4142135623730951}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"62":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}}}}},"p":{"df":1,"docs":{"214":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"191":{"tf":1.0}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"431":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"a":{"df":0,"docs":{},"g":{"df":7,"docs":{"2":{"tf":1.0},"397":{"tf":1.0},"554":{"tf":1.0},"555":{"tf":1.0},"556":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.7320508075688772}}}},"c":{"df":0,"docs":{},"k":{"df":9,"docs":{"153":{"tf":1.0},"156":{"tf":1.0},"321":{"tf":1.0},"41":{"tf":1.0},"460":{"tf":1.4142135623730951},"511":{"tf":1.4142135623730951},"516":{"tf":1.0},"517":{"tf":1.0},"529":{"tf":1.0}},"i":{"df":5,"docs":{"156":{"tf":1.0},"347":{"tf":1.0},"456":{"tf":1.4142135623730951},"52":{"tf":1.0},"552":{"tf":1.0}}}}},"df":78,"docs":{"153":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":2.23606797749979},"16":{"tf":1.0},"165":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"183":{"tf":1.0},"192":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.7320508075688772},"209":{"tf":2.23606797749979},"217":{"tf":1.0},"221":{"tf":1.7320508075688772},"223":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.4142135623730951},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"274":{"tf":1.0},"276":{"tf":2.449489742783178},"278":{"tf":1.0},"282":{"tf":1.0},"284":{"tf":1.4142135623730951},"286":{"tf":1.4142135623730951},"292":{"tf":1.7320508075688772},"300":{"tf":1.4142135623730951},"307":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"333":{"tf":1.0},"336":{"tf":1.4142135623730951},"34":{"tf":1.0},"340":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.4142135623730951},"357":{"tf":1.4142135623730951},"360":{"tf":1.0},"370":{"tf":2.6457513110645907},"380":{"tf":3.3166247903554},"385":{"tf":1.0},"387":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"402":{"tf":1.0},"421":{"tf":1.0},"426":{"tf":1.0},"438":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"461":{"tf":1.0},"470":{"tf":1.7320508075688772},"486":{"tf":1.0},"494":{"tf":1.0},"507":{"tf":1.0},"521":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"526":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"543":{"tf":1.0},"559":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"9":{"tf":1.0}},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"173":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"286":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0}}}}}},"m":{"df":4,"docs":{"156":{"tf":1.0},"395":{"tf":1.0},"402":{"tf":1.0},"405":{"tf":1.0}}},"p":{"df":2,"docs":{"272":{"tf":1.0},"393":{"tf":1.0}}},"v":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":6,"docs":{"156":{"tf":1.0},"221":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"410":{"tf":1.0},"517":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"l":{"df":5,"docs":{"156":{"tf":1.0},"242":{"tf":1.0},"276":{"tf":1.0},"372":{"tf":1.0},"53":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"258":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"e":{"df":7,"docs":{"154":{"tf":1.4142135623730951},"270":{"tf":1.0},"300":{"tf":1.0},"456":{"tf":1.0},"54":{"tf":1.0},"578":{"tf":1.0},"61":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":14,"docs":{"156":{"tf":1.4142135623730951},"230":{"tf":1.0},"233":{"tf":1.0},"241":{"tf":1.0},"253":{"tf":1.0},"256":{"tf":2.0},"258":{"tf":1.4142135623730951},"383":{"tf":1.0},"386":{"tf":1.0},"389":{"tf":1.0},"512":{"tf":1.0},"518":{"tf":1.0},"521":{"tf":2.0},"525":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"487":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"t":{"c":{"df":0,"docs":{},"p":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"i":{"df":1,"docs":{"448":{"tf":1.0}}},"n":{"df":0,"docs":{},"e":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"129":{"tf":1.0}}}},"df":0,"docs":{}},"df":5,"docs":{"125":{"tf":1.0},"129":{"tf":1.0},"209":{"tf":1.4142135623730951},"319":{"tf":1.0},"502":{"tf":1.0}}}},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"r":{"b":{"df":0,"docs":{},"o":{"df":1,"docs":{"503":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"67":{"tf":1.0}}},"n":{"df":19,"docs":{"156":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.4142135623730951},"199":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"257":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"359":{"tf":1.0},"389":{"tf":1.0},"417":{"tf":1.0},"470":{"tf":1.0},"498":{"tf":1.4142135623730951},"51":{"tf":1.4142135623730951}}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"343":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":4,"docs":{"359":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0}}}}}}},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"df":4,"docs":{"138":{"tf":1.0},"209":{"tf":1.0},"342":{"tf":1.0},"73":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":8,"docs":{"162":{"tf":1.0},"28":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"36":{"tf":1.0},"361":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"e":{"df":5,"docs":{"235":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"389":{"tf":1.0}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"201":{"tf":1.0},"583":{"tf":1.0},"599":{"tf":1.0}}}}}}},"o":{"df":18,"docs":{"15":{"tf":1.0},"167":{"tf":1.0},"209":{"tf":1.7320508075688772},"218":{"tf":1.0},"276":{"tf":1.4142135623730951},"29":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"42":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0},"522":{"tf":1.0},"599":{"tf":1.0}}}},"x":{"df":1,"docs":{"448":{"tf":1.0}}},"y":{"df":1,"docs":{"221":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"214":{"tf":1.0}}},"df":52,"docs":{"110":{"tf":1.0},"136":{"tf":1.4142135623730951},"197":{"tf":1.0},"198":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951},"209":{"tf":2.23606797749979},"211":{"tf":1.4142135623730951},"214":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"221":{"tf":1.4142135623730951},"245":{"tf":2.23606797749979},"268":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":3.1622776601683795},"294":{"tf":1.0},"307":{"tf":2.0},"310":{"tf":2.0},"317":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":3.0},"422":{"tf":1.4142135623730951},"423":{"tf":1.4142135623730951},"440":{"tf":4.242640687119285},"448":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":3.0},"460":{"tf":1.4142135623730951},"465":{"tf":1.0},"470":{"tf":1.4142135623730951},"472":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.7320508075688772},"564":{"tf":1.0},"565":{"tf":1.4142135623730951},"566":{"tf":1.0},"568":{"tf":1.0},"579":{"tf":1.4142135623730951},"580":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":3,"docs":{"230":{"tf":1.0},"231":{"tf":1.0},"280":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"i":{"c":{"df":7,"docs":{"111":{"tf":1.0},"153":{"tf":1.0},"237":{"tf":1.0},"421":{"tf":1.0},"478":{"tf":1.0},"564":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"u":{"1":{"6":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"3":{"2":{"df":1,"docs":{"522":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"6":{"4":{"df":1,"docs":{"328":{"tf":2.0}}},"df":0,"docs":{}},"8":{"df":2,"docs":{"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772}}},"a":{"df":0,"docs":{},"z":{"df":0,"docs":{},"u":{"df":1,"docs":{"602":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"p":{"df":1,"docs":{"143":{"tf":1.0}}}},"df":0,"docs":{},"h":{"df":3,"docs":{"148":{"tf":1.0},"149":{"tf":1.0},"217":{"tf":1.0}}},"i":{"df":5,"docs":{"188":{"tf":1.0},"189":{"tf":1.0},"191":{"tf":1.4142135623730951},"192":{"tf":1.0},"403":{"tf":1.0}},"e":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"191":{"tf":1.0}}}}}}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":10,"docs":{"171":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"302":{"tf":1.0},"321":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"445":{"tf":1.0},"470":{"tf":1.0},"9":{"tf":1.0}}}}}},"n":{"a":{"b":{"df":0,"docs":{},"l":{"df":3,"docs":{"289":{"tf":1.0},"336":{"tf":1.4142135623730951},"391":{"tf":1.0}}}},"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"338":{"tf":1.0}}},"df":0,"docs":{}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":3,"docs":{"340":{"tf":1.0},"367":{"tf":1.0},"428":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"558":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":3,"docs":{"408":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"558":{"tf":1.0}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":3,"docs":{"18":{"tf":1.0},"40":{"tf":1.0},"487":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":3,"docs":{"252":{"tf":1.0},"278":{"tf":1.0},"370":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"65":{"tf":1.0},"84":{"tf":1.0}}}}}}},"v":{"df":2,"docs":{"497":{"tf":1.0},"561":{"tf":1.0}}}}},"d":{"df":1,"docs":{"192":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":14,"docs":{"12":{"tf":1.0},"152":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"324":{"tf":1.0},"347":{"tf":1.0},"358":{"tf":1.0},"457":{"tf":1.4142135623730951},"470":{"tf":1.0},"485":{"tf":1.0},"5":{"tf":1.0},"522":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":8,"docs":{"140":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"347":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.4142135623730951},"460":{"tf":1.4142135623730951},"502":{"tf":1.0}}}},"n":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"370":{"tf":1.0},"394":{"tf":1.0}}}}},"df":0,"docs":{}}},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"391":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":39,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"171":{"tf":1.0},"173":{"tf":1.0},"178":{"tf":1.0},"181":{"tf":1.0},"183":{"tf":1.0},"195":{"tf":1.0},"211":{"tf":1.0},"226":{"tf":1.0},"246":{"tf":1.0},"248":{"tf":1.4142135623730951},"251":{"tf":1.0},"258":{"tf":1.4142135623730951},"261":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.4142135623730951},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"288":{"tf":1.0},"33":{"tf":1.0},"336":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.4142135623730951},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"394":{"tf":1.0},"421":{"tf":1.0},"427":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"463":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.4142135623730951},"54":{"tf":2.23606797749979},"544":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"389":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"df":1,"docs":{"559":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":2,"docs":{"300":{"tf":1.0},"380":{"tf":1.0}}}}},"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":5,"docs":{"181":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"497":{"tf":1.0},"59":{"tf":1.0}},"e":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"f":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"197":{"tf":1.0},"383":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"458":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":1,"docs":{"465":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":9,"docs":{"168":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"196":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.4142135623730951},"538":{"tf":1.0}}}}}}}},"i":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"460":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"1":{"0":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"380":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"218":{"tf":1.0}}}}}}},"q":{"df":0,"docs":{},"u":{"df":3,"docs":{"112":{"tf":1.0},"118":{"tf":1.0},"264":{"tf":1.0}}}},"t":{"df":3,"docs":{"394":{"tf":1.0},"470":{"tf":1.0},"573":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":3,"docs":{"356":{"tf":1.0},"386":{"tf":1.0},"469":{"tf":1.0}}}}}},"x":{"df":4,"docs":{"336":{"tf":1.0},"344":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}}}},"k":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"319":{"tf":1.0}},"n":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}}}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"367":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":5,"docs":{"16":{"tf":1.0},"321":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"6":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"k":{"df":3,"docs":{"112":{"tf":1.0},"214":{"tf":1.0},"61":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"338":{"tf":1.0},"54":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"363":{"tf":1.0}}}}}},"r":{"d":{"df":1,"docs":{"156":{"tf":1.0}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"198":{"tf":1.0},"370":{"tf":2.449489742783178},"380":{"tf":1.0},"440":{"tf":4.0}}}}},"r":{"df":0,"docs":{},"e":{"a":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"328":{"tf":1.0}}}},"d":{"df":1,"docs":{"470":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"59":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"s":{"a":{"df":0,"docs":{},"f":{"df":4,"docs":{"190":{"tf":1.0},"198":{"tf":1.4142135623730951},"328":{"tf":2.449489742783178},"336":{"tf":1.4142135623730951}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":3,"docs":{"457":{"tf":1.0},"460":{"tf":1.0},"543":{"tf":1.0}}}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"344":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"458":{"tf":1.0}}}}}},"df":0,"docs":{}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}},"r":{"df":4,"docs":{"197":{"tf":1.0},"268":{"tf":1.0},"361":{"tf":1.0},"456":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"245":{"tf":1.0}}}},"i":{"df":0,"docs":{},"l":{"df":13,"docs":{"15":{"tf":1.7320508075688772},"16":{"tf":1.0},"167":{"tf":1.0},"234":{"tf":1.0},"237":{"tf":1.0},"357":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.0},"559":{"tf":1.4142135623730951},"562":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"200":{"tf":1.0}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":3,"docs":{"258":{"tf":1.0},"320":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":10,"docs":{"18":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.0},"550":{"tf":1.0},"553":{"tf":1.0},"561":{"tf":1.0}}}},"df":0,"docs":{}},"df":68,"docs":{"112":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.7320508075688772},"167":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"189":{"tf":1.0},"191":{"tf":1.4142135623730951},"196":{"tf":1.0},"201":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"232":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"272":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":2.0},"292":{"tf":1.4142135623730951},"307":{"tf":1.0},"309":{"tf":1.0},"322":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"389":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"460":{"tf":1.0},"462":{"tf":1.0},"478":{"tf":1.4142135623730951},"48":{"tf":1.0},"504":{"tf":1.0},"510":{"tf":1.0},"522":{"tf":1.0},"528":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"538":{"tf":2.449489742783178},"539":{"tf":2.0},"552":{"tf":1.0},"559":{"tf":1.0},"565":{"tf":1.0},"599":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"462":{"tf":1.0}}}}}}},"g":{"df":0,"docs":{},"r":{"a":{"d":{"df":1,"docs":{"237":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"218":{"tf":1.0}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"n":{"df":5,"docs":{"201":{"tf":1.0},"209":{"tf":1.0},"27":{"tf":1.0},"358":{"tf":1.0},"470":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"292":{"tf":1.0},"347":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"r":{"df":1,"docs":{"156":{"tf":1.0}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"l":{":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":9,"docs":{"217":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"307":{"tf":2.23606797749979},"308":{"tf":1.7320508075688772},"309":{"tf":1.4142135623730951},"310":{"tf":2.0},"311":{"tf":1.4142135623730951},"312":{"tf":2.0},"320":{"tf":1.4142135623730951}},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"309":{"tf":1.0},"320":{"tf":1.0}}}}},"df":0,"docs":{}}}},"s":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"530":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":11,"docs":{"127":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.4142135623730951},"340":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"450":{"tf":1.0},"469":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.0}}}},"df":209,"docs":{"10":{"tf":1.0},"107":{"tf":1.0},"108":{"tf":1.4142135623730951},"110":{"tf":1.0},"115":{"tf":1.0},"116":{"tf":1.0},"118":{"tf":1.4142135623730951},"124":{"tf":1.0},"127":{"tf":1.7320508075688772},"133":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.0},"142":{"tf":1.0},"143":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.4142135623730951},"15":{"tf":1.0},"153":{"tf":1.4142135623730951},"154":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":2.0},"16":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"168":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"179":{"tf":1.0},"181":{"tf":1.0},"185":{"tf":1.0},"187":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.4142135623730951},"192":{"tf":1.0},"195":{"tf":2.0},"198":{"tf":1.0},"200":{"tf":1.4142135623730951},"203":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":2.6457513110645907},"21":{"tf":1.0},"211":{"tf":1.0},"213":{"tf":1.7320508075688772},"217":{"tf":1.7320508075688772},"218":{"tf":2.449489742783178},"221":{"tf":3.3166247903554},"224":{"tf":1.0},"225":{"tf":1.0},"23":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.7320508075688772},"233":{"tf":1.0},"234":{"tf":2.0},"237":{"tf":2.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.7320508075688772},"248":{"tf":1.4142135623730951},"250":{"tf":1.0},"251":{"tf":1.7320508075688772},"252":{"tf":1.4142135623730951},"256":{"tf":1.0},"257":{"tf":2.449489742783178},"258":{"tf":2.0},"259":{"tf":1.0},"26":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":2.8284271247461903},"27":{"tf":1.4142135623730951},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"274":{"tf":1.0},"276":{"tf":3.872983346207417},"278":{"tf":1.4142135623730951},"279":{"tf":1.0},"28":{"tf":1.4142135623730951},"284":{"tf":2.8284271247461903},"288":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":3.872983346207417},"300":{"tf":2.8284271247461903},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":2.449489742783178},"31":{"tf":1.0},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":2.23606797749979},"323":{"tf":1.7320508075688772},"325":{"tf":1.0},"328":{"tf":1.7320508075688772},"336":{"tf":3.0},"338":{"tf":1.4142135623730951},"340":{"tf":1.0},"341":{"tf":2.0},"344":{"tf":1.0},"347":{"tf":3.872983346207417},"349":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":2.0},"358":{"tf":1.4142135623730951},"359":{"tf":2.0},"360":{"tf":1.0},"370":{"tf":3.3166247903554},"380":{"tf":3.1622776601683795},"383":{"tf":1.4142135623730951},"389":{"tf":2.0},"39":{"tf":1.0},"391":{"tf":1.7320508075688772},"392":{"tf":1.4142135623730951},"394":{"tf":1.4142135623730951},"397":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.4142135623730951},"41":{"tf":1.4142135623730951},"414":{"tf":1.7320508075688772},"415":{"tf":1.0},"417":{"tf":2.23606797749979},"419":{"tf":1.4142135623730951},"421":{"tf":3.3166247903554},"422":{"tf":2.23606797749979},"425":{"tf":1.0},"431":{"tf":2.0},"435":{"tf":1.0},"437":{"tf":1.4142135623730951},"44":{"tf":1.0},"440":{"tf":1.7320508075688772},"445":{"tf":1.0},"448":{"tf":1.0},"45":{"tf":1.4142135623730951},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.7320508075688772},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.7320508075688772},"463":{"tf":1.4142135623730951},"464":{"tf":1.4142135623730951},"465":{"tf":1.0},"469":{"tf":2.0},"47":{"tf":1.0},"470":{"tf":3.3166247903554},"474":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.4142135623730951},"483":{"tf":1.0},"487":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":2.449489742783178},"504":{"tf":2.0},"507":{"tf":1.4142135623730951},"511":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.7320508075688772},"519":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":3.0},"523":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951},"529":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.4142135623730951},"542":{"tf":1.0},"543":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"557":{"tf":1.0},"56":{"tf":1.0},"561":{"tf":1.0},"564":{"tf":1.0},"565":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0},"597":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":2.6457513110645907},"61":{"tf":2.0},"62":{"tf":1.4142135623730951},"64":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.4142135623730951},"77":{"tf":1.0},"8":{"tf":1.7320508075688772},"82":{"tf":1.4142135623730951},"89":{"tf":1.0},"9":{"tf":1.7320508075688772},"91":{"tf":1.0},"98":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"397":{"tf":1.0}}},"df":71,"docs":{"11":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.0},"139":{"tf":1.0},"155":{"tf":1.4142135623730951},"156":{"tf":2.23606797749979},"158":{"tf":1.0},"166":{"tf":1.0},"168":{"tf":1.0},"171":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"221":{"tf":2.23606797749979},"228":{"tf":1.0},"23":{"tf":1.0},"237":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"261":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":2.23606797749979},"302":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"331":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"376":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":2.0},"392":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.7320508075688772},"407":{"tf":1.0},"412":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"450":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"508":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}}},"df":0,"docs":{},"p":{"a":{"c":{"df":1,"docs":{"344":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"z":{"df":5,"docs":{"217":{"tf":1.7320508075688772},"370":{"tf":3.872983346207417},"419":{"tf":1.0},"421":{"tf":1.0},"568":{"tf":1.0}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":13,"docs":{"127":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"245":{"tf":1.0},"272":{"tf":1.0},"284":{"tf":1.0},"347":{"tf":1.0},"360":{"tf":1.0},"383":{"tf":1.0},"42":{"tf":1.0},"45":{"tf":1.0},"469":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":9,"docs":{"116":{"tf":1.0},"120":{"tf":1.0},"125":{"tf":1.0},"156":{"tf":1.0},"284":{"tf":1.0},"372":{"tf":1.4142135623730951},"517":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"234":{"tf":1.0},"300":{"tf":1.0}}}}}}}}},"v":{"0":{".":{"1":{".":{"0":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"1":{".":{"2":{"df":1,"docs":{"234":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"df":1,"docs":{"234":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{"df":1,"docs":{"234":{"tf":1.0}}},"3":{".":{"3":{".":{"2":{"df":1,"docs":{"234":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"c":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"552":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":4,"docs":{"268":{"tf":1.0},"321":{"tf":1.0},"380":{"tf":1.0},"560":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"178":{"tf":1.0},"217":{"tf":1.0},"54":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":21,"docs":{"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"246":{"tf":1.0},"268":{"tf":1.0},"271":{"tf":1.0},"292":{"tf":1.4142135623730951},"307":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"380":{"tf":1.0},"389":{"tf":1.0},"440":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.7320508075688772},"495":{"tf":1.0},"496":{"tf":1.0},"573":{"tf":1.4142135623730951},"599":{"tf":1.0},"86":{"tf":1.0},"9":{"tf":1.0},"92":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"a":{"b":{"df":0,"docs":{},"l":{"df":4,"docs":{"217":{"tf":1.4142135623730951},"336":{"tf":1.0},"397":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":10,"docs":{"199":{"tf":1.0},"209":{"tf":2.0},"214":{"tf":1.0},"320":{"tf":1.0},"323":{"tf":1.0},"325":{"tf":1.0},"522":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}}},"t":{"df":2,"docs":{"392":{"tf":1.0},"498":{"tf":1.7320508075688772}}}},"df":2,"docs":{"174":{"tf":1.0},"560":{"tf":1.0}},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"146":{"tf":1.0},"389":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"u":{"df":26,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"142":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"19":{"tf":1.0},"300":{"tf":1.4142135623730951},"307":{"tf":1.0},"358":{"tf":1.0},"365":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":1.7320508075688772},"498":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.0},"557":{"tf":1.0},"58":{"tf":1.0},"584":{"tf":1.0},"82":{"tf":1.0},"89":{"tf":1.0},"9":{"tf":1.0},"94":{"tf":1.0},"98":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"231":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"!":{"[":{"1":{",":{"3":{",":{"5":{",":{"3":{"1":{",":{"2":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"380":{"tf":2.23606797749979}}}}}},"df":0,"docs":{}},"<":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":7,"docs":{"307":{"tf":2.0},"308":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":2.23606797749979},"311":{"tf":1.0},"312":{"tf":1.7320508075688772},"320":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}}}}}}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"309":{"tf":1.0}}}}},"u":{"8":{"df":1,"docs":{"199":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"380":{"tf":2.0}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"125":{"tf":1.0},"209":{"tf":1.0},"312":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"r":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":3,"docs":{"397":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0}}}}},"df":0,"docs":{},"g":{"df":1,"docs":{"139":{"tf":1.0}}},"i":{"df":41,"docs":{"108":{"tf":1.4142135623730951},"110":{"tf":1.4142135623730951},"111":{"tf":1.0},"130":{"tf":1.0},"156":{"tf":2.449489742783178},"190":{"tf":1.0},"192":{"tf":1.0},"195":{"tf":1.0},"203":{"tf":1.0},"211":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.0},"233":{"tf":1.0},"235":{"tf":1.0},"241":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.7320508075688772},"302":{"tf":1.0},"309":{"tf":1.0},"316":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.4142135623730951},"356":{"tf":1.0},"372":{"tf":1.4142135623730951},"380":{"tf":2.449489742783178},"408":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.4142135623730951},"51":{"tf":1.0},"533":{"tf":1.0},"549":{"tf":1.0},"566":{"tf":1.0},"599":{"tf":1.0},"73":{"tf":1.0}},"f":{"df":1,"docs":{"178":{"tf":1.0}},"i":{"df":3,"docs":{"237":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0}}}}},"s":{"a":{"df":1,"docs":{"321":{"tf":1.0}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":19,"docs":{"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"224":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"237":{"tf":2.0},"257":{"tf":1.0},"276":{"tf":1.0},"323":{"tf":1.0},"336":{"tf":1.7320508075688772},"358":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"41":{"tf":1.0},"470":{"tf":1.4142135623730951},"483":{"tf":1.0},"5":{"tf":1.0},"522":{"tf":1.0},"599":{"tf":1.7320508075688772}}}}},"u":{"df":1,"docs":{"211":{"tf":1.0}}}}}},"i":{"a":{"df":12,"docs":{"110":{"tf":1.0},"209":{"tf":1.4142135623730951},"213":{"tf":1.0},"214":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"422":{"tf":1.0},"453":{"tf":1.0},"503":{"tf":1.0},"539":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0}}},"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"530":{"tf":1.0}}}}},"df":0,"docs":{}}},"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"321":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":1,"docs":{"113":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"258":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":6,"docs":{"380":{"tf":1.0},"404":{"tf":1.0},"448":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.0},"542":{"tf":1.0}}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":25,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":1.4142135623730951},"12":{"tf":1.0},"13":{"tf":1.0},"15":{"tf":1.0},"152":{"tf":1.4142135623730951},"157":{"tf":1.0},"17":{"tf":1.4142135623730951},"20":{"tf":1.0},"211":{"tf":1.0},"23":{"tf":1.4142135623730951},"37":{"tf":1.4142135623730951},"47":{"tf":1.4142135623730951},"485":{"tf":1.4142135623730951},"489":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"51":{"tf":1.4142135623730951},"519":{"tf":1.0},"52":{"tf":1.0},"537":{"tf":1.0},"58":{"tf":1.0},"7":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"t":{"df":1,"docs":{"27":{"tf":1.0}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"284":{"tf":1.0},"414":{"tf":1.0},"504":{"tf":1.0}},"v":{"df":0,"docs":{},"m":{"df":1,"docs":{"213":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"l":{"a":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"1":{"0":{"0":{"0":{"df":1,"docs":{"602":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"m":{"df":1,"docs":{"414":{"tf":1.0}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"559":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":4,"docs":{"14":{"tf":1.0},"16":{"tf":1.0},"58":{"tf":1.0},"60":{"tf":1.4142135623730951}}}},"w":{"df":1,"docs":{"276":{"tf":1.0}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"195":{"tf":1.4142135623730951}}}}}},"s":{"c":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":4,"docs":{"136":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.0},"300":{"tf":1.0}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"53":{"tf":1.0}}}}}}}},"w":{".":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"t":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{}}},"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":17,"docs":{"156":{"tf":1.0},"19":{"tf":1.0},"2":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":2.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"380":{"tf":2.6457513110645907},"408":{"tf":1.0},"412":{"tf":1.0},"446":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.7320508075688772},"457":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.4142135623730951},"556":{"tf":1.0}}}},"k":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}}},"/":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"b":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":8,"docs":{"200":{"tf":1.0},"284":{"tf":1.0},"328":{"tf":2.6457513110645907},"336":{"tf":2.0},"342":{"tf":1.4142135623730951},"412":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.7320508075688772}},"r":{".":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"b":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"w":{"a":{"df":0,"docs":{},"k":{"df":2,"docs":{"336":{"tf":1.7320508075688772},"342":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":9,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"200":{"tf":1.7320508075688772},"203":{"tf":1.0},"258":{"tf":1.0},"328":{"tf":2.449489742783178},"332":{"tf":1.0},"336":{"tf":2.23606797749979},"457":{"tf":1.7320508075688772}}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"336":{"tf":2.0}}}}}},"l":{"df":0,"docs":{},"k":{"df":2,"docs":{"276":{"tf":1.0},"448":{"tf":1.4142135623730951}}},"l":{"df":2,"docs":{"347":{"tf":1.0},"440":{"tf":1.0}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"503":{"tf":1.0}}}}},"df":0,"docs":{},"n":{"a":{"df":1,"docs":{"483":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":57,"docs":{"11":{"tf":1.0},"118":{"tf":1.0},"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"190":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"23":{"tf":1.0},"24":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.7320508075688772},"315":{"tf":1.0},"331":{"tf":1.0},"349":{"tf":1.0},"359":{"tf":1.0},"360":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"38":{"tf":1.0},"405":{"tf":1.0},"412":{"tf":1.0},"437":{"tf":1.0},"450":{"tf":1.0},"458":{"tf":1.0},"46":{"tf":1.0},"462":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.4142135623730951},"484":{"tf":1.0},"498":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"517":{"tf":1.4142135623730951},"52":{"tf":1.0},"527":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"55":{"tf":1.0},"556":{"tf":1.0},"566":{"tf":1.0},"573":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.7320508075688772},"76":{"tf":1.0},"8":{"tf":1.0},"81":{"tf":1.0},"86":{"tf":1.0},"91":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"!":{"(":{"\"":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"w":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":41,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"203":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.4142135623730951},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"522":{"tf":1.4142135623730951},"537":{"tf":1.0},"539":{"tf":1.0}}},"p":{"df":2,"docs":{"276":{"tf":1.0},"370":{"tf":1.7320508075688772}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"357":{"tf":1.0}}},"m":{"df":1,"docs":{"217":{"tf":1.0}}},"n":{"'":{"df":0,"docs":{},"t":{"df":4,"docs":{"199":{"tf":1.0},"245":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"402":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"113":{"tf":1.0},"258":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.0},"392":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":3.7416573867739413}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"y":{"df":69,"docs":{"118":{"tf":1.0},"146":{"tf":1.0},"153":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.0},"171":{"tf":1.4142135623730951},"178":{"tf":1.0},"179":{"tf":1.0},"181":{"tf":1.0},"187":{"tf":1.0},"191":{"tf":1.0},"195":{"tf":1.0},"197":{"tf":1.0},"203":{"tf":1.0},"213":{"tf":1.0},"224":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"296":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.0},"309":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.0},"344":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"370":{"tf":1.4142135623730951},"372":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.4142135623730951},"408":{"tf":1.4142135623730951},"410":{"tf":1.4142135623730951},"413":{"tf":1.0},"417":{"tf":1.7320508075688772},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.4142135623730951},"445":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.7320508075688772},"460":{"tf":1.0},"470":{"tf":1.0},"487":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"515":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"57":{"tf":1.0},"599":{"tf":1.7320508075688772},"61":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{},"e":{"'":{"d":{"df":3,"docs":{"16":{"tf":1.0},"487":{"tf":1.0},"508":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":14,"docs":{"155":{"tf":1.0},"157":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0},"493":{"tf":1.0},"499":{"tf":1.0},"506":{"tf":1.0},"58":{"tf":1.0}}}},"r":{"df":7,"docs":{"155":{"tf":1.0},"49":{"tf":1.0},"53":{"tf":1.0},"55":{"tf":1.0},"550":{"tf":1.0},"551":{"tf":1.4142135623730951},"60":{"tf":1.0}}},"v":{"df":7,"docs":{"153":{"tf":1.0},"18":{"tf":1.0},"21":{"tf":1.0},"481":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"96":{"tf":1.0}}}},"b":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":1,"docs":{"217":{"tf":1.0}}},"y":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"509":{"tf":1.0},"62":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":20,"docs":{"156":{"tf":1.4142135623730951},"195":{"tf":1.0},"212":{"tf":1.0},"227":{"tf":1.0},"230":{"tf":2.6457513110645907},"231":{"tf":1.7320508075688772},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"235":{"tf":1.4142135623730951},"237":{"tf":2.23606797749979},"239":{"tf":1.0},"290":{"tf":1.0},"292":{"tf":2.6457513110645907},"296":{"tf":1.0},"300":{"tf":1.0},"307":{"tf":1.4142135623730951},"315":{"tf":1.0},"370":{"tf":1.0},"523":{"tf":1.4142135623730951},"542":{"tf":1.0}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"0":{"tf":1.0},"134":{"tf":1.0},"27":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":3,"docs":{"156":{"tf":1.0},"276":{"tf":2.8284271247461903},"279":{"tf":1.4142135623730951}},"s":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"1":{"5":{"#":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"279":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"/":{"1":{"7":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"k":{"df":6,"docs":{"15":{"tf":1.4142135623730951},"168":{"tf":1.0},"195":{"tf":1.0},"276":{"tf":1.0},"380":{"tf":1.0},"456":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"246":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"2":{"tf":1.0},"555":{"tf":1.0},"558":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":1,"docs":{"300":{"tf":1.0}},"t":{"df":3,"docs":{"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"343":{"tf":1.0}}}}},"r":{"d":{"df":1,"docs":{"199":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":3,"docs":{"0":{"tf":1.4142135623730951},"276":{"tf":1.0},"437":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"df":44,"docs":{"143":{"tf":1.0},"156":{"tf":1.4142135623730951},"177":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"199":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.0},"259":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"352":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"41":{"tf":1.0},"436":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"502":{"tf":1.0},"508":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.0},"515":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"542":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"246":{"tf":1.0},"27":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.0}}}},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}}}},"g":{"df":6,"docs":{"0":{"tf":1.0},"16":{"tf":1.0},"17":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"4":{"tf":1.0}}},"h":{"a":{"df":0,"docs":{},"t":{"'":{"df":9,"docs":{"261":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"328":{"tf":1.0},"383":{"tf":1.7320508075688772},"431":{"tf":1.0},"502":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":11,"docs":{"159":{"tf":1.0},"217":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"300":{"tf":1.0},"41":{"tf":1.0},"453":{"tf":1.0},"491":{"tf":1.0},"578":{"tf":1.0},"8":{"tf":1.0},"99":{"tf":1.0}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"62":{"tf":1.0}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"217":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":1,"docs":{"341":{"tf":1.0}}},"b":{"df":0,"docs":{},"i":{"df":1,"docs":{"417":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":13,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"235":{"tf":1.0},"25":{"tf":1.0},"252":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.4142135623730951},"423":{"tf":1.0},"529":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0}}}}}}},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"507":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":11,"docs":{"11":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.4142135623730951},"226":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"311":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"538":{"tf":1.4142135623730951}}}},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"399":{"tf":1.0},"483":{"tf":1.0}}}}}},"i":{"d":{"df":0,"docs":{},"e":{"df":2,"docs":{"116":{"tf":1.0},"156":{"tf":1.0}}}},"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":1,"docs":{"192":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"559":{"tf":1.0}}}}}}},"n":{"d":{"df":3,"docs":{"156":{"tf":1.4142135623730951},"322":{"tf":1.0},"504":{"tf":1.0}},"o":{"df":0,"docs":{},"w":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":5,"docs":{"188":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.4142135623730951},"538":{"tf":1.7320508075688772},"539":{"tf":1.0}}}}},"df":2,"docs":{"389":{"tf":1.0},"60":{"tf":1.0}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"15":{"tf":1.0},"60":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"456":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"108":{"tf":1.0}}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"67":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"360":{"tf":1.0}}}},"h":{"4":{"df":7,"docs":{"538":{"tf":2.23606797749979},"539":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.4142135623730951},"546":{"tf":1.4142135623730951},"547":{"tf":1.0}}},"df":33,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"309":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.4142135623730951},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"536":{"tf":1.0},"537":{"tf":1.4142135623730951},"565":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":24,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"142":{"tf":1.0},"209":{"tf":1.0},"231":{"tf":1.0},"276":{"tf":1.4142135623730951},"309":{"tf":1.0},"310":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"359":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"440":{"tf":4.47213595499958},"448":{"tf":1.0},"504":{"tf":1.0},"522":{"tf":1.0},"545":{"tf":1.0},"98":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"b":{"df":0,"docs":{},"o":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"365":{"tf":1.0}}}},"df":0,"docs":{}}},"df":34,"docs":{"108":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.0},"171":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.4142135623730951},"239":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"294":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"343":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"457":{"tf":1.4142135623730951},"462":{"tf":1.0},"480":{"tf":1.4142135623730951},"502":{"tf":1.0},"526":{"tf":1.0},"530":{"tf":1.0},"579":{"tf":1.0},"6":{"tf":1.0},"61":{"tf":1.0},"9":{"tf":1.0}}}}}}}},"l":{"df":1,"docs":{"245":{"tf":1.0}}},"o":{"df":0,"docs":{},"e":{"df":1,"docs":{"360":{"tf":1.0}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"342":{"tf":1.0}},"n":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}}}},"n":{"'":{"df":0,"docs":{},"t":{"df":9,"docs":{"125":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"237":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"521":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":11,"docs":{"198":{"tf":1.4142135623730951},"199":{"tf":1.0},"217":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"361":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"423":{"tf":1.0},"543":{"tf":1.0}}}}},"df":0,"docs":{}},"r":{"d":{"df":2,"docs":{"249":{"tf":1.0},"336":{"tf":1.0}}},"df":0,"docs":{},"k":{"a":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"423":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":6,"docs":{"153":{"tf":1.0},"181":{"tf":1.0},"218":{"tf":1.0},"278":{"tf":1.0},"370":{"tf":1.0},"442":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":115,"docs":{"1":{"tf":1.0},"10":{"tf":1.0},"12":{"tf":1.4142135623730951},"127":{"tf":1.0},"128":{"tf":1.0},"129":{"tf":1.7320508075688772},"130":{"tf":1.0},"131":{"tf":1.0},"136":{"tf":1.0},"15":{"tf":1.4142135623730951},"153":{"tf":1.0},"156":{"tf":3.1622776601683795},"16":{"tf":1.4142135623730951},"167":{"tf":1.4142135623730951},"168":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"188":{"tf":1.0},"192":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"221":{"tf":2.6457513110645907},"225":{"tf":1.0},"232":{"tf":1.0},"244":{"tf":1.4142135623730951},"249":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"276":{"tf":3.0},"278":{"tf":1.0},"279":{"tf":1.0},"284":{"tf":2.0},"289":{"tf":1.0},"292":{"tf":2.23606797749979},"3":{"tf":1.7320508075688772},"300":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.7320508075688772},"311":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"317":{"tf":1.0},"319":{"tf":1.4142135623730951},"320":{"tf":1.4142135623730951},"321":{"tf":1.0},"322":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":2.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":2.0},"349":{"tf":2.0},"353":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":2.8284271247461903},"380":{"tf":2.6457513110645907},"383":{"tf":1.4142135623730951},"389":{"tf":1.0},"394":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"408":{"tf":2.0},"41":{"tf":1.0},"421":{"tf":1.4142135623730951},"423":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"442":{"tf":1.0},"457":{"tf":1.0},"464":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":2.0},"472":{"tf":1.0},"474":{"tf":1.4142135623730951},"475":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"487":{"tf":1.4142135623730951},"49":{"tf":1.0},"50":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.4142135623730951},"507":{"tf":1.0},"511":{"tf":1.4142135623730951},"522":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"545":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"556":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.4142135623730951},"559":{"tf":1.0},"566":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":2.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.0},"73":{"tf":1.7320508075688772},"79":{"tf":1.0},"82":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":7,"docs":{"268":{"tf":1.0},"276":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"347":{"tf":1.0},"412":{"tf":1.0},"470":{"tf":2.23606797749979}}}},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":2,"docs":{"435":{"tf":1.0},"475":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":4,"docs":{"128":{"tf":1.0},"349":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"l":{"d":{"!":{"\"":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"522":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"<":{"'":{"_":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"a":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":12,"docs":{"130":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.0},"215":{"tf":1.0},"217":{"tf":3.7416573867739413},"218":{"tf":1.0},"284":{"tf":1.0},"363":{"tf":1.0},"389":{"tf":1.0},"448":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"523":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"i":{"df":7,"docs":{"198":{"tf":1.0},"221":{"tf":1.4142135623730951},"245":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"365":{"tf":1.0},"552":{"tf":1.0}}}},"s":{"df":2,"docs":{"328":{"tf":1.0},"367":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"221":{"tf":1.0}}}},"t":{"df":5,"docs":{"190":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":4,"docs":{"268":{"tf":1.0},"309":{"tf":1.0},"341":{"tf":1.0},"37":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"d":{"'":{"df":0,"docs":{},"v":{"df":2,"docs":{"340":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":5,"docs":{"217":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.4142135623730951},"324":{"tf":1.0},"428":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"d":{"df":1,"docs":{"533":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":4,"docs":{"259":{"tf":1.0},"268":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"259":{"tf":1.0},"292":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.7320508075688772},"504":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":1,"docs":{"214":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":86,"docs":{"110":{"tf":1.0},"138":{"tf":1.0},"15":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":3.3166247903554},"157":{"tf":1.0},"159":{"tf":1.0},"16":{"tf":1.0},"167":{"tf":1.0},"17":{"tf":1.0},"19":{"tf":1.0},"193":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.4142135623730951},"198":{"tf":1.0},"199":{"tf":1.4142135623730951},"203":{"tf":1.4142135623730951},"204":{"tf":1.0},"206":{"tf":1.0},"217":{"tf":1.0},"23":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"239":{"tf":1.0},"24":{"tf":1.7320508075688772},"25":{"tf":1.4142135623730951},"258":{"tf":1.0},"26":{"tf":1.0},"268":{"tf":2.0},"27":{"tf":1.0},"284":{"tf":1.0},"290":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.4142135623730951},"300":{"tf":1.0},"307":{"tf":1.0},"312":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.7320508075688772},"344":{"tf":1.0},"347":{"tf":1.0},"351":{"tf":1.0},"37":{"tf":1.7320508075688772},"370":{"tf":2.0},"38":{"tf":1.0},"380":{"tf":2.6457513110645907},"389":{"tf":1.0},"39":{"tf":1.0},"41":{"tf":1.4142135623730951},"423":{"tf":1.0},"433":{"tf":1.0},"456":{"tf":1.7320508075688772},"457":{"tf":2.449489742783178},"458":{"tf":2.0},"46":{"tf":1.0},"460":{"tf":1.7320508075688772},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.0},"480":{"tf":1.0},"491":{"tf":1.0},"497":{"tf":1.7320508075688772},"498":{"tf":1.4142135623730951},"502":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"51":{"tf":1.4142135623730951},"513":{"tf":1.0},"522":{"tf":1.7320508075688772},"523":{"tf":1.0},"53":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.4142135623730951},"551":{"tf":1.0},"559":{"tf":1.4142135623730951},"565":{"tf":1.0},"573":{"tf":1.0},"599":{"tf":1.0},"601":{"tf":1.7320508075688772},"61":{"tf":2.0},"79":{"tf":1.0},"9":{"tf":1.4142135623730951}},"r":{"df":1,"docs":{"84":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":25,"docs":{"108":{"tf":1.0},"118":{"tf":1.0},"125":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.4142135623730951},"147":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":1.0},"211":{"tf":1.0},"257":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"320":{"tf":1.0},"332":{"tf":1.0},"347":{"tf":1.4142135623730951},"356":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.0},"488":{"tf":1.0},"498":{"tf":1.0},"509":{"tf":1.0},"599":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":43,"docs":{"130":{"tf":1.0},"140":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"196":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"328":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"359":{"tf":1.4142135623730951},"363":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"440":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"51":{"tf":1.4142135623730951},"519":{"tf":1.0},"53":{"tf":1.0},"537":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"e":{"df":14,"docs":{"246":{"tf":1.0},"248":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.4142135623730951},"408":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"502":{"tf":1.0},"538":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.4142135623730951},"603":{"tf":1.0}}}}}},"s":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"276":{"tf":2.23606797749979}},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"df":0,"docs":{},"r":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":1,"docs":{"276":{"tf":2.449489742783178}}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}}}}},"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"276":{"tf":1.7320508075688772}}}},"x":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"564":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"8":{"6":{"_":{"6":{"4":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"42":{"tf":1.0},"448":{"tf":1.0},"56":{"tf":1.0},"57":{"tf":1.4142135623730951}},"m":{"a":{"df":1,"docs":{"230":{"tf":1.0}}},"df":0,"docs":{}}},"y":{"2":{"1":{"df":1,"docs":{"602":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"h":{"df":2,"docs":{"217":{"tf":1.0},"69":{"tf":1.0}}},"r":{"df":15,"docs":{"10":{"tf":1.0},"171":{"tf":1.0},"332":{"tf":1.0},"356":{"tf":1.0},"380":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"40":{"tf":1.0},"457":{"tf":1.0},"486":{"tf":1.4142135623730951},"72":{"tf":1.0},"79":{"tf":1.0},"9":{"tf":1.0}},"n":{"df":1,"docs":{"503":{"tf":1.0}}}}},"df":10,"docs":{"111":{"tf":1.0},"120":{"tf":1.0},"19":{"tf":1.0},"320":{"tf":1.0},"322":{"tf":1.0},"405":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.4142135623730951},"89":{"tf":1.0}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":9,"docs":{"196":{"tf":2.23606797749979},"214":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"310":{"tf":1.0},"563":{"tf":1.0},"564":{"tf":1.0},"573":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"89":{"tf":1.0}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"602":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"u":{"'":{"d":{"df":4,"docs":{"21":{"tf":1.0},"26":{"tf":1.0},"39":{"tf":1.0},"96":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"417":{"tf":1.0},"487":{"tf":1.0}}}},"r":{"df":8,"docs":{"157":{"tf":1.0},"2":{"tf":1.0},"25":{"tf":1.0},"300":{"tf":1.0},"321":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"556":{"tf":1.0}}},"v":{"df":3,"docs":{"156":{"tf":1.0},"292":{"tf":1.0},"417":{"tf":1.0}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":11,"docs":{"132":{"tf":1.0},"134":{"tf":2.0},"136":{"tf":1.4142135623730951},"137":{"tf":1.4142135623730951},"138":{"tf":1.7320508075688772},"139":{"tf":1.4142135623730951},"177":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.4142135623730951},"532":{"tf":1.0}}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"96":{"tf":1.0}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"2":{"tf":1.0}}}}}}}}}},"z":{"b":{"df":0,"docs":{},"u":{"df":2,"docs":{"224":{"tf":1.0},"323":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":1,"docs":{"602":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"224":{"tf":1.0}}}},"df":0,"docs":{}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"232":{"tf":1.0}}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"o":{"df":4,"docs":{"343":{"tf":2.449489742783178},"422":{"tf":1.4142135623730951},"513":{"tf":1.0},"62":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":1,"docs":{"110":{"tf":1.0}}}},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"200":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"245":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"245":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":9,"docs":{"1":{"tf":1.0},"16":{"tf":1.0},"2":{"tf":1.0},"25":{"tf":1.0},"35":{"tf":1.0},"4":{"tf":1.4142135623730951},"555":{"tf":1.0},"556":{"tf":1.0},"68":{"tf":1.0}}}}}}}}},"breadcrumbs":{"root":{"0":{".":{".":{"1":{"0":{"df":1,"docs":{"380":{"tf":2.23606797749979}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{"df":2,"docs":{"199":{"tf":1.4142135623730951},"89":{"tf":1.0}}},"4":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"7":{".":{"1":{"1":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"3":{"1":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"6":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"df":3,"docs":{"15":{"tf":1.0},"553":{"tf":1.0},"599":{"tf":1.7320508075688772}}},"3":{"df":1,"docs":{"365":{"tf":1.0}}},"4":{"df":3,"docs":{"14":{"tf":2.0},"15":{"tf":1.0},"16":{"tf":1.0}}},"df":8,"docs":{"217":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":3.1622776601683795},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":3.1622776601683795},"419":{"tf":1.0},"568":{"tf":1.0}},"x":{"0":{"0":{"0":{"0":{"5":{"5":{"5":{"5":{"5":{"5":{"5":{"7":{"6":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"7":{"3":{"c":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"8":{"df":0,"docs":{},"f":{"7":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"9":{"0":{"5":{"2":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"5":{"c":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"5":{"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"d":{"3":{"b":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"2":{"df":0,"docs":{},"f":{"7":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"6":{"9":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"5":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"9":{"c":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"b":{"0":{"b":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{"b":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"9":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"2":{"2":{"df":0,"docs":{},"f":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"3":{"0":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"0":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"7":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"a":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"8":{"0":{"5":{"a":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"a":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"1":{"2":{"5":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"4":{"a":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"0":{"9":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"3":{"2":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"df":0,"docs":{},"f":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"6":{"a":{"c":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"d":{"0":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"2":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"0":{"9":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"d":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"7":{"4":{"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"8":{"2":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"a":{"d":{"9":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"b":{"8":{"d":{"a":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"4":{"7":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"8":{"7":{"b":{"b":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"8":{"d":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"2":{"2":{"9":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"0":{"b":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"6":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"9":{"9":{"0":{"9":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"6":{"4":{"a":{"8":{"2":{"df":0,"docs":{},"f":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"f":{"7":{"d":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"7":{"0":{"a":{"c":{"3":{"df":1,"docs":{"404":{"tf":2.0}}},"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"0":{"0":{"d":{"8":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"0":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"1":{"1":{"b":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"7":{"c":{"2":{"df":0,"docs":{},"f":{"0":{"9":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"d":{"5":{"df":0,"docs":{},"e":{"5":{"8":{"a":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"e":{"3":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"6":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"b":{"2":{"6":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"1":{"4":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"8":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"8":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"4":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"d":{"0":{"0":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"4":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"0":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"6":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"7":{"c":{"3":{"b":{"5":{"c":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"1":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":2.449489742783178}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},".":{"0":{"df":2,"docs":{"548":{"tf":1.0},"599":{"tf":1.0}}},"1":{"1":{".":{"3":{"df":1,"docs":{"419":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"404":{"tf":1.0}}},"3":{".":{"0":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"6":{":":{"9":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"6":{":":{"5":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"9":{":":{"5":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"6":{"3":{":":{"3":{"1":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"5":{"4":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{"1":{":":{"1":{"3":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"5":{"2":{":":{"4":{"3":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"7":{"1":{":":{"9":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{".":{"0":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"6":{"2":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"3":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"6":{"1":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"3":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"7":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"8":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"/":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"_":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"4":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"8":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"2":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"7":{"9":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"2":{"5":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"9":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"5":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"/":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"2":{"6":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"9":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{".":{"0":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"2":{"9":{":":{"2":{"1":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"x":{"df":3,"docs":{"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0}}}},"0":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"0":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":5,"docs":{"138":{"tf":1.0},"196":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0}}},"4":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"5":{"df":1,"docs":{"373":{"tf":1.0}}},"df":4,"docs":{"284":{"tf":1.4142135623730951},"380":{"tf":2.23606797749979},"397":{"tf":1.0},"404":{"tf":1.0}},"x":{"df":1,"docs":{"469":{"tf":1.0}}}},"1":{"df":5,"docs":{"284":{"tf":1.0},"307":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"2":{"9":{"df":1,"docs":{"268":{"tf":1.0}}},"df":5,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"503":{"tf":1.0},"599":{"tf":1.7320508075688772}}},"3":{",":{"1":{"0":{",":{"1":{"6":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"0":{"0":{"df":1,"docs":{"555":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.0}}},"4":{"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"5":{"0":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"6":{"0":{"0":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}},"df":4,"docs":{"284":{"tf":1.0},"347":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"7":{"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"8":{"9":{"df":1,"docs":{"268":{"tf":1.0}}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"9":{":":{"1":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.0}}},"c":{"df":1,"docs":{"211":{"tf":1.0}}},"df":20,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"234":{"tf":1.0},"284":{"tf":1.4142135623730951},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.4142135623730951},"418":{"tf":1.4142135623730951},"419":{"tf":1.4142135623730951},"421":{"tf":1.4142135623730951},"456":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":1.0},"564":{"tf":1.0}},"e":{"c":{"c":{"6":{"2":{"9":{"9":{"d":{"b":{"9":{"df":0,"docs":{},"e":{"c":{"8":{"2":{"3":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":3,"docs":{"268":{"tf":1.0},"284":{"tf":4.123105625617661},"397":{"tf":2.8284271247461903}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"182":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"2":{".":{"0":{"df":2,"docs":{"5":{"tf":1.4142135623730951},"6":{"tf":1.0}}},"df":0,"docs":{}},"/":{"3":{"/":{"6":{"df":1,"docs":{"235":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"0":{"0":{"df":2,"docs":{"336":{"tf":1.4142135623730951},"431":{"tf":1.0}}},"2":{"0":{"df":1,"docs":{"230":{"tf":1.0}}},"1":{"df":8,"docs":{"14":{"tf":2.0},"15":{"tf":1.0},"16":{"tf":1.0},"550":{"tf":2.0},"551":{"tf":1.0},"552":{"tf":1.0},"553":{"tf":1.4142135623730951},"599":{"tf":1.7320508075688772}}},"4":{"df":1,"docs":{"538":{"tf":1.0}}},"df":0,"docs":{}},"df":5,"docs":{"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}}},"1":{"df":2,"docs":{"196":{"tf":1.0},"404":{"tf":1.0}}},"2":{"df":2,"docs":{"310":{"tf":1.0},"404":{"tf":1.0}}},"3":{"df":2,"docs":{"404":{"tf":1.0},"440":{"tf":1.4142135623730951}}},"4":{":":{"1":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"404":{"tf":1.0}}},"5":{"df":1,"docs":{"404":{"tf":1.0}}},"6":{"df":1,"docs":{"404":{"tf":1.0}}},"7":{"7":{"0":{"a":{"3":{"0":{"d":{"9":{"df":0,"docs":{},"f":{"2":{"5":{"9":{"6":{"6":{"6":{"df":0,"docs":{},"f":{"b":{"4":{"7":{"0":{"d":{"6":{"df":0,"docs":{},"f":{"1":{"1":{"c":{"df":0,"docs":{},"f":{"1":{"8":{"5":{"1":{"df":0,"docs":{},"e":{"b":{"b":{"2":{"d":{"5":{"7":{"9":{"a":{"1":{"4":{"8":{"0":{"a":{"8":{"1":{"7":{"3":{"d":{"3":{"8":{"5":{"5":{"5":{"7":{"2":{"7":{"4":{"8":{"3":{"8":{"5":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"196":{"tf":1.0},"404":{"tf":1.0}}},"8":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":17,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"284":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.4142135623730951},"423":{"tf":1.0},"440":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"486":{"tf":1.0},"538":{"tf":1.0}}},"3":{"0":{"df":5,"docs":{"14":{"tf":2.0},"16":{"tf":1.0},"284":{"tf":1.0},"404":{"tf":1.0},"470":{"tf":1.7320508075688772}}},"1":{"df":1,"docs":{"404":{"tf":1.0}}},"2":{"df":2,"docs":{"347":{"tf":1.0},"404":{"tf":1.0}}},"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":9,"docs":{"284":{"tf":1.0},"328":{"tf":1.0},"397":{"tf":1.4142135623730951},"40":{"tf":1.0},"404":{"tf":1.0},"417":{"tf":1.0},"470":{"tf":1.0},"486":{"tf":1.0},"538":{"tf":1.0}},"r":{"d":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}}},"4":{"0":{"df":1,"docs":{"370":{"tf":1.0}}},"3":{"1":{"2":{"2":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"9":{"0":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":7,"docs":{"284":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"522":{"tf":1.7320508075688772}},"g":{"b":{"df":1,"docs":{"245":{"tf":1.0}}},"df":0,"docs":{}}},"5":{"0":{"0":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"k":{"b":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}}},"2":{"df":2,"docs":{"370":{"tf":1.0},"448":{"tf":1.0}}},"3":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"4":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"5":{"df":1,"docs":{"448":{"tf":1.0}}},"6":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"7":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"8":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"9":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"df":8,"docs":{"211":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"404":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.4142135623730951},"469":{"tf":1.0}}},"6":{"0":{"df":2,"docs":{"448":{"tf":1.0},"470":{"tf":1.7320508075688772}}},"2":{"2":{"9":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0}},"s":{"df":1,"docs":{"221":{"tf":1.0}}}},"7":{"5":{"df":1,"docs":{"411":{"tf":1.0}}},"6":{"df":1,"docs":{"287":{"tf":1.0}}},"8":{"6":{"df":1,"docs":{"268":{"tf":1.0}}},"7":{"df":1,"docs":{"268":{"tf":1.0}}},"8":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"9":{"7":{"0":{"9":{"0":{"8":{"9":{"2":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"284":{"tf":1.0},"397":{"tf":1.4142135623730951},"404":{"tf":1.0}}},"8":{"0":{"8":{"0":{"df":2,"docs":{"538":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"df":1,"docs":{"292":{"tf":1.0}}},"df":6,"docs":{"209":{"tf":1.0},"284":{"tf":1.0},"358":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"503":{"tf":1.0}}},"9":{"6":{"df":1,"docs":{"336":{"tf":1.0}}},"df":4,"docs":{"284":{"tf":1.0},"380":{"tf":1.4142135623730951},"397":{"tf":1.0},"404":{"tf":1.0}}},"_":{"df":7,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"328":{"tf":1.4142135623730951},"380":{"tf":2.0},"418":{"tf":1.0},"421":{"tf":2.0},"470":{"tf":1.0}}},"a":{".":{"c":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"(":{"b":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},">":{"(":{"&":{"'":{"a":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"343":{"tf":1.4142135623730951}}}}}},"b":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"453":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":7,"docs":{"217":{"tf":1.0},"292":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"472":{"tf":1.0},"517":{"tf":1.4142135623730951},"529":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.0}}}},"v":{"df":12,"docs":{"121":{"tf":1.0},"226":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.4142135623730951},"392":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"539":{"tf":1.0},"6":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"599":{"tf":1.0},"65":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":1,"docs":{"181":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":20,"docs":{"110":{"tf":1.4142135623730951},"112":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.4142135623730951},"203":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"27":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"33":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":2.449489742783178},"370":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"394":{"tf":1.0},"47":{"tf":1.0},"544":{"tf":1.0},"599":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"(":{"a":{"d":{"d":{"df":0,"docs":{},"r":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":8,"docs":{"15":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"258":{"tf":1.0},"336":{"tf":1.0},"421":{"tf":1.4142135623730951},"423":{"tf":1.0},"534":{"tf":1.0}}}},"s":{"df":0,"docs":{},"s":{"df":21,"docs":{"156":{"tf":1.0},"211":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"336":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.7320508075688772},"418":{"tf":2.23606797749979},"419":{"tf":1.4142135623730951},"421":{"tf":1.0},"422":{"tf":2.449489742783178},"423":{"tf":1.7320508075688772},"503":{"tf":1.0},"508":{"tf":1.4142135623730951},"512":{"tf":1.0},"62":{"tf":1.4142135623730951},"65":{"tf":1.0},"8":{"tf":1.0},"82":{"tf":1.0},"86":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"278":{"tf":1.0},"460":{"tf":1.0}}}}}}}},"r":{"d":{"df":2,"docs":{"342":{"tf":1.0},"422":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"218":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"478":{"tf":1.0}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":6,"docs":{"178":{"tf":1.0},"191":{"tf":1.0},"237":{"tf":1.0},"380":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0}}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":11,"docs":{"153":{"tf":1.0},"252":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"40":{"tf":1.0},"431":{"tf":1.0},"437":{"tf":1.7320508075688772},"464":{"tf":1.4142135623730951},"49":{"tf":1.7320508075688772},"61":{"tf":1.0},"9":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"g":{"df":5,"docs":{"34":{"tf":1.0},"600":{"tf":1.7320508075688772},"601":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"q":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.7320508075688772}}}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"328":{"tf":1.7320508075688772},"451":{"tf":1.0}}}}}},"t":{"df":6,"docs":{"217":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.0},"497":{"tf":1.0},"53":{"tf":1.0},"8":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"125":{"tf":1.0},"276":{"tf":1.0},"599":{"tf":1.0}}}},"v":{"df":8,"docs":{"12":{"tf":1.0},"15":{"tf":1.0},"177":{"tf":1.0},"389":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"419":{"tf":1.0},"422":{"tf":1.0}}},"x":{"df":4,"docs":{"192":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"237":{"tf":1.4142135623730951}}}},"o":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"422":{"tf":1.0}}},"df":2,"docs":{"177":{"tf":1.4142135623730951},"422":{"tf":2.23606797749979}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":70,"docs":{"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"178":{"tf":1.4142135623730951},"182":{"tf":1.0},"186":{"tf":1.0},"188":{"tf":1.0},"194":{"tf":1.0},"200":{"tf":1.0},"208":{"tf":1.0},"211":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"237":{"tf":1.0},"243":{"tf":1.0},"246":{"tf":1.0},"254":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.4142135623730951},"306":{"tf":1.0},"318":{"tf":1.0},"321":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"349":{"tf":1.4142135623730951},"355":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":1.4142135623730951},"396":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"423":{"tf":1.0},"430":{"tf":1.0},"435":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"452":{"tf":1.0},"455":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"467":{"tf":1.0},"475":{"tf":1.0},"477":{"tf":1.0},"487":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"502":{"tf":1.4142135623730951},"519":{"tf":1.0},"537":{"tf":1.0},"562":{"tf":1.0}}}},"df":0,"docs":{}}}},"d":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":5,"docs":{"147":{"tf":1.0},"249":{"tf":1.0},"319":{"tf":1.7320508075688772},"336":{"tf":1.0},"522":{"tf":1.0}}}}},"d":{"df":87,"docs":{"156":{"tf":1.0},"157":{"tf":1.0},"158":{"tf":1.0},"159":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"178":{"tf":1.7320508075688772},"186":{"tf":1.0},"194":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.4142135623730951},"208":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":2.23606797749979},"211":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.7320508075688772},"220":{"tf":1.0},"221":{"tf":1.4142135623730951},"24":{"tf":1.0},"258":{"tf":1.0},"26":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"310":{"tf":1.0},"315":{"tf":1.0},"329":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":2.0},"34":{"tf":1.0},"346":{"tf":1.0},"36":{"tf":1.0},"369":{"tf":1.0},"370":{"tf":2.0},"379":{"tf":1.0},"38":{"tf":1.0},"380":{"tf":1.4142135623730951},"381":{"tf":1.0},"39":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.4142135623730951},"416":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.4142135623730951},"44":{"tf":1.0},"447":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"48":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"50":{"tf":1.0},"501":{"tf":1.0},"508":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.4142135623730951},"537":{"tf":1.0},"538":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0},"61":{"tf":1.4142135623730951},"96":{"tf":1.0},"97":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":12,"docs":{"16":{"tf":1.0},"191":{"tf":1.0},"221":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.4142135623730951},"341":{"tf":1.0},"389":{"tf":1.0},"417":{"tf":1.0},"469":{"tf":1.0},"507":{"tf":1.0},"6":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"372":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":8,"docs":{"155":{"tf":1.0},"16":{"tf":1.0},"29":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.0},"431":{"tf":1.4142135623730951},"46":{"tf":1.0},"470":{"tf":1.0}}}}}}},"df":27,"docs":{"157":{"tf":1.0},"16":{"tf":1.0},"177":{"tf":1.0},"199":{"tf":1.0},"21":{"tf":1.0},"214":{"tf":1.0},"221":{"tf":1.0},"26":{"tf":1.0},"286":{"tf":1.0},"328":{"tf":1.4142135623730951},"370":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.0},"39":{"tf":1.0},"408":{"tf":1.0},"421":{"tf":1.0},"453":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"478":{"tf":1.0},"489":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.4142135623730951},"562":{"tf":1.0},"599":{"tf":1.4142135623730951},"97":{"tf":1.0}},"j":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":35,"docs":{"15":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"199":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.4142135623730951},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"42":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"51":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"68":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"53":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":7,"docs":{"179":{"tf":1.0},"209":{"tf":1.0},"302":{"tf":1.0},"417":{"tf":1.0},"47":{"tf":1.0},"538":{"tf":1.0},"579":{"tf":1.0}}}}},"v":{"a":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"156":{"tf":1.0},"383":{"tf":1.0}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":5,"docs":{"128":{"tf":1.0},"338":{"tf":1.0},"403":{"tf":1.0},"417":{"tf":1.0},"517":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"502":{"tf":1.0}}}}}}},"i":{"c":{"df":4,"docs":{"245":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"340":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"357":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"370":{"tf":1.0},"397":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}},"r":{"a":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"57":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"16":{"tf":1.0},"292":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"g":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":20,"docs":{"199":{"tf":1.0},"200":{"tf":1.7320508075688772},"214":{"tf":1.0},"234":{"tf":1.4142135623730951},"237":{"tf":1.0},"258":{"tf":1.0},"292":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"313":{"tf":1.7320508075688772},"336":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.4142135623730951},"458":{"tf":1.0},"504":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.7320508075688772},"599":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"df":8,"docs":{"125":{"tf":1.0},"16":{"tf":1.0},"246":{"tf":1.0},"272":{"tf":1.4142135623730951},"292":{"tf":1.0},"370":{"tf":1.0},"503":{"tf":1.0},"59":{"tf":1.0}}}}}}},"df":1,"docs":{"199":{"tf":1.0}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"(":{"&":{"[":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"320":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":7,"docs":{"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"320":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":7,"docs":{"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"320":{"tf":1.7320508075688772}}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"276":{"tf":1.0},"349":{"tf":1.0},"372":{"tf":1.0}}}}}},"o":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"209":{"tf":1.0}}}}},"h":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}},"i":{"df":0,"docs":{},"m":{"df":7,"docs":{"10":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":2.0},"16":{"tf":1.0},"435":{"tf":1.0},"49":{"tf":1.0},"61":{"tf":1.0}}},"r":{"df":1,"docs":{"48":{"tf":1.0}}}},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"458":{"tf":1.0},"562":{"tf":1.0}}}}},"l":{"a":{"df":0,"docs":{},"n":{"'":{"df":28,"docs":{"187":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"230":{"tf":1.0},"234":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.7320508075688772},"284":{"tf":1.0},"41":{"tf":1.0},"512":{"tf":1.0},"518":{"tf":1.7320508075688772},"519":{"tf":1.0},"520":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0}}},"/":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":1,"docs":{"296":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}}},"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"489":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"157":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":186,"docs":{"156":{"tf":4.123105625617661},"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":2.449489742783178},"168":{"tf":2.0},"169":{"tf":1.7320508075688772},"170":{"tf":1.0},"171":{"tf":1.4142135623730951},"172":{"tf":1.0},"173":{"tf":2.0},"174":{"tf":1.0},"175":{"tf":1.7320508075688772},"176":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":2.0},"179":{"tf":1.4142135623730951},"180":{"tf":1.0},"181":{"tf":1.4142135623730951},"182":{"tf":1.0},"183":{"tf":1.7320508075688772},"184":{"tf":1.0},"185":{"tf":1.7320508075688772},"186":{"tf":1.0},"187":{"tf":1.7320508075688772},"188":{"tf":2.23606797749979},"189":{"tf":1.7320508075688772},"190":{"tf":2.0},"191":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"193":{"tf":1.7320508075688772},"194":{"tf":1.0},"195":{"tf":2.23606797749979},"196":{"tf":2.0},"197":{"tf":1.4142135623730951},"198":{"tf":2.0},"199":{"tf":2.449489742783178},"200":{"tf":2.23606797749979},"201":{"tf":1.4142135623730951},"202":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.0},"205":{"tf":2.23606797749979},"206":{"tf":1.0},"207":{"tf":1.7320508075688772},"208":{"tf":1.0},"209":{"tf":5.385164807134504},"210":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":2.449489742783178},"214":{"tf":1.4142135623730951},"215":{"tf":1.7320508075688772},"216":{"tf":1.0},"217":{"tf":4.0},"218":{"tf":1.7320508075688772},"219":{"tf":1.7320508075688772},"220":{"tf":1.0},"221":{"tf":3.7416573867739413},"222":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":2.0},"226":{"tf":1.4142135623730951},"227":{"tf":1.7320508075688772},"228":{"tf":1.0},"229":{"tf":1.0},"230":{"tf":2.449489742783178},"231":{"tf":1.7320508075688772},"232":{"tf":2.0},"233":{"tf":1.7320508075688772},"234":{"tf":1.4142135623730951},"235":{"tf":2.23606797749979},"236":{"tf":1.0},"237":{"tf":2.0},"238":{"tf":1.0},"239":{"tf":2.0},"240":{"tf":1.0},"241":{"tf":1.7320508075688772},"242":{"tf":1.7320508075688772},"243":{"tf":1.0},"244":{"tf":1.7320508075688772},"245":{"tf":3.1622776601683795},"246":{"tf":2.449489742783178},"247":{"tf":1.0},"248":{"tf":2.0},"249":{"tf":1.0},"250":{"tf":1.7320508075688772},"251":{"tf":1.0},"252":{"tf":1.7320508075688772},"253":{"tf":1.7320508075688772},"254":{"tf":1.0},"255":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.7320508075688772},"258":{"tf":2.23606797749979},"259":{"tf":2.0},"260":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":2.0},"264":{"tf":1.0},"265":{"tf":1.7320508075688772},"266":{"tf":1.7320508075688772},"267":{"tf":1.0},"268":{"tf":4.358898943540674},"269":{"tf":1.0},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":2.0},"273":{"tf":1.4142135623730951},"274":{"tf":1.7320508075688772},"275":{"tf":1.0},"276":{"tf":3.872983346207417},"277":{"tf":1.0},"278":{"tf":1.4142135623730951},"279":{"tf":1.0},"280":{"tf":2.0},"281":{"tf":1.0},"282":{"tf":1.7320508075688772},"283":{"tf":1.0},"284":{"tf":3.872983346207417},"285":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":2.23606797749979},"289":{"tf":1.0},"290":{"tf":1.7320508075688772},"291":{"tf":1.0},"292":{"tf":3.4641016151377544},"293":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":3.0},"309":{"tf":1.0},"340":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"370":{"tf":1.0},"386":{"tf":1.0},"394":{"tf":1.7320508075688772},"397":{"tf":1.4142135623730951},"41":{"tf":1.0},"414":{"tf":1.0},"436":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"500":{"tf":1.7320508075688772},"501":{"tf":1.0},"502":{"tf":1.7320508075688772},"503":{"tf":1.4142135623730951},"504":{"tf":2.0},"505":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.4142135623730951},"510":{"tf":2.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"525":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.7320508075688772},"529":{"tf":1.0},"542":{"tf":2.0},"65":{"tf":1.0},"67":{"tf":1.0},"70":{"tf":1.0},"71":{"tf":1.7320508075688772},"72":{"tf":1.4142135623730951},"73":{"tf":1.4142135623730951},"74":{"tf":1.4142135623730951},"75":{"tf":1.0},"76":{"tf":1.7320508075688772},"77":{"tf":1.7320508075688772},"9":{"tf":1.0}}},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"198":{"tf":1.0}}}}},"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"572":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"df":3,"docs":{"147":{"tf":1.0},"356":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}}}}}},"i":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"292":{"tf":1.0}}}},"c":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"271":{"tf":1.0}}},"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"d":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"271":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"257":{"tf":1.0}}}},"v":{"df":1,"docs":{"268":{"tf":1.0}}}},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":15,"docs":{"122":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.4142135623730951},"209":{"tf":2.23606797749979},"242":{"tf":1.4142135623730951},"245":{"tf":1.7320508075688772},"246":{"tf":1.0},"248":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"338":{"tf":1.0},"341":{"tf":1.7320508075688772},"61":{"tf":1.0},"62":{"tf":1.4142135623730951}}},"df":0,"docs":{},"w":{"df":22,"docs":{"134":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.7320508075688772},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"342":{"tf":1.0},"360":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"423":{"tf":2.0},"436":{"tf":1.0},"470":{"tf":1.4142135623730951},"521":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":7,"docs":{"154":{"tf":1.4142135623730951},"200":{"tf":1.0},"361":{"tf":1.0},"389":{"tf":1.0},"487":{"tf":1.0},"538":{"tf":1.0},"73":{"tf":1.0}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":27,"docs":{"120":{"tf":1.0},"174":{"tf":1.0},"177":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.0},"205":{"tf":1.0},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"235":{"tf":1.0},"258":{"tf":1.0},"264":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"29":{"tf":1.0},"317":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.4142135623730951},"408":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.4142135623730951},"456":{"tf":1.4142135623730951},"475":{"tf":1.7320508075688772},"498":{"tf":1.4142135623730951},"515":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"89":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"34":{"tf":1.0}}}}},"df":0,"docs":{},"n":{"df":43,"docs":{"158":{"tf":1.0},"16":{"tf":1.4142135623730951},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"25":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.4142135623730951},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.7320508075688772},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.4142135623730951},"498":{"tf":1.0},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"539":{"tf":1.7320508075688772},"55":{"tf":1.0},"561":{"tf":1.0},"579":{"tf":1.0},"82":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":8,"docs":{"192":{"tf":1.0},"21":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"3":{"tf":1.0},"311":{"tf":1.0},"375":{"tf":1.0},"61":{"tf":1.0}}}}}}}},"w":{"a":{"df":0,"docs":{},"y":{"df":40,"docs":{"10":{"tf":1.0},"139":{"tf":1.0},"156":{"tf":2.0},"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.0},"169":{"tf":1.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"211":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.4142135623730951},"350":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"389":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"418":{"tf":1.0},"42":{"tf":1.0},"504":{"tf":1.0},"52":{"tf":1.0},"538":{"tf":1.0},"76":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"z":{"df":2,"docs":{"53":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"212":{"tf":1.0}}}}}},"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"385":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"487":{"tf":1.0},"59":{"tf":1.0}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":1,"docs":{"130":{"tf":1.0}}}}}}}}}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"'":{"df":2,"docs":{"125":{"tf":1.0},"129":{"tf":1.4142135623730951}}},"df":3,"docs":{"125":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0}}}}}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":7,"docs":{"231":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.0},"394":{"tf":1.0},"470":{"tf":1.0},"513":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"16":{"tf":1.0}}}}},"n":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":2,"docs":{"251":{"tf":1.0},"61":{"tf":1.7320508075688772}},"u":{"df":1,"docs":{"372":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":4,"docs":{"271":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"538":{"tf":1.0}}}},"z":{"df":1,"docs":{"380":{"tf":1.7320508075688772}}}}}},"d":{"/":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"341":{"tf":1.0},"380":{"tf":1.0},"412":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"218":{"tf":1.0}}}},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":8,"docs":{"156":{"tf":1.0},"298":{"tf":1.7320508075688772},"299":{"tf":1.0},"300":{"tf":1.0},"301":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0}}}}},"l":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"189":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":6,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"380":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"502":{"tf":2.0}}},"u":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"357":{"tf":1.0},"486":{"tf":1.0}}},"df":0,"docs":{}}},"y":{"df":5,"docs":{"198":{"tf":1.0},"256":{"tf":1.0},"312":{"tf":1.0},"401":{"tf":1.0},"521":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{"df":0,"docs":{},"m":{"df":1,"docs":{"218":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"h":{"df":30,"docs":{"156":{"tf":1.0},"201":{"tf":1.0},"218":{"tf":1.0},"241":{"tf":1.4142135623730951},"246":{"tf":1.0},"252":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"272":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.4142135623730951},"300":{"tf":1.0},"313":{"tf":1.0},"318":{"tf":1.0},"325":{"tf":1.0},"336":{"tf":1.0},"344":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"437":{"tf":1.4142135623730951},"464":{"tf":1.4142135623730951},"475":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"511":{"tf":1.0},"59":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":42,"docs":{"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"22":{"tf":1.4142135623730951},"220":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.4142135623730951},"275":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.4142135623730951},"306":{"tf":1.0},"335":{"tf":1.0},"342":{"tf":1.0},"346":{"tf":1.0},"363":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"437":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"50":{"tf":1.4142135623730951},"501":{"tf":1.0},"502":{"tf":1.0},"519":{"tf":1.0},"534":{"tf":1.0},"537":{"tf":1.0},"57":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":2,"docs":{"380":{"tf":1.0},"417":{"tf":1.0}}}}},"df":0,"docs":{}}},"y":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"408":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"156":{"tf":1.0},"258":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"558":{"tf":1.0},"89":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":26,"docs":{"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"244":{"tf":1.0},"245":{"tf":1.0},"25":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.4142135623730951},"41":{"tf":2.0},"421":{"tf":1.0},"497":{"tf":1.4142135623730951},"510":{"tf":1.4142135623730951},"511":{"tf":1.4142135623730951},"512":{"tf":1.4142135623730951},"513":{"tf":1.4142135623730951},"528":{"tf":1.4142135623730951},"529":{"tf":1.4142135623730951},"530":{"tf":1.4142135623730951},"531":{"tf":1.4142135623730951},"538":{"tf":1.0},"542":{"tf":1.4142135623730951},"543":{"tf":1.4142135623730951},"544":{"tf":1.4142135623730951},"545":{"tf":1.4142135623730951},"558":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"217":{"tf":1.0}}}}},"w":{"a":{"df":0,"docs":{},"y":{"df":4,"docs":{"309":{"tf":1.0},"359":{"tf":1.0},"389":{"tf":1.0},"503":{"tf":1.0}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"125":{"tf":1.0},"209":{"tf":1.0},"423":{"tf":1.0},"448":{"tf":1.0}}}}}}}},"p":{"a":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"5":{"tf":1.4142135623730951},"6":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":49,"docs":{"156":{"tf":1.7320508075688772},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"224":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.4142135623730951},"258":{"tf":1.0},"294":{"tf":1.4142135623730951},"296":{"tf":1.0},"300":{"tf":1.4142135623730951},"309":{"tf":1.0},"321":{"tf":3.0},"323":{"tf":1.4142135623730951},"324":{"tf":1.0},"336":{"tf":2.23606797749979},"338":{"tf":1.0},"342":{"tf":1.0},"349":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"423":{"tf":1.0},"454":{"tf":1.7320508075688772},"455":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.4142135623730951},"458":{"tf":1.0},"459":{"tf":1.0},"460":{"tf":1.0},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":2.0},"504":{"tf":1.4142135623730951},"507":{"tf":1.0},"508":{"tf":1.7320508075688772},"511":{"tf":1.0},"513":{"tf":1.0},"515":{"tf":1.0},"522":{"tf":1.4142135623730951},"526":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"535":{"tf":1.0},"599":{"tf":1.0}}},"p":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"268":{"tf":1.0},"372":{"tf":1.0}}}},"df":7,"docs":{"188":{"tf":1.0},"189":{"tf":1.4142135623730951},"190":{"tf":1.0},"201":{"tf":1.0},"336":{"tf":2.8284271247461903},"419":{"tf":1.0},"599":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"r":{"df":9,"docs":{"156":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.4142135623730951},"347":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"417":{"tf":1.0},"440":{"tf":4.242640687119285}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"195":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"df":1,"docs":{"192":{"tf":1.0}},"i":{"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":29,"docs":{"110":{"tf":1.7320508075688772},"111":{"tf":1.0},"116":{"tf":1.0},"118":{"tf":1.0},"127":{"tf":1.0},"132":{"tf":1.7320508075688772},"133":{"tf":1.0},"134":{"tf":1.0},"135":{"tf":1.0},"136":{"tf":2.449489742783178},"137":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.4142135623730951},"140":{"tf":1.0},"145":{"tf":1.0},"179":{"tf":1.0},"195":{"tf":1.4142135623730951},"209":{"tf":1.0},"230":{"tf":1.0},"244":{"tf":1.4142135623730951},"284":{"tf":2.0},"336":{"tf":4.123105625617661},"356":{"tf":1.0},"357":{"tf":1.4142135623730951},"456":{"tf":1.0},"470":{"tf":1.0},"496":{"tf":1.0},"503":{"tf":1.0},"57":{"tf":1.0}}},"df":11,"docs":{"156":{"tf":1.0},"183":{"tf":1.0},"237":{"tf":1.0},"307":{"tf":1.0},"312":{"tf":1.0},"32":{"tf":1.4142135623730951},"360":{"tf":1.0},"367":{"tf":1.0},"480":{"tf":1.0},"522":{"tf":1.4142135623730951},"565":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":2,"docs":{"110":{"tf":1.0},"383":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"a":{"c":{"df":0,"docs":{},"h":{"df":13,"docs":{"276":{"tf":1.7320508075688772},"292":{"tf":1.0},"341":{"tf":1.0},"361":{"tf":1.0},"37":{"tf":1.4142135623730951},"389":{"tf":1.0},"392":{"tf":1.0},"440":{"tf":1.0},"463":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":12,"docs":{"17":{"tf":1.0},"217":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"3":{"tf":1.0},"41":{"tf":1.4142135623730951},"470":{"tf":1.0},"51":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"558":{"tf":1.0}}}}},"v":{"df":2,"docs":{"16":{"tf":1.0},"17":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"15":{"tf":1.0}}}}}},"r":{"3":{"7":{"df":1,"docs":{"602":{"tf":1.0}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"205":{"tf":1.0},"34":{"tf":1.7320508075688772},"341":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}}},"c":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"<":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"268":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"328":{"tf":1.7320508075688772}}}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"328":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":4,"docs":{"328":{"tf":1.0},"394":{"tf":1.0},"470":{"tf":1.4142135623730951},"539":{"tf":2.0}},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":7,"docs":{"278":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"431":{"tf":1.0},"433":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":6,"docs":{"258":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"487":{"tf":1.0},"496":{"tf":1.0},"65":{"tf":1.0}}},"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":10,"docs":{"217":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"310":{"tf":1.0},"317":{"tf":1.0},"341":{"tf":1.4142135623730951},"460":{"tf":1.0},"503":{"tf":1.0},"552":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":3,"docs":{"230":{"tf":1.4142135623730951},"231":{"tf":1.0},"232":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"g":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"c":{"=":{"1":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"217":{"tf":1.0},"245":{"tf":1.0},"292":{"tf":1.0},"573":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"0":{")":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{")":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"u":{"df":2,"docs":{"278":{"tf":1.0},"456":{"tf":1.0}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"294":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"538":{"tf":1.0},"581":{"tf":1.4142135623730951}}}}}}},"v":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"c":{"8":{"8":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"s":{"df":8,"docs":{"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"42":{"tf":1.0},"543":{"tf":1.0},"573":{"tf":1.0},"81":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"252":{"tf":1.0}}}}}},"m":{"7":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"d":{"df":29,"docs":{"112":{"tf":1.0},"130":{"tf":1.0},"153":{"tf":1.0},"200":{"tf":1.0},"205":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"259":{"tf":1.0},"276":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"311":{"tf":1.0},"336":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.7320508075688772},"394":{"tf":1.0},"421":{"tf":1.0},"433":{"tf":1.0},"458":{"tf":1.0},"486":{"tf":1.0},"502":{"tf":1.0},"544":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.7320508075688772},"73":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":3,"docs":{"232":{"tf":1.0},"276":{"tf":1.0},"397":{"tf":1.0}}}},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}}}},"t":{"df":2,"docs":{"209":{"tf":1.0},"410":{"tf":1.0}},"i":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"457":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"358":{"tf":1.0}}},"df":0,"docs":{}},"k":{"df":82,"docs":{"100":{"tf":1.4142135623730951},"109":{"tf":1.4142135623730951},"113":{"tf":1.0},"117":{"tf":1.4142135623730951},"126":{"tf":1.4142135623730951},"135":{"tf":1.4142135623730951},"144":{"tf":1.4142135623730951},"154":{"tf":1.4142135623730951},"160":{"tf":1.4142135623730951},"169":{"tf":1.0},"170":{"tf":1.4142135623730951},"178":{"tf":1.0},"180":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"198":{"tf":1.0},"200":{"tf":1.0},"202":{"tf":1.4142135623730951},"209":{"tf":2.0},"210":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"222":{"tf":1.4142135623730951},"236":{"tf":1.4142135623730951},"247":{"tf":1.4142135623730951},"260":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"269":{"tf":1.4142135623730951},"27":{"tf":1.0},"277":{"tf":1.4142135623730951},"284":{"tf":1.0},"285":{"tf":1.4142135623730951},"293":{"tf":1.4142135623730951},"30":{"tf":1.4142135623730951},"300":{"tf":1.7320508075688772},"301":{"tf":1.4142135623730951},"314":{"tf":1.4142135623730951},"328":{"tf":1.0},"329":{"tf":1.4142135623730951},"337":{"tf":1.4142135623730951},"340":{"tf":1.0},"348":{"tf":1.4142135623730951},"362":{"tf":1.4142135623730951},"370":{"tf":1.0},"371":{"tf":1.4142135623730951},"381":{"tf":1.4142135623730951},"385":{"tf":1.0},"390":{"tf":1.4142135623730951},"398":{"tf":1.4142135623730951},"409":{"tf":1.4142135623730951},"42":{"tf":1.4142135623730951},"424":{"tf":1.4142135623730951},"43":{"tf":1.4142135623730951},"432":{"tf":1.4142135623730951},"441":{"tf":1.4142135623730951},"448":{"tf":1.0},"449":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.4142135623730951},"47":{"tf":1.0},"470":{"tf":1.0},"471":{"tf":1.4142135623730951},"479":{"tf":1.4142135623730951},"487":{"tf":1.0},"492":{"tf":1.4142135623730951},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.0},"505":{"tf":1.4142135623730951},"51":{"tf":1.0},"524":{"tf":1.4142135623730951},"53":{"tf":1.4142135623730951},"54":{"tf":1.0},"540":{"tf":1.4142135623730951},"556":{"tf":1.0},"582":{"tf":1.4142135623730951},"593":{"tf":1.4142135623730951},"66":{"tf":1.4142135623730951},"75":{"tf":1.4142135623730951},"80":{"tf":1.4142135623730951},"85":{"tf":1.4142135623730951},"90":{"tf":1.4142135623730951}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":6,"docs":{"264":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"349":{"tf":1.4142135623730951},"51":{"tf":1.0},"561":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"40":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"15":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"!":{"(":{"1":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{".":{"0":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":3,"docs":{"469":{"tf":1.4142135623730951},"558":{"tf":2.0},"559":{"tf":1.7320508075688772}},"e":{"df":1,"docs":{"556":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"463":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}},"o":{"c":{"df":0,"docs":{},"i":{"df":4,"docs":{"218":{"tf":1.4142135623730951},"370":{"tf":1.0},"431":{"tf":1.0},"579":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"m":{"df":10,"docs":{"196":{"tf":1.0},"200":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"317":{"tf":1.0},"343":{"tf":1.4142135623730951},"470":{"tf":1.0},"539":{"tf":1.0},"62":{"tf":1.0}},"p":{"df":0,"docs":{},"t":{"df":3,"docs":{"173":{"tf":1.0},"393":{"tf":1.0},"460":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"196":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"n":{"c":{"/":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"370":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":15,"docs":{"195":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.0},"230":{"tf":1.0},"300":{"tf":1.7320508075688772},"332":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.4142135623730951},"418":{"tf":1.0},"426":{"tf":1.0},"61":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":1,"docs":{"370":{"tf":1.0}}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"t":{"d":{":":{":":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"276":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":2,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"df":0,"docs":{},"{":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"276":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"257":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"392":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":2.23606797749979},"211":{"tf":1.0},"221":{"tf":2.23606797749979}}}}},"df":0,"docs":{}}}},"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"558":{"tf":1.0}}}}},"df":0,"docs":{}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{">":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"421":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":279,"docs":{"0":{"tf":1.0},"11":{"tf":2.0},"110":{"tf":1.0},"136":{"tf":1.0},"153":{"tf":1.7320508075688772},"156":{"tf":6.557438524302},"158":{"tf":1.0},"16":{"tf":1.0},"166":{"tf":1.0},"167":{"tf":1.4142135623730951},"169":{"tf":1.0},"173":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"181":{"tf":1.4142135623730951},"186":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"192":{"tf":1.4142135623730951},"194":{"tf":1.0},"195":{"tf":1.4142135623730951},"196":{"tf":2.23606797749979},"197":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951},"203":{"tf":1.4142135623730951},"208":{"tf":1.0},"209":{"tf":3.0},"211":{"tf":2.0},"216":{"tf":1.0},"217":{"tf":3.872983346207417},"218":{"tf":3.0},"219":{"tf":1.7320508075688772},"220":{"tf":1.4142135623730951},"221":{"tf":4.242640687119285},"222":{"tf":1.0},"223":{"tf":1.7320508075688772},"224":{"tf":1.7320508075688772},"225":{"tf":1.0},"226":{"tf":1.0},"228":{"tf":1.0},"23":{"tf":1.7320508075688772},"230":{"tf":1.4142135623730951},"233":{"tf":1.0},"237":{"tf":1.4142135623730951},"239":{"tf":1.4142135623730951},"24":{"tf":1.0},"240":{"tf":1.4142135623730951},"241":{"tf":1.0},"243":{"tf":1.0},"244":{"tf":1.0},"25":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":1.4142135623730951},"255":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":3.3166247903554},"258":{"tf":2.23606797749979},"259":{"tf":3.605551275463989},"260":{"tf":1.0},"261":{"tf":2.23606797749979},"262":{"tf":1.0},"263":{"tf":1.4142135623730951},"264":{"tf":1.0},"265":{"tf":1.4142135623730951},"266":{"tf":1.7320508075688772},"267":{"tf":1.4142135623730951},"268":{"tf":3.3166247903554},"269":{"tf":1.0},"27":{"tf":1.0},"270":{"tf":1.7320508075688772},"271":{"tf":1.0},"272":{"tf":1.4142135623730951},"273":{"tf":1.4142135623730951},"275":{"tf":1.0},"276":{"tf":2.449489742783178},"278":{"tf":1.4142135623730951},"283":{"tf":1.0},"284":{"tf":2.6457513110645907},"288":{"tf":1.0},"289":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":4.242640687119285},"294":{"tf":1.4142135623730951},"299":{"tf":1.0},"3":{"tf":1.4142135623730951},"300":{"tf":3.872983346207417},"305":{"tf":1.7320508075688772},"306":{"tf":1.4142135623730951},"307":{"tf":2.6457513110645907},"308":{"tf":1.4142135623730951},"309":{"tf":2.449489742783178},"310":{"tf":2.23606797749979},"311":{"tf":2.23606797749979},"312":{"tf":1.7320508075688772},"313":{"tf":1.7320508075688772},"314":{"tf":1.0},"315":{"tf":2.449489742783178},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.4142135623730951},"321":{"tf":2.449489742783178},"322":{"tf":1.4142135623730951},"323":{"tf":2.23606797749979},"324":{"tf":2.0},"325":{"tf":1.4142135623730951},"326":{"tf":1.7320508075688772},"327":{"tf":1.4142135623730951},"328":{"tf":2.0},"329":{"tf":1.0},"330":{"tf":2.23606797749979},"331":{"tf":1.4142135623730951},"332":{"tf":1.0},"333":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":2.0},"340":{"tf":1.0},"341":{"tf":2.6457513110645907},"342":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":2.23606797749979},"349":{"tf":1.4142135623730951},"350":{"tf":1.4142135623730951},"354":{"tf":1.7320508075688772},"355":{"tf":1.4142135623730951},"356":{"tf":1.0},"357":{"tf":3.4641016151377544},"358":{"tf":3.1622776601683795},"359":{"tf":1.7320508075688772},"360":{"tf":2.8284271247461903},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":2.6457513110645907},"364":{"tf":1.0},"365":{"tf":2.0},"366":{"tf":1.7320508075688772},"367":{"tf":2.8284271247461903},"368":{"tf":1.7320508075688772},"369":{"tf":1.4142135623730951},"37":{"tf":2.0},"370":{"tf":5.196152422706632},"371":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"374":{"tf":1.0},"375":{"tf":1.7320508075688772},"376":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.7320508075688772},"379":{"tf":1.4142135623730951},"380":{"tf":4.358898943540674},"381":{"tf":1.0},"382":{"tf":1.4142135623730951},"383":{"tf":2.449489742783178},"384":{"tf":1.0},"385":{"tf":1.4142135623730951},"386":{"tf":1.4142135623730951},"387":{"tf":1.7320508075688772},"388":{"tf":1.4142135623730951},"389":{"tf":3.1622776601683795},"390":{"tf":1.0},"391":{"tf":2.449489742783178},"392":{"tf":1.7320508075688772},"393":{"tf":1.4142135623730951},"394":{"tf":1.7320508075688772},"396":{"tf":1.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.4142135623730951},"4":{"tf":1.0},"40":{"tf":1.0},"403":{"tf":1.4142135623730951},"406":{"tf":1.7320508075688772},"407":{"tf":1.4142135623730951},"408":{"tf":2.23606797749979},"409":{"tf":1.0},"410":{"tf":1.0},"411":{"tf":1.0},"412":{"tf":1.0},"413":{"tf":1.0},"414":{"tf":1.4142135623730951},"416":{"tf":1.0},"419":{"tf":1.7320508075688772},"430":{"tf":1.0},"433":{"tf":1.0},"439":{"tf":1.0},"440":{"tf":1.0},"442":{"tf":1.0},"447":{"tf":1.0},"448":{"tf":2.449489742783178},"450":{"tf":1.0},"455":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.4142135623730951},"460":{"tf":1.7320508075688772},"462":{"tf":1.4142135623730951},"467":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":4.0},"472":{"tf":1.0},"475":{"tf":1.4142135623730951},"477":{"tf":1.0},"478":{"tf":1.4142135623730951},"480":{"tf":1.0},"481":{"tf":1.0},"483":{"tf":1.7320508075688772},"487":{"tf":1.0},"490":{"tf":1.7320508075688772},"501":{"tf":1.7320508075688772},"502":{"tf":2.23606797749979},"504":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"510":{"tf":1.0},"512":{"tf":1.0},"519":{"tf":1.7320508075688772},"522":{"tf":3.7416573867739413},"523":{"tf":1.0},"525":{"tf":1.4142135623730951},"526":{"tf":2.0},"528":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"537":{"tf":1.7320508075688772},"538":{"tf":3.0},"541":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.7320508075688772},"545":{"tf":2.23606797749979},"546":{"tf":2.0},"547":{"tf":1.4142135623730951},"548":{"tf":1.7320508075688772},"549":{"tf":1.0},"553":{"tf":1.0},"556":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.0},"561":{"tf":1.0},"564":{"tf":1.4142135623730951},"566":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":1.0},"575":{"tf":2.0},"576":{"tf":1.4142135623730951},"577":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":2.0},"580":{"tf":1.4142135623730951},"581":{"tf":1.4142135623730951},"582":{"tf":1.0},"583":{"tf":1.0},"584":{"tf":1.0},"585":{"tf":1.7320508075688772},"586":{"tf":1.7320508075688772},"590":{"tf":1.7320508075688772},"591":{"tf":1.0},"592":{"tf":1.0},"593":{"tf":1.0},"594":{"tf":1.7320508075688772},"595":{"tf":2.0},"597":{"tf":1.0},"599":{"tf":3.872983346207417},"600":{"tf":1.0},"601":{"tf":1.0},"61":{"tf":3.0},"62":{"tf":1.0},"64":{"tf":1.0},"76":{"tf":1.4142135623730951},"8":{"tf":2.0},"81":{"tf":1.4142135623730951},"86":{"tf":1.4142135623730951},"89":{"tf":1.0},"9":{"tf":1.7320508075688772},"91":{"tf":1.7320508075688772},"92":{"tf":1.0}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":21,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"218":{"tf":1.4142135623730951},"230":{"tf":1.0},"232":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":2.0},"261":{"tf":1.0},"278":{"tf":1.0},"309":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"341":{"tf":1.0},"370":{"tf":1.0},"456":{"tf":1.4142135623730951},"458":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.7320508075688772}},"i":{"df":4,"docs":{"389":{"tf":1.0},"391":{"tf":1.7320508075688772},"393":{"tf":1.0},"394":{"tf":1.4142135623730951}}}}}}},"i":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":2,"docs":{"370":{"tf":1.0},"574":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"574":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"62":{"tf":1.0}},"i":{"c":{"df":0,"docs":{},"u":{"6":{"4":{"df":1,"docs":{"328":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"p":{"df":2,"docs":{"209":{"tf":1.0},"548":{"tf":1.4142135623730951}}}},"t":{"a":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":1,"docs":{"571":{"tf":1.4142135623730951}}},"k":{"df":1,"docs":{"125":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"487":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":14,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"213":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"330":{"tf":1.0},"349":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.0},"469":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"200":{"tf":1.0},"340":{"tf":1.0},"515":{"tf":1.0}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":6,"docs":{"209":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"380":{"tf":1.0},"494":{"tf":1.7320508075688772},"539":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"431":{"tf":1.4142135623730951}}}}},"o":{"df":0,"docs":{},"r":{"'":{"df":4,"docs":{"280":{"tf":1.0},"295":{"tf":1.0},"303":{"tf":1.0},"364":{"tf":1.0}}},"df":15,"docs":{"171":{"tf":1.4142135623730951},"192":{"tf":1.0},"199":{"tf":1.0},"238":{"tf":1.0},"252":{"tf":1.0},"262":{"tf":1.0},"366":{"tf":1.0},"384":{"tf":1.0},"423":{"tf":1.0},"426":{"tf":1.0},"444":{"tf":1.0},"478":{"tf":1.0},"483":{"tf":1.0},"513":{"tf":1.0},"54":{"tf":1.4142135623730951}}}}},"o":{"df":1,"docs":{"347":{"tf":1.4142135623730951}},"m":{"a":{"df":0,"docs":{},"t":{"df":4,"docs":{"178":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0}}}},"df":1,"docs":{"526":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":19,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"111":{"tf":1.0},"147":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.0},"209":{"tf":1.0},"284":{"tf":1.4142135623730951},"318":{"tf":1.0},"336":{"tf":1.0},"394":{"tf":1.0},"403":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0},"82":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"359":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"i":{"d":{"df":13,"docs":{"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"252":{"tf":1.0},"272":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.0},"417":{"tf":1.4142135623730951},"474":{"tf":1.0},"478":{"tf":1.7320508075688772},"513":{"tf":1.0},"564":{"tf":1.0},"62":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":35,"docs":{"156":{"tf":2.0},"169":{"tf":1.7320508075688772},"171":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"195":{"tf":1.4142135623730951},"196":{"tf":1.0},"205":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"268":{"tf":2.23606797749979},"271":{"tf":1.0},"292":{"tf":1.7320508075688772},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"315":{"tf":1.0},"320":{"tf":1.0},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"403":{"tf":1.0},"419":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0},"522":{"tf":1.7320508075688772},"523":{"tf":1.4142135623730951},"526":{"tf":1.0},"539":{"tf":1.4142135623730951},"556":{"tf":1.0},"558":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}},"r":{"d":{"df":8,"docs":{"14":{"tf":1.0},"15":{"tf":1.0},"16":{"tf":1.0},"19":{"tf":2.0},"55":{"tf":1.0},"58":{"tf":2.0},"59":{"tf":2.449489742783178},"60":{"tf":1.4142135623730951}}},"df":8,"docs":{"171":{"tf":1.0},"230":{"tf":1.0},"412":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"584":{"tf":1.7320508075688772},"585":{"tf":1.7320508075688772},"81":{"tf":1.0}}},"y":{"df":4,"docs":{"199":{"tf":1.0},"221":{"tf":1.0},"357":{"tf":1.0},"419":{"tf":1.0}}}},"df":1,"docs":{"599":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"223":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"325":{"tf":1.0}}},"df":0,"docs":{}}}}},"b":{"+":{">":{"5":{"5":{"df":1,"docs":{"448":{"tf":1.0}}},"6":{"df":1,"docs":{"448":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"k":{"df":21,"docs":{"209":{"tf":1.0},"218":{"tf":1.0},"237":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.0},"278":{"tf":1.0},"289":{"tf":1.0},"310":{"tf":1.0},"389":{"tf":1.0},"417":{"tf":1.4142135623730951},"425":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.0},"498":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"539":{"tf":1.4142135623730951},"579":{"tf":1.0},"598":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"178":{"tf":1.0},"230":{"tf":1.0}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":21,"docs":{"127":{"tf":1.0},"164":{"tf":1.0},"214":{"tf":1.0},"248":{"tf":1.0},"28":{"tf":1.0},"280":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.4142135623730951},"300":{"tf":1.0},"316":{"tf":1.0},"336":{"tf":1.4142135623730951},"418":{"tf":1.0},"433":{"tf":1.0},"436":{"tf":1.0},"440":{"tf":1.0},"444":{"tf":1.0},"460":{"tf":1.0},"538":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"237":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":5,"docs":{"284":{"tf":1.0},"397":{"tf":2.23606797749979},"404":{"tf":1.0},"405":{"tf":1.7320508075688772},"539":{"tf":1.0}},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"2":{"5":{":":{"1":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"338":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"d":{"df":5,"docs":{"189":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"397":{"tf":1.4142135623730951}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"603":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"e":{"df":2,"docs":{"460":{"tf":1.0},"53":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"116":{"tf":1.0},"457":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"g":{"df":2,"docs":{"217":{"tf":1.0},"370":{"tf":1.0}}}},"r":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"b":{"a":{"df":0,"docs":{},"r":{"a":{"'":{"df":15,"docs":{"209":{"tf":1.0},"300":{"tf":1.0},"318":{"tf":1.0},"341":{"tf":1.7320508075688772},"342":{"tf":1.0},"344":{"tf":1.4142135623730951},"356":{"tf":1.7320508075688772},"359":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.4142135623730951},"385":{"tf":1.0},"389":{"tf":1.0},"41":{"tf":1.0},"480":{"tf":1.0},"539":{"tf":1.0}}},"df":187,"docs":{"156":{"tf":4.58257569495584},"169":{"tf":1.4142135623730951},"171":{"tf":1.0},"174":{"tf":1.0},"178":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":3.872983346207417},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"221":{"tf":2.449489742783178},"225":{"tf":1.4142135623730951},"226":{"tf":1.0},"240":{"tf":1.0},"245":{"tf":1.7320508075688772},"251":{"tf":1.0},"264":{"tf":1.4142135623730951},"268":{"tf":3.0},"272":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.4142135623730951},"297":{"tf":1.0},"298":{"tf":1.7320508075688772},"299":{"tf":1.0},"300":{"tf":3.4641016151377544},"301":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":2.0},"305":{"tf":2.0},"306":{"tf":1.4142135623730951},"307":{"tf":1.7320508075688772},"308":{"tf":1.4142135623730951},"309":{"tf":1.7320508075688772},"310":{"tf":1.4142135623730951},"311":{"tf":1.4142135623730951},"312":{"tf":1.4142135623730951},"313":{"tf":1.4142135623730951},"314":{"tf":1.4142135623730951},"315":{"tf":1.4142135623730951},"316":{"tf":2.0},"317":{"tf":1.4142135623730951},"318":{"tf":2.23606797749979},"319":{"tf":1.4142135623730951},"320":{"tf":1.7320508075688772},"321":{"tf":2.6457513110645907},"322":{"tf":1.7320508075688772},"323":{"tf":1.4142135623730951},"324":{"tf":2.0},"325":{"tf":1.4142135623730951},"326":{"tf":1.7320508075688772},"327":{"tf":1.0},"328":{"tf":3.1622776601683795},"329":{"tf":1.0},"330":{"tf":1.0},"331":{"tf":1.0},"332":{"tf":1.7320508075688772},"333":{"tf":1.0},"334":{"tf":1.7320508075688772},"335":{"tf":1.0},"336":{"tf":4.47213595499958},"337":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.7320508075688772},"340":{"tf":1.7320508075688772},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.4142135623730951},"345":{"tf":1.7320508075688772},"346":{"tf":1.0},"347":{"tf":3.3166247903554},"348":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.7320508075688772},"353":{"tf":1.0},"354":{"tf":1.7320508075688772},"355":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.7320508075688772},"358":{"tf":1.0},"359":{"tf":1.7320508075688772},"360":{"tf":1.7320508075688772},"361":{"tf":1.4142135623730951},"362":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":2.23606797749979},"367":{"tf":1.4142135623730951},"368":{"tf":1.7320508075688772},"369":{"tf":1.0},"370":{"tf":2.6457513110645907},"371":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"374":{"tf":1.0},"375":{"tf":1.0},"376":{"tf":1.7320508075688772},"377":{"tf":1.0},"378":{"tf":1.7320508075688772},"379":{"tf":1.0},"380":{"tf":4.358898943540674},"381":{"tf":1.0},"382":{"tf":2.0},"383":{"tf":1.4142135623730951},"384":{"tf":1.0},"385":{"tf":1.4142135623730951},"386":{"tf":1.7320508075688772},"387":{"tf":1.7320508075688772},"388":{"tf":1.0},"389":{"tf":3.1622776601683795},"390":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.0},"393":{"tf":2.0},"394":{"tf":1.0},"395":{"tf":1.7320508075688772},"396":{"tf":1.0},"397":{"tf":1.7320508075688772},"398":{"tf":1.0},"399":{"tf":1.0},"400":{"tf":1.0},"401":{"tf":1.7320508075688772},"402":{"tf":1.0},"403":{"tf":1.0},"404":{"tf":1.7320508075688772},"405":{"tf":1.0},"406":{"tf":1.7320508075688772},"407":{"tf":1.0},"408":{"tf":2.23606797749979},"409":{"tf":1.0},"41":{"tf":1.0},"410":{"tf":1.0},"411":{"tf":1.0},"412":{"tf":1.0},"413":{"tf":2.0},"414":{"tf":1.0},"415":{"tf":1.7320508075688772},"416":{"tf":1.0},"417":{"tf":2.449489742783178},"418":{"tf":1.0},"419":{"tf":1.0},"420":{"tf":1.7320508075688772},"421":{"tf":2.6457513110645907},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"424":{"tf":1.0},"425":{"tf":1.4142135623730951},"426":{"tf":1.0},"427":{"tf":2.0},"428":{"tf":1.0},"445":{"tf":1.0},"458":{"tf":1.4142135623730951},"463":{"tf":1.0},"475":{"tf":1.0},"478":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.7320508075688772},"513":{"tf":1.7320508075688772},"525":{"tf":1.0},"531":{"tf":1.7320508075688772},"536":{"tf":1.7320508075688772},"537":{"tf":1.0},"538":{"tf":4.47213595499958},"539":{"tf":2.8284271247461903},"540":{"tf":1.0},"541":{"tf":1.4142135623730951},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":2.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"65":{"tf":1.0},"67":{"tf":1.0},"88":{"tf":1.0},"89":{"tf":2.0},"90":{"tf":1.0},"91":{"tf":1.7320508075688772},"92":{"tf":1.7320508075688772}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":4,"docs":{"380":{"tf":1.0},"504":{"tf":1.0},"576":{"tf":1.0},"578":{"tf":1.4142135623730951}},"e":{"df":1,"docs":{"232":{"tf":1.0}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"572":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"e":{"df":39,"docs":{"15":{"tf":1.0},"154":{"tf":1.7320508075688772},"162":{"tf":1.0},"17":{"tf":1.0},"173":{"tf":1.0},"18":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"24":{"tf":1.0},"250":{"tf":1.0},"268":{"tf":1.4142135623730951},"28":{"tf":1.0},"294":{"tf":1.4142135623730951},"296":{"tf":1.0},"303":{"tf":1.0},"336":{"tf":2.0},"340":{"tf":1.0},"341":{"tf":1.4142135623730951},"364":{"tf":1.0},"38":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"422":{"tf":1.0},"434":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.0},"473":{"tf":1.0},"502":{"tf":1.0},"516":{"tf":1.0},"542":{"tf":1.0},"570":{"tf":1.4142135623730951},"596":{"tf":1.7320508075688772},"62":{"tf":1.4142135623730951},"65":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"393":{"tf":1.0}}}}}},"i":{"c":{"df":13,"docs":{"156":{"tf":2.0},"167":{"tf":1.0},"195":{"tf":1.0},"258":{"tf":1.0},"309":{"tf":1.0},"318":{"tf":1.0},"359":{"tf":1.0},"374":{"tf":1.0},"383":{"tf":1.0},"397":{"tf":1.0},"469":{"tf":1.0},"573":{"tf":1.0},"96":{"tf":1.0}}},"df":1,"docs":{"550":{"tf":1.0}}}}},"df":5,"docs":{"12":{"tf":1.0},"211":{"tf":1.4142135623730951},"217":{"tf":1.0},"421":{"tf":1.7320508075688772},"73":{"tf":1.4142135623730951}},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"414":{"tf":1.0}}},"r":{"df":1,"docs":{"382":{"tf":1.0}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}}}}}}}},"c":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"328":{"tf":1.0},"470":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":12,"docs":{"112":{"tf":1.0},"139":{"tf":1.0},"259":{"tf":1.0},"278":{"tf":1.4142135623730951},"292":{"tf":1.0},"321":{"tf":1.0},"372":{"tf":1.0},"456":{"tf":1.0},"532":{"tf":1.0},"54":{"tf":1.0},"562":{"tf":1.0},"8":{"tf":1.0}}}}},"df":26,"docs":{"127":{"tf":1.0},"130":{"tf":1.0},"189":{"tf":1.0},"209":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"272":{"tf":1.0},"309":{"tf":1.0},"316":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"460":{"tf":1.0},"503":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0},"55":{"tf":1.0},"599":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":32,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"169":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"183":{"tf":1.0},"195":{"tf":1.0},"198":{"tf":1.0},"218":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.0},"359":{"tf":1.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.4142135623730951},"402":{"tf":1.0},"414":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.0},"445":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"502":{"tf":1.4142135623730951},"538":{"tf":1.7320508075688772},"599":{"tf":1.4142135623730951},"61":{"tf":1.0}}}}},"g":{"a":{"df":0,"docs":{},"n":{"df":3,"docs":{"389":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":10,"docs":{"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"235":{"tf":1.0},"284":{"tf":1.7320508075688772},"289":{"tf":1.0},"313":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"380":{"tf":1.0},"458":{"tf":1.0},"599":{"tf":1.0}},"n":{"df":1,"docs":{"363":{"tf":1.0}}}}}},"h":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"300":{"tf":1.0}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"448":{"tf":1.0},"450":{"tf":1.0},"538":{"tf":1.0}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"462":{"tf":1.0}}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":6,"docs":{"134":{"tf":1.0},"240":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"246":{"tf":1.0}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":5,"docs":{"336":{"tf":1.0},"408":{"tf":1.0},"470":{"tf":1.0},"538":{"tf":1.0},"8":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"w":{"df":2,"docs":{"404":{"tf":1.0},"516":{"tf":1.0}}}},"t":{"df":1,"docs":{"457":{"tf":1.0}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}}}},"df":7,"docs":{"209":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.0},"363":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.4142135623730951},"538":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"341":{"tf":1.0}}}},"df":0,"docs":{},"t":{"df":15,"docs":{"259":{"tf":1.0},"278":{"tf":1.0},"41":{"tf":1.0},"427":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"464":{"tf":1.0},"495":{"tf":1.0},"514":{"tf":1.7320508075688772},"532":{"tf":1.7320508075688772},"54":{"tf":1.0},"546":{"tf":2.0},"79":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"499":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"t":{"df":18,"docs":{"110":{"tf":1.0},"156":{"tf":1.4142135623730951},"159":{"tf":1.0},"16":{"tf":1.4142135623730951},"168":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"32":{"tf":1.0},"389":{"tf":1.0},"421":{"tf":1.0},"457":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"48":{"tf":1.0},"486":{"tf":1.0},"491":{"tf":1.0},"55":{"tf":1.0},"59":{"tf":1.0}}}},"t":{"df":1,"docs":{"538":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":33,"docs":{"131":{"tf":1.0},"138":{"tf":1.0},"214":{"tf":1.0},"258":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.4142135623730951},"33":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951},"36":{"tf":1.0},"363":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"423":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.7320508075688772},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"72":{"tf":1.0},"76":{"tf":1.0},"82":{"tf":1.0},"96":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":24,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"278":{"tf":1.0},"311":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"383":{"tf":1.7320508075688772},"391":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.4142135623730951},"456":{"tf":1.0},"469":{"tf":1.4142135623730951},"47":{"tf":1.0},"470":{"tf":1.7320508075688772},"517":{"tf":1.4142135623730951},"535":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":3,"docs":{"209":{"tf":1.0},"573":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}}}},"i":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"463":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"b":{"df":0,"docs":{},"v":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":10,"docs":{"15":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.0},"315":{"tf":1.0},"356":{"tf":1.7320508075688772},"359":{"tf":2.0},"380":{"tf":1.0},"478":{"tf":1.0},"487":{"tf":2.0},"599":{"tf":1.0}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"161":{"tf":1.0},"28":{"tf":1.0},"302":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"573":{"tf":1.0}}},"df":0,"docs":{}}}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"139":{"tf":1.0}}}}}}},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"313":{"tf":1.0},"370":{"tf":1.0},"448":{"tf":1.0}}}}},"d":{"(":{"1":{"5":{"0":{"_":{"df":0,"docs":{},"i":{"6":{"4":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"456":{"tf":1.0}}}}}},"df":0,"docs":{}},"t":{"df":28,"docs":{"178":{"tf":1.0},"18":{"tf":1.0},"190":{"tf":1.4142135623730951},"217":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.0},"3":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"358":{"tf":1.4142135623730951},"359":{"tf":1.7320508075688772},"363":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":1.4142135623730951},"375":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.0},"513":{"tf":1.0},"539":{"tf":1.0},"552":{"tf":1.0},"561":{"tf":1.0},"599":{"tf":1.7320508075688772},"82":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"174":{"tf":1.0},"259":{"tf":1.7320508075688772}}}}}}},"l":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"300":{"tf":1.0},"380":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"361":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}}},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":2,"docs":{"347":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"n":{"(":{"d":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"309":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"o":{">":{"(":{"df":0,"docs":{},"f":{"df":1,"docs":{"309":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":11,"docs":{"218":{"tf":1.0},"308":{"tf":1.7320508075688772},"309":{"tf":2.0},"310":{"tf":1.0},"313":{"tf":1.0},"318":{"tf":1.7320508075688772},"320":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.0},"325":{"tf":2.6457513110645907},"478":{"tf":1.0}}}}},"df":39,"docs":{"110":{"tf":1.0},"156":{"tf":1.7320508075688772},"189":{"tf":1.0},"190":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":2.23606797749979},"270":{"tf":1.7320508075688772},"271":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.7320508075688772},"300":{"tf":1.0},"309":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"323":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.7320508075688772},"350":{"tf":1.0},"360":{"tf":1.4142135623730951},"365":{"tf":2.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"385":{"tf":1.0},"399":{"tf":1.0},"408":{"tf":1.0},"412":{"tf":1.0},"422":{"tf":1.0},"448":{"tf":1.4142135623730951},"456":{"tf":2.0},"470":{"tf":1.4142135623730951},"522":{"tf":1.4142135623730951},"526":{"tf":1.0},"538":{"tf":2.6457513110645907},"539":{"tf":1.0},"558":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"<":{"c":{"df":1,"docs":{"470":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"df":23,"docs":{"162":{"tf":1.0},"192":{"tf":1.0},"199":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"276":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"319":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.4142135623730951},"36":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"365":{"tf":2.0},"367":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"486":{"tf":1.0},"599":{"tf":2.0},"60":{"tf":1.0},"9":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"258":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"560":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"e":{"df":1,"docs":{"218":{"tf":1.0}}}}},"o":{"a":{"df":0,"docs":{},"r":{"d":{"df":5,"docs":{"245":{"tf":1.0},"460":{"tf":1.0},"557":{"tf":1.7320508075688772},"558":{"tf":1.4142135623730951},"559":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"357":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":5,"docs":{"195":{"tf":1.7320508075688772},"201":{"tf":1.0},"258":{"tf":1.4142135623730951},"292":{"tf":2.8284271247461903},"523":{"tf":1.4142135623730951}}},"y":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"195":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"258":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"232":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"k":{"/":{"0":{"7":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"s":{"/":{"0":{"3":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"_":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":1,"docs":{"271":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":11,"docs":{"268":{"tf":1.0},"358":{"tf":2.0},"360":{"tf":1.4142135623730951},"365":{"tf":1.0},"370":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.7320508075688772},"483":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"599":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"284":{"tf":1.0},"380":{"tf":1.0}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"389":{"tf":1.0},"394":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":21,"docs":{"156":{"tf":1.0},"189":{"tf":1.0},"217":{"tf":3.4641016151377544},"218":{"tf":2.6457513110645907},"294":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.4142135623730951},"415":{"tf":1.7320508075688772},"416":{"tf":1.0},"417":{"tf":4.47213595499958},"418":{"tf":2.23606797749979},"419":{"tf":3.605551275463989},"420":{"tf":1.0},"421":{"tf":3.0},"422":{"tf":2.23606797749979},"423":{"tf":1.7320508075688772},"424":{"tf":1.0},"425":{"tf":1.4142135623730951},"426":{"tf":1.0},"427":{"tf":1.4142135623730951},"428":{"tf":1.4142135623730951}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"235":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"h":{"df":17,"docs":{"1":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"209":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"418":{"tf":1.0},"470":{"tf":1.0},"544":{"tf":1.4142135623730951},"55":{"tf":1.0},"57":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"389":{"tf":1.0}}}},"df":0,"docs":{}}}}},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"538":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"d":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"472":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"268":{"tf":1.0}}}}},"df":11,"docs":{"198":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.4142135623730951},"475":{"tf":1.0},"538":{"tf":1.7320508075688772},"564":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"x":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":2,"docs":{"156":{"tf":1.0},"380":{"tf":1.4142135623730951}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":4,"docs":{"156":{"tf":1.0},"221":{"tf":1.0},"370":{"tf":1.0},"375":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}}}}}},"df":5,"docs":{"156":{"tf":1.0},"246":{"tf":1.0},"251":{"tf":1.0},"380":{"tf":1.4142135623730951},"572":{"tf":1.0}}}}}},"df":0,"docs":{}},"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":8,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"292":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"448":{"tf":1.4142135623730951},"502":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"211":{"tf":1.0}}}},"df":16,"docs":{"156":{"tf":1.0},"209":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.4142135623730951},"265":{"tf":1.0},"292":{"tf":1.7320508075688772},"370":{"tf":2.0},"380":{"tf":2.23606797749979},"397":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.4142135623730951},"515":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":2.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"<":{"'":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"y":{"df":1,"docs":{"300":{"tf":1.0}}}},"r":{"a":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"300":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":46,"docs":{"15":{"tf":2.23606797749979},"158":{"tf":1.0},"16":{"tf":2.449489742783178},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"46":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"486":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"55":{"tf":1.0},"58":{"tf":1.0},"59":{"tf":1.0},"60":{"tf":1.0}}}}}}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"200":{"tf":2.0},"276":{"tf":1.0},"336":{"tf":1.0}}}},"d":{"df":1,"docs":{"389":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"602":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"53":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"df":10,"docs":{"171":{"tf":1.0},"223":{"tf":1.0},"328":{"tf":1.7320508075688772},"380":{"tf":1.0},"421":{"tf":1.4142135623730951},"448":{"tf":1.0},"450":{"tf":1.4142135623730951},"451":{"tf":1.0},"470":{"tf":1.0},"552":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"341":{"tf":1.4142135623730951}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"404":{"tf":1.0},"448":{"tf":2.0},"450":{"tf":1.0},"453":{"tf":1.0}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"268":{"tf":1.0},"370":{"tf":1.0}}}}},"df":0,"docs":{}},"i":{"d":{"df":0,"docs":{},"g":{"df":25,"docs":{"156":{"tf":1.4142135623730951},"300":{"tf":1.0},"305":{"tf":1.7320508075688772},"306":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.4142135623730951},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"325":{"tf":1.0},"456":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"359":{"tf":1.0},"503":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"179":{"tf":1.0},"358":{"tf":1.0},"503":{"tf":1.0}}}}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"394":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"g":{"df":16,"docs":{"156":{"tf":1.0},"268":{"tf":1.0},"382":{"tf":1.0},"41":{"tf":2.0},"410":{"tf":1.0},"427":{"tf":1.0},"433":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.0},"62":{"tf":1.0},"64":{"tf":1.0},"77":{"tf":1.4142135623730951},"82":{"tf":1.4142135623730951},"87":{"tf":1.4142135623730951},"9":{"tf":1.0},"92":{"tf":1.4142135623730951}}}}},"o":{"a":{"d":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"279":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"258":{"tf":1.0},"261":{"tf":1.0}}}}},"df":0,"docs":{}},"c":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"s":{"df":3,"docs":{"16":{"tf":1.0},"25":{"tf":1.0},"397":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"217":{"tf":1.0},"542":{"tf":1.0},"62":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"336":{"tf":1.0}}}},"t":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}},"u":{"b":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"565":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"418":{"tf":1.0}}},"df":0,"docs":{}}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"418":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":2,"docs":{"370":{"tf":1.0},"418":{"tf":2.23606797749979}},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"347":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"d":{"(":{"3":{"2":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":4,"docs":{"195":{"tf":2.0},"209":{"tf":1.0},"336":{"tf":2.449489742783178},"418":{"tf":1.7320508075688772}},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"g":{"df":26,"docs":{"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"168":{"tf":1.4142135623730951},"173":{"tf":1.0},"182":{"tf":1.0},"2":{"tf":1.0},"200":{"tf":1.0},"237":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"347":{"tf":1.0},"397":{"tf":2.0},"417":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.4142135623730951},"434":{"tf":1.0},"456":{"tf":1.0},"46":{"tf":1.0},"556":{"tf":2.449489742783178},"557":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.0}}},"i":{"df":0,"docs":{},"l":{"d":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"110":{"tf":1.0}}}},"df":40,"docs":{"11":{"tf":1.0},"110":{"tf":1.4142135623730951},"130":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":2.23606797749979},"195":{"tf":1.0},"221":{"tf":1.0},"240":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"312":{"tf":1.0},"326":{"tf":1.7320508075688772},"327":{"tf":1.0},"328":{"tf":1.7320508075688772},"329":{"tf":1.0},"330":{"tf":1.7320508075688772},"331":{"tf":1.0},"332":{"tf":1.0},"333":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.4142135623730951},"383":{"tf":1.0},"389":{"tf":1.0},"458":{"tf":1.0},"466":{"tf":1.7320508075688772},"467":{"tf":1.0},"468":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.4142135623730951},"474":{"tf":1.0},"475":{"tf":1.0},"486":{"tf":1.0},"597":{"tf":1.0},"72":{"tf":1.0},"8":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"df":17,"docs":{"103":{"tf":1.4142135623730951},"108":{"tf":1.0},"11":{"tf":1.0},"112":{"tf":1.4142135623730951},"120":{"tf":1.4142135623730951},"129":{"tf":1.4142135623730951},"138":{"tf":1.4142135623730951},"147":{"tf":1.4142135623730951},"195":{"tf":1.0},"211":{"tf":1.0},"276":{"tf":1.0},"307":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"323":{"tf":1.0},"599":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"198":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"481":{"tf":1.0},"517":{"tf":1.0}}}},"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":5,"docs":{"171":{"tf":1.0},"191":{"tf":1.0},"349":{"tf":1.0},"76":{"tf":1.0},"81":{"tf":1.0}}}}},"df":0,"docs":{},"n":{"df":1,"docs":{"156":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"df":5,"docs":{"130":{"tf":1.0},"139":{"tf":1.4142135623730951},"292":{"tf":1.0},"347":{"tf":1.4142135623730951},"52":{"tf":1.0}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"188":{"tf":1.0},"336":{"tf":1.0},"453":{"tf":1.0},"503":{"tf":1.0}}}}}},"y":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"z":{"df":0,"docs":{},"z":{"df":1,"docs":{"538":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"328":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"e":{"df":5,"docs":{"195":{"tf":1.0},"209":{"tf":1.4142135623730951},"245":{"tf":1.0},"336":{"tf":2.0},"347":{"tf":1.4142135623730951}}}}}},"c":{"+":{"+":{"2":{"0":{"'":{"df":1,"docs":{"347":{"tf":1.0}}},"df":1,"docs":{"347":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"/":{"c":{"df":4,"docs":{"259":{"tf":1.0},"460":{"tf":1.0},"474":{"tf":1.0},"65":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"h":{"df":11,"docs":{"156":{"tf":1.0},"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":2.23606797749979},"168":{"tf":1.4142135623730951},"169":{"tf":2.449489742783178},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0}}}},"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"189":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"555":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}},"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"c":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":11,"docs":{"292":{"tf":1.0},"294":{"tf":2.0},"296":{"tf":1.0},"300":{"tf":1.0},"324":{"tf":1.0},"336":{"tf":4.795831523312719},"341":{"tf":1.0},"344":{"tf":1.4142135623730951},"418":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":51,"docs":{"150":{"tf":1.4142135623730951},"167":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":2.23606797749979},"209":{"tf":2.8284271247461903},"217":{"tf":2.6457513110645907},"218":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":2.0},"268":{"tf":1.7320508075688772},"276":{"tf":2.6457513110645907},"284":{"tf":1.0},"300":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.4142135623730951},"320":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":3.4641016151377544},"341":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.8284271247461903},"389":{"tf":1.0},"391":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"417":{"tf":3.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.4142135623730951},"457":{"tf":2.0},"470":{"tf":1.0},"478":{"tf":1.0},"487":{"tf":1.0},"502":{"tf":1.7320508075688772},"503":{"tf":1.0},"54":{"tf":1.0},"578":{"tf":1.0},"61":{"tf":1.0}},"e":{"df":1,"docs":{"349":{"tf":1.0}},"r":{"df":5,"docs":{"217":{"tf":1.0},"336":{"tf":1.0},"349":{"tf":1.0},"403":{"tf":1.0},"573":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"419":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"m":{"df":0,"docs":{},"e":{"df":5,"docs":{"130":{"tf":1.0},"241":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"404":{"tf":1.0},"470":{"tf":1.0}},"r":{"a":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"457":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"457":{"tf":1.0}}}}}},"df":4,"docs":{"456":{"tf":2.449489742783178},"457":{"tf":2.0},"458":{"tf":2.449489742783178},"462":{"tf":1.0}}},"df":0,"docs":{}}}},"n":{"'":{"df":0,"docs":{},"t":{"df":21,"docs":{"156":{"tf":1.4142135623730951},"178":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.4142135623730951},"292":{"tf":1.7320508075688772},"307":{"tf":1.0},"312":{"tf":1.0},"315":{"tf":1.0},"322":{"tf":1.0},"370":{"tf":1.4142135623730951},"397":{"tf":1.0},"408":{"tf":1.0},"534":{"tf":1.0},"54":{"tf":1.0},"578":{"tf":1.0},"59":{"tf":1.4142135623730951}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":6,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"178":{"tf":1.7320508075688772},"181":{"tf":1.0},"341":{"tf":1.0},"349":{"tf":1.4142135623730951}}}}},"d":{"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"245":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"a":{"b":{"df":0,"docs":{},"l":{"df":7,"docs":{"110":{"tf":1.4142135623730951},"292":{"tf":1.0},"338":{"tf":1.4142135623730951},"456":{"tf":1.0},"503":{"tf":1.0},"507":{"tf":1.0},"515":{"tf":1.0}}}},"c":{"df":2,"docs":{"538":{"tf":1.7320508075688772},"539":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":2,"docs":{"15":{"tf":1.0},"389":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"539":{"tf":1.0}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":4,"docs":{"218":{"tf":1.4142135623730951},"560":{"tf":1.0},"561":{"tf":1.7320508075688772},"581":{"tf":1.4142135623730951}}}}}},"r":{"df":0,"docs":{},"e":{"df":11,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.0},"198":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.0},"417":{"tf":1.4142135623730951},"456":{"tf":1.0},"515":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"276":{"tf":1.0}}}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":14,"docs":{"156":{"tf":1.0},"218":{"tf":1.0},"328":{"tf":1.0},"334":{"tf":1.7320508075688772},"335":{"tf":1.0},"336":{"tf":1.0},"337":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0}}}}}}}},"g":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":3,"docs":{"221":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.0}}}}}}},"df":6,"docs":{"110":{"tf":1.0},"422":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.4142135623730951},"523":{"tf":1.0},"82":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":40,"docs":{"154":{"tf":1.0},"164":{"tf":1.0},"178":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.7320508075688772},"261":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.4142135623730951},"320":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.4142135623730951},"417":{"tf":1.0},"423":{"tf":1.4142135623730951},"451":{"tf":1.0},"462":{"tf":1.0},"516":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"561":{"tf":1.0},"564":{"tf":1.4142135623730951},"57":{"tf":1.0},"572":{"tf":1.0},"580":{"tf":1.4142135623730951},"581":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.7320508075688772},"62":{"tf":1.0},"96":{"tf":1.0}}},"t":{"df":32,"docs":{"352":{"tf":1.0},"63":{"tf":1.7320508075688772},"64":{"tf":1.0},"65":{"tf":1.0},"66":{"tf":1.0},"67":{"tf":1.0},"68":{"tf":1.0},"69":{"tf":1.0},"70":{"tf":1.7320508075688772},"71":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"75":{"tf":1.0},"76":{"tf":1.0},"77":{"tf":1.0},"78":{"tf":1.7320508075688772},"79":{"tf":1.0},"80":{"tf":1.0},"81":{"tf":1.0},"82":{"tf":1.0},"83":{"tf":1.7320508075688772},"84":{"tf":1.0},"85":{"tf":1.0},"86":{"tf":1.0},"87":{"tf":1.0},"88":{"tf":1.7320508075688772},"89":{"tf":1.0},"9":{"tf":1.0},"90":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"200":{"tf":1.0},"25":{"tf":1.0},"322":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"558":{"tf":1.0}},"i":{"df":3,"docs":{"16":{"tf":1.0},"19":{"tf":1.4142135623730951},"59":{"tf":2.0}}}}}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}}},"s":{"df":17,"docs":{"171":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"271":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.0},"349":{"tf":1.0},"417":{"tf":1.4142135623730951},"469":{"tf":1.0},"481":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}},"s":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"349":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":51,"docs":{"12":{"tf":1.0},"127":{"tf":1.0},"156":{"tf":2.8284271247461903},"206":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":2.23606797749979},"214":{"tf":2.0},"245":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.0},"258":{"tf":2.0},"259":{"tf":2.0},"263":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"345":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.4142135623730951},"348":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"380":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"414":{"tf":1.0},"431":{"tf":1.0},"435":{"tf":1.0},"440":{"tf":1.4142135623730951},"454":{"tf":1.7320508075688772},"455":{"tf":1.0},"456":{"tf":2.23606797749979},"457":{"tf":3.0},"458":{"tf":1.4142135623730951},"459":{"tf":1.0},"460":{"tf":2.0},"461":{"tf":1.0},"462":{"tf":2.449489742783178},"463":{"tf":1.7320508075688772},"464":{"tf":1.0},"465":{"tf":1.0},"521":{"tf":1.4142135623730951},"74":{"tf":1.4142135623730951},"76":{"tf":1.0},"79":{"tf":2.0},"81":{"tf":1.4142135623730951},"82":{"tf":1.4142135623730951},"9":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"r":{"df":2,"docs":{"357":{"tf":1.0},"558":{"tf":1.0}}}},"df":0,"docs":{}},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":2.0}}}}}},"df":15,"docs":{"415":{"tf":1.7320508075688772},"416":{"tf":1.0},"417":{"tf":3.4641016151377544},"418":{"tf":1.0},"419":{"tf":1.0},"420":{"tf":1.0},"421":{"tf":3.1622776601683795},"422":{"tf":1.7320508075688772},"423":{"tf":2.8284271247461903},"424":{"tf":1.0},"425":{"tf":1.4142135623730951},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.4142135623730951},"565":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"125":{"tf":1.4142135623730951}}}},"r":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"10":{"tf":1.0},"129":{"tf":1.0},"504":{"tf":1.0},"530":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":12,"docs":{"125":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"259":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"349":{"tf":1.0},"367":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.0},"504":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"338":{"tf":1.0},"546":{"tf":1.0},"598":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"f":{"d":{"df":2,"docs":{"469":{"tf":1.0},"470":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"188":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"h":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"389":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"n":{"df":5,"docs":{"313":{"tf":1.0},"315":{"tf":1.0},"380":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.0}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":51,"docs":{"153":{"tf":1.0},"156":{"tf":1.7320508075688772},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"278":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"317":{"tf":1.0},"321":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"355":{"tf":1.0},"356":{"tf":1.0},"369":{"tf":1.0},"370":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"561":{"tf":1.0},"584":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}}},"n":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"df":5,"docs":{"330":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"475":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":34,"docs":{"11":{"tf":1.0},"152":{"tf":1.0},"171":{"tf":1.0},"18":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.4142135623730951},"233":{"tf":1.0},"257":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"313":{"tf":1.0},"328":{"tf":1.7320508075688772},"338":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.7320508075688772},"456":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"485":{"tf":1.0},"487":{"tf":1.4142135623730951},"503":{"tf":1.4142135623730951},"507":{"tf":1.0},"516":{"tf":1.0},"522":{"tf":1.0},"526":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0},"545":{"tf":1.0},"62":{"tf":1.0}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"'":{"df":1,"docs":{"538":{"tf":1.0}}},"(":{"1":{"0":{"0":{"df":1,"docs":{"448":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"d":{":":{":":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":10,"docs":{"169":{"tf":1.7320508075688772},"276":{"tf":1.0},"279":{"tf":1.0},"370":{"tf":1.4142135623730951},"394":{"tf":1.0},"408":{"tf":1.7320508075688772},"538":{"tf":3.605551275463989},"539":{"tf":3.0},"585":{"tf":1.7320508075688772},"599":{"tf":1.4142135623730951}}}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"268":{"tf":1.0},"358":{"tf":1.0},"522":{"tf":1.0}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":79,"docs":{"153":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.4142135623730951},"174":{"tf":1.4142135623730951},"184":{"tf":1.4142135623730951},"192":{"tf":1.7320508075688772},"206":{"tf":1.7320508075688772},"214":{"tf":1.4142135623730951},"218":{"tf":1.0},"226":{"tf":1.4142135623730951},"240":{"tf":1.4142135623730951},"251":{"tf":1.4142135623730951},"264":{"tf":1.4142135623730951},"27":{"tf":1.0},"273":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"281":{"tf":1.4142135623730951},"289":{"tf":1.7320508075688772},"297":{"tf":1.4142135623730951},"317":{"tf":1.4142135623730951},"32":{"tf":2.23606797749979},"333":{"tf":1.4142135623730951},"339":{"tf":1.0},"340":{"tf":1.4142135623730951},"35":{"tf":1.4142135623730951},"353":{"tf":1.4142135623730951},"365":{"tf":1.4142135623730951},"367":{"tf":2.0},"377":{"tf":1.7320508075688772},"380":{"tf":1.0},"385":{"tf":2.23606797749979},"386":{"tf":1.0},"394":{"tf":1.4142135623730951},"40":{"tf":1.0},"402":{"tf":1.7320508075688772},"414":{"tf":1.4142135623730951},"428":{"tf":1.7320508075688772},"436":{"tf":1.4142135623730951},"445":{"tf":1.7320508075688772},"45":{"tf":2.0},"453":{"tf":1.7320508075688772},"463":{"tf":1.4142135623730951},"474":{"tf":1.7320508075688772},"475":{"tf":1.4142135623730951},"482":{"tf":1.0},"483":{"tf":1.7320508075688772},"496":{"tf":1.0},"54":{"tf":1.0},"63":{"tf":1.7320508075688772},"64":{"tf":1.7320508075688772},"65":{"tf":1.7320508075688772},"66":{"tf":1.0},"67":{"tf":1.0},"68":{"tf":1.7320508075688772},"69":{"tf":1.7320508075688772},"70":{"tf":1.7320508075688772},"71":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"75":{"tf":1.0},"76":{"tf":1.0},"77":{"tf":1.0},"78":{"tf":1.7320508075688772},"79":{"tf":1.0},"80":{"tf":1.0},"81":{"tf":1.0},"82":{"tf":1.0},"83":{"tf":1.7320508075688772},"84":{"tf":1.0},"85":{"tf":1.0},"86":{"tf":1.0},"87":{"tf":1.0},"88":{"tf":1.7320508075688772},"89":{"tf":1.0},"9":{"tf":2.0},"90":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"21":{"tf":1.0},"339":{"tf":1.0},"96":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":1,"docs":{"209":{"tf":1.0}}},"m":{"df":1,"docs":{"257":{"tf":1.0}}}},"t":{"df":4,"docs":{"200":{"tf":1.0},"268":{"tf":1.4142135623730951},"271":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"191":{"tf":1.4142135623730951},"213":{"tf":1.0}}},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}}}}}}}},"c":{"df":0,"docs":{},"k":{"df":19,"docs":{"12":{"tf":1.0},"136":{"tf":1.0},"19":{"tf":1.0},"199":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.4142135623730951},"417":{"tf":3.1622776601683795},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"423":{"tf":1.0},"428":{"tf":1.0},"456":{"tf":1.0},"51":{"tf":1.0},"538":{"tf":1.7320508075688772},"558":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"189":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"i":{"c":{"df":20,"docs":{"155":{"tf":1.0},"156":{"tf":2.0},"237":{"tf":1.0},"250":{"tf":1.4142135623730951},"300":{"tf":1.4142135623730951},"304":{"tf":1.4142135623730951},"34":{"tf":1.7320508075688772},"350":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.4142135623730951},"360":{"tf":1.0},"361":{"tf":1.0},"363":{"tf":1.4142135623730951},"421":{"tf":1.0},"433":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"599":{"tf":1.0},"8":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"s":{"df":42,"docs":{"156":{"tf":1.4142135623730951},"163":{"tf":1.4142135623730951},"173":{"tf":1.4142135623730951},"183":{"tf":1.4142135623730951},"192":{"tf":1.0},"205":{"tf":1.7320508075688772},"213":{"tf":1.4142135623730951},"218":{"tf":1.0},"225":{"tf":1.4142135623730951},"239":{"tf":1.4142135623730951},"250":{"tf":1.4142135623730951},"263":{"tf":1.4142135623730951},"272":{"tf":1.4142135623730951},"278":{"tf":1.0},"28":{"tf":1.0},"280":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"296":{"tf":1.4142135623730951},"302":{"tf":1.0},"304":{"tf":1.4142135623730951},"316":{"tf":1.4142135623730951},"332":{"tf":1.4142135623730951},"339":{"tf":1.4142135623730951},"349":{"tf":1.0},"352":{"tf":1.4142135623730951},"359":{"tf":1.7320508075688772},"366":{"tf":1.4142135623730951},"376":{"tf":1.4142135623730951},"382":{"tf":1.4142135623730951},"393":{"tf":1.4142135623730951},"401":{"tf":1.4142135623730951},"413":{"tf":1.4142135623730951},"427":{"tf":1.4142135623730951},"435":{"tf":1.4142135623730951},"444":{"tf":1.4142135623730951},"452":{"tf":1.4142135623730951},"457":{"tf":1.0},"462":{"tf":1.7320508075688772},"474":{"tf":1.4142135623730951},"482":{"tf":1.4142135623730951},"531":{"tf":1.0},"599":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":6,"docs":{"213":{"tf":1.0},"300":{"tf":1.0},"45":{"tf":1.0},"469":{"tf":1.0},"474":{"tf":1.0},"579":{"tf":1.0}},"n":{"df":5,"docs":{"156":{"tf":1.0},"235":{"tf":1.0},"356":{"tf":1.4142135623730951},"394":{"tf":1.0},"474":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"403":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"l":{"df":2,"docs":{"292":{"tf":1.0},"539":{"tf":2.0}}}},"df":0,"docs":{}},"t":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"159":{"tf":1.0},"491":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"41":{"tf":1.0},"512":{"tf":1.0}}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":5,"docs":{"423":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0},"598":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"389":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"110":{"tf":1.0},"263":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"s":{"df":2,"docs":{"292":{"tf":1.4142135623730951},"294":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"n":{"df":5,"docs":{"178":{"tf":1.4142135623730951},"221":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"74":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"217":{"tf":1.0},"370":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}},"r":{"df":6,"docs":{"156":{"tf":1.0},"246":{"tf":1.4142135623730951},"383":{"tf":1.0},"391":{"tf":1.0},"460":{"tf":1.0},"558":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"380":{"tf":1.0},"393":{"tf":1.0},"458":{"tf":1.0},"61":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"c":{"df":0,"docs":{},"k":{"df":3,"docs":{"404":{"tf":1.0},"405":{"tf":1.0},"522":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"_":{"df":1,"docs":{"347":{"tf":1.0}}},"df":9,"docs":{"187":{"tf":1.0},"230":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"276":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"431":{"tf":1.0},"542":{"tf":1.0}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"221":{"tf":1.4142135623730951}}}}}}}}},"f":{"df":0,"docs":{},"f":{"df":3,"docs":{"156":{"tf":1.0},"261":{"tf":1.0},"392":{"tf":1.0}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"168":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":3,"docs":{"268":{"tf":1.0},"336":{"tf":1.0},"470":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":12,"docs":{"130":{"tf":1.0},"178":{"tf":2.449489742783178},"200":{"tf":1.0},"201":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"276":{"tf":2.23606797749979},"309":{"tf":1.0},"458":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.0},"566":{"tf":1.0}},"r":{"df":2,"docs":{"10":{"tf":1.0},"347":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"35":{"tf":1.0},"391":{"tf":1.0}}}},"t":{"df":1,"docs":{"380":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":19,"docs":{"156":{"tf":1.0},"217":{"tf":2.449489742783178},"218":{"tf":1.4142135623730951},"276":{"tf":1.0},"292":{"tf":1.7320508075688772},"307":{"tf":1.0},"310":{"tf":2.23606797749979},"324":{"tf":1.0},"380":{"tf":3.3166247903554},"385":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.4142135623730951},"401":{"tf":1.0},"404":{"tf":1.4142135623730951},"450":{"tf":1.0},"458":{"tf":2.0},"460":{"tf":1.0},"572":{"tf":1.0},"586":{"tf":1.7320508075688772}},"e":{"'":{"df":1,"docs":{"217":{"tf":1.0}}},"@":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"r":{"c":{"\\":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"6":{":":{"4":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"1":{":":{"4":{"4":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":1,"docs":{"440":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"u":{"d":{"df":4,"docs":{"116":{"tf":1.0},"125":{"tf":1.4142135623730951},"129":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"e":{"df":1,"docs":{"284":{"tf":1.0}}}}},"o":{"_":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"347":{"tf":1.0}}}}}}}}},"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"79":{"tf":1.0}}}},"c":{"df":0,"docs":{},"o":{"a":{"df":3,"docs":{"187":{"tf":1.0},"188":{"tf":1.0},"504":{"tf":1.0}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"e":{"b":{"a":{"df":0,"docs":{},"s":{"df":4,"docs":{"240":{"tf":1.0},"245":{"tf":1.0},"389":{"tf":1.0},"546":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":101,"docs":{"108":{"tf":1.0},"156":{"tf":2.0},"159":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.4142135623730951},"171":{"tf":1.7320508075688772},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"190":{"tf":1.0},"197":{"tf":1.4142135623730951},"198":{"tf":1.0},"200":{"tf":1.4142135623730951},"209":{"tf":4.123105625617661},"211":{"tf":1.7320508075688772},"214":{"tf":1.0},"217":{"tf":2.6457513110645907},"221":{"tf":1.4142135623730951},"239":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":2.0},"251":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"258":{"tf":1.7320508075688772},"259":{"tf":2.0},"261":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":3.0},"270":{"tf":1.7320508075688772},"272":{"tf":1.4142135623730951},"276":{"tf":1.7320508075688772},"284":{"tf":1.4142135623730951},"286":{"tf":1.4142135623730951},"292":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"315":{"tf":1.7320508075688772},"322":{"tf":2.0},"323":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":4.0},"340":{"tf":1.0},"341":{"tf":2.23606797749979},"342":{"tf":2.6457513110645907},"343":{"tf":1.4142135623730951},"344":{"tf":1.4142135623730951},"345":{"tf":1.7320508075688772},"346":{"tf":1.0},"347":{"tf":3.3166247903554},"348":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.7320508075688772},"351":{"tf":1.4142135623730951},"352":{"tf":1.0},"353":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":4.123105625617661},"383":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.7320508075688772},"397":{"tf":2.23606797749979},"399":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":2.449489742783178},"417":{"tf":1.7320508075688772},"418":{"tf":2.23606797749979},"419":{"tf":1.4142135623730951},"434":{"tf":1.0},"440":{"tf":1.7320508075688772},"448":{"tf":1.0},"450":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":2.23606797749979},"462":{"tf":1.0},"470":{"tf":2.0},"491":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.4142135623730951},"504":{"tf":1.0},"507":{"tf":1.4142135623730951},"515":{"tf":1.0},"521":{"tf":1.4142135623730951},"522":{"tf":2.0},"533":{"tf":1.0},"538":{"tf":2.6457513110645907},"543":{"tf":1.0},"559":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"73":{"tf":1.0},"79":{"tf":1.0}}}},"df":2,"docs":{"268":{"tf":1.0},"276":{"tf":1.0}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"15":{"tf":1.0},"156":{"tf":1.4142135623730951}}}}},"l":{"df":0,"docs":{},"l":{"a":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"15":{"tf":1.0},"517":{"tf":1.0},"8":{"tf":1.0}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"df":1,"docs":{"389":{"tf":1.0}}}},"t":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":2,"docs":{"300":{"tf":1.0},"328":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"15":{"tf":1.4142135623730951},"16":{"tf":1.0},"218":{"tf":1.0},"307":{"tf":1.4142135623730951},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.7320508075688772},"320":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"136":{"tf":1.0},"73":{"tf":1.0}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"218":{"tf":2.23606797749979}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"n":{"df":2,"docs":{"558":{"tf":1.0},"559":{"tf":1.0}}}}}},"m":{"b":{"df":1,"docs":{"248":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":19,"docs":{"110":{"tf":1.0},"156":{"tf":1.4142135623730951},"192":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.0},"336":{"tf":1.7320508075688772},"360":{"tf":1.0},"389":{"tf":1.0},"418":{"tf":1.0},"55":{"tf":1.0},"561":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":2.0},"587":{"tf":1.7320508075688772},"588":{"tf":1.7320508075688772},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0}},"e":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":38,"docs":{"125":{"tf":1.0},"177":{"tf":1.0},"189":{"tf":1.4142135623730951},"192":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.4142135623730951},"217":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"248":{"tf":1.0},"25":{"tf":1.0},"268":{"tf":1.4142135623730951},"278":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"300":{"tf":1.4142135623730951},"324":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"41":{"tf":1.0},"433":{"tf":1.0},"456":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"67":{"tf":1.4142135623730951},"68":{"tf":1.0}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"110":{"tf":1.0},"81":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"284":{"tf":1.4142135623730951},"440":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":22,"docs":{"14":{"tf":1.4142135623730951},"16":{"tf":1.4142135623730951},"17":{"tf":1.0},"178":{"tf":1.0},"196":{"tf":1.0},"24":{"tf":1.0},"25":{"tf":1.4142135623730951},"276":{"tf":1.0},"287":{"tf":1.4142135623730951},"29":{"tf":2.0},"292":{"tf":1.0},"37":{"tf":1.0},"42":{"tf":2.0},"50":{"tf":1.4142135623730951},"52":{"tf":1.7320508075688772},"53":{"tf":1.0},"54":{"tf":2.23606797749979},"55":{"tf":1.4142135623730951},"556":{"tf":1.4142135623730951},"56":{"tf":1.0},"57":{"tf":1.0},"59":{"tf":1.0}}}},"r":{"c":{"df":2,"docs":{"134":{"tf":1.0},"138":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}},"o":{"df":0,"docs":{},"n":{"df":12,"docs":{"156":{"tf":1.7320508075688772},"199":{"tf":1.0},"270":{"tf":1.0},"296":{"tf":1.4142135623730951},"347":{"tf":1.0},"367":{"tf":1.0},"442":{"tf":1.0},"450":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"549":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"323":{"tf":1.0},"560":{"tf":1.0},"571":{"tf":1.4142135623730951}}}}}},"u":{"df":0,"docs":{},"n":{"df":22,"docs":{"108":{"tf":1.0},"11":{"tf":1.7320508075688772},"15":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.7320508075688772},"292":{"tf":1.0},"340":{"tf":1.4142135623730951},"341":{"tf":1.0},"357":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"385":{"tf":1.0},"41":{"tf":1.0},"431":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.0},"544":{"tf":1.0},"549":{"tf":1.0},"65":{"tf":1.4142135623730951},"8":{"tf":1.0},"87":{"tf":1.4142135623730951}}}}},"p":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":4,"docs":{"130":{"tf":1.0},"131":{"tf":1.0},"139":{"tf":1.0},"292":{"tf":1.0}}}},"r":{"df":14,"docs":{"156":{"tf":1.4142135623730951},"209":{"tf":1.0},"345":{"tf":1.7320508075688772},"346":{"tf":1.0},"347":{"tf":1.4142135623730951},"348":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.4142135623730951},"61":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"(":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"417":{"tf":1.0},"421":{"tf":1.0}}}}}}},"t":{"df":7,"docs":{"111":{"tf":1.0},"237":{"tf":1.4142135623730951},"336":{"tf":1.0},"545":{"tf":1.0},"548":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"367":{"tf":1.0}}},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"153":{"tf":1.0}}}},"t":{"df":1,"docs":{"302":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"138":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"l":{"df":81,"docs":{"110":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":2.23606797749979},"168":{"tf":1.0},"190":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.4142135623730951},"200":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":2.23606797749979},"223":{"tf":1.0},"226":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"246":{"tf":1.7320508075688772},"248":{"tf":1.0},"251":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":1.0},"255":{"tf":1.0},"256":{"tf":2.8284271247461903},"257":{"tf":2.0},"258":{"tf":1.7320508075688772},"259":{"tf":1.0},"260":{"tf":1.0},"261":{"tf":1.7320508075688772},"262":{"tf":1.0},"263":{"tf":1.4142135623730951},"264":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":2.6457513110645907},"272":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"315":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":2.0},"370":{"tf":2.0},"380":{"tf":2.8284271247461903},"383":{"tf":1.7320508075688772},"386":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.4142135623730951},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"440":{"tf":1.7320508075688772},"445":{"tf":1.0},"470":{"tf":2.0},"472":{"tf":1.0},"502":{"tf":1.0},"508":{"tf":1.0},"512":{"tf":1.0},"518":{"tf":1.7320508075688772},"519":{"tf":1.0},"520":{"tf":1.0},"521":{"tf":2.8284271247461903},"522":{"tf":1.7320508075688772},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.4142135623730951},"526":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"538":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":7,"docs":{"168":{"tf":1.0},"196":{"tf":1.0},"201":{"tf":1.0},"246":{"tf":1.0},"257":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":27,"docs":{"116":{"tf":1.0},"12":{"tf":1.0},"139":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.7320508075688772},"181":{"tf":1.0},"268":{"tf":1.0},"273":{"tf":1.0},"284":{"tf":1.0},"312":{"tf":1.0},"318":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"403":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"562":{"tf":1.0},"596":{"tf":1.7320508075688772},"62":{"tf":1.0}}},"x":{"df":16,"docs":{"156":{"tf":1.4142135623730951},"190":{"tf":1.0},"218":{"tf":1.4142135623730951},"226":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.4142135623730951},"258":{"tf":1.0},"259":{"tf":1.7320508075688772},"278":{"tf":1.7320508075688772},"311":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.4142135623730951},"350":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}}}},"i":{"c":{"df":8,"docs":{"156":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.0},"300":{"tf":1.0},"349":{"tf":1.0},"418":{"tf":1.0},"456":{"tf":1.0},"497":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"n":{"df":12,"docs":{"103":{"tf":1.4142135623730951},"112":{"tf":1.4142135623730951},"120":{"tf":1.4142135623730951},"129":{"tf":1.4142135623730951},"138":{"tf":1.4142135623730951},"147":{"tf":1.4142135623730951},"237":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"419":{"tf":1.0},"470":{"tf":1.0},"517":{"tf":1.0}}},"s":{"df":2,"docs":{"211":{"tf":1.0},"529":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"147":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"336":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"t":{"df":9,"docs":{"116":{"tf":1.0},"273":{"tf":1.0},"469":{"tf":2.23606797749979},"470":{"tf":1.7320508075688772},"472":{"tf":1.0},"475":{"tf":1.0},"487":{"tf":1.0},"503":{"tf":1.0},"543":{"tf":1.0}}}}}},"n":{"c":{"a":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"375":{"tf":1.0}}}}}},"<":{"'":{"a":{">":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"375":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":14,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"188":{"tf":1.4142135623730951},"197":{"tf":1.0},"245":{"tf":1.0},"288":{"tf":1.0},"332":{"tf":1.0},"336":{"tf":1.0},"359":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"422":{"tf":1.4142135623730951},"431":{"tf":1.0},"47":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"n":{"df":29,"docs":{"104":{"tf":1.4142135623730951},"105":{"tf":1.4142135623730951},"119":{"tf":1.0},"121":{"tf":1.4142135623730951},"122":{"tf":1.4142135623730951},"130":{"tf":1.7320508075688772},"131":{"tf":1.4142135623730951},"136":{"tf":1.0},"137":{"tf":1.0},"139":{"tf":1.4142135623730951},"140":{"tf":2.0},"148":{"tf":1.4142135623730951},"149":{"tf":1.4142135623730951},"156":{"tf":1.0},"16":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"308":{"tf":1.0},"370":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"511":{"tf":1.0},"569":{"tf":1.4142135623730951},"57":{"tf":1.0},"577":{"tf":1.4142135623730951}}}}},"l":{"df":0,"docs":{},"u":{"d":{"df":2,"docs":{"284":{"tf":1.0},"336":{"tf":1.4142135623730951}}},"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":2,"docs":{"458":{"tf":1.0},"548":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":10,"docs":{"156":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"374":{"tf":1.0},"470":{"tf":1.0},"521":{"tf":1.0},"599":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"178":{"tf":1.0},"218":{"tf":1.0},"418":{"tf":1.0},"6":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"171":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":2,"docs":{"256":{"tf":1.0},"521":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"d":{"df":10,"docs":{"110":{"tf":1.0},"221":{"tf":1.0},"237":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"360":{"tf":1.0},"469":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"347":{"tf":1.0},"431":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"m":{"df":3,"docs":{"178":{"tf":1.0},"230":{"tf":1.0},"284":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"157":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"340":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"s":{"df":16,"docs":{"178":{"tf":1.4142135623730951},"200":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"268":{"tf":1.7320508075688772},"278":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"300":{"tf":1.4142135623730951},"309":{"tf":1.0},"328":{"tf":1.0},"361":{"tf":1.4142135623730951},"397":{"tf":1.0},"42":{"tf":1.0},"481":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"n":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"178":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":3,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"292":{"tf":2.0}},"e":{"c":{"df":0,"docs":{},"t":{"df":9,"docs":{"177":{"tf":2.23606797749979},"178":{"tf":2.449489742783178},"276":{"tf":1.4142135623730951},"397":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":2.0},"436":{"tf":1.0},"503":{"tf":1.0},"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"s":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":4,"docs":{"119":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"125":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":3,"docs":{"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"304":{"tf":1.0}}}},"r":{"df":0,"docs":{},"v":{"df":1,"docs":{"271":{"tf":1.0}}}}},"i":{"d":{"df":13,"docs":{"155":{"tf":1.0},"156":{"tf":1.0},"179":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.4142135623730951},"221":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"498":{"tf":1.4142135623730951},"55":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"203":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.0},"304":{"tf":1.0},"516":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":5,"docs":{"156":{"tf":1.0},"178":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"531":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"l":{"df":7,"docs":{"217":{"tf":1.0},"336":{"tf":2.0},"380":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.7320508075688772},"542":{"tf":1.0},"548":{"tf":1.0}},"e":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"(":{"\"":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"410":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"284":{"tf":1.0}}}}}}},"df":3,"docs":{"328":{"tf":2.0},"347":{"tf":1.0},"380":{"tf":1.7320508075688772}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"108":{"tf":1.0},"218":{"tf":1.0},"336":{"tf":1.4142135623730951},"579":{"tf":1.0}},"t":{"df":3,"docs":{"486":{"tf":1.0},"546":{"tf":1.0},"560":{"tf":1.0}}}}}},"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":12,"docs":{"12":{"tf":1.4142135623730951},"136":{"tf":1.0},"152":{"tf":1.4142135623730951},"195":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"23":{"tf":1.0},"29":{"tf":1.0},"42":{"tf":1.0},"485":{"tf":1.4142135623730951},"52":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":1,"docs":{"366":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"284":{"tf":1.0}}}},"m":{"df":4,"docs":{"199":{"tf":1.0},"276":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0}},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"412":{"tf":1.0}}}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":10,"docs":{"112":{"tf":1.0},"154":{"tf":1.4142135623730951},"16":{"tf":1.0},"217":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"347":{"tf":1.7320508075688772},"562":{"tf":1.0},"573":{"tf":1.0},"597":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"116":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":2,"docs":{"302":{"tf":1.0},"62":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"156":{"tf":1.0},"349":{"tf":1.0},"422":{"tf":1.0},"562":{"tf":1.0}},"i":{"df":1,"docs":{"358":{"tf":1.0}}}}},"x":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"&":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"328":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"<":{"'":{"_":{"df":5,"docs":{"217":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":1.7320508075688772},"508":{"tf":1.0},"568":{"tf":1.0}}},"a":{"df":1,"docs":{"421":{"tf":1.0}}},"b":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":2.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"=":{"0":{"df":0,"docs":{},"x":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"a":{"df":0,"docs":{},"f":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":29,"docs":{"197":{"tf":1.0},"200":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"292":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"320":{"tf":1.0},"336":{"tf":2.0},"343":{"tf":1.0},"349":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":2.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"504":{"tf":1.0},"573":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":8,"docs":{"169":{"tf":1.0},"209":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.0},"448":{"tf":1.4142135623730951},"456":{"tf":1.0},"91":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"561":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":8,"docs":{"120":{"tf":1.4142135623730951},"16":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.0},"389":{"tf":1.0},"6":{"tf":1.7320508075688772},"603":{"tf":1.4142135623730951}},"o":{"df":0,"docs":{},"r":{"df":4,"docs":{"15":{"tf":1.0},"292":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"470":{"tf":1.0}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":12,"docs":{"131":{"tf":1.4142135623730951},"156":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"324":{"tf":1.0},"349":{"tf":1.0},"440":{"tf":1.4142135623730951},"448":{"tf":1.0},"469":{"tf":1.0},"539":{"tf":1.0},"61":{"tf":1.0},"79":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"_":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":3,"docs":{"213":{"tf":1.0},"309":{"tf":1.0},"341":{"tf":1.0}}}},"r":{"df":0,"docs":{},"s":{"df":10,"docs":{"154":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"357":{"tf":1.0},"359":{"tf":1.4142135623730951},"36":{"tf":1.0},"561":{"tf":1.0},"597":{"tf":2.23606797749979},"598":{"tf":1.4142135623730951},"599":{"tf":1.0}}},"t":{"df":9,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"324":{"tf":1.0},"440":{"tf":1.4142135623730951},"460":{"tf":1.0},"522":{"tf":1.0}}}},"y":{"df":4,"docs":{"27":{"tf":1.0},"494":{"tf":1.0},"507":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951}}}},"i":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"456":{"tf":1.0}}},"df":0,"docs":{}}}}},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":1,"docs":{"380":{"tf":1.0}}}},"l":{"df":1,"docs":{"522":{"tf":1.0}}},"p":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"6":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"9":{"9":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"41":{"tf":1.0},"517":{"tf":1.4142135623730951},"535":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951}}}}},"r":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"3":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"i":{"df":10,"docs":{"209":{"tf":1.0},"213":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"380":{"tf":1.0},"397":{"tf":1.0},"423":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"397":{"tf":2.0}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"336":{"tf":1.4142135623730951},"338":{"tf":1.0}},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{">":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"397":{"tf":2.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"404":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{":":{":":{"_":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"a":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"$":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"b":{"c":{"c":{"9":{"1":{"5":{"df":0,"docs":{},"e":{"6":{"6":{"8":{"c":{"7":{"c":{"a":{"1":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"u":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"e":{"d":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":19,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"188":{"tf":1.0},"209":{"tf":1.0},"278":{"tf":1.4142135623730951},"3":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.4142135623730951},"347":{"tf":1.7320508075688772},"389":{"tf":1.7320508075688772},"394":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.4142135623730951},"47":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"516":{"tf":1.0},"544":{"tf":1.0}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":9,"docs":{"156":{"tf":1.0},"29":{"tf":1.0},"349":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"42":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"328":{"tf":1.0},"380":{"tf":1.0}}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}}}}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"469":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"df":10,"docs":{"134":{"tf":1.0},"156":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"223":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":2.6457513110645907},"347":{"tf":1.0},"422":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"292":{"tf":1.0},"482":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"t":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":3,"docs":{"268":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":2.449489742783178}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.4142135623730951}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"259":{"tf":1.0},"389":{"tf":1.0}}}}},"df":0,"docs":{}}}}}},"p":{"df":0,"docs":{},"l":{"df":7,"docs":{"11":{"tf":1.0},"183":{"tf":1.0},"195":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0}}}},"r":{"df":0,"docs":{},"s":{"df":11,"docs":{"213":{"tf":1.0},"307":{"tf":1.4142135623730951},"310":{"tf":1.0},"336":{"tf":1.0},"36":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.4142135623730951},"431":{"tf":1.0},"515":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"156":{"tf":1.0},"29":{"tf":1.0},"370":{"tf":1.0},"42":{"tf":1.0},"47":{"tf":1.0}}},"y":{"df":1,"docs":{"54":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":2,"docs":{"347":{"tf":1.0},"502":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"p":{"df":0,"docs":{},"u":{"df":6,"docs":{"127":{"tf":1.0},"331":{"tf":1.0},"347":{"tf":2.23606797749979},"350":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"65":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"404":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"221":{"tf":1.0}}},":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"<":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"268":{"tf":1.7320508075688772}}}}}}}}}},"df":0,"docs":{}}}}}}},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"a":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{":":{":":{"d":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":38,"docs":{"156":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"187":{"tf":1.0},"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"22":{"tf":1.0},"221":{"tf":1.7320508075688772},"246":{"tf":1.0},"257":{"tf":1.0},"276":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"321":{"tf":1.4142135623730951},"324":{"tf":1.0},"325":{"tf":2.449489742783178},"338":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"370":{"tf":2.23606797749979},"372":{"tf":1.7320508075688772},"380":{"tf":1.4142135623730951},"383":{"tf":1.7320508075688772},"385":{"tf":1.0},"458":{"tf":1.0},"478":{"tf":1.7320508075688772},"481":{"tf":1.4142135623730951},"504":{"tf":1.0},"517":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"538":{"tf":2.0},"545":{"tf":1.7320508075688772},"546":{"tf":1.4142135623730951},"547":{"tf":1.0},"548":{"tf":1.0},"6":{"tf":1.0},"61":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":12,"docs":{"103":{"tf":1.4142135623730951},"112":{"tf":1.7320508075688772},"120":{"tf":1.4142135623730951},"129":{"tf":1.7320508075688772},"137":{"tf":1.0},"138":{"tf":1.4142135623730951},"147":{"tf":1.7320508075688772},"232":{"tf":1.0},"276":{"tf":1.0},"380":{"tf":1.0},"440":{"tf":1.0},"504":{"tf":1.0}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"l":{"df":1,"docs":{"408":{"tf":1.0}}}},"z":{"df":0,"docs":{},"i":{"df":1,"docs":{"89":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":37,"docs":{"110":{"tf":1.4142135623730951},"154":{"tf":1.0},"157":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"188":{"tf":1.0},"21":{"tf":1.0},"221":{"tf":1.4142135623730951},"230":{"tf":1.0},"232":{"tf":1.0},"24":{"tf":1.4142135623730951},"256":{"tf":1.0},"259":{"tf":1.0},"26":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"309":{"tf":1.0},"31":{"tf":1.0},"319":{"tf":1.7320508075688772},"328":{"tf":1.4142135623730951},"341":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"38":{"tf":1.4142135623730951},"39":{"tf":1.0},"417":{"tf":1.0},"44":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"472":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.0},"508":{"tf":1.0},"521":{"tf":1.0},"64":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"59":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"i":{"c":{"df":4,"docs":{"190":{"tf":1.0},"276":{"tf":1.0},"286":{"tf":1.0},"312":{"tf":1.0}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"b":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}}},"df":3,"docs":{"268":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"'":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"259":{"tf":1.0}}}}},"u":{"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"+":{"c":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":1,"docs":{"448":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"248":{"tf":1.0},"431":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":2,"docs":{"153":{"tf":1.0},"9":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"258":{"tf":1.0}}},"u":{"df":3,"docs":{"198":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":35,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"330":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.4142135623730951},"360":{"tf":1.0},"370":{"tf":1.0},"391":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":1.0},"456":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"507":{"tf":1.4142135623730951},"508":{"tf":1.4142135623730951},"516":{"tf":1.0},"538":{"tf":1.4142135623730951},"550":{"tf":1.0},"567":{"tf":1.0},"572":{"tf":1.0},"576":{"tf":1.0},"65":{"tf":1.0},"77":{"tf":1.4142135623730951},"79":{"tf":1.0},"82":{"tf":1.4142135623730951},"87":{"tf":1.4142135623730951},"9":{"tf":1.0},"92":{"tf":1.4142135623730951}}}}}},"s":{"df":1,"docs":{"153":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"538":{"tf":1.0}}}}},"v":{"df":3,"docs":{"188":{"tf":1.0},"268":{"tf":1.0},"470":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":30,"docs":{"102":{"tf":1.4142135623730951},"111":{"tf":1.4142135623730951},"119":{"tf":1.4142135623730951},"123":{"tf":1.7320508075688772},"124":{"tf":1.0},"125":{"tf":1.0},"126":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.7320508075688772},"129":{"tf":1.4142135623730951},"130":{"tf":1.4142135623730951},"131":{"tf":1.0},"137":{"tf":1.4142135623730951},"146":{"tf":1.4142135623730951},"221":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.4142135623730951},"328":{"tf":1.0},"330":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"412":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"492":{"tf":1.0},"503":{"tf":1.0},"514":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0}}}}}},"t":{"df":3,"docs":{"110":{"tf":1.0},"153":{"tf":1.0},"209":{"tf":1.0}}}},"x":{".":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"0":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"f":{"5":{"0":{"df":1,"docs":{"404":{"tf":2.8284271247461903}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":10,"docs":{"197":{"tf":1.0},"217":{"tf":1.0},"328":{"tf":2.6457513110645907},"336":{"tf":1.7320508075688772},"418":{"tf":1.7320508075688772},"419":{"tf":1.0},"421":{"tf":3.4641016151377544},"422":{"tf":1.7320508075688772},"423":{"tf":1.0},"568":{"tf":1.0}}},"y":{"c":{"df":0,"docs":{},"l":{"df":2,"docs":{"313":{"tf":1.4142135623730951},"539":{"tf":2.0}}}},"df":0,"docs":{}}},"d":{"a":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"218":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"417":{"tf":1.4142135623730951},"425":{"tf":1.0}}}},"l":{"df":1,"docs":{"436":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"k":{"df":3,"docs":{"199":{"tf":1.0},"284":{"tf":1.0},"538":{"tf":1.0}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"603":{"tf":1.0}}}}}}}},"t":{"a":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"312":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":15,"docs":{"116":{"tf":1.0},"156":{"tf":1.4142135623730951},"175":{"tf":1.7320508075688772},"176":{"tf":1.0},"177":{"tf":1.7320508075688772},"178":{"tf":1.4142135623730951},"179":{"tf":1.4142135623730951},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"315":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.0}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"127":{"tf":1.0}}}}}},"df":31,"docs":{"125":{"tf":1.4142135623730951},"153":{"tf":1.0},"155":{"tf":1.4142135623730951},"156":{"tf":1.0},"168":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":2.449489742783178},"217":{"tf":2.0},"218":{"tf":1.0},"276":{"tf":1.4142135623730951},"307":{"tf":1.7320508075688772},"308":{"tf":1.4142135623730951},"309":{"tf":1.0},"312":{"tf":2.23606797749979},"320":{"tf":1.0},"347":{"tf":2.23606797749979},"370":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"419":{"tf":1.7320508075688772},"469":{"tf":1.0},"470":{"tf":2.6457513110645907},"538":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"564":{"tf":1.4142135623730951},"599":{"tf":1.0},"62":{"tf":1.0}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":1,"docs":{"209":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"478":{"tf":1.0}}}},"y":{"'":{"df":1,"docs":{"284":{"tf":1.0}}},"df":10,"docs":{"239":{"tf":1.0},"244":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"359":{"tf":1.0},"361":{"tf":1.0},"397":{"tf":1.0},"503":{"tf":1.4142135623730951},"54":{"tf":1.0},"599":{"tf":1.0}}}},"b":{"df":1,"docs":{"599":{"tf":1.4142135623730951}}},"d":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":2.23606797749979}}}}}}}},"df":3,"docs":{"150":{"tf":1.0},"347":{"tf":2.0},"539":{"tf":1.4142135623730951}},"e":{"a":{"d":{"df":1,"docs":{"284":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":8,"docs":{"309":{"tf":1.4142135623730951},"315":{"tf":1.0},"318":{"tf":2.23606797749979},"319":{"tf":1.7320508075688772},"323":{"tf":1.0},"325":{"tf":1.0},"408":{"tf":1.0},"539":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":19,"docs":{"189":{"tf":1.4142135623730951},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"231":{"tf":1.0},"240":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"341":{"tf":1.4142135623730951},"380":{"tf":1.0},"394":{"tf":1.0},"401":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"521":{"tf":1.0},"537":{"tf":1.0},"599":{"tf":1.4142135623730951}},"t":{"df":2,"docs":{"256":{"tf":1.0},"521":{"tf":1.0}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"!":{"(":{"\"":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":22,"docs":{"156":{"tf":1.4142135623730951},"168":{"tf":1.0},"174":{"tf":1.0},"203":{"tf":1.0},"282":{"tf":1.7320508075688772},"283":{"tf":1.0},"284":{"tf":1.0},"285":{"tf":1.0},"286":{"tf":2.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"309":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.0},"414":{"tf":1.7320508075688772},"433":{"tf":1.0},"452":{"tf":1.0},"599":{"tf":1.0},"79":{"tf":1.0}},"g":{"df":10,"docs":{"171":{"tf":1.0},"284":{"tf":2.6457513110645907},"286":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"309":{"tf":1.0},"404":{"tf":1.4142135623730951},"408":{"tf":1.0},"414":{"tf":1.0},"448":{"tf":1.4142135623730951},"453":{"tf":1.7320508075688772}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":1,"docs":{"214":{"tf":1.0}}}}}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"270":{"tf":1.0},"273":{"tf":1.0},"502":{"tf":1.0},"526":{"tf":1.0}}}}},"i":{"d":{"df":34,"docs":{"125":{"tf":1.0},"134":{"tf":1.0},"178":{"tf":1.0},"187":{"tf":1.4142135623730951},"189":{"tf":1.0},"209":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"233":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":2.23606797749979},"284":{"tf":1.7320508075688772},"292":{"tf":1.0},"300":{"tf":2.0},"307":{"tf":1.0},"308":{"tf":1.4142135623730951},"309":{"tf":1.4142135623730951},"313":{"tf":1.0},"32":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"357":{"tf":1.7320508075688772},"358":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"408":{"tf":1.0},"431":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.4142135623730951},"469":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.7320508075688772},"562":{"tf":1.0},"84":{"tf":1.0}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"237":{"tf":1.0}}}},"s":{"df":6,"docs":{"248":{"tf":1.0},"302":{"tf":1.4142135623730951},"303":{"tf":1.0},"357":{"tf":1.0},"359":{"tf":2.0},"389":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"r":{"df":4,"docs":{"209":{"tf":1.0},"230":{"tf":1.0},"370":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":1,"docs":{"309":{"tf":1.0}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":2,"docs":{"341":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"478":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"457":{"tf":1.7320508075688772}},"e":{"df":0,"docs":{},"p":{"df":7,"docs":{"171":{"tf":1.0},"192":{"tf":1.0},"211":{"tf":1.0},"268":{"tf":1.0},"313":{"tf":1.0},"347":{"tf":1.0},"408":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"408":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.0},"84":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"183":{"tf":1.0}}}}}},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":12,"docs":{"116":{"tf":1.0},"190":{"tf":1.0},"321":{"tf":1.0},"502":{"tf":1.7320508075688772},"507":{"tf":1.0},"511":{"tf":1.0},"526":{"tf":1.4142135623730951},"527":{"tf":1.0},"529":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.4142135623730951},"599":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"246":{"tf":1.0},"292":{"tf":1.0}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":1,"docs":{"418":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"df":8,"docs":{"209":{"tf":1.7320508075688772},"292":{"tf":1.0},"380":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"532":{"tf":1.0},"6":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":5,"docs":{"3":{"tf":1.0},"336":{"tf":1.0},"343":{"tf":1.0},"567":{"tf":1.0},"568":{"tf":1.4142135623730951}}}}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"300":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"a":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"df":2,"docs":{"380":{"tf":3.605551275463989},"516":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":2,"docs":{"196":{"tf":1.0},"397":{"tf":1.7320508075688772}}}},"t":{"a":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}},"v":{"df":1,"docs":{"414":{"tf":1.0}}}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":3,"docs":{"181":{"tf":1.0},"423":{"tf":1.0},"480":{"tf":1.0}}}}}}}},"n":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"125":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"412":{"tf":1.0}}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"349":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":28,"docs":{"174":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"237":{"tf":2.0},"240":{"tf":1.0},"300":{"tf":1.0},"323":{"tf":1.0},"349":{"tf":1.4142135623730951},"353":{"tf":1.0},"370":{"tf":2.6457513110645907},"380":{"tf":1.0},"408":{"tf":1.0},"414":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"470":{"tf":2.0},"513":{"tf":1.0},"516":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"542":{"tf":1.0},"562":{"tf":1.0},"580":{"tf":1.0},"599":{"tf":1.7320508075688772}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":15,"docs":{"116":{"tf":1.0},"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"429":{"tf":1.7320508075688772},"430":{"tf":1.0},"431":{"tf":1.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.0},"511":{"tf":1.0},"538":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"358":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"u":{"df":1,"docs":{"328":{"tf":2.0}},"e":{"df":0,"docs":{},"u":{"df":1,"docs":{"539":{"tf":1.4142135623730951}}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":39,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"218":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"423":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"e":{"(":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":19,"docs":{"182":{"tf":1.0},"233":{"tf":1.0},"25":{"tf":1.0},"343":{"tf":1.0},"36":{"tf":1.4142135623730951},"41":{"tf":1.0},"483":{"tf":1.0},"486":{"tf":1.4142135623730951},"487":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"550":{"tf":1.0},"552":{"tf":1.0},"560":{"tf":1.4142135623730951},"597":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"9":{"tf":1.0},"94":{"tf":1.0}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":7,"docs":{"108":{"tf":1.4142135623730951},"116":{"tf":1.4142135623730951},"125":{"tf":1.4142135623730951},"134":{"tf":1.4142135623730951},"143":{"tf":1.4142135623730951},"584":{"tf":1.0},"99":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"347":{"tf":1.4142135623730951},"349":{"tf":1.7320508075688772}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":63,"docs":{"11":{"tf":1.0},"143":{"tf":1.0},"156":{"tf":2.449489742783178},"278":{"tf":1.0},"3":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.4142135623730951},"363":{"tf":1.7320508075688772},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"41":{"tf":1.0},"433":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":2.8284271247461903},"486":{"tf":1.0},"487":{"tf":1.4142135623730951},"49":{"tf":1.4142135623730951},"494":{"tf":1.0},"515":{"tf":1.0},"539":{"tf":1.0},"560":{"tf":2.449489742783178},"561":{"tf":2.449489742783178},"562":{"tf":2.449489742783178},"563":{"tf":1.0},"564":{"tf":1.0},"565":{"tf":1.0},"566":{"tf":1.4142135623730951},"567":{"tf":1.0},"568":{"tf":1.0},"569":{"tf":1.0},"570":{"tf":1.7320508075688772},"571":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":1.0},"574":{"tf":1.0},"575":{"tf":1.0},"576":{"tf":1.0},"577":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0},"582":{"tf":1.0},"583":{"tf":1.0},"584":{"tf":1.0},"585":{"tf":1.0},"586":{"tf":1.0},"587":{"tf":1.0},"588":{"tf":1.0},"589":{"tf":1.0},"590":{"tf":1.0},"591":{"tf":1.0},"592":{"tf":1.0},"593":{"tf":1.0},"594":{"tf":1.0},"595":{"tf":1.0},"596":{"tf":1.0},"61":{"tf":2.23606797749979},"62":{"tf":1.4142135623730951},"67":{"tf":1.0},"92":{"tf":1.0}}}},"r":{"df":8,"docs":{"183":{"tf":1.0},"421":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"571":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"k":{"df":1,"docs":{"370":{"tf":1.0}}},"p":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"209":{"tf":1.0},"96":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"245":{"tf":1.0}}}},"i":{"df":0,"docs":{},"t":{"df":5,"docs":{"188":{"tf":1.0},"276":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.0},"389":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"178":{"tf":2.23606797749979},"181":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"401":{"tf":1.0},"579":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":38,"docs":{"12":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.0},"19":{"tf":1.0},"200":{"tf":1.0},"218":{"tf":1.0},"225":{"tf":1.0},"27":{"tf":1.4142135623730951},"29":{"tf":1.4142135623730951},"302":{"tf":1.0},"33":{"tf":2.0},"349":{"tf":1.0},"353":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"42":{"tf":1.4142135623730951},"437":{"tf":1.0},"450":{"tf":1.0},"457":{"tf":1.0},"47":{"tf":2.0},"48":{"tf":1.7320508075688772},"485":{"tf":1.0},"489":{"tf":1.0},"504":{"tf":1.0},"513":{"tf":1.4142135623730951},"516":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"544":{"tf":1.0},"599":{"tf":1.0},"79":{"tf":1.0},"97":{"tf":1.0},"99":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"336":{"tf":1.0},"419":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"358":{"tf":1.0}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":7,"docs":{"276":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.4142135623730951},"389":{"tf":1.0},"516":{"tf":1.0},"538":{"tf":1.0},"9":{"tf":1.0}}}}}}}},"v":{"df":2,"docs":{"284":{"tf":1.0},"289":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":46,"docs":{"110":{"tf":2.0},"116":{"tf":1.0},"120":{"tf":1.0},"127":{"tf":1.0},"131":{"tf":1.0},"136":{"tf":1.4142135623730951},"146":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"189":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":2.23606797749979},"218":{"tf":1.4142135623730951},"221":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.4142135623730951},"239":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.4142135623730951},"286":{"tf":1.7320508075688772},"287":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.0},"339":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"393":{"tf":1.0},"403":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0},"548":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.4142135623730951},"71":{"tf":1.4142135623730951},"74":{"tf":1.0},"8":{"tf":1.0},"89":{"tf":1.4142135623730951}}}}}},"i":{"c":{"df":1,"docs":{"8":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":1,"docs":{"336":{"tf":1.0}}}}},"s":{"df":1,"docs":{"423":{"tf":1.0}}}}}},"i":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":9,"docs":{"171":{"tf":1.0},"209":{"tf":1.0},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"315":{"tf":1.0},"397":{"tf":1.0},"434":{"tf":1.0},"436":{"tf":1.0},"456":{"tf":1.0}},"t":{"df":3,"docs":{"209":{"tf":1.0},"292":{"tf":1.0},"572":{"tf":1.0}}}}}}}},"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":13,"docs":{"199":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.4142135623730951},"234":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"321":{"tf":1.4142135623730951},"322":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"463":{"tf":1.0},"497":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"292":{"tf":1.0},"599":{"tf":1.0}}}}}},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":87,"docs":{"101":{"tf":1.4142135623730951},"110":{"tf":1.4142135623730951},"111":{"tf":1.0},"118":{"tf":2.0},"127":{"tf":1.7320508075688772},"136":{"tf":1.4142135623730951},"145":{"tf":1.4142135623730951},"146":{"tf":1.0},"156":{"tf":1.4142135623730951},"164":{"tf":1.7320508075688772},"174":{"tf":1.4142135623730951},"184":{"tf":1.4142135623730951},"190":{"tf":1.0},"192":{"tf":1.4142135623730951},"195":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.4142135623730951},"209":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.4142135623730951},"218":{"tf":1.0},"22":{"tf":1.0},"226":{"tf":1.4142135623730951},"240":{"tf":1.4142135623730951},"241":{"tf":1.4142135623730951},"251":{"tf":1.4142135623730951},"258":{"tf":1.0},"264":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"273":{"tf":1.4142135623730951},"278":{"tf":1.0},"28":{"tf":1.4142135623730951},"281":{"tf":1.4142135623730951},"289":{"tf":1.4142135623730951},"292":{"tf":1.0},"297":{"tf":1.4142135623730951},"300":{"tf":1.0},"302":{"tf":1.0},"317":{"tf":1.4142135623730951},"32":{"tf":1.0},"333":{"tf":1.4142135623730951},"336":{"tf":1.0},"340":{"tf":1.4142135623730951},"350":{"tf":1.0},"353":{"tf":1.4142135623730951},"359":{"tf":1.0},"367":{"tf":1.7320508075688772},"37":{"tf":1.0},"372":{"tf":1.4142135623730951},"375":{"tf":1.4142135623730951},"377":{"tf":1.4142135623730951},"383":{"tf":1.7320508075688772},"385":{"tf":1.4142135623730951},"386":{"tf":1.4142135623730951},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":2.449489742783178},"402":{"tf":1.4142135623730951},"414":{"tf":1.4142135623730951},"421":{"tf":1.0},"423":{"tf":1.0},"428":{"tf":1.4142135623730951},"436":{"tf":1.4142135623730951},"445":{"tf":1.4142135623730951},"448":{"tf":1.0},"45":{"tf":1.0},"453":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.4142135623730951},"470":{"tf":1.0},"475":{"tf":1.4142135623730951},"483":{"tf":1.7320508075688772},"490":{"tf":1.0},"501":{"tf":1.0},"507":{"tf":1.4142135623730951},"515":{"tf":1.0},"519":{"tf":1.0},"52":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.4142135623730951},"54":{"tf":1.0},"55":{"tf":1.4142135623730951},"599":{"tf":1.7320508075688772},"61":{"tf":1.0},"64":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"138":{"tf":1.0}}}}}}}},"i":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":18,"docs":{"122":{"tf":1.0},"181":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"278":{"tf":1.4142135623730951},"300":{"tf":1.0},"324":{"tf":1.0},"330":{"tf":1.0},"350":{"tf":1.0},"372":{"tf":1.0},"375":{"tf":1.0},"389":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.0},"570":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0}},"i":{"df":3,"docs":{"156":{"tf":1.0},"392":{"tf":1.0},"421":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"g":{"df":7,"docs":{"234":{"tf":1.0},"246":{"tf":1.0},"271":{"tf":1.0},"311":{"tf":1.0},"408":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"341":{"tf":1.0}}}}}}}},"p":{"df":2,"docs":{"261":{"tf":1.0},"84":{"tf":1.0}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"214":{"tf":1.0},"394":{"tf":1.0},"508":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":10,"docs":{"16":{"tf":1.0},"211":{"tf":1.0},"3":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"457":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"603":{"tf":1.4142135623730951}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":6,"docs":{"157":{"tf":1.0},"21":{"tf":1.0},"26":{"tf":1.0},"39":{"tf":1.0},"489":{"tf":1.0},"562":{"tf":1.0}}}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"358":{"tf":1.0},"359":{"tf":1.0}}}}},"s":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":1,"docs":{"278":{"tf":1.7320508075688772}},"e":{"df":1,"docs":{"27":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"576":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":17,"docs":{"209":{"tf":1.0},"358":{"tf":1.4142135623730951},"380":{"tf":1.0},"41":{"tf":2.0},"478":{"tf":1.0},"510":{"tf":1.4142135623730951},"511":{"tf":1.4142135623730951},"512":{"tf":1.4142135623730951},"513":{"tf":1.7320508075688772},"528":{"tf":1.4142135623730951},"529":{"tf":1.4142135623730951},"530":{"tf":1.4142135623730951},"531":{"tf":1.4142135623730951},"542":{"tf":1.4142135623730951},"543":{"tf":1.4142135623730951},"544":{"tf":1.4142135623730951},"545":{"tf":1.7320508075688772}}}}}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"457":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"d":{"df":4,"docs":{"357":{"tf":1.0},"363":{"tf":1.0},"392":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"278":{"tf":1.0}}}},"df":0,"docs":{}}},"v":{"df":12,"docs":{"179":{"tf":1.0},"245":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.4142135623730951},"347":{"tf":1.0},"359":{"tf":1.4142135623730951},"372":{"tf":1.0},"389":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"599":{"tf":1.0}}}},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":19,"docs":{"156":{"tf":1.0},"172":{"tf":1.0},"209":{"tf":1.0},"212":{"tf":1.0},"221":{"tf":1.0},"25":{"tf":1.7320508075688772},"278":{"tf":1.0},"3":{"tf":1.0},"347":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.4142135623730951},"380":{"tf":1.0},"4":{"tf":1.0},"52":{"tf":1.0},"538":{"tf":1.0},"57":{"tf":1.0},"571":{"tf":1.0},"599":{"tf":1.0},"602":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"k":{"df":1,"docs":{"539":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":1,"docs":{"41":{"tf":1.0}}}}},"m":{"a":{"df":0,"docs":{},"y":{"df":2,"docs":{"370":{"tf":1.0},"408":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":12,"docs":{"276":{"tf":1.0},"334":{"tf":1.7320508075688772},"335":{"tf":1.0},"336":{"tf":1.0},"337":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0}}}}}},"p":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":4,"docs":{"223":{"tf":1.0},"336":{"tf":1.0},"504":{"tf":1.0},"516":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"a":{"d":{"df":1,"docs":{"54":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"300":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":1,"docs":{"211":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.0},"211":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":7,"docs":{"116":{"tf":1.0},"125":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.0},"8":{"tf":1.0}}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"'":{"df":1,"docs":{"119":{"tf":1.4142135623730951}}},"df":14,"docs":{"114":{"tf":1.7320508075688772},"115":{"tf":1.0},"116":{"tf":1.7320508075688772},"117":{"tf":1.0},"118":{"tf":1.7320508075688772},"119":{"tf":1.7320508075688772},"120":{"tf":1.4142135623730951},"121":{"tf":1.0},"122":{"tf":1.4142135623730951},"209":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":2.0}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.7320508075688772}}}}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":2,"docs":{"380":{"tf":1.0},"408":{"tf":1.0}}}}},"j":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":1,"docs":{"72":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"_":{"a":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"_":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"502":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"g":{"c":{"d":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"df":1,"docs":{"504":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"178":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"310":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":5,"docs":{"307":{"tf":1.7320508075688772},"308":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.4142135623730951}}}}}},"df":1,"docs":{"307":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"c":{"df":60,"docs":{"12":{"tf":1.0},"15":{"tf":1.0},"17":{"tf":1.0},"178":{"tf":1.0},"181":{"tf":1.0},"23":{"tf":1.0},"246":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"309":{"tf":1.0},"311":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.6457513110645907},"383":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"47":{"tf":1.0},"487":{"tf":1.0},"49":{"tf":1.0},"552":{"tf":1.0},"560":{"tf":1.7320508075688772},"561":{"tf":2.0},"562":{"tf":2.23606797749979},"563":{"tf":1.0},"564":{"tf":1.0},"565":{"tf":1.0},"566":{"tf":1.0},"567":{"tf":1.0},"568":{"tf":1.0},"569":{"tf":1.0},"570":{"tf":1.0},"571":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":1.0},"574":{"tf":1.0},"575":{"tf":1.0},"576":{"tf":1.0},"577":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0},"582":{"tf":1.0},"583":{"tf":1.0},"584":{"tf":1.0},"585":{"tf":1.0},"586":{"tf":1.0},"587":{"tf":1.0},"588":{"tf":1.0},"589":{"tf":1.0},"590":{"tf":1.0},"591":{"tf":1.0},"592":{"tf":1.0},"593":{"tf":1.0},"594":{"tf":1.0},"595":{"tf":1.0},"596":{"tf":1.0},"599":{"tf":1.0},"603":{"tf":1.0},"9":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":37,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"12":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.0},"167":{"tf":1.0},"17":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"18":{"tf":1.7320508075688772},"190":{"tf":1.0},"203":{"tf":1.0},"217":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"246":{"tf":1.0},"268":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"365":{"tf":1.4142135623730951},"367":{"tf":1.4142135623730951},"380":{"tf":1.0},"391":{"tf":1.0},"457":{"tf":1.0},"478":{"tf":2.6457513110645907},"480":{"tf":1.0},"485":{"tf":1.0},"487":{"tf":1.4142135623730951},"51":{"tf":1.7320508075688772},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"560":{"tf":1.7320508075688772},"562":{"tf":1.0},"599":{"tf":1.4142135623730951},"8":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.0}}}}}}}},"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"456":{"tf":1.0}}}},"df":18,"docs":{"156":{"tf":1.0},"189":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"248":{"tf":1.0},"312":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"331":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.4142135623730951},"413":{"tf":1.0},"458":{"tf":1.7320508075688772},"475":{"tf":1.0},"487":{"tf":1.0},"504":{"tf":1.0},"550":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":51,"docs":{"155":{"tf":1.0},"156":{"tf":2.23606797749979},"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.4142135623730951},"169":{"tf":1.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"178":{"tf":1.4142135623730951},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"217":{"tf":1.0},"232":{"tf":1.0},"252":{"tf":1.0},"276":{"tf":1.7320508075688772},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.0},"311":{"tf":1.0},"313":{"tf":1.0},"33":{"tf":1.0},"35":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"404":{"tf":1.4142135623730951},"405":{"tf":1.4142135623730951},"408":{"tf":1.4142135623730951},"418":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"423":{"tf":1.0},"431":{"tf":1.0},"445":{"tf":1.4142135623730951},"457":{"tf":1.7320508075688772},"47":{"tf":1.0},"527":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"544":{"tf":1.0},"559":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"139":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"472":{"tf":1.0},"94":{"tf":1.0},"97":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"n":{"'":{"df":0,"docs":{},"t":{"df":45,"docs":{"11":{"tf":1.0},"136":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"156":{"tf":1.7320508075688772},"192":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"25":{"tf":1.0},"258":{"tf":1.0},"27":{"tf":1.0},"315":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.4142135623730951},"367":{"tf":1.4142135623730951},"397":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.0},"405":{"tf":1.7320508075688772},"408":{"tf":1.0},"41":{"tf":1.0},"410":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.4142135623730951},"463":{"tf":1.0},"48":{"tf":1.4142135623730951},"481":{"tf":1.0},"483":{"tf":1.0},"49":{"tf":1.0},"499":{"tf":1.0},"50":{"tf":1.4142135623730951},"503":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.4142135623730951},"534":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.4142135623730951},"68":{"tf":1.4142135623730951},"89":{"tf":1.0},"96":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"e":{"df":18,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"188":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"423":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"558":{"tf":1.0},"56":{"tf":1.0}}}},"t":{"df":1,"docs":{"539":{"tf":1.0}}},"u":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"538":{"tf":1.0},"599":{"tf":1.0}}},"t":{"df":4,"docs":{"268":{"tf":1.0},"278":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":0,"docs":{},"n":{"df":17,"docs":{"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"322":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"457":{"tf":1.0},"463":{"tf":1.0},"539":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"319":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"167":{"tf":1.7320508075688772},"268":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}}}},"r":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":43,"docs":{"15":{"tf":1.4142135623730951},"152":{"tf":1.0},"158":{"tf":1.7320508075688772},"166":{"tf":1.7320508075688772},"17":{"tf":1.4142135623730951},"176":{"tf":1.7320508075688772},"186":{"tf":1.7320508075688772},"194":{"tf":1.7320508075688772},"208":{"tf":1.7320508075688772},"216":{"tf":1.7320508075688772},"220":{"tf":1.7320508075688772},"228":{"tf":1.7320508075688772},"243":{"tf":1.7320508075688772},"254":{"tf":1.7320508075688772},"267":{"tf":1.7320508075688772},"275":{"tf":1.7320508075688772},"283":{"tf":1.7320508075688772},"291":{"tf":1.7320508075688772},"299":{"tf":1.7320508075688772},"306":{"tf":1.7320508075688772},"327":{"tf":1.7320508075688772},"335":{"tf":1.7320508075688772},"346":{"tf":1.7320508075688772},"355":{"tf":1.7320508075688772},"369":{"tf":1.7320508075688772},"379":{"tf":1.7320508075688772},"388":{"tf":1.7320508075688772},"396":{"tf":1.7320508075688772},"407":{"tf":1.7320508075688772},"416":{"tf":1.7320508075688772},"430":{"tf":1.7320508075688772},"439":{"tf":1.7320508075688772},"447":{"tf":1.7320508075688772},"455":{"tf":1.7320508075688772},"467":{"tf":1.7320508075688772},"477":{"tf":1.7320508075688772},"485":{"tf":1.0},"490":{"tf":1.7320508075688772},"501":{"tf":1.7320508075688772},"519":{"tf":1.7320508075688772},"537":{"tf":1.7320508075688772},"562":{"tf":1.0},"61":{"tf":1.7320508075688772}}}},"g":{"df":1,"docs":{"472":{"tf":1.0}}},"m":{"a":{"df":1,"docs":{"311":{"tf":1.0}},"t":{"df":2,"docs":{"153":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"203":{"tf":1.0}}},"df":0,"docs":{}}}},"w":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"223":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"17":{"tf":1.0},"245":{"tf":1.0},"27":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"300":{"tf":1.0}}},"df":0,"docs":{},"m":{"df":5,"docs":{"188":{"tf":1.4142135623730951},"359":{"tf":1.0},"37":{"tf":1.0},"389":{"tf":1.0},"487":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"e":{"df":7,"docs":{"10":{"tf":1.4142135623730951},"189":{"tf":1.0},"192":{"tf":1.0},"309":{"tf":1.0},"336":{"tf":1.0},"557":{"tf":1.0},"61":{"tf":1.0}},"n":{"df":2,"docs":{"342":{"tf":1.0},"474":{"tf":1.0}}},"r":{"df":1,"docs":{"456":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":1.0}}}}}}},"df":22,"docs":{"156":{"tf":1.7320508075688772},"169":{"tf":1.4142135623730951},"175":{"tf":1.7320508075688772},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":2.0},"179":{"tf":1.0},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"268":{"tf":2.23606797749979},"270":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"341":{"tf":2.0},"412":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"594":{"tf":1.7320508075688772},"595":{"tf":1.0},"599":{"tf":1.0}}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":13,"docs":{"156":{"tf":1.0},"214":{"tf":1.0},"218":{"tf":1.0},"336":{"tf":1.0},"357":{"tf":1.0},"383":{"tf":1.0},"417":{"tf":1.0},"436":{"tf":1.0},"440":{"tf":1.0},"450":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0},"74":{"tf":1.0}}},"m":{"df":0,"docs":{},"p":{"df":1,"docs":{"598":{"tf":1.0}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"276":{"tf":1.0}}}},"i":{"c":{"df":3,"docs":{"200":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":2.0}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":6,"docs":{"218":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":2.0},"380":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.7320508075688772}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"(":{"5":{"df":1,"docs":{"458":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":11,"docs":{"15":{"tf":1.0},"16":{"tf":1.0},"230":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.0},"365":{"tf":1.4142135623730951},"391":{"tf":1.0},"46":{"tf":1.0},"521":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0}}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":1,"docs":{"214":{"tf":1.0}}}}},"df":0,"docs":{}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":6,"docs":{"223":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.4142135623730951},"410":{"tf":1.0},"516":{"tf":1.0},"72":{"tf":1.4142135623730951}}}},"df":5,"docs":{"292":{"tf":1.0},"328":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":1.0},"515":{"tf":1.0}}}}},"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"g":{"df":15,"docs":{"136":{"tf":1.0},"156":{"tf":1.0},"211":{"tf":1.0},"270":{"tf":1.0},"341":{"tf":1.0},"372":{"tf":1.0},"383":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"453":{"tf":1.0},"548":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}},"0":{"2":{"7":{"7":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"h":{"df":35,"docs":{"153":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.0},"218":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"27":{"tf":1.0},"278":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":2.0},"389":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.4142135623730951},"496":{"tf":1.0},"508":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951},"94":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"380":{"tf":1.0},"538":{"tf":1.4142135623730951}}}}},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":11,"docs":{"136":{"tf":1.0},"156":{"tf":1.0},"192":{"tf":1.0},"270":{"tf":1.0},"363":{"tf":1.0},"456":{"tf":1.0},"502":{"tf":1.0},"560":{"tf":1.0},"561":{"tf":1.7320508075688772},"65":{"tf":1.0},"87":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"276":{"tf":1.0},"61":{"tf":1.0}}}}}}},"s":{"df":3,"docs":{"359":{"tf":1.0},"41":{"tf":1.0},"77":{"tf":1.0}},"i":{"df":26,"docs":{"120":{"tf":1.0},"121":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.4142135623730951},"190":{"tf":1.0},"200":{"tf":1.0},"211":{"tf":1.0},"245":{"tf":1.0},"278":{"tf":1.0},"330":{"tf":1.0},"343":{"tf":1.0},"370":{"tf":1.0},"391":{"tf":1.4142135623730951},"393":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.4142135623730951},"456":{"tf":1.4142135623730951},"504":{"tf":1.0},"510":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"528":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":8,"docs":{"131":{"tf":1.0},"226":{"tf":1.0},"284":{"tf":1.0},"389":{"tf":1.0},"516":{"tf":1.0},"532":{"tf":1.0},"538":{"tf":1.0},"572":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":7,"docs":{"130":{"tf":1.0},"268":{"tf":1.0},"315":{"tf":1.0},"341":{"tf":1.0},"350":{"tf":1.0},"507":{"tf":1.0},"511":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"555":{"tf":1.0}}}}}},"y":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"221":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"380":{"tf":1.0}}}},"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":30,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"231":{"tf":1.4142135623730951},"237":{"tf":1.0},"278":{"tf":1.0},"302":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"340":{"tf":1.4142135623730951},"341":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":2.0},"360":{"tf":1.0},"363":{"tf":1.7320508075688772},"372":{"tf":1.4142135623730951},"383":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0},"431":{"tf":1.4142135623730951},"47":{"tf":1.4142135623730951},"478":{"tf":1.0},"480":{"tf":1.0},"526":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"61":{"tf":1.4142135623730951},"65":{"tf":1.0},"73":{"tf":1.0},"77":{"tf":1.0}}}}}}}}}},"d":{"df":1,"docs":{"309":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":30,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"358":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"402":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"201":{"tf":1.0},"453":{"tf":1.0}}}}}},"u":{"c":{"df":1,"docs":{"363":{"tf":1.0}}},"df":0,"docs":{}}},"df":6,"docs":{"134":{"tf":1.0},"138":{"tf":1.0},"209":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.7320508075688772},"603":{"tf":1.0}},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":7,"docs":{"181":{"tf":1.0},"259":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"389":{"tf":1.0},"422":{"tf":1.0},"462":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"c":{"df":0,"docs":{},"i":{"df":3,"docs":{"156":{"tf":1.4142135623730951},"223":{"tf":1.0},"341":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":4,"docs":{"341":{"tf":1.4142135623730951},"37":{"tf":1.0},"486":{"tf":1.0},"8":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"110":{"tf":1.0}}}}}}}}}}}}},"g":{"df":1,"docs":{"391":{"tf":1.0}}},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"603":{"tf":1.0}}}}}},"l":{"a":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"343":{"tf":1.0},"42":{"tf":1.0},"54":{"tf":1.0}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":1,"docs":{"65":{"tf":1.0}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"307":{"tf":1.0},"310":{"tf":1.0}}}}}}},"i":{"d":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"209":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"343":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"55":{"tf":1.0}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"211":{"tf":1.0},"252":{"tf":1.0},"341":{"tf":1.0},"562":{"tf":1.0}}}}}}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":2,"docs":{"3":{"tf":1.0},"515":{"tf":1.0}}}}}},"df":3,"docs":{"209":{"tf":1.0},"310":{"tf":1.0},"486":{"tf":1.0}},"e":{"d":{"df":29,"docs":{"106":{"tf":1.7320508075688772},"107":{"tf":1.0},"108":{"tf":1.0},"109":{"tf":1.0},"110":{"tf":2.8284271247461903},"111":{"tf":1.4142135623730951},"112":{"tf":1.0},"113":{"tf":1.0},"156":{"tf":1.4142135623730951},"321":{"tf":1.0},"322":{"tf":1.0},"334":{"tf":1.7320508075688772},"335":{"tf":1.0},"336":{"tf":1.4142135623730951},"337":{"tf":1.0},"338":{"tf":2.23606797749979},"339":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0},"370":{"tf":1.0},"456":{"tf":1.7320508075688772},"463":{"tf":1.0},"515":{"tf":2.0},"61":{"tf":1.0},"62":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":1,"docs":{"284":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{"2":{"0":{"0":{"0":{"df":1,"docs":{"603":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"j":{"df":0,"docs":{},"i":{"df":1,"docs":{"552":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":1,"docs":{"231":{"tf":1.0}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"156":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"469":{"tf":1.0}}}}},"n":{"a":{"b":{"df":0,"docs":{},"l":{"df":12,"docs":{"178":{"tf":1.0},"259":{"tf":1.0},"321":{"tf":1.0},"343":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"470":{"tf":1.0},"530":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"358":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"457":{"tf":1.0}}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":13,"docs":{"153":{"tf":1.0},"177":{"tf":1.0},"182":{"tf":1.0},"25":{"tf":1.0},"263":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"318":{"tf":1.0},"321":{"tf":1.0},"470":{"tf":1.0},"74":{"tf":1.0},"9":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"g":{"df":6,"docs":{"15":{"tf":1.0},"152":{"tf":1.0},"268":{"tf":1.0},"462":{"tf":1.0},"485":{"tf":1.0},"54":{"tf":1.0}}}},"df":0,"docs":{}}}}},"d":{"df":25,"docs":{"11":{"tf":1.4142135623730951},"15":{"tf":1.4142135623730951},"156":{"tf":1.0},"16":{"tf":1.0},"218":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"284":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"322":{"tf":1.0},"370":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"47":{"tf":1.4142135623730951},"504":{"tf":1.0},"58":{"tf":1.0},"599":{"tf":1.4142135623730951},"60":{"tf":1.0},"8":{"tf":1.4142135623730951}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"232":{"tf":1.7320508075688772},"370":{"tf":1.0},"408":{"tf":1.7320508075688772},"538":{"tf":2.0}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":1,"docs":{"138":{"tf":1.0}}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"171":{"tf":1.0}}},"df":0,"docs":{}}}},"g":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"27":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":6,"docs":{"138":{"tf":1.0},"212":{"tf":1.0},"231":{"tf":1.0},"389":{"tf":1.7320508075688772},"393":{"tf":1.0},"433":{"tf":1.0}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":3,"docs":{"276":{"tf":1.0},"486":{"tf":1.0},"9":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"195":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":24,"docs":{"156":{"tf":1.0},"173":{"tf":1.0},"178":{"tf":1.0},"189":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"318":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.7320508075688772},"427":{"tf":1.0},"431":{"tf":1.0},"470":{"tf":1.0},"480":{"tf":1.0},"503":{"tf":1.0},"530":{"tf":1.0}}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"u":{"df":1,"docs":{"539":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":4,"docs":{"120":{"tf":1.0},"16":{"tf":1.0},"517":{"tf":1.0},"539":{"tf":1.0}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"156":{"tf":1.0},"240":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{"1":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":2,"docs":{"363":{"tf":1.0},"538":{"tf":1.4142135623730951}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"113":{"tf":1.0},"27":{"tf":1.0}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"r":{"df":15,"docs":{"116":{"tf":1.0},"127":{"tf":1.0},"218":{"tf":1.0},"268":{"tf":1.4142135623730951},"284":{"tf":1.0},"313":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"442":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.7320508075688772},"506":{"tf":1.0},"72":{"tf":1.0},"8":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"257":{"tf":1.0},"284":{"tf":1.0},"431":{"tf":1.4142135623730951}}}}},"u":{"df":0,"docs":{},"m":{"df":4,"docs":{"199":{"tf":1.7320508075688772},"209":{"tf":1.0},"214":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":19,"docs":{"108":{"tf":1.0},"110":{"tf":1.4142135623730951},"146":{"tf":1.0},"156":{"tf":1.0},"218":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.4142135623730951},"286":{"tf":1.0},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"344":{"tf":1.4142135623730951},"425":{"tf":1.0},"457":{"tf":1.7320508075688772},"546":{"tf":1.0},"61":{"tf":1.4142135623730951},"77":{"tf":1.4142135623730951},"82":{"tf":1.4142135623730951},"87":{"tf":1.4142135623730951},"92":{"tf":1.4142135623730951}}}}}}},"z":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"f":{"d":{"=":{"3":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"i":{"c":{"df":1,"docs":{"79":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"62":{"tf":1.0}},"l":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"q":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":9,"docs":{"213":{"tf":1.0},"214":{"tf":1.0},"259":{"tf":1.0},"336":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"458":{"tf":1.4142135623730951},"526":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":4,"docs":{"156":{"tf":1.0},"292":{"tf":1.0},"487":{"tf":1.0},"9":{"tf":1.0}}}}}}},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"t":{"'":{"df":1,"docs":{"287":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"414":{"tf":1.0}}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"261":{"tf":1.0}}},"df":0,"docs":{}},"r":{"(":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"_":{"df":1,"docs":{"276":{"tf":1.0}}},"df":3,"docs":{"292":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"440":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"328":{"tf":1.0}}}}}}}}},"df":1,"docs":{"292":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"[":{"df":0,"docs":{},"e":{"0":{"2":{"7":{"7":{"df":6,"docs":{"292":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"0":{"8":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"9":{"7":{"df":2,"docs":{"217":{"tf":1.0},"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"5":{"8":{"df":2,"docs":{"196":{"tf":1.0},"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"0":{"6":{"df":2,"docs":{"209":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}},"3":{"3":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":41,"docs":{"110":{"tf":1.4142135623730951},"196":{"tf":1.7320508075688772},"197":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"226":{"tf":1.0},"244":{"tf":1.0},"258":{"tf":1.4142135623730951},"261":{"tf":1.7320508075688772},"263":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"272":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.7320508075688772},"307":{"tf":1.0},"310":{"tf":1.4142135623730951},"317":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.4142135623730951},"370":{"tf":2.0},"380":{"tf":3.605551275463989},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"394":{"tf":1.0},"419":{"tf":1.7320508075688772},"42":{"tf":1.0},"433":{"tf":1.0},"440":{"tf":2.23606797749979},"442":{"tf":1.0},"448":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":2.0},"522":{"tf":1.4142135623730951},"599":{"tf":1.0},"79":{"tf":1.0}}}}}},"s":{"c":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"538":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":7,"docs":{"112":{"tf":1.0},"136":{"tf":1.0},"221":{"tf":1.4142135623730951},"237":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"376":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}}}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"156":{"tf":1.4142135623730951},"469":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"c":{"df":12,"docs":{"136":{"tf":1.0},"230":{"tf":1.0},"235":{"tf":1.0},"302":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"363":{"tf":1.0},"41":{"tf":1.0},"419":{"tf":1.0},"599":{"tf":1.7320508075688772},"62":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"423":{"tf":1.0}}}},"n":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":50,"docs":{"118":{"tf":1.0},"127":{"tf":1.0},"156":{"tf":1.7320508075688772},"171":{"tf":1.0},"192":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"251":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.4142135623730951},"261":{"tf":1.4142135623730951},"263":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.7320508075688772},"288":{"tf":1.0},"292":{"tf":1.4142135623730951},"297":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"313":{"tf":1.0},"324":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":2.0},"399":{"tf":1.0},"405":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"478":{"tf":1.0},"54":{"tf":1.0},"542":{"tf":1.0}},"t":{"df":17,"docs":{"156":{"tf":1.4142135623730951},"185":{"tf":1.7320508075688772},"186":{"tf":1.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":2.0},"191":{"tf":1.4142135623730951},"192":{"tf":2.449489742783178},"336":{"tf":2.8284271247461903},"342":{"tf":1.7320508075688772},"412":{"tf":1.0},"462":{"tf":1.0},"504":{"tf":2.0},"555":{"tf":1.0},"599":{"tf":2.23606797749979},"62":{"tf":1.7320508075688772}},"s":{"=":{"0":{"df":0,"docs":{},"x":{"5":{"5":{"5":{"5":{"5":{"5":{"7":{"1":{"1":{"3":{"4":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"b":{"a":{"4":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":11,"docs":{"195":{"tf":1.0},"200":{"tf":1.0},"245":{"tf":1.0},"300":{"tf":1.0},"347":{"tf":1.0},"431":{"tf":1.7320508075688772},"448":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"49":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"361":{"tf":1.0}}}}},"y":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":2,"docs":{"231":{"tf":1.0},"300":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":9,"docs":{"174":{"tf":1.0},"184":{"tf":1.0},"264":{"tf":1.0},"534":{"tf":1.0},"600":{"tf":1.0},"601":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0},"8":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":12,"docs":{"156":{"tf":1.0},"217":{"tf":1.7320508075688772},"245":{"tf":1.0},"257":{"tf":1.0},"261":{"tf":1.0},"309":{"tf":1.0},"324":{"tf":1.4142135623730951},"457":{"tf":1.0},"504":{"tf":1.4142135623730951},"522":{"tf":1.0},"530":{"tf":1.0},"599":{"tf":1.7320508075688772}}}},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"156":{"tf":1.0},"408":{"tf":1.0},"421":{"tf":1.0},"538":{"tf":1.0}}}}}}}}},"i":{"d":{"df":5,"docs":{"162":{"tf":1.0},"28":{"tf":1.0},"36":{"tf":1.4142135623730951},"597":{"tf":1.0},"598":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":6,"docs":{"156":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"478":{"tf":1.0},"560":{"tf":1.0},"599":{"tf":1.0}}}}}},"x":{"a":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"380":{"tf":1.0},"431":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":13,"docs":{"218":{"tf":1.0},"258":{"tf":1.0},"322":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.4142135623730951},"40":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"481":{"tf":1.0},"49":{"tf":1.4142135623730951},"504":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"431":{"tf":1.0}}}},"p":{"df":0,"docs":{},"l":{"df":48,"docs":{"147":{"tf":1.0},"152":{"tf":1.0},"159":{"tf":1.0},"167":{"tf":1.0},"178":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"237":{"tf":1.0},"257":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"336":{"tf":1.0},"365":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"393":{"tf":1.0},"403":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.4142135623730951},"418":{"tf":1.7320508075688772},"419":{"tf":2.0},"421":{"tf":1.0},"422":{"tf":1.4142135623730951},"423":{"tf":1.4142135623730951},"433":{"tf":1.0},"436":{"tf":1.0},"440":{"tf":1.7320508075688772},"450":{"tf":1.0},"47":{"tf":1.0},"485":{"tf":1.0},"491":{"tf":1.0},"502":{"tf":1.0},"517":{"tf":1.0},"529":{"tf":1.0},"56":{"tf":1.0},"564":{"tf":1.0},"57":{"tf":1.0},"580":{"tf":1.4142135623730951},"581":{"tf":1.4142135623730951},"599":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.0}},"e":{"(":{"df":0,"docs":{},"x":{"df":1,"docs":{"564":{"tf":1.0}}}},"df":0,"docs":{},"s":{"/":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"8":{"4":{":":{"1":{"5":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"c":{"df":0,"docs":{},"e":{"df":2,"docs":{"347":{"tf":1.0},"431":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"111":{"tf":1.0}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"t":{"df":8,"docs":{"264":{"tf":1.0},"317":{"tf":1.0},"383":{"tf":1.0},"445":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0},"61":{"tf":1.0}}}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"t":{"df":19,"docs":{"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"41":{"tf":2.0},"478":{"tf":1.0},"497":{"tf":1.0},"510":{"tf":1.7320508075688772},"511":{"tf":1.4142135623730951},"512":{"tf":1.4142135623730951},"513":{"tf":1.4142135623730951},"528":{"tf":1.7320508075688772},"529":{"tf":1.4142135623730951},"530":{"tf":1.4142135623730951},"531":{"tf":1.4142135623730951},"542":{"tf":1.4142135623730951},"543":{"tf":1.4142135623730951},"544":{"tf":1.4142135623730951},"545":{"tf":1.4142135623730951},"65":{"tf":1.0},"87":{"tf":1.0}},"e":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"448":{"tf":1.0}}}}},"df":0,"docs":{}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":2,"docs":{"408":{"tf":1.0},"538":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":25,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.0},"178":{"tf":1.4142135623730951},"181":{"tf":1.0},"209":{"tf":1.7320508075688772},"211":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.0},"308":{"tf":1.0},"318":{"tf":1.0},"336":{"tf":2.0},"341":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"419":{"tf":1.0},"457":{"tf":2.23606797749979},"458":{"tf":1.0},"460":{"tf":1.4142135623730951},"462":{"tf":1.0},"463":{"tf":1.0},"470":{"tf":2.23606797749979},"502":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"462":{"tf":1.0}}},"df":35,"docs":{"156":{"tf":1.7320508075688772},"209":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.7320508075688772},"258":{"tf":1.4142135623730951},"268":{"tf":1.0},"326":{"tf":1.7320508075688772},"327":{"tf":1.0},"328":{"tf":2.23606797749979},"329":{"tf":1.0},"330":{"tf":2.23606797749979},"331":{"tf":1.0},"332":{"tf":1.0},"333":{"tf":1.4142135623730951},"336":{"tf":3.605551275463989},"341":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.4142135623730951},"349":{"tf":1.0},"359":{"tf":1.4142135623730951},"360":{"tf":1.0},"408":{"tf":1.4142135623730951},"462":{"tf":1.0},"470":{"tf":2.23606797749979},"480":{"tf":1.7320508075688772},"483":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"545":{"tf":2.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.7320508075688772},"549":{"tf":1.0},"599":{"tf":1.4142135623730951},"62":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}},"h":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"248":{"tf":1.0},"538":{"tf":1.0},"598":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":27,"docs":{"120":{"tf":1.0},"130":{"tf":1.4142135623730951},"14":{"tf":1.4142135623730951},"156":{"tf":1.4142135623730951},"192":{"tf":1.0},"204":{"tf":1.0},"211":{"tf":1.0},"22":{"tf":1.0},"235":{"tf":1.0},"276":{"tf":1.0},"315":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"341":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.0},"493":{"tf":1.0},"498":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"91":{"tf":1.0},"96":{"tf":1.4142135623730951}}}}},"p":{"a":{"df":0,"docs":{},"n":{"d":{"df":33,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"396":{"tf":1.0},"404":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"437":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"539":{"tf":1.0},"562":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":39,"docs":{"152":{"tf":1.0},"16":{"tf":1.0},"18":{"tf":1.0},"196":{"tf":1.4142135623730951},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"28":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"317":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"408":{"tf":1.7320508075688772},"41":{"tf":2.23606797749979},"417":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"485":{"tf":1.0},"487":{"tf":1.0},"497":{"tf":1.0},"51":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.4142135623730951},"547":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.0},"65":{"tf":2.0},"77":{"tf":1.4142135623730951},"82":{"tf":1.7320508075688772},"87":{"tf":1.7320508075688772},"9":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":5,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.0},"410":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":107,"docs":{"11":{"tf":1.4142135623730951},"127":{"tf":1.0},"136":{"tf":1.0},"153":{"tf":1.0},"154":{"tf":1.0},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"173":{"tf":1.0},"174":{"tf":1.0},"176":{"tf":1.4142135623730951},"183":{"tf":1.0},"186":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"205":{"tf":1.0},"208":{"tf":1.4142135623730951},"209":{"tf":1.0},"214":{"tf":1.0},"216":{"tf":1.4142135623730951},"218":{"tf":1.0},"220":{"tf":1.4142135623730951},"228":{"tf":1.0},"23":{"tf":2.0},"235":{"tf":1.0},"238":{"tf":1.0},"24":{"tf":1.0},"243":{"tf":1.0},"249":{"tf":1.0},"25":{"tf":1.7320508075688772},"250":{"tf":1.0},"254":{"tf":1.0},"256":{"tf":1.0},"259":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.4142135623730951},"264":{"tf":1.0},"267":{"tf":1.4142135623730951},"27":{"tf":1.0},"275":{"tf":1.4142135623730951},"278":{"tf":1.0},"283":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"295":{"tf":1.0},"299":{"tf":1.4142135623730951},"303":{"tf":1.0},"306":{"tf":1.4142135623730951},"316":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.4142135623730951},"327":{"tf":1.0},"331":{"tf":1.0},"333":{"tf":1.0},"335":{"tf":1.4142135623730951},"346":{"tf":1.4142135623730951},"353":{"tf":1.0},"355":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":2.0},"369":{"tf":1.4142135623730951},"379":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"382":{"tf":1.4142135623730951},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":2.8284271247461903},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.4142135623730951},"396":{"tf":1.4142135623730951},"403":{"tf":1.0},"407":{"tf":1.4142135623730951},"414":{"tf":1.0},"416":{"tf":1.4142135623730951},"421":{"tf":1.0},"430":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"439":{"tf":1.0},"443":{"tf":1.0},"447":{"tf":1.4142135623730951},"451":{"tf":1.0},"455":{"tf":1.0},"456":{"tf":1.0},"461":{"tf":1.0},"467":{"tf":1.4142135623730951},"47":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":1.0},"475":{"tf":2.0},"477":{"tf":1.4142135623730951},"49":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"597":{"tf":1.0},"79":{"tf":1.0},"8":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"n":{"c":{"df":16,"docs":{"221":{"tf":1.0},"272":{"tf":1.0},"289":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.4142135623730951},"339":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"376":{"tf":1.0},"389":{"tf":1.0},"393":{"tf":1.4142135623730951},"435":{"tf":1.0},"65":{"tf":1.4142135623730951},"71":{"tf":1.4142135623730951},"79":{"tf":1.0},"89":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"196":{"tf":1.4142135623730951},"209":{"tf":1.0},"357":{"tf":1.0},"392":{"tf":1.0}}}}}}},"t":{"df":7,"docs":{"127":{"tf":1.0},"153":{"tf":1.0},"209":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"245":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"218":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":23,"docs":{"178":{"tf":1.4142135623730951},"198":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.7320508075688772},"217":{"tf":1.0},"218":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"347":{"tf":1.0},"42":{"tf":1.0},"440":{"tf":1.0},"45":{"tf":1.0},"457":{"tf":1.4142135623730951},"458":{"tf":1.0},"48":{"tf":1.0},"480":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"583":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":6,"docs":{"211":{"tf":1.0},"250":{"tf":1.0},"252":{"tf":1.0},"380":{"tf":1.0},"421":{"tf":1.0},"460":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":6,"docs":{"178":{"tf":1.0},"199":{"tf":1.0},"268":{"tf":1.4142135623730951},"458":{"tf":1.0},"470":{"tf":1.0},"6":{"tf":1.0}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":8,"docs":{"11":{"tf":1.0},"268":{"tf":1.0},"330":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"460":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"s":{"df":4,"docs":{"300":{"tf":2.0},"336":{"tf":1.0},"349":{"tf":1.0},"507":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"359":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":8,"docs":{"136":{"tf":1.0},"211":{"tf":1.0},"231":{"tf":1.0},"292":{"tf":2.0},"458":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.0},"74":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":7,"docs":{"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"218":{"tf":1.0},"292":{"tf":1.4142135623730951},"330":{"tf":1.0},"511":{"tf":1.0},"65":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":5,"docs":{"177":{"tf":1.0},"3":{"tf":1.0},"389":{"tf":1.0},"503":{"tf":1.0},"59":{"tf":1.0}}},"t":{"df":1,"docs":{"352":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"df":15,"docs":{"185":{"tf":1.7320508075688772},"186":{"tf":1.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"240":{"tf":1.0},"256":{"tf":1.0},"3":{"tf":1.0},"336":{"tf":1.4142135623730951},"521":{"tf":1.0},"535":{"tf":1.0},"599":{"tf":1.0}}}}},"r":{"a":{"df":5,"docs":{"178":{"tf":1.0},"246":{"tf":1.0},"259":{"tf":1.0},"397":{"tf":1.0},"503":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":11,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"130":{"tf":1.0},"179":{"tf":1.0},"268":{"tf":1.0},"349":{"tf":1.0},"408":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0}}}}}}},"y":{"df":1,"docs":{"25":{"tf":1.0}}}},"f":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{")":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"a":{"c":{"a":{"d":{"df":1,"docs":{"515":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":40,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"237":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"9":{"tf":1.0}}},"t":{"df":9,"docs":{"137":{"tf":1.0},"237":{"tf":1.0},"268":{"tf":1.4142135623730951},"300":{"tf":1.0},"321":{"tf":1.0},"37":{"tf":1.0},"457":{"tf":1.0},"517":{"tf":1.0},"55":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"261":{"tf":1.0},"302":{"tf":1.0},"336":{"tf":1.0}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"16":{"tf":1.0},"29":{"tf":1.0},"42":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":9,"docs":{"153":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.4142135623730951},"457":{"tf":1.0},"470":{"tf":1.0},"9":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"127":{"tf":1.0}}}}},"r":{"df":3,"docs":{"18":{"tf":1.0},"256":{"tf":1.0},"521":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":8,"docs":{"171":{"tf":1.0},"177":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"317":{"tf":1.0},"442":{"tf":1.0},"475":{"tf":1.0},"530":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"l":{"df":3,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"289":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"214":{"tf":1.0}}}}},"s":{"df":1,"docs":{"470":{"tf":1.0}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"r":{"df":13,"docs":{"120":{"tf":1.0},"264":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"317":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.4142135623730951},"435":{"tf":1.0},"440":{"tf":1.0},"475":{"tf":1.0},"530":{"tf":1.0},"559":{"tf":1.0},"73":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"df":1,"docs":{"67":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"143":{"tf":1.0}}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"q":{"df":52,"docs":{"158":{"tf":1.0},"16":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"22":{"tf":1.7320508075688772},"220":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":2.449489742783178},"283":{"tf":1.0},"29":{"tf":1.4142135623730951},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"309":{"tf":1.0},"32":{"tf":1.0},"329":{"tf":1.0},"335":{"tf":1.0},"34":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"40":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":2.449489742783178},"416":{"tf":1.0},"42":{"tf":1.4142135623730951},"447":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.0},"467":{"tf":1.0},"47":{"tf":1.0},"477":{"tf":1.0},"48":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"492":{"tf":1.0},"50":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"59":{"tf":1.0}}},"r":{"df":13,"docs":{"111":{"tf":1.0},"197":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.0},"217":{"tf":1.0},"336":{"tf":1.0},"361":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.0},"599":{"tf":1.0}},"e":{"df":2,"docs":{"41":{"tf":2.0},"9":{"tf":1.0}}},"n":{"df":0,"docs":{},"z":{"df":1,"docs":{"602":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":5,"docs":{"153":{"tf":1.0},"201":{"tf":1.0},"522":{"tf":1.0},"545":{"tf":1.0},"9":{"tf":1.0}}}}}},"t":{"df":6,"docs":{"119":{"tf":1.0},"121":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"231":{"tf":1.0},"357":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"178":{"tf":1.0},"389":{"tf":1.0},"469":{"tf":1.0},"532":{"tf":1.0}},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":2,"docs":{"370":{"tf":1.0},"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":1,"docs":{"231":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":4,"docs":{"131":{"tf":1.0},"245":{"tf":1.0},"363":{"tf":1.0},"513":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"167":{"tf":1.0},"356":{"tf":1.0},"478":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"61":{"tf":1.0}}}}}}},"df":4,"docs":{"217":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"292":{"tf":2.6457513110645907},"380":{"tf":1.4142135623730951}},"e":{"a":{"df":0,"docs":{},"r":{"df":7,"docs":{"235":{"tf":1.0},"237":{"tf":1.0},"256":{"tf":1.0},"300":{"tf":1.0},"363":{"tf":1.0},"408":{"tf":1.0},"521":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":30,"docs":{"138":{"tf":1.0},"16":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.0},"230":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"239":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.0},"300":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"341":{"tf":2.449489742783178},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.7320508075688772},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"46":{"tf":1.0},"469":{"tf":1.0},"486":{"tf":1.4142135623730951},"509":{"tf":1.4142135623730951},"538":{"tf":1.0},"560":{"tf":1.0},"561":{"tf":1.0},"60":{"tf":1.0},"602":{"tf":1.0}},"e":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"_":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"d":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":7,"docs":{"15":{"tf":1.0},"17":{"tf":1.0},"209":{"tf":1.0},"24":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"547":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":71,"docs":{"152":{"tf":1.0},"156":{"tf":1.0},"158":{"tf":1.0},"159":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"17":{"tf":1.0},"176":{"tf":1.0},"178":{"tf":1.4142135623730951},"186":{"tf":1.0},"187":{"tf":1.0},"189":{"tf":1.4142135623730951},"194":{"tf":1.0},"197":{"tf":1.0},"2":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"221":{"tf":1.0},"261":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.7320508075688772},"28":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"306":{"tf":1.0},"329":{"tf":1.0},"33":{"tf":1.0},"331":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"35":{"tf":1.0},"359":{"tf":1.4142135623730951},"369":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.7320508075688772},"381":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0},"447":{"tf":1.0},"449":{"tf":1.0},"457":{"tf":1.4142135623730951},"467":{"tf":1.0},"47":{"tf":1.0},"477":{"tf":1.0},"485":{"tf":1.0},"487":{"tf":1.0},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"501":{"tf":1.0},"509":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.0},"537":{"tf":1.0},"556":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.0},"96":{"tf":1.0}}}},"l":{"df":0,"docs":{},"t":{"df":5,"docs":{"218":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":2.23606797749979}}}},"t":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"(":{"&":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"df":2,"docs":{"523":{"tf":1.7320508075688772},"535":{"tf":1.0}},"s":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"523":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":3,"docs":{"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"312":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":24,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"195":{"tf":1.0},"209":{"tf":1.0},"232":{"tf":1.0},"259":{"tf":1.4142135623730951},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"359":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.23606797749979},"389":{"tf":1.0},"397":{"tf":1.0},"410":{"tf":1.0},"431":{"tf":1.0},"486":{"tf":1.0},"516":{"tf":1.0},"556":{"tf":1.0},"79":{"tf":1.0},"9":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"284":{"tf":1.0},"377":{"tf":1.0}}}}}},"i":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"154":{"tf":1.0},"23":{"tf":1.0},"9":{"tf":1.0}}}}}}},"d":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"294":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":3,"docs":{"296":{"tf":1.0},"328":{"tf":1.0},"508":{"tf":1.0}}},"df":0,"docs":{}},"r":{"c":{"df":1,"docs":{"138":{"tf":1.0}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"110":{"tf":1.0},"370":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"r":{"df":22,"docs":{"178":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.4142135623730951},"251":{"tf":1.0},"268":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"317":{"tf":1.0},"347":{"tf":1.7320508075688772},"353":{"tf":1.0},"370":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"41":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"49":{"tf":1.4142135623730951},"499":{"tf":1.4142135623730951},"52":{"tf":1.0},"53":{"tf":1.0},"539":{"tf":1.0},"552":{"tf":1.0},"599":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"199":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"196":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"_":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"195":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"b":{"\"":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":4,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},":":{":":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"(":{"\"":{"a":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"\"":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"522":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"522":{"tf":2.23606797749979},"523":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":23,"docs":{"157":{"tf":1.4142135623730951},"16":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.4142135623730951},"199":{"tf":1.7320508075688772},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"21":{"tf":1.4142135623730951},"24":{"tf":1.0},"257":{"tf":2.0},"258":{"tf":1.0},"26":{"tf":1.4142135623730951},"279":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.4142135623730951},"44":{"tf":1.0},"489":{"tf":1.4142135623730951},"522":{"tf":2.8284271247461903},"523":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0}}},"l":{"df":3,"docs":{"458":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.4142135623730951}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"|":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"312":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"312":{"tf":2.23606797749979},"431":{"tf":1.0}}}}}},"n":{"a":{"df":0,"docs":{},"l":{"df":9,"docs":{"15":{"tf":1.0},"197":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"389":{"tf":1.0},"470":{"tf":1.0},"61":{"tf":1.0}}}},"d":{"df":70,"docs":{"140":{"tf":1.0},"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"175":{"tf":1.7320508075688772},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.7320508075688772},"179":{"tf":1.7320508075688772},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"190":{"tf":1.4142135623730951},"199":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":2.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"25":{"tf":1.4142135623730951},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"261":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"276":{"tf":2.0},"278":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"370":{"tf":2.23606797749979},"380":{"tf":1.7320508075688772},"383":{"tf":1.0},"397":{"tf":1.0},"401":{"tf":1.0},"408":{"tf":2.23606797749979},"410":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.7320508075688772},"436":{"tf":1.0},"458":{"tf":1.0},"46":{"tf":1.0},"469":{"tf":1.0},"493":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"510":{"tf":1.0},"512":{"tf":1.0},"528":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"543":{"tf":1.0},"55":{"tf":1.0},"559":{"tf":1.0},"57":{"tf":1.0},"96":{"tf":1.7320508075688772}}},"df":1,"docs":{"397":{"tf":1.0}},"e":{"df":10,"docs":{"137":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.7320508075688772},"268":{"tf":1.0},"309":{"tf":1.0},"336":{"tf":1.0},"458":{"tf":1.0},"511":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}},"i":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":14,"docs":{"189":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"374":{"tf":1.0},"521":{"tf":1.0},"558":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"309":{"tf":1.0},"448":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":56,"docs":{"136":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"187":{"tf":1.4142135623730951},"188":{"tf":1.0},"189":{"tf":1.4142135623730951},"196":{"tf":1.4142135623730951},"198":{"tf":1.0},"232":{"tf":1.7320508075688772},"233":{"tf":1.7320508075688772},"246":{"tf":1.0},"251":{"tf":1.0},"257":{"tf":1.7320508075688772},"259":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"300":{"tf":1.0},"312":{"tf":1.0},"328":{"tf":1.7320508075688772},"354":{"tf":1.7320508075688772},"355":{"tf":1.0},"356":{"tf":2.0},"357":{"tf":1.0},"358":{"tf":1.4142135623730951},"359":{"tf":1.4142135623730951},"360":{"tf":1.0},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":2.449489742783178},"386":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.7320508075688772},"457":{"tf":1.4142135623730951},"46":{"tf":1.0},"460":{"tf":1.0},"465":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"502":{"tf":1.0},"522":{"tf":2.0},"525":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951},"61":{"tf":1.0}}}},"t":{"df":1,"docs":{"470":{"tf":1.0}}}},"t":{"df":14,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"35":{"tf":1.7320508075688772},"370":{"tf":1.0},"383":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"435":{"tf":1.0},"515":{"tf":1.0},"527":{"tf":1.4142135623730951},"531":{"tf":1.0},"65":{"tf":1.0}}},"x":{"df":16,"docs":{"155":{"tf":1.0},"169":{"tf":1.0},"171":{"tf":1.0},"174":{"tf":1.0},"2":{"tf":1.0},"234":{"tf":1.0},"237":{"tf":1.4142135623730951},"246":{"tf":1.0},"261":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.0},"431":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":1.0},"556":{"tf":1.7320508075688772},"84":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"g":{"df":4,"docs":{"178":{"tf":1.0},"244":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.0}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"209":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"110":{"tf":1.0},"336":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"8":{":":{"3":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"116":{"tf":1.0},"129":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"531":{"tf":1.0}}}}}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":1,"docs":{"177":{"tf":1.0}}}}}}}},"n":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":62,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.4142135623730951},"196":{"tf":1.7320508075688772},"197":{"tf":1.4142135623730951},"199":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.7320508075688772},"217":{"tf":2.8284271247461903},"221":{"tf":2.23606797749979},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.4142135623730951},"292":{"tf":3.7416573867739413},"307":{"tf":2.23606797749979},"308":{"tf":1.7320508075688772},"309":{"tf":2.0},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"313":{"tf":1.0},"320":{"tf":1.4142135623730951},"328":{"tf":2.449489742783178},"336":{"tf":2.6457513110645907},"341":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"370":{"tf":3.3166247903554},"375":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"418":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":3.1622776601683795},"448":{"tf":2.0},"450":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"522":{"tf":2.449489742783178},"523":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.4142135623730951},"564":{"tf":1.4142135623730951},"568":{"tf":1.4142135623730951},"573":{"tf":1.0},"575":{"tf":2.0},"576":{"tf":1.4142135623730951},"577":{"tf":1.0},"578":{"tf":1.4142135623730951},"579":{"tf":2.449489742783178},"580":{"tf":1.7320508075688772},"581":{"tf":1.4142135623730951},"582":{"tf":1.0},"583":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"(":{"&":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"s":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"5":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"c":{"df":0,"docs":{},"u":{"df":8,"docs":{"110":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.0},"16":{"tf":1.0},"41":{"tf":1.0},"46":{"tf":1.0},"472":{"tf":1.0},"77":{"tf":1.0}},"s":{"df":6,"docs":{"203":{"tf":1.0},"3":{"tf":1.4142135623730951},"389":{"tf":1.0},"402":{"tf":1.0},"435":{"tf":1.0},"551":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"36":{"tf":1.0}}}}},"df":0,"docs":{},"k":{"df":7,"docs":{"153":{"tf":1.0},"16":{"tf":1.0},"19":{"tf":1.0},"25":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.0},"572":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}},"o":{"df":0,"docs":{},"w":{"df":21,"docs":{"156":{"tf":1.0},"157":{"tf":1.0},"177":{"tf":1.0},"195":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"22":{"tf":1.0},"221":{"tf":1.7320508075688772},"230":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"357":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":2.23606797749979},"389":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"489":{"tf":1.0},"538":{"tf":1.0},"561":{"tf":1.0}}}},"w":{"df":1,"docs":{"370":{"tf":1.0}}},"y":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{":":{":":{"c":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"(":{"[":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"<":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"m":{"df":0,"docs":{},"o":{"df":1,"docs":{"363":{"tf":1.0}}}},"o":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"581":{"tf":1.0}}}}}}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"`":{"_":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{".":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"2":{"7":{"2":{"df":0,"docs":{},"e":{"2":{"b":{"5":{"df":0,"docs":{},"e":{"8":{"0":{"8":{"2":{"6":{"4":{"a":{"2":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"p":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"4":{"d":{"a":{"d":{"2":{"6":{"7":{"b":{"4":{"df":0,"docs":{},"f":{"1":{"0":{"5":{"3":{"5":{"d":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"c":{"$":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{".":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"d":{"6":{"2":{"d":{"2":{"a":{"2":{"4":{"1":{"7":{"c":{"0":{"df":0,"docs":{},"f":{"2":{"df":0,"docs":{},"e":{"a":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"p":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"4":{"8":{"2":{"df":0,"docs":{},"f":{"2":{"5":{"3":{"6":{"5":{"1":{"b":{"9":{"6":{"8":{"df":0,"docs":{},"e":{"6":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},".":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"f":{"5":{"b":{"2":{"9":{"5":{"df":0,"docs":{},"f":{"c":{"c":{"0":{"8":{"3":{"7":{"df":0,"docs":{},"f":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"1":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"2":{"$":{"c":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"df":0,"docs":{},"f":{"6":{"0":{"df":0,"docs":{},"f":{"0":{"5":{"df":0,"docs":{},"f":{"9":{"df":0,"docs":{},"e":{"9":{"d":{"6":{"df":0,"docs":{},"f":{"3":{"0":{"7":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{".":{".":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"a":{"2":{"4":{"7":{"2":{"a":{"9":{"a":{"5":{"4":{"df":0,"docs":{},"f":{"0":{"df":0,"docs":{},"e":{"5":{"0":{"4":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"m":{"a":{"df":0,"docs":{},"y":{"b":{"df":0,"docs":{},"e":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"y":{"b":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"d":{"b":{"6":{"d":{"b":{"4":{"0":{"c":{"2":{"b":{"3":{"df":0,"docs":{},"f":{"2":{"df":0,"docs":{},"f":{"1":{"b":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"t":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"a":{"df":0,"docs":{},"s":{"$":{"df":0,"docs":{},"u":{"2":{"0":{"$":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{".":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"1":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"a":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"c":{"5":{"5":{"9":{"b":{"1":{"df":0,"docs":{},"f":{"3":{"df":0,"docs":{},"f":{"7":{"0":{"8":{"a":{"7":{"b":{"0":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"b":{"a":{"8":{"6":{"a":{"df":0,"docs":{},"f":{"c":{"3":{"df":0,"docs":{},"f":{"8":{"1":{"9":{"7":{"5":{"6":{"1":{"(":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"6":{"1":{"7":{"d":{"4":{"9":{"d":{"0":{"8":{"4":{"1":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"0":{"d":{"(":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"6":{"4":{"5":{"9":{"0":{"8":{"6":{"df":0,"docs":{},"f":{"c":{"0":{"4":{"1":{"9":{"4":{"3":{"df":0,"docs":{},"f":{"(":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"d":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"2":{"4":{"c":{"5":{"8":{"c":{"d":{"1":{"df":0,"docs":{},"e":{"1":{"1":{"2":{"1":{"3":{"6":{"df":0,"docs":{},"f":{"df":1,"docs":{"404":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"a":{"8":{"6":{"9":{"4":{"b":{"c":{"6":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"5":{"1":{"8":{"2":{"c":{"d":{"(":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"9":{"6":{"5":{"c":{"2":{"8":{"c":{"9":{"c":{"df":0,"docs":{},"e":{"0":{"6":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"7":{"3":{"df":1,"docs":{"404":{"tf":2.23606797749979}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"_":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{":":{":":{"_":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"h":{"8":{"5":{"6":{"d":{"6":{"4":{"8":{"3":{"6":{"7":{"8":{"9":{"5":{"3":{"9":{"1":{"(":{"df":0,"docs":{},"f":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"3":{"1":{"0":{"6":{"d":{"4":{"4":{"4":{"df":0,"docs":{},"f":{"5":{"0":{"9":{"a":{"d":{"8":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"$":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"t":{"$":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"$":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{":":{":":{"df":0,"docs":{},"h":{"9":{"a":{"2":{"df":0,"docs":{},"f":{"7":{"0":{"c":{"5":{"c":{"8":{"df":0,"docs":{},"e":{"6":{"3":{"2":{"8":{"8":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"5":{"5":{"5":{"5":{"5":{"5":{"6":{"df":0,"docs":{},"e":{"2":{"a":{"4":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{":":{":":{"df":0,"docs":{},"h":{"1":{"2":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"d":{"0":{"9":{"0":{"6":{"b":{"9":{"4":{"d":{"0":{"9":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"5":{"5":{"5":{"5":{"5":{"5":{"6":{"df":0,"docs":{},"e":{"2":{"a":{"4":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"_":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"a":{"2":{"2":{"9":{"c":{"df":0,"docs":{},"f":{"a":{"0":{"c":{"1":{"a":{"2":{"df":0,"docs":{},"e":{"1":{"3":{"df":0,"docs":{},"f":{"(":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"7":{"c":{"0":{"6":{"7":{"1":{"2":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"_":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"b":{"$":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{"$":{"df":0,"docs":{},"u":{"7":{"d":{"$":{":":{":":{"df":0,"docs":{},"h":{"b":{"df":0,"docs":{},"f":{"c":{"6":{"1":{"d":{"9":{"df":0,"docs":{},"f":{"7":{"4":{"7":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"7":{"b":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"3":{"3":{"b":{"2":{"7":{"0":{"a":{"df":0,"docs":{},"f":{"5":{"8":{"4":{"4":{"1":{"9":{"df":0,"docs":{},"f":{"1":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"0":{"7":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"4":{"a":{"9":{"c":{"2":{"6":{"0":{"2":{"df":0,"docs":{},"e":{"7":{"b":{"8":{"2":{"8":{"4":{"0":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"0":{"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"5":{"df":0,"docs":{},"f":{"6":{"b":{"a":{"d":{"d":{"2":{"d":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"a":{"d":{"df":0,"docs":{},"f":{"5":{"5":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"2":{"7":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"h":{"6":{"b":{"2":{"1":{"1":{"c":{"df":0,"docs":{},"e":{"1":{"9":{"d":{"b":{"8":{"9":{"8":{"9":{"d":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"2":{"8":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":4,"docs":{"404":{"tf":1.0},"504":{"tf":1.0},"576":{"tf":1.0},"579":{"tf":1.7320508075688772}},"t":{"df":1,"docs":{"472":{"tf":1.0}},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"156":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"111":{"tf":1.0}}}}}}}}},"r":{"<":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":1,"docs":{"440":{"tf":2.0}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"e":{"a":{"c":{"df":0,"docs":{},"h":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"r":{"df":1,"docs":{"440":{"tf":1.0}}}}},"df":1,"docs":{"440":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"a":{"df":0,"docs":{},"y":{"df":16,"docs":{"156":{"tf":1.0},"354":{"tf":1.7320508075688772},"355":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"360":{"tf":1.0},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"525":{"tf":1.0}}}},"c":{"df":10,"docs":{"136":{"tf":1.0},"218":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.0},"300":{"tf":1.0},"330":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":2,"docs":{"156":{"tf":1.0},"211":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"497":{"tf":1.0}}}},"v":{"df":2,"docs":{"200":{"tf":1.0},"284":{"tf":1.0}}}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"156":{"tf":1.0}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"292":{"tf":1.0}}}}}}}},"k":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}},"m":{"df":8,"docs":{"209":{"tf":1.0},"218":{"tf":1.0},"237":{"tf":1.0},"417":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.0},"478":{"tf":1.0},"600":{"tf":1.0}},"u":{"df":0,"docs":{},"l":{"a":{"df":1,"docs":{"469":{"tf":1.0}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":3,"docs":{"3":{"tf":1.0},"502":{"tf":1.0},"508":{"tf":1.4142135623730951}}},"u":{"df":0,"docs":{},"n":{"df":2,"docs":{"370":{"tf":1.0},"456":{"tf":1.7320508075688772}}}}},"u":{"df":0,"docs":{},"m":{"df":4,"docs":{"11":{"tf":1.0},"178":{"tf":1.4142135623730951},"292":{"tf":1.0},"380":{"tf":1.0}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":8,"docs":{"179":{"tf":1.0},"221":{"tf":1.0},"276":{"tf":1.0},"340":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"412":{"tf":1.0},"423":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"n":{"d":{"a":{"df":0,"docs":{},"t":{"df":10,"docs":{"0":{"tf":1.0},"116":{"tf":1.0},"16":{"tf":1.0},"24":{"tf":1.0},"25":{"tf":1.0},"3":{"tf":1.0},"383":{"tf":1.0},"4":{"tf":1.0},"557":{"tf":1.0},"8":{"tf":1.0}}}},"df":23,"docs":{"1":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.0},"16":{"tf":1.4142135623730951},"196":{"tf":1.0},"246":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"276":{"tf":1.0},"328":{"tf":1.4142135623730951},"340":{"tf":1.0},"356":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.4142135623730951},"394":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.4142135623730951},"470":{"tf":1.7320508075688772},"478":{"tf":1.0},"526":{"tf":1.0},"53":{"tf":1.0},"598":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":2,"docs":{"231":{"tf":1.0},"64":{"tf":1.0}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"156":{"tf":1.0},"258":{"tf":2.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"209":{"tf":1.7320508075688772},"278":{"tf":1.4142135623730951},"338":{"tf":1.0},"599":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"458":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":9,"docs":{"201":{"tf":1.0},"284":{"tf":1.4142135623730951},"313":{"tf":1.0},"399":{"tf":1.0},"404":{"tf":5.744562646538029},"456":{"tf":2.23606797749979},"457":{"tf":2.0},"458":{"tf":2.23606797749979},"469":{"tf":1.0}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":21,"docs":{"110":{"tf":1.0},"111":{"tf":1.0},"131":{"tf":1.0},"137":{"tf":1.0},"156":{"tf":1.0},"187":{"tf":1.0},"189":{"tf":1.0},"192":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.4142135623730951},"290":{"tf":1.7320508075688772},"291":{"tf":1.0},"292":{"tf":3.1622776601683795},"293":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.4142135623730951},"297":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"61":{"tf":1.0}}}}}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"431":{"tf":1.0}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"237":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"d":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":48,"docs":{"110":{"tf":1.0},"158":{"tf":1.0},"159":{"tf":1.0},"160":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"2":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"329":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"396":{"tf":1.0},"398":{"tf":1.0},"407":{"tf":1.0},"41":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0},"447":{"tf":1.0},"449":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0},"55":{"tf":1.0},"96":{"tf":1.0}}},"q":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"404":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":55,"docs":{"100":{"tf":1.4142135623730951},"109":{"tf":1.4142135623730951},"117":{"tf":1.4142135623730951},"126":{"tf":1.4142135623730951},"135":{"tf":1.4142135623730951},"144":{"tf":1.4142135623730951},"154":{"tf":1.4142135623730951},"160":{"tf":1.4142135623730951},"170":{"tf":1.4142135623730951},"180":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"202":{"tf":1.4142135623730951},"210":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"222":{"tf":1.4142135623730951},"236":{"tf":1.4142135623730951},"247":{"tf":1.4142135623730951},"260":{"tf":1.4142135623730951},"269":{"tf":1.4142135623730951},"277":{"tf":1.4142135623730951},"285":{"tf":1.4142135623730951},"293":{"tf":1.4142135623730951},"30":{"tf":1.4142135623730951},"301":{"tf":1.4142135623730951},"314":{"tf":1.4142135623730951},"329":{"tf":1.4142135623730951},"337":{"tf":1.4142135623730951},"348":{"tf":1.4142135623730951},"362":{"tf":1.4142135623730951},"371":{"tf":1.4142135623730951},"381":{"tf":1.4142135623730951},"390":{"tf":1.4142135623730951},"398":{"tf":1.4142135623730951},"409":{"tf":1.4142135623730951},"424":{"tf":1.4142135623730951},"43":{"tf":1.4142135623730951},"432":{"tf":1.4142135623730951},"441":{"tf":1.4142135623730951},"449":{"tf":1.4142135623730951},"459":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"471":{"tf":1.4142135623730951},"479":{"tf":1.4142135623730951},"487":{"tf":1.0},"492":{"tf":1.4142135623730951},"505":{"tf":1.4142135623730951},"524":{"tf":1.4142135623730951},"540":{"tf":1.4142135623730951},"582":{"tf":1.4142135623730951},"593":{"tf":1.4142135623730951},"66":{"tf":1.4142135623730951},"75":{"tf":1.4142135623730951},"80":{"tf":1.4142135623730951},"85":{"tf":1.4142135623730951},"90":{"tf":1.4142135623730951}}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"178":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"191":{"tf":1.0}}}}}}}}}}},"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"555":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":5,"docs":{"168":{"tf":1.4142135623730951},"276":{"tf":1.0},"370":{"tf":1.0},"544":{"tf":1.0},"583":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"389":{"tf":1.0},"52":{"tf":1.0},"566":{"tf":1.0}}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"m":{"<":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"<":{"[":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"307":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"310":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"504":{"tf":1.0},"61":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"408":{"tf":1.0},"561":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":8,"docs":{"136":{"tf":1.0},"178":{"tf":1.0},"213":{"tf":1.0},"276":{"tf":1.4142135623730951},"309":{"tf":1.0},"310":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"w":{"df":1,"docs":{"410":{"tf":1.0}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":12,"docs":{"110":{"tf":1.4142135623730951},"128":{"tf":1.4142135623730951},"156":{"tf":1.4142135623730951},"230":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"405":{"tf":1.0},"47":{"tf":1.0},"498":{"tf":1.0},"538":{"tf":1.0},"560":{"tf":1.0},"95":{"tf":1.0}},"i":{"df":12,"docs":{"195":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"270":{"tf":1.0},"324":{"tf":1.0},"360":{"tf":1.0},"470":{"tf":1.0},"487":{"tf":1.0},"51":{"tf":1.0},"62":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"217":{"tf":1.0}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"2":{"7":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"9":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":56,"docs":{"156":{"tf":1.4142135623730951},"167":{"tf":1.0},"169":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":1.7320508075688772},"209":{"tf":2.0},"214":{"tf":1.0},"217":{"tf":3.1622776601683795},"218":{"tf":2.449489742783178},"221":{"tf":1.4142135623730951},"245":{"tf":1.4142135623730951},"257":{"tf":1.7320508075688772},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":3.0},"300":{"tf":1.0},"307":{"tf":2.0},"308":{"tf":1.0},"309":{"tf":1.7320508075688772},"311":{"tf":1.4142135623730951},"320":{"tf":1.7320508075688772},"324":{"tf":1.7320508075688772},"336":{"tf":2.6457513110645907},"344":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":3.605551275463989},"372":{"tf":1.4142135623730951},"374":{"tf":1.0},"375":{"tf":1.7320508075688772},"380":{"tf":2.0},"383":{"tf":1.4142135623730951},"389":{"tf":1.0},"393":{"tf":1.0},"399":{"tf":1.0},"403":{"tf":1.0},"417":{"tf":1.0},"448":{"tf":2.449489742783178},"450":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"515":{"tf":1.0},"522":{"tf":1.4142135623730951},"526":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"553":{"tf":1.0},"566":{"tf":1.0},"573":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"61":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"374":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"d":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"319":{"tf":1.0},"342":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"df":7,"docs":{"190":{"tf":1.4142135623730951},"268":{"tf":1.0},"498":{"tf":1.4142135623730951},"64":{"tf":1.0},"74":{"tf":1.0},"96":{"tf":1.0},"99":{"tf":1.0}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":14,"docs":{"111":{"tf":1.0},"112":{"tf":1.0},"211":{"tf":1.0},"256":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.0},"420":{"tf":1.4142135623730951},"470":{"tf":1.0},"521":{"tf":1.0},"530":{"tf":1.0}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"526":{"tf":1.0}}}},"t":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"(":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"0":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"419":{"tf":1.4142135623730951}}},"1":{"df":1,"docs":{"419":{"tf":1.0}}},">":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"292":{"tf":3.1622776601683795},"421":{"tf":1.4142135623730951}},"u":{"df":0,"docs":{},"r":{"df":177,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"147":{"tf":1.0},"15":{"tf":1.7320508075688772},"156":{"tf":2.8284271247461903},"16":{"tf":1.7320508075688772},"167":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":1.0},"171":{"tf":2.449489742783178},"18":{"tf":1.0},"188":{"tf":1.0},"19":{"tf":1.0},"199":{"tf":2.6457513110645907},"204":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.0},"217":{"tf":2.6457513110645907},"218":{"tf":2.8284271247461903},"221":{"tf":2.0},"246":{"tf":2.449489742783178},"252":{"tf":1.7320508075688772},"258":{"tf":1.4142135623730951},"268":{"tf":2.449489742783178},"271":{"tf":1.0},"278":{"tf":1.4142135623730951},"284":{"tf":2.0},"292":{"tf":2.23606797749979},"294":{"tf":1.0},"307":{"tf":1.7320508075688772},"308":{"tf":1.0},"310":{"tf":1.0},"312":{"tf":1.0},"318":{"tf":1.4142135623730951},"320":{"tf":1.0},"322":{"tf":1.0},"325":{"tf":1.4142135623730951},"328":{"tf":3.0},"331":{"tf":1.4142135623730951},"334":{"tf":1.7320508075688772},"335":{"tf":1.0},"336":{"tf":5.916079783099616},"337":{"tf":1.0},"338":{"tf":2.449489742783178},"339":{"tf":1.0},"340":{"tf":2.0},"341":{"tf":4.358898943540674},"342":{"tf":2.8284271247461903},"343":{"tf":2.449489742783178},"344":{"tf":1.0},"347":{"tf":2.0},"37":{"tf":2.23606797749979},"370":{"tf":2.6457513110645907},"374":{"tf":1.4142135623730951},"38":{"tf":1.4142135623730951},"380":{"tf":5.916079783099616},"383":{"tf":1.0},"385":{"tf":1.0},"389":{"tf":1.7320508075688772},"39":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"40":{"tf":2.6457513110645907},"41":{"tf":3.872983346207417},"415":{"tf":1.4142135623730951},"417":{"tf":1.4142135623730951},"419":{"tf":1.4142135623730951},"42":{"tf":1.4142135623730951},"421":{"tf":2.0},"423":{"tf":1.0},"426":{"tf":1.0},"43":{"tf":1.0},"431":{"tf":1.0},"433":{"tf":1.0},"44":{"tf":1.7320508075688772},"45":{"tf":1.7320508075688772},"456":{"tf":1.0},"457":{"tf":2.6457513110645907},"458":{"tf":2.0},"46":{"tf":2.23606797749979},"460":{"tf":1.4142135623730951},"47":{"tf":2.0},"48":{"tf":1.0},"484":{"tf":1.7320508075688772},"485":{"tf":1.4142135623730951},"486":{"tf":1.4142135623730951},"487":{"tf":1.0},"488":{"tf":1.0},"489":{"tf":2.449489742783178},"49":{"tf":2.0},"490":{"tf":1.7320508075688772},"491":{"tf":1.0},"492":{"tf":1.0},"493":{"tf":1.0},"494":{"tf":1.7320508075688772},"495":{"tf":1.7320508075688772},"496":{"tf":1.7320508075688772},"497":{"tf":1.4142135623730951},"498":{"tf":1.0},"499":{"tf":2.0},"50":{"tf":1.0},"500":{"tf":1.7320508075688772},"501":{"tf":1.7320508075688772},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"504":{"tf":1.0},"505":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.4142135623730951},"509":{"tf":1.0},"51":{"tf":2.23606797749979},"510":{"tf":1.7320508075688772},"511":{"tf":1.7320508075688772},"512":{"tf":1.7320508075688772},"513":{"tf":1.7320508075688772},"514":{"tf":1.7320508075688772},"515":{"tf":2.0},"516":{"tf":2.0},"517":{"tf":1.7320508075688772},"518":{"tf":1.7320508075688772},"519":{"tf":1.7320508075688772},"52":{"tf":1.0},"520":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.4142135623730951},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"527":{"tf":1.7320508075688772},"528":{"tf":1.7320508075688772},"529":{"tf":2.0},"53":{"tf":1.4142135623730951},"530":{"tf":1.7320508075688772},"531":{"tf":1.7320508075688772},"532":{"tf":1.7320508075688772},"533":{"tf":2.0},"534":{"tf":2.0},"535":{"tf":1.7320508075688772},"536":{"tf":1.7320508075688772},"537":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.4142135623730951},"540":{"tf":1.0},"541":{"tf":1.0},"542":{"tf":1.7320508075688772},"543":{"tf":1.7320508075688772},"544":{"tf":1.7320508075688772},"545":{"tf":1.7320508075688772},"546":{"tf":1.7320508075688772},"547":{"tf":1.7320508075688772},"548":{"tf":1.7320508075688772},"549":{"tf":1.7320508075688772},"55":{"tf":1.0},"560":{"tf":1.0},"57":{"tf":2.23606797749979},"578":{"tf":1.7320508075688772},"579":{"tf":2.0},"58":{"tf":1.0},"580":{"tf":1.4142135623730951},"584":{"tf":1.7320508075688772},"59":{"tf":1.4142135623730951},"596":{"tf":1.7320508075688772},"598":{"tf":1.0},"599":{"tf":1.0},"600":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}},"e":{"'":{"df":2,"docs":{"347":{"tf":1.0},"457":{"tf":1.0}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"1":{"9":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":3,"docs":{"284":{"tf":1.0},"336":{"tf":1.0},"417":{"tf":1.0}}}}}},"df":0,"docs":{}},"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":11,"docs":{"199":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"309":{"tf":1.0},"328":{"tf":1.7320508075688772},"370":{"tf":2.23606797749979},"375":{"tf":1.0},"380":{"tf":1.4142135623730951},"579":{"tf":1.0},"580":{"tf":1.4142135623730951}}}}}}}}},"=":{"(":{"_":{"_":{"0":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":1.0}}}}},"s":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"(":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"380":{"tf":2.0}}},"df":0,"docs":{}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"_":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"_":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"df":1,"docs":{"380":{"tf":1.0}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"(":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{")":{")":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"_":{"df":1,"docs":{"380":{"tf":2.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"185":{"tf":1.4142135623730951},"189":{"tf":1.0}}}},"df":0,"docs":{}}}}}},":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"d":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"308":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"310":{"tf":1.7320508075688772},"380":{"tf":1.0},"440":{"tf":4.123105625617661}},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"383":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"383":{"tf":1.0}},"l":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"383":{"tf":1.0}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.0}}}}},"{":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"370":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"311":{"tf":1.4142135623730951},"312":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":2.449489742783178}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"<":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"440":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}}},"{":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"1":{"df":1,"docs":{"419":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"[":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"@":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"f":{"df":0,"docs":{},"n":{"<":{"[":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"@":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":0,"docs":{},"e":{"d":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"_":{":":{":":{"_":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"<":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}}}}}}}}}}},"g":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":8,"docs":{"217":{"tf":1.0},"218":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"408":{"tf":1.7320508075688772},"410":{"tf":1.0},"460":{"tf":1.0},"508":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"182":{"tf":1.0},"400":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"b":{"a":{"df":0,"docs":{},"g":{"df":4,"docs":{"136":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"df":1,"docs":{"599":{"tf":1.0}},"e":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":1,"docs":{"417":{"tf":1.0}}}}}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"172":{"tf":1.0},"209":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.0},"538":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"153":{"tf":1.0},"9":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":5,"docs":{"246":{"tf":1.0},"383":{"tf":1.0},"469":{"tf":1.0},"552":{"tf":1.0},"599":{"tf":1.0}}}}},"c":{"'":{"d":{"df":6,"docs":{"241":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"347":{"tf":1.0},"463":{"tf":1.0},"65":{"tf":1.4142135623730951},"71":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"_":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"a":{"df":1,"docs":{"218":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"c":{"df":1,"docs":{"214":{"tf":1.4142135623730951}}},"d":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"504":{"tf":2.0}}},"df":5,"docs":{"209":{"tf":1.0},"218":{"tf":2.23606797749979},"239":{"tf":1.0},"431":{"tf":1.0},"65":{"tf":1.0}},"e":{"d":{"df":3,"docs":{"127":{"tf":1.0},"248":{"tf":1.0},"250":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"d":{"b":{"df":13,"docs":{"156":{"tf":1.0},"284":{"tf":2.6457513110645907},"289":{"tf":1.0},"446":{"tf":1.7320508075688772},"447":{"tf":1.0},"448":{"tf":2.8284271247461903},"449":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.4142135623730951},"453":{"tf":1.4142135623730951},"543":{"tf":1.0},"82":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"c":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"n":{"df":1,"docs":{"573":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"@":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":0,"docs":{},"}":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":1,"docs":{"440":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":43,"docs":{"114":{"tf":1.7320508075688772},"115":{"tf":1.0},"116":{"tf":1.0},"117":{"tf":1.0},"118":{"tf":1.0},"119":{"tf":1.4142135623730951},"120":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.4142135623730951},"201":{"tf":1.0},"211":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"27":{"tf":1.0},"319":{"tf":1.0},"321":{"tf":1.0},"33":{"tf":1.4142135623730951},"336":{"tf":1.0},"349":{"tf":1.4142135623730951},"359":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.4142135623730951},"385":{"tf":1.0},"393":{"tf":1.0},"421":{"tf":1.0},"47":{"tf":1.4142135623730951},"486":{"tf":1.0},"492":{"tf":1.0},"502":{"tf":1.0},"513":{"tf":1.0},"515":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":2.449489742783178},"576":{"tf":1.4142135623730951},"599":{"tf":1.0},"61":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}},"y":{".":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"470":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"169":{"tf":1.0}},"e":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"167":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}}}},"df":34,"docs":{"129":{"tf":1.0},"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"168":{"tf":1.0},"2":{"tf":1.4142135623730951},"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"245":{"tf":1.0},"246":{"tf":1.0},"251":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"307":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.4142135623730951},"328":{"tf":1.0},"347":{"tf":1.0},"363":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":1.7320508075688772},"431":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"46":{"tf":1.0},"522":{"tf":1.0},"526":{"tf":1.0},"529":{"tf":1.4142135623730951},"560":{"tf":1.0},"599":{"tf":1.4142135623730951},"65":{"tf":1.7320508075688772},"79":{"tf":1.7320508075688772},"84":{"tf":1.0}}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":15,"docs":{"156":{"tf":1.4142135623730951},"415":{"tf":1.7320508075688772},"416":{"tf":1.0},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"419":{"tf":1.0},"420":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"423":{"tf":1.0},"424":{"tf":1.0},"425":{"tf":1.0},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0}},"l":{"/":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"421":{"tf":1.0},"423":{"tf":1.0}}}}},"df":0,"docs":{}},"q":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"427":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":1,"docs":{"178":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{"df":1,"docs":{"172":{"tf":1.0}}},"df":0,"docs":{}}}},"v":{"df":0,"docs":{},"e":{"df":40,"docs":{"152":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"16":{"tf":1.0},"179":{"tf":1.0},"19":{"tf":1.0},"191":{"tf":1.4142135623730951},"196":{"tf":1.0},"201":{"tf":1.4142135623730951},"209":{"tf":1.0},"217":{"tf":1.0},"261":{"tf":1.0},"27":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"322":{"tf":1.0},"33":{"tf":1.4142135623730951},"330":{"tf":1.0},"336":{"tf":1.7320508075688772},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"401":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":1.0},"442":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.0},"485":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"542":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.0},"58":{"tf":1.0},"9":{"tf":1.0},"99":{"tf":1.0}},"n":{"df":7,"docs":{"10":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"276":{"tf":1.0},"417":{"tf":1.0},"478":{"tf":1.0},"545":{"tf":1.0}}},"r":{"df":1,"docs":{"469":{"tf":1.0}}}}}},"l":{"a":{"d":{"df":2,"docs":{"113":{"tf":1.0},"51":{"tf":1.0}}},"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"217":{"tf":1.0},"460":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"b":{"a":{"df":0,"docs":{},"l":{"df":7,"docs":{"209":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"336":{"tf":1.7320508075688772},"504":{"tf":1.0},"507":{"tf":1.0},"62":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"433":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"u":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"8":{"0":{":":{"1":{"9":{"df":1,"docs":{"397":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"2":{"7":{":":{"5":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"5":{"1":{"9":{":":{"1":{"2":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"4":{"8":{":":{"9":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"2":{":":{"1":{"6":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"a":{"df":0,"docs":{},"l":{"df":19,"docs":{"11":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.0},"27":{"tf":1.7320508075688772},"276":{"tf":1.0},"29":{"tf":1.4142135623730951},"3":{"tf":1.4142135623730951},"40":{"tf":1.4142135623730951},"42":{"tf":1.0},"431":{"tf":1.0},"437":{"tf":1.0},"458":{"tf":1.0},"487":{"tf":1.0},"496":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"576":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"b":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{}},"df":46,"docs":{"127":{"tf":1.0},"139":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"18":{"tf":1.4142135623730951},"187":{"tf":1.7320508075688772},"203":{"tf":1.0},"209":{"tf":1.7320508075688772},"221":{"tf":1.0},"226":{"tf":1.0},"24":{"tf":1.0},"250":{"tf":1.0},"270":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.4142135623730951},"309":{"tf":1.0},"358":{"tf":1.4142135623730951},"38":{"tf":1.0},"389":{"tf":1.7320508075688772},"392":{"tf":1.0},"394":{"tf":1.0},"414":{"tf":1.0},"425":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"497":{"tf":1.4142135623730951},"506":{"tf":1.0},"51":{"tf":1.4142135623730951},"517":{"tf":1.0},"53":{"tf":1.0},"532":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0},"559":{"tf":1.4142135623730951},"573":{"tf":1.0},"599":{"tf":1.4142135623730951},"60":{"tf":1.0},"9":{"tf":1.7320508075688772}},"e":{"df":15,"docs":{"112":{"tf":1.0},"130":{"tf":1.0},"140":{"tf":1.0},"169":{"tf":1.0},"221":{"tf":1.0},"245":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.0},"417":{"tf":1.0},"457":{"tf":1.0},"478":{"tf":1.0}}},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":2,"docs":{"230":{"tf":1.0},"231":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"54":{"tf":1.0}}}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"e":{"df":2,"docs":{"221":{"tf":1.0},"309":{"tf":1.0}}}},"o":{"d":{"df":32,"docs":{"110":{"tf":1.0},"190":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"225":{"tf":1.0},"231":{"tf":1.0},"235":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"271":{"tf":1.0},"309":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"475":{"tf":1.0},"506":{"tf":1.0},"511":{"tf":1.0},"528":{"tf":1.4142135623730951},"529":{"tf":1.0},"559":{"tf":1.0},"56":{"tf":1.7320508075688772},"57":{"tf":1.7320508075688772}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":3,"docs":{"257":{"tf":1.0},"284":{"tf":1.4142135623730951},"555":{"tf":1.0}}}},"k":{"df":1,"docs":{"156":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"370":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"a":{"df":1,"docs":{"240":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":6,"docs":{"153":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"340":{"tf":1.0},"538":{"tf":1.0}}}},"o":{"df":0,"docs":{},"x":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}},"r":{"a":{"b":{"df":3,"docs":{"391":{"tf":1.0},"456":{"tf":1.0},"526":{"tf":1.0}}},"c":{"df":0,"docs":{},"e":{"'":{"df":7,"docs":{"41":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0}}},"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"b":{"a":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"157":{"tf":1.0}}},"df":0,"docs":{}}},"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"m":{"d":{"df":1,"docs":{"489":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":68,"docs":{"156":{"tf":2.6457513110645907},"192":{"tf":1.0},"206":{"tf":1.0},"214":{"tf":1.7320508075688772},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"226":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"429":{"tf":1.7320508075688772},"430":{"tf":1.0},"431":{"tf":2.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":2.0},"436":{"tf":1.0},"437":{"tf":1.7320508075688772},"438":{"tf":1.7320508075688772},"439":{"tf":1.0},"440":{"tf":1.7320508075688772},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.7320508075688772},"445":{"tf":1.0},"446":{"tf":1.7320508075688772},"447":{"tf":1.0},"448":{"tf":2.8284271247461903},"449":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.7320508075688772},"453":{"tf":1.4142135623730951},"454":{"tf":1.7320508075688772},"455":{"tf":1.0},"456":{"tf":3.0},"457":{"tf":2.6457513110645907},"458":{"tf":2.6457513110645907},"459":{"tf":1.0},"460":{"tf":1.4142135623730951},"461":{"tf":1.0},"462":{"tf":2.23606797749979},"463":{"tf":1.4142135623730951},"464":{"tf":2.0},"465":{"tf":1.7320508075688772},"470":{"tf":1.7320508075688772},"474":{"tf":1.7320508075688772},"475":{"tf":1.0},"511":{"tf":1.7320508075688772},"529":{"tf":1.7320508075688772},"543":{"tf":2.23606797749979},"65":{"tf":1.0},"67":{"tf":1.0},"78":{"tf":1.0},"79":{"tf":2.0},"80":{"tf":1.0},"81":{"tf":2.0},"82":{"tf":2.23606797749979},"9":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"111":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"61":{"tf":1.0}}}},"n":{"d":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"h":{"df":4,"docs":{"12":{"tf":1.0},"470":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"542":{"tf":1.0}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"z":{"df":1,"docs":{"539":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"p":{"df":3,"docs":{"246":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":13,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"209":{"tf":1.0},"211":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.0},"257":{"tf":1.0},"259":{"tf":1.0},"311":{"tf":1.0},"358":{"tf":1.0},"599":{"tf":1.4142135623730951},"65":{"tf":1.0},"77":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":5,"docs":{"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"560":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"469":{"tf":1.0}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"79":{"tf":1.0}}},"df":0,"docs":{}}}}}},"t":{"df":1,"docs":{"258":{"tf":1.0}}}},"w":{"df":1,"docs":{"389":{"tf":1.0}}}},"i":{"d":{"df":2,"docs":{"469":{"tf":2.0},"470":{"tf":1.0}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"599":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":7,"docs":{"1":{"tf":1.0},"12":{"tf":1.0},"15":{"tf":1.0},"16":{"tf":1.4142135623730951},"3":{"tf":1.7320508075688772},"470":{"tf":1.0},"557":{"tf":1.0}}}},"w":{"df":8,"docs":{"134":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"28":{"tf":1.0},"41":{"tf":1.0},"53":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}}}},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"199":{"tf":1.0}}}},"df":0,"docs":{}}}},"t":{";":{"b":{"df":1,"docs":{"12":{"tf":1.0}}},"c":{"df":1,"docs":{"12":{"tf":1.0}}},"d":{"df":1,"docs":{"12":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":1,"docs":{"539":{"tf":1.4142135623730951}}},"u":{"a":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":8,"docs":{"198":{"tf":1.0},"328":{"tf":1.4142135623730951},"410":{"tf":1.0},"422":{"tf":1.0},"456":{"tf":1.4142135623730951},"469":{"tf":1.0},"529":{"tf":1.0},"76":{"tf":1.0}}}}}},"d":{"df":4,"docs":{"268":{"tf":2.0},"270":{"tf":1.0},"272":{"tf":1.0},"565":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":4,"docs":{"209":{"tf":1.0},"48":{"tf":1.0},"486":{"tf":1.0},"599":{"tf":1.0}}}}},"i":{"d":{"a":{"df":0,"docs":{},"n":{"c":{"df":4,"docs":{"156":{"tf":1.0},"203":{"tf":1.0},"363":{"tf":1.0},"472":{"tf":1.0}}},"df":0,"docs":{}}},"df":4,"docs":{"522":{"tf":1.0},"526":{"tf":1.0},"572":{"tf":1.0},"64":{"tf":1.0}}},"df":1,"docs":{"192":{"tf":1.0}}},"r":{"df":0,"docs":{},"u":{"df":1,"docs":{"259":{"tf":1.0}}}},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}}},"h":{"a":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"367":{"tf":1.0},"417":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"431":{"tf":1.0},"79":{"tf":1.0}},"i":{"df":1,"docs":{"457":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{}}},"df":1,"docs":{"380":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"f":{"df":4,"docs":{"200":{"tf":1.0},"300":{"tf":1.0},"480":{"tf":1.4142135623730951},"53":{"tf":1.0}}},"v":{"df":1,"docs":{"276":{"tf":1.0}}}},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"516":{"tf":1.0}}}}}},"n":{"d":{"df":12,"docs":{"188":{"tf":1.0},"235":{"tf":1.0},"250":{"tf":1.0},"272":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"367":{"tf":1.4142135623730951},"433":{"tf":1.0},"440":{"tf":1.0},"453":{"tf":1.0},"517":{"tf":1.0}},"i":{"df":1,"docs":{"397":{"tf":1.0}}},"l":{"df":27,"docs":{"110":{"tf":1.0},"125":{"tf":1.0},"156":{"tf":1.4142135623730951},"175":{"tf":1.7320508075688772},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.4142135623730951},"309":{"tf":1.4142135623730951},"320":{"tf":1.0},"336":{"tf":2.8284271247461903},"340":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.4142135623730951},"347":{"tf":1.0},"380":{"tf":1.0},"412":{"tf":1.0},"418":{"tf":1.0},"470":{"tf":1.4142135623730951},"57":{"tf":1.0}},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"268":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}},".":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"d":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"b":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":2,"docs":{"309":{"tf":1.0},"320":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},":":{":":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"320":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"292":{"tf":1.0}}},"(":{"df":0,"docs":{},"s":{")":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},".":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":5,"docs":{"232":{"tf":1.4142135623730951},"268":{"tf":2.0},"292":{"tf":3.4641016151377544},"408":{"tf":1.0},"538":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":2.6457513110645907}}}}}}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.449489742783178}}}}}}}}}}}},"df":0,"docs":{},"g":{"df":13,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"189":{"tf":1.0},"200":{"tf":1.0},"282":{"tf":1.7320508075688772},"283":{"tf":1.0},"284":{"tf":1.7320508075688772},"285":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"431":{"tf":1.4142135623730951}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":35,"docs":{"140":{"tf":1.0},"156":{"tf":1.0},"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.0},"169":{"tf":1.4142135623730951},"170":{"tf":1.0},"171":{"tf":1.4142135623730951},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"178":{"tf":1.0},"217":{"tf":1.0},"234":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"309":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.4142135623730951},"408":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.0},"46":{"tf":1.0},"483":{"tf":1.0},"502":{"tf":1.4142135623730951},"509":{"tf":1.4142135623730951},"527":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"8":{"tf":1.0}}}},"i":{"df":27,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"188":{"tf":1.0},"21":{"tf":1.0},"214":{"tf":1.0},"221":{"tf":1.4142135623730951},"232":{"tf":1.0},"234":{"tf":1.0},"246":{"tf":1.0},"257":{"tf":1.4142135623730951},"259":{"tf":1.7320508075688772},"268":{"tf":1.7320508075688772},"311":{"tf":1.0},"315":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.4142135623730951},"389":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.4142135623730951},"529":{"tf":1.0},"530":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.7320508075688772},"59":{"tf":1.0},"82":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"54":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"522":{"tf":1.0},"538":{"tf":1.0}}}}}}},"r":{"d":{"df":38,"docs":{"110":{"tf":1.4142135623730951},"136":{"tf":1.0},"156":{"tf":3.0},"171":{"tf":1.0},"175":{"tf":1.7320508075688772},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"248":{"tf":1.0},"251":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"340":{"tf":1.0},"349":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.4142135623730951},"507":{"tf":1.0},"51":{"tf":1.0},"53":{"tf":1.0},"533":{"tf":1.0},"575":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":10,"docs":{"156":{"tf":1.0},"195":{"tf":1.0},"251":{"tf":1.0},"278":{"tf":1.0},"389":{"tf":1.0},"418":{"tf":1.0},"436":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.4142135623730951},"503":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"515":{"tf":1.0}}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":6,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"344":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"df":2,"docs":{"278":{"tf":1.0},"367":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"17":{"tf":1.4142135623730951}}}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":1,"docs":{"419":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"200":{"tf":1.0},"284":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":16,"docs":{"156":{"tf":1.4142135623730951},"193":{"tf":1.7320508075688772},"194":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.0},"202":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"258":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":29,"docs":{"110":{"tf":1.0},"112":{"tf":1.0},"116":{"tf":1.0},"129":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"178":{"tf":1.0},"190":{"tf":1.0},"225":{"tf":1.0},"231":{"tf":1.0},"237":{"tf":1.0},"245":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"289":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"357":{"tf":1.4142135623730951},"359":{"tf":1.4142135623730951},"367":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"421":{"tf":1.0},"436":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.4142135623730951},"46":{"tf":1.0},"462":{"tf":1.0},"538":{"tf":1.0},"64":{"tf":1.0}},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"451":{"tf":1.0},"488":{"tf":1.0}}}},"df":0,"docs":{}}}},"z":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"319":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":2,"docs":{"292":{"tf":1.4142135623730951},"470":{"tf":1.0}},"e":{"'":{"d":{"df":1,"docs":{"470":{"tf":1.0}}},"df":19,"docs":{"178":{"tf":1.4142135623730951},"195":{"tf":1.0},"196":{"tf":1.0},"198":{"tf":1.0},"221":{"tf":1.0},"230":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.7320508075688772},"284":{"tf":1.7320508075688772},"300":{"tf":1.0},"510":{"tf":1.0},"528":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.4142135623730951},"73":{"tf":1.7320508075688772},"74":{"tf":1.0},"76":{"tf":1.4142135623730951},"84":{"tf":1.7320508075688772},"86":{"tf":1.0}},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"209":{"tf":1.0},"268":{"tf":1.4142135623730951}}}}},"a":{"d":{"df":4,"docs":{"359":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.0},"460":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"552":{"tf":1.0}}}}}},"p":{"df":6,"docs":{"136":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"250":{"tf":1.0},"251":{"tf":1.4142135623730951},"380":{"tf":1.0}}},"r":{"d":{"df":7,"docs":{"217":{"tf":1.0},"284":{"tf":1.0},"287":{"tf":1.0},"307":{"tf":1.0},"357":{"tf":1.0},"428":{"tf":1.0},"74":{"tf":1.0}}},"df":3,"docs":{"245":{"tf":1.0},"268":{"tf":1.0},"538":{"tf":1.0}},"t":{"b":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"457":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"t":{"df":2,"docs":{"276":{"tf":1.0},"278":{"tf":1.0}}},"v":{"df":0,"docs":{},"i":{"df":1,"docs":{"189":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"462":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"347":{"tf":1.0},"349":{"tf":1.4142135623730951}}}}}}}}}}},"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"258":{"tf":1.0}}},"df":0,"docs":{}},"l":{"d":{"df":4,"docs":{"268":{"tf":2.0},"421":{"tf":1.4142135623730951},"555":{"tf":1.0},"564":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}},"p":{"df":59,"docs":{"110":{"tf":1.0},"12":{"tf":1.7320508075688772},"14":{"tf":1.4142135623730951},"152":{"tf":1.4142135623730951},"153":{"tf":1.4142135623730951},"16":{"tf":1.0},"168":{"tf":1.4142135623730951},"178":{"tf":1.7320508075688772},"181":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"23":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.7320508075688772},"268":{"tf":1.0},"284":{"tf":2.0},"286":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.4142135623730951},"33":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"37":{"tf":1.4142135623730951},"370":{"tf":1.4142135623730951},"374":{"tf":1.0},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"389":{"tf":1.4142135623730951},"391":{"tf":1.7320508075688772},"397":{"tf":1.0},"434":{"tf":1.0},"445":{"tf":1.0},"47":{"tf":1.0},"472":{"tf":1.0},"478":{"tf":1.0},"485":{"tf":1.4142135623730951},"493":{"tf":1.0},"496":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":2.23606797749979},"544":{"tf":1.4142135623730951},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.4142135623730951},"600":{"tf":1.0},"601":{"tf":1.0},"64":{"tf":1.0},"87":{"tf":1.0},"9":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":12,"docs":{"156":{"tf":2.449489742783178},"292":{"tf":1.4142135623730951},"368":{"tf":1.7320508075688772},"369":{"tf":1.0},"370":{"tf":1.7320508075688772},"371":{"tf":1.0},"372":{"tf":1.4142135623730951},"373":{"tf":1.0},"374":{"tf":1.7320508075688772},"375":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0}}}}}},"n":{"c":{"df":5,"docs":{"217":{"tf":1.0},"318":{"tf":1.0},"322":{"tf":1.0},"377":{"tf":1.0},"417":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":1,"docs":{"245":{"tf":1.0}},"e":{"'":{"df":1,"docs":{"539":{"tf":1.0}}},"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"271":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":51,"docs":{"10":{"tf":1.0},"122":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"159":{"tf":1.0},"16":{"tf":1.4142135623730951},"160":{"tf":1.0},"169":{"tf":1.0},"190":{"tf":1.0},"2":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"24":{"tf":1.0},"249":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"322":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"329":{"tf":1.0},"336":{"tf":1.7320508075688772},"38":{"tf":1.0},"380":{"tf":1.4142135623730951},"381":{"tf":1.0},"389":{"tf":1.0},"390":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.4142135623730951},"398":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.4142135623730951},"449":{"tf":1.0},"457":{"tf":1.0},"486":{"tf":1.0},"491":{"tf":1.0},"498":{"tf":1.4142135623730951},"499":{"tf":1.0},"511":{"tf":1.0},"538":{"tf":1.4142135623730951},"551":{"tf":1.0},"56":{"tf":1.4142135623730951},"57":{"tf":1.0},"583":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.0},"96":{"tf":1.4142135623730951},"99":{"tf":1.0}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":4,"docs":{"300":{"tf":1.4142135623730951},"328":{"tf":1.0},"370":{"tf":1.0},"448":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"300":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"321":{"tf":1.0}}}}}}}},"i":{"c":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"125":{"tf":1.0}}}}},"df":0,"docs":{}},"d":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"350":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"230":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":12,"docs":{"131":{"tf":1.0},"134":{"tf":1.0},"137":{"tf":1.0},"143":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"394":{"tf":1.0},"431":{"tf":1.0},"469":{"tf":1.0},"558":{"tf":1.4142135623730951},"599":{"tf":1.0},"76":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"119":{"tf":1.0},"156":{"tf":1.0},"214":{"tf":1.0},"292":{"tf":1.0},"450":{"tf":1.0},"9":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"61":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"125":{"tf":1.0},"129":{"tf":1.7320508075688772},"336":{"tf":1.0},"414":{"tf":1.0}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":4,"docs":{"164":{"tf":1.0},"28":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0}}}}}}}}},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"268":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0}}}}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"41":{"tf":1.0},"515":{"tf":1.4142135623730951},"533":{"tf":1.7320508075688772},"547":{"tf":1.4142135623730951}}}},"r":{"a":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"547":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"df":4,"docs":{"168":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.0},"380":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"417":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.7320508075688772}}}}}}},"t":{"df":23,"docs":{"209":{"tf":1.0},"214":{"tf":1.0},"244":{"tf":1.0},"25":{"tf":1.0},"321":{"tf":1.0},"351":{"tf":1.0},"408":{"tf":1.0},"418":{"tf":1.0},"429":{"tf":1.7320508075688772},"430":{"tf":1.0},"431":{"tf":1.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":2.449489742783178},"539":{"tf":1.7320508075688772},"564":{"tf":1.0}}}},"m":{"df":0,"docs":{},"m":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}},"o":{"b":{"b":{"df":0,"docs":{},"i":{"df":1,"docs":{"213":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"l":{"d":{"df":8,"docs":{"209":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"237":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":1.0},"4":{"tf":1.0},"421":{"tf":1.4142135623730951}}},"df":0,"docs":{},"e":{"df":3,"docs":{"258":{"tf":1.0},"300":{"tf":1.0},"458":{"tf":1.0}}},"i":{"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"230":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"/":{"a":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"n":{"/":{".":{"c":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":2,"docs":{"268":{"tf":1.0},"284":{"tf":4.358898943540674}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{".":{"c":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"246":{"tf":1.0}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"61":{"tf":1.0}}}}},"o":{"d":{"df":1,"docs":{"358":{"tf":1.0}}},"df":0,"docs":{},"k":{"df":3,"docs":{"457":{"tf":1.0},"546":{"tf":1.0},"61":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"df":10,"docs":{"140":{"tf":1.0},"188":{"tf":1.4142135623730951},"196":{"tf":1.4142135623730951},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"358":{"tf":1.0},"37":{"tf":1.0},"394":{"tf":1.0},"9":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"199":{"tf":1.0},"61":{"tf":1.0}}}}}}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"67":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"df":5,"docs":{"168":{"tf":1.0},"200":{"tf":1.0},"300":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{":":{"/":{"/":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"w":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{".":{"a":{"df":0,"docs":{},"p":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"221":{"tf":2.23606797749979}}}}}}}},"df":20,"docs":{"156":{"tf":1.4142135623730951},"167":{"tf":1.0},"169":{"tf":1.7320508075688772},"195":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.4142135623730951},"231":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.7320508075688772},"292":{"tf":1.7320508075688772},"298":{"tf":1.7320508075688772},"299":{"tf":1.0},"300":{"tf":3.3166247903554},"301":{"tf":1.0},"302":{"tf":2.0},"303":{"tf":1.4142135623730951},"304":{"tf":1.0},"370":{"tf":1.0}},"s":{":":{"/":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"365":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"279":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"o":{"c":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"365":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"349":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"/":{"b":{"9":{"df":0,"docs":{},"f":{"c":{"c":{"d":{"df":0,"docs":{},"e":{"0":{"0":{"df":0,"docs":{},"e":{"7":{"3":{"5":{"6":{"a":{"5":{"df":0,"docs":{},"e":{"3":{"3":{"6":{"6":{"6":{"5":{"a":{"7":{"df":0,"docs":{},"e":{"4":{"8":{"2":{"d":{"4":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"4":{"3":{"9":{"d":{"7":{"1":{"4":{"/":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"c":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"c":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"#":{"df":0,"docs":{},"l":{"1":{"2":{"1":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"2":{"6":{"9":{"1":{"b":{"a":{"b":{"9":{"2":{"8":{"2":{"3":{"a":{"8":{"5":{"9":{"5":{"d":{"1":{"d":{"4":{"5":{"6":{"df":0,"docs":{},"e":{"d":{"5":{"df":0,"docs":{},"f":{"a":{"9":{"6":{"8":{"3":{"6":{"4":{"1":{"d":{"7":{"6":{"#":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"279":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"d":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":1,"docs":{"279":{"tf":1.7320508075688772}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"196":{"tf":1.0},"380":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":0,"docs":{},"v":{"/":{"df":0,"docs":{},"y":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":1,"docs":{"331":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"365":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"k":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"/":{"1":{"3":{"7":{"0":{"1":{"4":{"3":{"0":{"2":{"2":{"8":{"0":{"1":{"8":{"4":{"6":{"2":{"7":{"5":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"5":{"7":{"2":{"6":{"0":{"5":{"6":{"7":{"3":{"8":{"8":{"1":{"7":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{},"j":{"c":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"/":{"1":{"3":{"5":{"9":{"8":{"2":{"0":{"4":{"3":{"1":{"1":{"5":{"1":{"2":{"6":{"7":{"8":{"4":{"3":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":2,"docs":{"302":{"tf":1.0},"442":{"tf":1.0}}}},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"'":{"df":1,"docs":{"503":{"tf":1.0}}},":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":1,"docs":{"504":{"tf":1.0}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"502":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"503":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"504":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"504":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":4,"docs":{"502":{"tf":1.7320508075688772},"503":{"tf":2.23606797749979},"504":{"tf":2.23606797749979},"511":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"15":{"tf":1.0},"59":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"217":{"tf":1.0},"284":{"tf":1.0}}}},"d":{"df":0,"docs":{},"r":{"df":2,"docs":{"139":{"tf":1.0},"380":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":1,"docs":{"431":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"40":{"tf":1.0}}}}},"y":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":11,"docs":{"156":{"tf":1.4142135623730951},"466":{"tf":1.7320508075688772},"467":{"tf":1.0},"468":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.4142135623730951},"474":{"tf":1.0},"475":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":1,"docs":{"470":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.7320508075688772}}}}}}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}}}}}},"i":{"'":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{},"m":{"df":5,"docs":{"281":{"tf":1.0},"296":{"tf":1.0},"34":{"tf":1.4142135623730951},"506":{"tf":1.0},"599":{"tf":1.0}}},"v":{"df":4,"docs":{"198":{"tf":1.0},"287":{"tf":1.0},"462":{"tf":1.0},"599":{"tf":1.0}}}},".":{"df":7,"docs":{"154":{"tf":1.0},"272":{"tf":1.0},"336":{"tf":1.0},"417":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0}}},"/":{"df":0,"docs":{},"o":{"df":17,"docs":{"209":{"tf":1.0},"218":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"3":{"tf":1.0},"331":{"tf":1.0},"408":{"tf":1.7320508075688772},"412":{"tf":1.0},"487":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"517":{"tf":1.4142135623730951},"522":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":2.0},"8":{"tf":1.0}}}},"6":{"4":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}},"df":0,"docs":{}},"d":{"df":12,"docs":{"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"288":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"453":{"tf":1.4142135623730951},"522":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0}},"e":{"'":{"df":1,"docs":{"453":{"tf":1.0}}},"/":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"542":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"a":{"df":26,"docs":{"157":{"tf":1.4142135623730951},"16":{"tf":1.7320508075688772},"24":{"tf":1.7320508075688772},"25":{"tf":1.4142135623730951},"26":{"tf":1.0},"268":{"tf":1.4142135623730951},"3":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.7320508075688772},"39":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.0},"46":{"tf":1.0},"487":{"tf":1.0},"49":{"tf":1.0},"497":{"tf":1.0},"50":{"tf":1.4142135623730951},"53":{"tf":1.0},"54":{"tf":1.4142135623730951},"55":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"560":{"tf":1.0},"59":{"tf":1.0},"79":{"tf":1.0}},"l":{"df":11,"docs":{"138":{"tf":1.0},"146":{"tf":1.0},"16":{"tf":1.0},"162":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"29":{"tf":1.0},"36":{"tf":1.0},"42":{"tf":1.0},"421":{"tf":1.0},"450":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"276":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":9,"docs":{"209":{"tf":1.7320508075688772},"213":{"tf":1.0},"284":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.0},"347":{"tf":1.0},"431":{"tf":1.7320508075688772},"526":{"tf":1.4142135623730951},"61":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}},"df":1,"docs":{"470":{"tf":1.0}}}}},"l":{"df":2,"docs":{"10":{"tf":1.0},"328":{"tf":1.7320508075688772}}},"x":{"df":1,"docs":{"380":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"190":{"tf":1.0},"199":{"tf":1.0},"336":{"tf":1.4142135623730951}}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"259":{"tf":1.4142135623730951}}}},"m":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"189":{"tf":1.0},"217":{"tf":2.23606797749979}},"i":{"df":0,"docs":{},"n":{"df":5,"docs":{"259":{"tf":1.4142135623730951},"380":{"tf":1.0},"508":{"tf":1.7320508075688772},"546":{"tf":1.0},"8":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"df":8,"docs":{"169":{"tf":1.0},"209":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"309":{"tf":1.0},"418":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"328":{"tf":1.0},"417":{"tf":1.0}}}}},"p":{"a":{"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"153":{"tf":1.0},"32":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.7320508075688772},"343":{"tf":1.4142135623730951},"376":{"tf":1.0},"470":{"tf":1.4142135623730951},"496":{"tf":1.4142135623730951},"54":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"127":{"tf":1.0},"196":{"tf":1.7320508075688772},"199":{"tf":1.4142135623730951}}}},"l":{"<":{"'":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.0}}},"t":{"df":2,"docs":{"418":{"tf":1.0},"421":{"tf":1.0}}}},"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"df":24,"docs":{"189":{"tf":1.0},"190":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":1.0},"204":{"tf":1.0},"221":{"tf":1.0},"268":{"tf":1.7320508075688772},"292":{"tf":1.7320508075688772},"294":{"tf":1.0},"307":{"tf":1.0},"309":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":2.23606797749979},"336":{"tf":1.0},"347":{"tf":1.7320508075688772},"370":{"tf":1.4142135623730951},"421":{"tf":1.0},"440":{"tf":7.0710678118654755},"458":{"tf":1.4142135623730951},"460":{"tf":1.0},"538":{"tf":1.4142135623730951},"578":{"tf":1.0},"579":{"tf":1.7320508075688772},"580":{"tf":1.7320508075688772}},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":60,"docs":{"141":{"tf":1.7320508075688772},"142":{"tf":1.0},"143":{"tf":1.4142135623730951},"144":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"150":{"tf":1.0},"156":{"tf":1.4142135623730951},"167":{"tf":1.4142135623730951},"190":{"tf":1.4142135623730951},"192":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.7320508075688772},"201":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"221":{"tf":2.6457513110645907},"223":{"tf":1.0},"224":{"tf":1.0},"276":{"tf":2.23606797749979},"278":{"tf":1.0},"292":{"tf":1.7320508075688772},"3":{"tf":1.0},"300":{"tf":2.23606797749979},"302":{"tf":1.0},"303":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":3.3166247903554},"340":{"tf":1.0},"347":{"tf":2.0},"370":{"tf":2.0},"380":{"tf":1.0},"389":{"tf":1.0},"399":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"450":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"504":{"tf":1.0},"51":{"tf":1.4142135623730951},"515":{"tf":1.0},"517":{"tf":1.0},"560":{"tf":1.0},"570":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}}},"i":{"c":{"df":1,"docs":{"358":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"268":{"tf":1.0},"292":{"tf":1.0},"419":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"188":{"tf":1.0},"389":{"tf":1.0}}}}}}},"df":21,"docs":{"110":{"tf":1.0},"120":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"129":{"tf":1.0},"199":{"tf":1.0},"21":{"tf":1.0},"211":{"tf":1.0},"261":{"tf":1.0},"278":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":1.0},"470":{"tf":1.0},"51":{"tf":1.0},"522":{"tf":1.0},"539":{"tf":1.0},"57":{"tf":1.0},"62":{"tf":1.4142135623730951},"76":{"tf":1.0},"91":{"tf":1.0}}}},"s":{"df":1,"docs":{"218":{"tf":1.0}},"s":{"df":8,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"294":{"tf":1.0},"324":{"tf":1.0},"359":{"tf":1.0},"470":{"tf":1.0},"51":{"tf":1.4142135623730951},"598":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"v":{"df":14,"docs":{"14":{"tf":1.0},"16":{"tf":1.4142135623730951},"17":{"tf":1.0},"181":{"tf":1.0},"209":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"37":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"54":{"tf":1.7320508075688772},"603":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.0}}}}}}},"n":{"/":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"a":{"c":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"16":{"tf":1.0}}}},"df":0,"docs":{}},"df":25,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"54":{"tf":1.0}}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"156":{"tf":1.0}}}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":21,"docs":{"156":{"tf":1.0},"213":{"tf":1.0},"22":{"tf":1.0},"261":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"392":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"41":{"tf":1.4142135623730951},"431":{"tf":1.0},"448":{"tf":1.0},"478":{"tf":1.0},"483":{"tf":1.0},"49":{"tf":1.0},"530":{"tf":1.0},"538":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0},"99":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":1,"docs":{"6":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"268":{"tf":1.0}},"p":{"a":{"df":0,"docs":{},"t":{"df":7,"docs":{"233":{"tf":1.4142135623730951},"234":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.0},"338":{"tf":1.0},"359":{"tf":1.0},"546":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":4,"docs":{"360":{"tf":1.0},"417":{"tf":1.0},"461":{"tf":1.0},"61":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"393":{"tf":1.0}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":6,"docs":{"223":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.4142135623730951},"470":{"tf":1.0},"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"41":{"tf":1.0},"516":{"tf":1.4142135623730951},"534":{"tf":1.4142135623730951},"548":{"tf":1.4142135623730951},"549":{"tf":1.0}}}}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"e":{"df":3,"docs":{"235":{"tf":1.0},"380":{"tf":1.4142135623730951},"448":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":8,"docs":{"146":{"tf":1.0},"325":{"tf":1.0},"370":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.0},"517":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}}},"x":{"df":1,"docs":{"470":{"tf":1.0}}}},"i":{"c":{"df":3,"docs":{"155":{"tf":1.0},"336":{"tf":1.0},"470":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"245":{"tf":1.0},"417":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"v":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"u":{"df":4,"docs":{"199":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"116":{"tf":1.0},"431":{"tf":1.0}}}}}}}},"df":1,"docs":{"140":{"tf":1.0}},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"470":{"tf":1.0},"472":{"tf":1.0}}}},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"359":{"tf":1.0}}},"df":0,"docs":{}}}}},"o":{"!":{"(":{"\"":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.7320508075688772},"539":{"tf":1.0}},"r":{"df":0,"docs":{},"m":{"df":12,"docs":{"178":{"tf":1.0},"196":{"tf":1.0},"261":{"tf":1.0},"309":{"tf":1.0},"328":{"tf":1.0},"342":{"tf":2.0},"357":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"440":{"tf":1.0},"456":{"tf":1.0},"9":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":20,"docs":{"114":{"tf":1.7320508075688772},"115":{"tf":1.0},"116":{"tf":1.0},"117":{"tf":1.0},"118":{"tf":1.0},"119":{"tf":1.0},"120":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"123":{"tf":1.7320508075688772},"124":{"tf":1.0},"125":{"tf":1.0},"126":{"tf":1.0},"127":{"tf":2.449489742783178},"128":{"tf":1.0},"129":{"tf":1.0},"130":{"tf":1.4142135623730951},"131":{"tf":1.0},"517":{"tf":1.0},"530":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"110":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"t":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"188":{"tf":1.0}}}}}},"df":7,"docs":{"217":{"tf":1.0},"328":{"tf":1.4142135623730951},"408":{"tf":1.0},"470":{"tf":1.4142135623730951},"502":{"tf":1.0},"538":{"tf":1.7320508075688772},"547":{"tf":1.0}}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"448":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"336":{"tf":2.0},"404":{"tf":2.449489742783178},"423":{"tf":1.0},"568":{"tf":1.0}}}}},"n":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"545":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"221":{"tf":1.0},"538":{"tf":1.0}}}}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"d":{"df":10,"docs":{"217":{"tf":1.0},"292":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"320":{"tf":1.0},"325":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"408":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}}}},"df":1,"docs":{"538":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":22,"docs":{"156":{"tf":1.0},"211":{"tf":1.4142135623730951},"271":{"tf":1.0},"309":{"tf":1.0},"406":{"tf":1.7320508075688772},"407":{"tf":1.0},"408":{"tf":1.7320508075688772},"409":{"tf":1.0},"410":{"tf":2.0},"411":{"tf":1.0},"412":{"tf":1.7320508075688772},"413":{"tf":1.4142135623730951},"414":{"tf":1.0},"431":{"tf":1.0},"538":{"tf":2.8284271247461903},"541":{"tf":1.0},"543":{"tf":1.4142135623730951},"544":{"tf":1.0},"545":{"tf":1.7320508075688772},"546":{"tf":1.4142135623730951},"547":{"tf":1.0},"548":{"tf":1.4142135623730951}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"268":{"tf":1.0},"284":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"110":{"tf":1.0}}}}},"t":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"245":{"tf":1.0},"284":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}}},"n":{"c":{"df":5,"docs":{"211":{"tf":1.0},"318":{"tf":1.7320508075688772},"421":{"tf":1.0},"422":{"tf":1.4142135623730951},"437":{"tf":1.0}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"522":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"380":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":26,"docs":{"110":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.0},"201":{"tf":1.0},"203":{"tf":1.0},"217":{"tf":1.0},"246":{"tf":1.0},"259":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"312":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":1.0},"422":{"tf":1.0},"456":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"55":{"tf":1.0},"82":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":11,"docs":{"152":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.4142135623730951},"169":{"tf":1.0},"2":{"tf":1.0},"24":{"tf":1.0},"38":{"tf":1.0},"485":{"tf":1.0},"489":{"tf":1.0},"559":{"tf":1.7320508075688772},"97":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":8,"docs":{"178":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"453":{"tf":1.0},"545":{"tf":1.4142135623730951},"546":{"tf":1.0},"547":{"tf":1.0}}}}}}}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"288":{"tf":1.0}}},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"294":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":31,"docs":{"110":{"tf":1.0},"156":{"tf":2.23606797749979},"192":{"tf":1.4142135623730951},"211":{"tf":1.0},"268":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"431":{"tf":1.0},"454":{"tf":1.7320508075688772},"455":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.0},"460":{"tf":1.4142135623730951},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"504":{"tf":2.0},"507":{"tf":1.0},"526":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"599":{"tf":1.4142135623730951},"62":{"tf":1.4142135623730951},"72":{"tf":1.0},"74":{"tf":1.0}}}},"l":{"df":1,"docs":{"461":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"j":{"df":1,"docs":{"414":{"tf":1.0}}}}}},"n":{"d":{"df":3,"docs":{"408":{"tf":1.0},"51":{"tf":1.0},"558":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":2,"docs":{"110":{"tf":1.0},"331":{"tf":1.0}}},"t":{"df":2,"docs":{"460":{"tf":1.0},"54":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"11":{"tf":1.0},"6":{"tf":1.0}}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"177":{"tf":1.0},"257":{"tf":1.0},"296":{"tf":1.0},"561":{"tf":1.0}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"470":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"422":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":11,"docs":{"2":{"tf":1.0},"276":{"tf":1.0},"353":{"tf":1.0},"380":{"tf":1.4142135623730951},"399":{"tf":1.0},"440":{"tf":1.0},"49":{"tf":1.0},"556":{"tf":1.0},"561":{"tf":1.4142135623730951},"81":{"tf":1.0},"84":{"tf":1.0}}}}},"f":{"a":{"c":{"df":16,"docs":{"112":{"tf":1.0},"209":{"tf":1.7320508075688772},"231":{"tf":1.0},"300":{"tf":2.23606797749979},"315":{"tf":1.0},"336":{"tf":2.6457513110645907},"41":{"tf":1.0},"418":{"tf":1.0},"423":{"tf":1.4142135623730951},"426":{"tf":1.0},"456":{"tf":2.449489742783178},"457":{"tf":1.0},"513":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.0},"542":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"57":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"341":{"tf":1.0},"417":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"v":{"df":1,"docs":{"456":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":6,"docs":{"276":{"tf":1.0},"307":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.4142135623730951},"403":{"tf":1.0},"458":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":14,"docs":{"129":{"tf":1.0},"190":{"tf":1.0},"198":{"tf":1.0},"224":{"tf":1.0},"268":{"tf":1.0},"323":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"393":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"549":{"tf":1.0},"565":{"tf":1.0},"571":{"tf":1.0}},"e":{"df":0,"docs":{},"t":{"df":3,"docs":{"127":{"tf":1.0},"385":{"tf":1.0},"52":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"278":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"156":{"tf":1.0},"278":{"tf":1.0},"457":{"tf":1.0},"535":{"tf":1.0},"61":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":3,"docs":{"110":{"tf":1.0},"336":{"tf":1.0},"344":{"tf":1.4142135623730951}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"313":{"tf":1.0}}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":2,"docs":{"365":{"tf":1.0},"9":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"v":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"559":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}}}}}}}},"r":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"237":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":1,"docs":{"79":{"tf":1.0}}}}},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":9,"docs":{"2":{"tf":1.0},"218":{"tf":1.0},"308":{"tf":1.4142135623730951},"360":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.0},"513":{"tf":1.0},"79":{"tf":1.0}},"t":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"268":{"tf":1.4142135623730951},"380":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"171":{"tf":1.0},"218":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"516":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"284":{"tf":1.7320508075688772}}},"y":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":9,"docs":{"134":{"tf":1.0},"209":{"tf":1.4142135623730951},"213":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":2.0},"389":{"tf":1.0},"420":{"tf":1.4142135623730951},"431":{"tf":1.0},"538":{"tf":1.0}}}}}}},"o":{"c":{"df":1,"docs":{"336":{"tf":1.0}}},"df":0,"docs":{},"k":{"df":8,"docs":{"156":{"tf":1.0},"178":{"tf":1.0},"286":{"tf":1.0},"320":{"tf":1.0},"336":{"tf":1.7320508075688772},"344":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}},"l":{"df":0,"docs":{},"v":{"df":13,"docs":{"11":{"tf":1.4142135623730951},"156":{"tf":1.0},"18":{"tf":1.0},"2":{"tf":1.4142135623730951},"221":{"tf":1.0},"225":{"tf":1.0},"300":{"tf":1.0},"375":{"tf":1.4142135623730951},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"478":{"tf":1.0},"499":{"tf":1.7320508075688772},"84":{"tf":1.0}}}}}}},"o":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"596":{"tf":1.0}}}}},"df":5,"docs":{"110":{"tf":1.0},"156":{"tf":1.0},"325":{"tf":1.0},"349":{"tf":1.0},"530":{"tf":1.0}}},"r":{"c":{"df":1,"docs":{"187":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":25,"docs":{"137":{"tf":1.0},"156":{"tf":1.0},"199":{"tf":1.4142135623730951},"221":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"304":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"312":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.4142135623730951},"404":{"tf":1.0},"41":{"tf":1.0},"423":{"tf":1.0},"448":{"tf":1.4142135623730951},"523":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"342":{"tf":1.0},"534":{"tf":1.0}}}},"s":{"df":0,"docs":{},"u":{"df":56,"docs":{"130":{"tf":1.0},"140":{"tf":1.0},"157":{"tf":1.4142135623730951},"16":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"192":{"tf":1.7320508075688772},"196":{"tf":1.4142135623730951},"211":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.4142135623730951},"226":{"tf":1.0},"234":{"tf":1.0},"24":{"tf":1.4142135623730951},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"25":{"tf":2.0},"252":{"tf":1.0},"256":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"271":{"tf":1.7320508075688772},"272":{"tf":1.4142135623730951},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":2.23606797749979},"286":{"tf":1.7320508075688772},"288":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.4142135623730951},"340":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"373":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.4142135623730951},"411":{"tf":1.0},"440":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"481":{"tf":1.0},"521":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0},"558":{"tf":3.0},"559":{"tf":1.7320508075688772},"560":{"tf":1.0},"562":{"tf":1.0},"564":{"tf":1.4142135623730951},"599":{"tf":1.0}}}}},"t":{"'":{"d":{"df":2,"docs":{"196":{"tf":1.0},"517":{"tf":1.0}}},"df":56,"docs":{"116":{"tf":1.0},"118":{"tf":1.0},"120":{"tf":1.0},"122":{"tf":1.0},"125":{"tf":1.0},"128":{"tf":1.0},"140":{"tf":1.0},"150":{"tf":1.0},"156":{"tf":2.6457513110645907},"181":{"tf":1.0},"198":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"217":{"tf":2.8284271247461903},"218":{"tf":2.6457513110645907},"225":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.0},"252":{"tf":1.7320508075688772},"258":{"tf":1.0},"259":{"tf":1.4142135623730951},"261":{"tf":1.0},"265":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.7320508075688772},"292":{"tf":1.0},"310":{"tf":1.4142135623730951},"312":{"tf":1.0},"321":{"tf":1.0},"324":{"tf":1.0},"347":{"tf":1.0},"356":{"tf":1.4142135623730951},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"391":{"tf":1.4142135623730951},"394":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"483":{"tf":1.0},"502":{"tf":1.4142135623730951},"538":{"tf":1.0},"54":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":1.7320508075688772},"62":{"tf":1.0},"8":{"tf":1.0},"82":{"tf":1.0},"96":{"tf":1.0}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.0}}}}},"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"157":{"tf":1.0},"489":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":9,"docs":{"196":{"tf":1.4142135623730951},"197":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"418":{"tf":1.0},"553":{"tf":1.4142135623730951},"557":{"tf":1.0},"568":{"tf":1.0},"599":{"tf":1.0}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"324":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":26,"docs":{"110":{"tf":1.0},"156":{"tf":1.7320508075688772},"207":{"tf":1.7320508075688772},"208":{"tf":1.0},"209":{"tf":1.0},"210":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"307":{"tf":1.7320508075688772},"308":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.7320508075688772},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"313":{"tf":1.4142135623730951},"315":{"tf":1.0},"322":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.4142135623730951},"458":{"tf":1.0},"573":{"tf":1.7320508075688772},"599":{"tf":1.0},"61":{"tf":1.4142135623730951}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":16,"docs":{"155":{"tf":1.4142135623730951},"156":{"tf":1.7320508075688772},"187":{"tf":1.0},"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"218":{"tf":1.4142135623730951},"312":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.0},"457":{"tf":1.0},"499":{"tf":1.4142135623730951},"538":{"tf":1.0},"560":{"tf":1.0},"62":{"tf":1.0}}}}}}}},"j":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"m":{"df":1,"docs":{"153":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"m":{"c":{"df":0,"docs":{},"m":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"198":{"tf":1.0}}}}}},"v":{"a":{"df":7,"docs":{"127":{"tf":1.0},"209":{"tf":2.8284271247461903},"213":{"tf":1.7320508075688772},"214":{"tf":1.0},"414":{"tf":1.0},"73":{"tf":2.23606797749979},"74":{"tf":1.0}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":10,"docs":{"196":{"tf":1.0},"205":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.7320508075688772},"232":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.7320508075688772},"394":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"r":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"602":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}},"o":{"b":{"df":4,"docs":{"221":{"tf":1.0},"268":{"tf":1.0},"358":{"tf":1.0},"502":{"tf":1.0}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"311":{"tf":1.7320508075688772},"380":{"tf":1.0}},"l":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"1":{":":{"1":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":8,"docs":{"268":{"tf":1.0},"292":{"tf":1.0},"312":{"tf":1.0},"370":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":1.0},"587":{"tf":1.7320508075688772},"599":{"tf":1.0}}}},"n":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"603":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":4,"docs":{"136":{"tf":1.0},"268":{"tf":1.0},"356":{"tf":1.4142135623730951},"370":{"tf":1.0}}}}}}},"y":{"df":2,"docs":{"276":{"tf":1.0},"8":{"tf":1.0}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"213":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"s":{"df":2,"docs":{"280":{"tf":1.0},"380":{"tf":1.0}}},"u":{"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"76":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":2,"docs":{"217":{"tf":1.0},"245":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"m":{"df":1,"docs":{"73":{"tf":1.0}}}},"z":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"602":{"tf":1.0}}}}},"df":0,"docs":{}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":42,"docs":{"134":{"tf":1.4142135623730951},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"199":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"216":{"tf":1.0},"218":{"tf":1.0},"220":{"tf":1.0},"240":{"tf":1.0},"258":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"419":{"tf":1.0},"431":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.4142135623730951},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"9":{"tf":1.0}}}},"p":{"df":0,"docs":{},"t":{"df":4,"docs":{"127":{"tf":1.0},"320":{"tf":1.4142135623730951},"389":{"tf":1.0},"419":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"(":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"(":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":3,"docs":{"336":{"tf":4.47213595499958},"344":{"tf":1.0},"503":{"tf":1.0}}}}}},"y":{"df":13,"docs":{"154":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"268":{"tf":1.7320508075688772},"339":{"tf":1.0},"470":{"tf":1.0},"494":{"tf":1.4142135623730951},"507":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951},"538":{"tf":2.23606797749979},"552":{"tf":1.4142135623730951},"583":{"tf":1.0},"61":{"tf":1.4142135623730951}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"d":{"df":8,"docs":{"196":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.0},"385":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":1.0},"89":{"tf":1.0}}},"df":0,"docs":{}}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"167":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"a":{"df":1,"docs":{"473":{"tf":1.0}}},"df":0,"docs":{}}}}}},"n":{"d":{"df":18,"docs":{"156":{"tf":1.4142135623730951},"200":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"264":{"tf":1.0},"330":{"tf":1.0},"349":{"tf":1.4142135623730951},"370":{"tf":1.0},"389":{"tf":1.0},"412":{"tf":1.4142135623730951},"423":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"47":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"478":{"tf":1.0}}}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":3,"docs":{"218":{"tf":1.0},"246":{"tf":1.0},"389":{"tf":1.0}}}},"o":{"df":0,"docs":{},"w":{"df":71,"docs":{"118":{"tf":1.0},"130":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"171":{"tf":1.0},"181":{"tf":1.0},"188":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.4142135623730951},"230":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"246":{"tf":1.4142135623730951},"25":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.4142135623730951},"304":{"tf":1.0},"319":{"tf":1.0},"321":{"tf":1.0},"340":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.4142135623730951},"370":{"tf":1.0},"372":{"tf":1.0},"377":{"tf":1.0},"380":{"tf":2.449489742783178},"383":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"401":{"tf":1.0},"405":{"tf":1.0},"408":{"tf":2.0},"41":{"tf":1.0},"413":{"tf":1.0},"417":{"tf":1.0},"442":{"tf":1.0},"445":{"tf":1.0},"456":{"tf":1.4142135623730951},"458":{"tf":1.0},"465":{"tf":1.4142135623730951},"475":{"tf":1.4142135623730951},"48":{"tf":1.4142135623730951},"483":{"tf":1.0},"49":{"tf":1.7320508075688772},"499":{"tf":1.0},"50":{"tf":1.4142135623730951},"508":{"tf":1.4142135623730951},"511":{"tf":1.4142135623730951},"52":{"tf":1.0},"521":{"tf":1.0},"529":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"g":{"df":20,"docs":{"153":{"tf":1.0},"156":{"tf":1.0},"192":{"tf":1.0},"196":{"tf":1.0},"232":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"330":{"tf":1.0},"383":{"tf":1.0},"385":{"tf":1.0},"427":{"tf":1.0},"476":{"tf":1.7320508075688772},"477":{"tf":1.0},"478":{"tf":1.0},"479":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"559":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"271":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":7,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"276":{"tf":1.0},"402":{"tf":1.0},"436":{"tf":1.0},"469":{"tf":1.0},"54":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"/":{"df":0,"docs":{},"s":{"c":{"a":{"df":0,"docs":{},"l":{"a":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"73":{"tf":1.0},"74":{"tf":2.0}}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"249":{"tf":1.0}}}}}}}}},"u":{"b":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":3.7416573867739413}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"440":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"l":{"a":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"539":{"tf":2.0}}}}},"c":{"df":0,"docs":{},"k":{"df":16,"docs":{"156":{"tf":1.4142135623730951},"181":{"tf":1.0},"211":{"tf":1.0},"231":{"tf":1.0},"256":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"361":{"tf":1.0},"363":{"tf":1.0},"433":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"521":{"tf":1.0},"572":{"tf":1.0},"81":{"tf":1.0}}}},"df":0,"docs":{},"m":{"b":{"d":{"a":{"df":2,"docs":{"457":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}}},"n":{"d":{"df":1,"docs":{"156":{"tf":1.0}}},"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"271":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"/":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"/":{"c":{"df":0,"docs":{},"h":{"1":{"7":{"df":1,"docs":{"365":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":24,"docs":{"258":{"tf":1.0},"284":{"tf":1.0},"305":{"tf":1.7320508075688772},"306":{"tf":1.0},"307":{"tf":1.4142135623730951},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.4142135623730951},"323":{"tf":1.0},"324":{"tf":1.0},"325":{"tf":1.0},"523":{"tf":1.0}}}}}},"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"#":{"7":{"0":{"2":{"6":{"3":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"4":{"3":{"1":{"2":{"2":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"7":{"4":{"7":{"8":{"df":1,"docs":{"271":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"2":{"2":{"9":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":3,"docs":{"17":{"tf":1.0},"580":{"tf":1.0},"599":{"tf":1.0}},"u":{"a":{"df":0,"docs":{},"g":{"df":55,"docs":{"110":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.7320508075688772},"156":{"tf":1.7320508075688772},"173":{"tf":1.0},"183":{"tf":1.0},"192":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"223":{"tf":1.0},"230":{"tf":2.0},"239":{"tf":1.4142135623730951},"241":{"tf":1.7320508075688772},"248":{"tf":1.0},"250":{"tf":1.4142135623730951},"251":{"tf":1.0},"261":{"tf":1.4142135623730951},"265":{"tf":1.7320508075688772},"272":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.4142135623730951},"3":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"316":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.4142135623730951},"350":{"tf":1.0},"356":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"367":{"tf":1.7320508075688772},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"394":{"tf":1.4142135623730951},"403":{"tf":1.7320508075688772},"414":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"475":{"tf":1.0},"511":{"tf":1.0},"516":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.4142135623730951},"67":{"tf":1.0},"71":{"tf":1.4142135623730951},"72":{"tf":1.4142135623730951},"76":{"tf":1.0},"9":{"tf":1.0}},"e":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"df":1,"docs":{"480":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":3,"docs":{"309":{"tf":1.4142135623730951},"318":{"tf":1.7320508075688772},"347":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"g":{"df":17,"docs":{"116":{"tf":1.0},"127":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0},"156":{"tf":1.0},"209":{"tf":2.0},"211":{"tf":1.0},"214":{"tf":1.0},"245":{"tf":1.4142135623730951},"252":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":2.0},"358":{"tf":1.0},"392":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"209":{"tf":1.0},"245":{"tf":1.0},"515":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"_":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":7,"docs":{"217":{"tf":1.7320508075688772},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"356":{"tf":1.0},"380":{"tf":1.7320508075688772},"431":{"tf":1.0},"553":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":3,"docs":{"562":{"tf":1.4142135623730951},"72":{"tf":1.0},"89":{"tf":1.0}},"n":{"c":{"df":6,"docs":{"143":{"tf":1.0},"284":{"tf":1.0},"356":{"tf":1.0},"431":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":17,"docs":{"16":{"tf":1.0},"171":{"tf":1.0},"201":{"tf":1.0},"221":{"tf":1.0},"237":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"312":{"tf":1.0},"313":{"tf":1.0},"347":{"tf":1.0},"417":{"tf":1.0},"46":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"538":{"tf":1.0},"599":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":5,"docs":{"116":{"tf":1.0},"233":{"tf":1.0},"237":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"h":{"df":4,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"284":{"tf":1.0},"502":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}},"y":{"df":2,"docs":{"10":{"tf":1.0},"349":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"431":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0}}}}},"z":{"df":0,"docs":{},"i":{"df":1,"docs":{"380":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"421":{"tf":1.0},"422":{"tf":1.0}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":19,"docs":{"1":{"tf":1.7320508075688772},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"17":{"tf":1.4142135623730951},"183":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.4142135623730951},"270":{"tf":1.0},"278":{"tf":1.0},"319":{"tf":1.4142135623730951},"323":{"tf":1.0},"325":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.0},"460":{"tf":1.0},"513":{"tf":1.0},"515":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":3,"docs":{"211":{"tf":1.0},"240":{"tf":1.0},"515":{"tf":1.0}}},"r":{"df":0,"docs":{},"n":{"df":40,"docs":{"136":{"tf":1.0},"153":{"tf":1.0},"18":{"tf":1.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"195":{"tf":1.4142135623730951},"199":{"tf":1.0},"221":{"tf":1.0},"240":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"292":{"tf":1.0},"321":{"tf":1.0},"358":{"tf":1.7320508075688772},"360":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.4142135623730951},"382":{"tf":1.0},"383":{"tf":2.449489742783178},"389":{"tf":1.0},"397":{"tf":1.0},"440":{"tf":1.0},"445":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.7320508075688772},"502":{"tf":1.0},"503":{"tf":1.4142135623730951},"54":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.4142135623730951},"545":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.0},"86":{"tf":1.0}}}},"v":{"df":10,"docs":{"25":{"tf":1.0},"278":{"tf":1.0},"361":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"389":{"tf":1.0},"457":{"tf":1.0},"50":{"tf":1.4142135623730951},"54":{"tf":1.0},"57":{"tf":1.0}}}},"d":{"df":5,"docs":{"336":{"tf":1.0},"385":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0},"56":{"tf":1.0}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":8,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"302":{"tf":1.0},"408":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":1.0},"558":{"tf":1.0},"59":{"tf":1.0}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"380":{"tf":1.0},"458":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"s":{"df":7,"docs":{"138":{"tf":1.0},"196":{"tf":1.0},"209":{"tf":1.0},"304":{"tf":1.0},"319":{"tf":1.0},"333":{"tf":1.4142135623730951},"367":{"tf":1.0}}}},"t":{"'":{"df":4,"docs":{"200":{"tf":1.0},"300":{"tf":1.0},"408":{"tf":1.4142135623730951},"538":{"tf":1.0}}},"df":3,"docs":{"178":{"tf":1.0},"214":{"tf":1.0},"421":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":12,"docs":{"119":{"tf":1.0},"131":{"tf":1.0},"134":{"tf":1.0},"137":{"tf":1.7320508075688772},"156":{"tf":1.4142135623730951},"190":{"tf":1.0},"336":{"tf":1.0},"431":{"tf":1.0},"61":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.0}}},"r":{"a":{"df":0,"docs":{},"g":{"df":3,"docs":{"211":{"tf":1.0},"389":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{"2":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"c":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{".":{"6":{"`":{"_":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"c":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"=":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"`":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":1,"docs":{"404":{"tf":1.0}}},"df":3,"docs":{"17":{"tf":1.0},"171":{"tf":1.0},"408":{"tf":1.0}},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":66,"docs":{"127":{"tf":1.0},"145":{"tf":1.0},"147":{"tf":1.0},"156":{"tf":2.449489742783178},"179":{"tf":1.0},"218":{"tf":1.4142135623730951},"221":{"tf":2.23606797749979},"230":{"tf":1.0},"231":{"tf":1.0},"235":{"tf":1.4142135623730951},"240":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"261":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"300":{"tf":3.0},"302":{"tf":2.0},"303":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.4142135623730951},"336":{"tf":2.449489742783178},"344":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.7320508075688772},"360":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"399":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"431":{"tf":1.0},"438":{"tf":1.7320508075688772},"439":{"tf":1.0},"440":{"tf":1.7320508075688772},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"456":{"tf":2.449489742783178},"457":{"tf":1.4142135623730951},"460":{"tf":1.4142135623730951},"461":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"503":{"tf":1.0},"513":{"tf":1.0},"521":{"tf":1.4142135623730951},"523":{"tf":1.0},"526":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"535":{"tf":1.0},"56":{"tf":1.0},"599":{"tf":2.0},"61":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"61":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}}}},"y":{"'":{"df":2,"docs":{"268":{"tf":1.0},"349":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"d":{"df":1,"docs":{"41":{"tf":1.0}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":2,"docs":{"5":{"tf":2.6457513110645907},"6":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"y":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"595":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}},"df":39,"docs":{"122":{"tf":1.0},"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":10,"docs":{"217":{"tf":2.8284271247461903},"218":{"tf":3.0},"221":{"tf":1.4142135623730951},"259":{"tf":1.0},"292":{"tf":2.0},"375":{"tf":1.7320508075688772},"421":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"462":{"tf":1.0},"581":{"tf":1.4142135623730951}}}}}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"343":{"tf":1.0}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}}}}}}}}},"k":{"df":0,"docs":{},"e":{"df":4,"docs":{"417":{"tf":1.0},"531":{"tf":1.4142135623730951},"54":{"tf":1.0},"79":{"tf":1.0}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"475":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":8,"docs":{"189":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"370":{"tf":1.0},"391":{"tf":1.0},"478":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"e":{"df":10,"docs":{"168":{"tf":1.0},"217":{"tf":1.0},"232":{"tf":1.0},"284":{"tf":1.0},"383":{"tf":1.0},"397":{"tf":1.7320508075688772},"448":{"tf":2.0},"453":{"tf":1.0},"538":{"tf":2.23606797749979},"559":{"tf":1.0}}},"k":{"df":27,"docs":{"143":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.0},"159":{"tf":1.0},"162":{"tf":1.0},"196":{"tf":1.0},"245":{"tf":1.0},"276":{"tf":1.0},"28":{"tf":1.0},"336":{"tf":1.0},"343":{"tf":1.0},"36":{"tf":1.4142135623730951},"41":{"tf":1.4142135623730951},"419":{"tf":1.0},"481":{"tf":1.0},"486":{"tf":1.0},"489":{"tf":1.0},"491":{"tf":1.0},"493":{"tf":1.0},"498":{"tf":1.0},"516":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"560":{"tf":1.0},"562":{"tf":1.0},"597":{"tf":1.0}}},"t":{"df":6,"docs":{"171":{"tf":1.0},"526":{"tf":1.0},"563":{"tf":1.7320508075688772},"564":{"tf":1.0},"565":{"tf":1.0},"566":{"tf":1.4142135623730951}}},"u":{"df":0,"docs":{},"x":{"df":3,"docs":{"209":{"tf":1.0},"245":{"tf":1.0},"397":{"tf":2.8284271247461903}}}}},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"67":{"tf":1.0}}}}},"t":{"df":13,"docs":{"217":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"370":{"tf":1.0},"436":{"tf":1.0},"499":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":2.8284271247461903},"539":{"tf":1.4142135623730951},"558":{"tf":1.0},"598":{"tf":1.0},"61":{"tf":1.0},"95":{"tf":1.7320508075688772},"96":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"538":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"p":{"a":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"440":{"tf":4.242640687119285}},"s":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":2.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"325":{"tf":1.0},"419":{"tf":1.0}},"r":{"df":1,"docs":{"534":{"tf":1.0}}}},"t":{"df":0,"docs":{},"l":{"df":11,"docs":{"129":{"tf":1.0},"153":{"tf":1.0},"201":{"tf":1.0},"221":{"tf":1.4142135623730951},"336":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"413":{"tf":1.0},"456":{"tf":1.0},"522":{"tf":1.0},"544":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":8,"docs":{"156":{"tf":1.4142135623730951},"18":{"tf":1.7320508075688772},"217":{"tf":1.0},"284":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"51":{"tf":1.0},"562":{"tf":1.0}}}}},"l":{"d":{"b":{"df":2,"docs":{"289":{"tf":1.0},"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"v":{"df":0,"docs":{},"m":{"df":2,"docs":{"336":{"tf":1.0},"599":{"tf":1.0}}}}},"o":{"a":{"d":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"217":{"tf":1.7320508075688772}},"e":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"217":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":5,"docs":{"217":{"tf":1.7320508075688772},"268":{"tf":1.0},"307":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}},"c":{"a":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"4":{"8":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"2":{":":{"1":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":9,"docs":{"209":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"397":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.4142135623730951},"538":{"tf":1.0}}},"t":{"df":1,"docs":{"539":{"tf":1.0}}}},"df":0,"docs":{},"k":{"<":{"df":0,"docs":{},"u":{"3":{"2":{"df":1,"docs":{"564":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":16,"docs":{"156":{"tf":2.0},"266":{"tf":1.7320508075688772},"267":{"tf":1.0},"268":{"tf":3.4641016151377544},"269":{"tf":1.0},"270":{"tf":1.4142135623730951},"271":{"tf":1.0},"272":{"tf":1.4142135623730951},"273":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"341":{"tf":1.4142135623730951},"363":{"tf":1.0},"517":{"tf":1.4142135623730951},"565":{"tf":1.0},"599":{"tf":1.0}}}},"df":1,"docs":{"246":{"tf":1.0}},"g":{"!":{"(":{"\"":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"178":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"!":{"(":{"\"":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"{":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":7,"docs":{"178":{"tf":1.7320508075688772},"217":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"408":{"tf":2.0},"431":{"tf":2.6457513110645907},"538":{"tf":1.7320508075688772}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":1,"docs":{"412":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"i":{"c":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":9,"docs":{"112":{"tf":1.0},"139":{"tf":1.0},"200":{"tf":1.0},"232":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.0},"423":{"tf":1.0},"462":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"g":{"df":19,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"203":{"tf":1.0},"217":{"tf":1.0},"286":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"340":{"tf":1.0},"380":{"tf":2.6457513110645907},"383":{"tf":1.7320508075688772},"389":{"tf":1.0},"422":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.4142135623730951},"478":{"tf":1.0},"481":{"tf":1.0},"539":{"tf":1.0},"65":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"268":{"tf":1.0},"353":{"tf":1.0},"385":{"tf":1.0},"402":{"tf":1.0},"417":{"tf":1.0},"599":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"k":{"df":60,"docs":{"125":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.4142135623730951},"168":{"tf":1.0},"169":{"tf":1.0},"190":{"tf":2.0},"197":{"tf":1.0},"2":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":2.449489742783178},"217":{"tf":2.0},"224":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.4142135623730951},"25":{"tf":1.0},"268":{"tf":2.0},"276":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"300":{"tf":1.0},"32":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"347":{"tf":1.7320508075688772},"357":{"tf":1.0},"358":{"tf":2.0},"363":{"tf":1.0},"37":{"tf":1.0},"380":{"tf":3.4641016151377544},"383":{"tf":1.0},"389":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"404":{"tf":1.0},"405":{"tf":1.0},"421":{"tf":1.0},"431":{"tf":1.0},"458":{"tf":1.7320508075688772},"470":{"tf":1.0},"472":{"tf":1.0},"475":{"tf":1.0},"481":{"tf":1.0},"485":{"tf":1.0},"486":{"tf":1.0},"496":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.0},"506":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0},"62":{"tf":1.0}}},"p":{"df":20,"docs":{"156":{"tf":1.7320508075688772},"185":{"tf":1.7320508075688772},"186":{"tf":1.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":2.0},"191":{"tf":1.0},"192":{"tf":2.23606797749979},"200":{"tf":2.0},"328":{"tf":2.0},"336":{"tf":1.0},"440":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.4142135623730951},"462":{"tf":1.0},"463":{"tf":1.0},"504":{"tf":2.0},"599":{"tf":2.23606797749979},"62":{"tf":1.7320508075688772}}},"s":{"df":1,"docs":{"11":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"389":{"tf":1.0},"9":{"tf":1.0}}},"s":{"df":2,"docs":{"457":{"tf":1.0},"572":{"tf":1.0}}},"t":{"df":9,"docs":{"156":{"tf":1.0},"215":{"tf":1.7320508075688772},"216":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"226":{"tf":1.0},"273":{"tf":1.0},"367":{"tf":1.0},"431":{"tf":1.0}}}},"t":{"df":40,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"264":{"tf":1.0},"268":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"313":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"338":{"tf":1.4142135623730951},"341":{"tf":1.4142135623730951},"365":{"tf":1.0},"367":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.4142135623730951},"399":{"tf":1.0},"402":{"tf":1.0},"418":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.0},"521":{"tf":1.0},"55":{"tf":1.0},"564":{"tf":1.0},"599":{"tf":1.4142135623730951},"65":{"tf":1.0},"79":{"tf":1.0},"86":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":10,"docs":{"230":{"tf":1.0},"41":{"tf":1.0},"457":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0},"92":{"tf":1.0}}}},"w":{"df":9,"docs":{"108":{"tf":1.0},"134":{"tf":1.0},"143":{"tf":1.0},"190":{"tf":1.0},"347":{"tf":1.0},"356":{"tf":1.0},"558":{"tf":1.4142135623730951},"79":{"tf":1.0},"82":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"156":{"tf":1.0},"319":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"408":{"tf":1.0}}}}},"u":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"b":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"271":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"k":{"df":2,"docs":{"174":{"tf":1.0},"244":{"tf":1.0}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"328":{"tf":1.0},"360":{"tf":1.0},"542":{"tf":1.0}}}}}}},"df":0,"docs":{}},"w":{"df":0,"docs":{},"p":{"df":1,"docs":{"284":{"tf":1.0}}}}},"m":{"a":{"c":{"df":1,"docs":{"187":{"tf":1.0}},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":6,"docs":{"197":{"tf":1.0},"199":{"tf":2.0},"200":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":2.0},"318":{"tf":1.7320508075688772}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"397":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"o":{"df":5,"docs":{"246":{"tf":1.7320508075688772},"252":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"392":{"tf":1.4142135623730951}}}}},"d":{"df":0,"docs":{},"e":{"df":13,"docs":{"169":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"235":{"tf":1.0},"246":{"tf":1.0},"268":{"tf":1.4142135623730951},"336":{"tf":1.0},"34":{"tf":1.0},"361":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"417":{"tf":1.4142135623730951},"423":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"1":{":":{"1":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{":":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{"df":1,"docs":{"404":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":34,"docs":{"177":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"233":{"tf":1.0},"244":{"tf":1.4142135623730951},"257":{"tf":2.0},"258":{"tf":1.7320508075688772},"284":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":2.449489742783178},"311":{"tf":1.0},"313":{"tf":1.0},"320":{"tf":1.0},"380":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":1.4142135623730951},"425":{"tf":1.0},"448":{"tf":2.449489742783178},"457":{"tf":1.0},"494":{"tf":1.0},"502":{"tf":2.0},"507":{"tf":1.0},"522":{"tf":2.449489742783178},"523":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.4142135623730951},"546":{"tf":1.0},"590":{"tf":1.7320508075688772},"591":{"tf":1.0},"592":{"tf":1.0},"593":{"tf":1.0},"599":{"tf":1.0}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":10,"docs":{"121":{"tf":1.0},"276":{"tf":2.0},"328":{"tf":1.0},"366":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"469":{"tf":1.0},"65":{"tf":1.0},"89":{"tf":1.0},"91":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"276":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":5,"docs":{"41":{"tf":1.0},"417":{"tf":1.0},"65":{"tf":1.0},"76":{"tf":1.0},"81":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":7,"docs":{"161":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"29":{"tf":1.0},"342":{"tf":1.0},"42":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}},"k":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"190":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}}},"df":130,"docs":{"101":{"tf":1.4142135623730951},"110":{"tf":1.7320508075688772},"118":{"tf":1.4142135623730951},"122":{"tf":1.0},"127":{"tf":1.4142135623730951},"136":{"tf":1.4142135623730951},"145":{"tf":1.4142135623730951},"147":{"tf":1.0},"156":{"tf":2.6457513110645907},"158":{"tf":1.0},"16":{"tf":1.0},"166":{"tf":1.0},"167":{"tf":1.0},"173":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"186":{"tf":1.0},"188":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.4142135623730951},"216":{"tf":1.0},"217":{"tf":1.0},"22":{"tf":1.4142135623730951},"220":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.0},"23":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"258":{"tf":1.4142135623730951},"259":{"tf":1.0},"267":{"tf":1.0},"268":{"tf":1.7320508075688772},"275":{"tf":1.0},"278":{"tf":1.7320508075688772},"283":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.7320508075688772},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"303":{"tf":1.0},"304":{"tf":1.0},"306":{"tf":1.0},"310":{"tf":1.0},"313":{"tf":1.0},"322":{"tf":1.0},"324":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"335":{"tf":1.0},"336":{"tf":1.7320508075688772},"34":{"tf":1.4142135623730951},"342":{"tf":1.0},"343":{"tf":1.0},"346":{"tf":1.0},"349":{"tf":1.4142135623730951},"352":{"tf":1.0},"354":{"tf":1.7320508075688772},"355":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.4142135623730951},"358":{"tf":1.0},"359":{"tf":2.0},"360":{"tf":1.0},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":1.7320508075688772},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.0},"370":{"tf":1.4142135623730951},"375":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.7320508075688772},"386":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"396":{"tf":1.0},"40":{"tf":1.4142135623730951},"407":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.4142135623730951},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"428":{"tf":1.0},"447":{"tf":1.0},"456":{"tf":1.0},"462":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":2.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"503":{"tf":1.4142135623730951},"515":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.4142135623730951},"525":{"tf":1.0},"53":{"tf":1.0},"536":{"tf":1.7320508075688772},"537":{"tf":1.4142135623730951},"538":{"tf":2.0},"539":{"tf":1.0},"540":{"tf":1.0},"541":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"55":{"tf":1.0},"558":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"64":{"tf":1.0},"8":{"tf":1.4142135623730951},"82":{"tf":1.0}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":1,"docs":{"209":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"n":{"a":{"df":0,"docs":{},"g":{"df":17,"docs":{"136":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"288":{"tf":1.0},"292":{"tf":1.0},"341":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":1.7320508075688772},"470":{"tf":1.4142135623730951},"538":{"tf":1.0},"599":{"tf":1.0}}}},"d":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"598":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"259":{"tf":2.0}},"i":{"df":49,"docs":{"110":{"tf":1.0},"118":{"tf":1.7320508075688772},"120":{"tf":1.0},"130":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.7320508075688772},"138":{"tf":1.0},"146":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.7320508075688772},"157":{"tf":1.0},"16":{"tf":1.0},"171":{"tf":1.0},"211":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.4142135623730951},"325":{"tf":1.4142135623730951},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"400":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.7320508075688772},"46":{"tf":1.0},"462":{"tf":1.0},"489":{"tf":1.0},"515":{"tf":1.4142135623730951},"517":{"tf":1.4142135623730951},"535":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951},"579":{"tf":1.0},"598":{"tf":1.0},"62":{"tf":1.0}},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"349":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"341":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"341":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0}}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":11,"docs":{"196":{"tf":1.0},"199":{"tf":1.0},"221":{"tf":1.4142135623730951},"24":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"26":{"tf":1.0},"284":{"tf":1.0},"38":{"tf":1.0},"417":{"tf":1.4142135623730951},"425":{"tf":1.0}}}},"df":0,"docs":{},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"456":{"tf":1.4142135623730951},"457":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"456":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"p":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":7,"docs":{"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.4142135623730951},"320":{"tf":1.0}}}}}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"5":{"7":{":":{"7":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"c":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":8,"docs":{"110":{"tf":1.0},"188":{"tf":1.0},"289":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"470":{"tf":1.0},"526":{"tf":1.0},"599":{"tf":1.0}}},"r":{"df":1,"docs":{"356":{"tf":1.4142135623730951}},"k":{"df":9,"docs":{"268":{"tf":1.0},"292":{"tf":1.0},"316":{"tf":1.0},"458":{"tf":1.0},"538":{"tf":1.0},"558":{"tf":1.4142135623730951},"559":{"tf":1.0},"573":{"tf":1.4142135623730951},"599":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"356":{"tf":1.0}}},"df":1,"docs":{"389":{"tf":1.0}}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":11,"docs":{"110":{"tf":1.0},"16":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":2.23606797749979},"211":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":2.0},"328":{"tf":2.0},"440":{"tf":1.0},"46":{"tf":1.0},"517":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"367":{"tf":1.0}}}}},"h":{".":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"469":{"tf":1.0}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":8,"docs":{"217":{"tf":1.0},"237":{"tf":1.0},"349":{"tf":1.0},"445":{"tf":1.0},"480":{"tf":1.0},"513":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"213":{"tf":1.0},"230":{"tf":1.0},"470":{"tf":1.0}}}}},"x":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":2,"docs":{"315":{"tf":1.0},"517":{"tf":1.0}},"e":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"=":{"1":{"0":{"2":{"4":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"487":{"tf":1.0}}}}}}},"df":1,"docs":{"319":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"529":{"tf":1.0}}}}}}},"y":{"b":{"df":19,"docs":{"128":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"311":{"tf":1.0},"32":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"419":{"tf":1.7320508075688772},"421":{"tf":1.4142135623730951},"437":{"tf":1.0},"456":{"tf":1.0},"498":{"tf":1.0},"506":{"tf":1.0},"68":{"tf":1.0}},"e":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"9":{"5":{":":{"3":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"n":{"df":20,"docs":{"127":{"tf":1.0},"129":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":2.23606797749979},"169":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"197":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"240":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"418":{"tf":1.0},"47":{"tf":1.0},"552":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"350":{"tf":1.0}}}}},"t":{"df":52,"docs":{"118":{"tf":1.0},"128":{"tf":1.0},"152":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"18":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"259":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"343":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"460":{"tf":1.0},"467":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.0},"477":{"tf":1.0},"485":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"561":{"tf":1.0},"598":{"tf":1.0},"94":{"tf":1.0}},"i":{"df":0,"docs":{},"m":{"df":4,"docs":{"18":{"tf":1.0},"209":{"tf":1.0},"256":{"tf":1.0},"521":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"276":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"211":{"tf":1.0},"268":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":9,"docs":{"156":{"tf":1.0},"259":{"tf":1.4142135623730951},"421":{"tf":1.4142135623730951},"508":{"tf":1.0},"513":{"tf":1.0},"516":{"tf":1.0},"573":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"i":{"a":{"df":2,"docs":{"276":{"tf":1.0},"538":{"tf":1.0}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"558":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":10,"docs":{"2":{"tf":1.4142135623730951},"211":{"tf":1.0},"431":{"tf":1.4142135623730951},"470":{"tf":1.0},"554":{"tf":1.7320508075688772},"555":{"tf":1.7320508075688772},"556":{"tf":1.4142135623730951},"557":{"tf":1.0},"558":{"tf":1.4142135623730951},"559":{"tf":1.0}}}},"m":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"16":{"tf":1.4142135623730951},"276":{"tf":1.0},"457":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.7320508075688772}}},"y":{"'":{"df":1,"docs":{"209":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":26,"docs":{"110":{"tf":1.0},"122":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"195":{"tf":1.0},"198":{"tf":1.0},"209":{"tf":2.449489742783178},"213":{"tf":1.0},"218":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"451":{"tf":1.0},"456":{"tf":2.0},"460":{"tf":1.0},"462":{"tf":1.0},"511":{"tf":1.4142135623730951},"65":{"tf":1.4142135623730951},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.4142135623730951},"81":{"tf":1.4142135623730951},"9":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"189":{"tf":1.0},"211":{"tf":1.0},"460":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":11,"docs":{"221":{"tf":1.4142135623730951},"231":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"349":{"tf":1.4142135623730951},"358":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"397":{"tf":1.0},"549":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"556":{"tf":1.7320508075688772},"558":{"tf":1.0},"559":{"tf":3.4641016151377544}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"559":{"tf":1.0}}}}}}}}},"u":{"df":1,"docs":{"188":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"300":{"tf":1.0}}},"g":{"df":12,"docs":{"157":{"tf":1.0},"16":{"tf":2.23606797749979},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"16":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"108":{"tf":1.0}}},"s":{"a":{"df":0,"docs":{},"g":{"df":22,"docs":{"177":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"276":{"tf":2.23606797749979},"370":{"tf":1.4142135623730951},"380":{"tf":2.6457513110645907},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"408":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"469":{"tf":2.0},"470":{"tf":1.7320508075688772},"538":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":2,"docs":{"370":{"tf":1.0},"408":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"218":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"d":{"df":24,"docs":{"178":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951},"209":{"tf":2.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"276":{"tf":2.0},"284":{"tf":1.0},"309":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"344":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.0},"504":{"tf":1.0},"54":{"tf":1.7320508075688772},"572":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"431":{"tf":1.0},"539":{"tf":1.0}}},"df":0,"docs":{}}}}},"h":{"df":0,"docs":{},"z":{"df":1,"docs":{"503":{"tf":1.4142135623730951}}}},"i":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":3,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"336":{"tf":1.4142135623730951}}}}}}}}},"df":1,"docs":{"116":{"tf":1.0}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}}}}}}}},"d":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"m":{"b":{"df":1,"docs":{"603":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":3,"docs":{"231":{"tf":1.0},"232":{"tf":1.0},"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":19,"docs":{"227":{"tf":1.7320508075688772},"228":{"tf":1.0},"229":{"tf":1.0},"230":{"tf":1.4142135623730951},"231":{"tf":1.4142135623730951},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.4142135623730951},"235":{"tf":1.7320508075688772},"236":{"tf":1.0},"237":{"tf":1.0},"238":{"tf":1.0},"239":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0},"470":{"tf":1.0},"62":{"tf":1.0}}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"134":{"tf":1.0},"139":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"j":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"292":{"tf":2.0}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"n":{"d":{"df":32,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.0},"306":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"503":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":6,"docs":{"156":{"tf":1.4142135623730951},"341":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.4142135623730951},"478":{"tf":1.0},"61":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":1,"docs":{"127":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"268":{"tf":1.0},"284":{"tf":1.0}}}}},"o":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"462":{"tf":1.0}}}}}},"s":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"261":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":2,"docs":{"361":{"tf":1.0},"599":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"m":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"s":{"df":8,"docs":{"169":{"tf":1.0},"203":{"tf":1.0},"336":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"522":{"tf":1.0},"526":{"tf":1.0},"89":{"tf":1.0}}},"t":{"a":{"df":0,"docs":{},"k":{"df":4,"docs":{"199":{"tf":1.0},"417":{"tf":1.0},"456":{"tf":1.0},"539":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"200":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"s":{"df":1,"docs":{"456":{"tf":1.0}}}}},"t":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}},"x":{"df":11,"docs":{"134":{"tf":1.0},"143":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"217":{"tf":1.0},"261":{"tf":1.0},"315":{"tf":1.0},"322":{"tf":1.4142135623730951},"323":{"tf":1.4142135623730951},"394":{"tf":1.0},"46":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"188":{"tf":1.0},"347":{"tf":1.0}}}},"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"5":{"2":{":":{"4":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"1":{":":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"8":{"0":{":":{"1":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"448":{"tf":1.0}},"l":{"df":9,"docs":{"156":{"tf":1.0},"211":{"tf":1.7320508075688772},"350":{"tf":1.0},"389":{"tf":1.0},"393":{"tf":1.0},"403":{"tf":1.0},"431":{"tf":1.0},"460":{"tf":1.4142135623730951},"469":{"tf":1.0}}},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"389":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":6,"docs":{"217":{"tf":1.0},"286":{"tf":1.0},"336":{"tf":1.4142135623730951},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"421":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":5,"docs":{"380":{"tf":1.4142135623730951},"397":{"tf":1.0},"526":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":1,"docs":{"573":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":6,"docs":{"156":{"tf":1.0},"209":{"tf":1.0},"380":{"tf":1.7320508075688772},"389":{"tf":1.0},"408":{"tf":1.0},"503":{"tf":1.0}}}}}},"n":{"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"246":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"0":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":1,"docs":{"419":{"tf":1.0}}},"1":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"419":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":1,"docs":{"419":{"tf":1.0}}},"df":5,"docs":{"121":{"tf":1.0},"125":{"tf":1.4142135623730951},"130":{"tf":1.4142135623730951},"419":{"tf":2.0},"545":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":10,"docs":{"106":{"tf":1.7320508075688772},"107":{"tf":1.0},"108":{"tf":1.4142135623730951},"109":{"tf":1.0},"110":{"tf":1.7320508075688772},"111":{"tf":2.0},"112":{"tf":1.7320508075688772},"113":{"tf":1.0},"515":{"tf":1.0},"546":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":5,"docs":{"235":{"tf":1.0},"259":{"tf":1.0},"292":{"tf":1.0},"389":{"tf":1.4142135623730951},"431":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"550":{"tf":1.0}}}}}}},"r":{"a":{"df":0,"docs":{},"l":{"df":38,"docs":{"154":{"tf":1.0},"161":{"tf":1.4142135623730951},"171":{"tf":1.4142135623730951},"181":{"tf":1.4142135623730951},"192":{"tf":1.0},"203":{"tf":1.4142135623730951},"211":{"tf":1.4142135623730951},"218":{"tf":1.0},"223":{"tf":1.4142135623730951},"237":{"tf":1.4142135623730951},"248":{"tf":1.4142135623730951},"261":{"tf":1.4142135623730951},"270":{"tf":1.4142135623730951},"278":{"tf":1.4142135623730951},"28":{"tf":1.0},"286":{"tf":1.4142135623730951},"294":{"tf":1.4142135623730951},"302":{"tf":1.4142135623730951},"315":{"tf":1.4142135623730951},"32":{"tf":1.0},"33":{"tf":1.0},"330":{"tf":1.4142135623730951},"338":{"tf":1.4142135623730951},"350":{"tf":1.4142135623730951},"363":{"tf":1.4142135623730951},"372":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"391":{"tf":1.4142135623730951},"399":{"tf":1.4142135623730951},"410":{"tf":1.4142135623730951},"425":{"tf":1.4142135623730951},"433":{"tf":1.4142135623730951},"442":{"tf":1.4142135623730951},"450":{"tf":1.4142135623730951},"460":{"tf":1.4142135623730951},"47":{"tf":1.0},"472":{"tf":1.4142135623730951},"480":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"e":{"df":102,"docs":{"112":{"tf":1.0},"12":{"tf":1.0},"129":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.4142135623730951},"160":{"tf":1.0},"171":{"tf":1.0},"179":{"tf":1.4142135623730951},"188":{"tf":1.0},"19":{"tf":1.0},"192":{"tf":1.0},"196":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.4142135623730951},"200":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"223":{"tf":1.0},"226":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.7320508075688772},"258":{"tf":1.0},"268":{"tf":2.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.4142135623730951},"280":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":2.0},"300":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":2.23606797749979},"310":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"329":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.4142135623730951},"359":{"tf":1.7320508075688772},"36":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":1.7320508075688772},"381":{"tf":1.0},"389":{"tf":1.7320508075688772},"390":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"394":{"tf":1.0},"398":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.4142135623730951},"418":{"tf":1.4142135623730951},"42":{"tf":1.4142135623730951},"431":{"tf":1.0},"440":{"tf":1.7320508075688772},"445":{"tf":1.0},"449":{"tf":1.0},"457":{"tf":1.4142135623730951},"460":{"tf":1.0},"469":{"tf":1.0},"481":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"492":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.4142135623730951},"504":{"tf":1.0},"506":{"tf":1.0},"516":{"tf":1.0},"521":{"tf":1.7320508075688772},"529":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.7320508075688772},"544":{"tf":1.0},"56":{"tf":1.4142135623730951},"560":{"tf":1.0},"562":{"tf":1.4142135623730951},"570":{"tf":1.0},"573":{"tf":1.0},"599":{"tf":1.4142135623730951},"64":{"tf":1.0},"65":{"tf":1.0},"69":{"tf":1.4142135623730951},"87":{"tf":1.0},"97":{"tf":1.0}},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"310":{"tf":1.0}}}}},"n":{"df":1,"docs":{"456":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":7,"docs":{"129":{"tf":1.0},"211":{"tf":1.0},"250":{"tf":1.0},"331":{"tf":1.0},"343":{"tf":1.0},"417":{"tf":1.0},"458":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":3,"docs":{"204":{"tf":1.0},"41":{"tf":1.0},"592":{"tf":1.4142135623730951}}}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"217":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}}}},"v":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":34,"docs":{"10":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":2.0},"211":{"tf":1.0},"214":{"tf":1.0},"221":{"tf":1.0},"268":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.7320508075688772},"292":{"tf":1.4142135623730951},"310":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":2.23606797749979},"375":{"tf":1.0},"380":{"tf":1.7320508075688772},"385":{"tf":1.4142135623730951},"408":{"tf":1.0},"419":{"tf":1.4142135623730951},"440":{"tf":1.0},"458":{"tf":1.0},"462":{"tf":1.0},"470":{"tf":1.7320508075688772},"502":{"tf":1.0},"504":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"558":{"tf":1.0},"580":{"tf":1.0},"8":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"s":{"c":{"df":1,"docs":{"539":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"s":{"df":1,"docs":{"380":{"tf":1.7320508075688772}},"g":{"df":1,"docs":{"276":{"tf":1.7320508075688772}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":52,"docs":{"103":{"tf":1.4142135623730951},"112":{"tf":1.7320508075688772},"120":{"tf":1.4142135623730951},"129":{"tf":1.7320508075688772},"136":{"tf":1.0},"138":{"tf":1.4142135623730951},"147":{"tf":1.4142135623730951},"156":{"tf":1.0},"195":{"tf":1.0},"200":{"tf":1.0},"203":{"tf":1.0},"211":{"tf":1.0},"214":{"tf":1.0},"226":{"tf":1.0},"245":{"tf":1.0},"251":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"33":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"367":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.7320508075688772},"436":{"tf":1.4142135623730951},"445":{"tf":1.0},"448":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"478":{"tf":1.0},"480":{"tf":1.0},"521":{"tf":1.0},"53":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"599":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"319":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"318":{"tf":1.4142135623730951}}}}},"df":3,"docs":{"423":{"tf":1.0},"470":{"tf":1.0},"62":{"tf":1.0}},"p":{"df":0,"docs":{},"l":{"df":22,"docs":{"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"200":{"tf":1.4142135623730951},"23":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.4142135623730951},"284":{"tf":1.0},"32":{"tf":1.4142135623730951},"328":{"tf":1.7320508075688772},"336":{"tf":1.7320508075688772},"374":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"422":{"tf":1.0},"46":{"tf":1.4142135623730951},"507":{"tf":1.0},"521":{"tf":1.0},"599":{"tf":1.4142135623730951},"62":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":2,"docs":{"336":{"tf":1.0},"341":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"n":{"d":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"302":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"451":{"tf":1.0}}}},"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"566":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":4,"docs":{"328":{"tf":1.0},"341":{"tf":1.0},"417":{"tf":2.0},"421":{"tf":2.0}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"270":{"tf":1.0}}}},"df":26,"docs":{"156":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":1.7320508075688772},"217":{"tf":2.6457513110645907},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":2.6457513110645907},"312":{"tf":1.0},"328":{"tf":2.23606797749979},"336":{"tf":2.6457513110645907},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":2.449489742783178},"418":{"tf":1.7320508075688772},"419":{"tf":1.7320508075688772},"421":{"tf":4.242640687119285},"448":{"tf":1.0},"470":{"tf":1.0},"522":{"tf":2.6457513110645907},"523":{"tf":1.0},"568":{"tf":1.0}},"e":{"df":0,"docs":{},"x":{"df":7,"docs":{"268":{"tf":2.8284271247461903},"270":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.4142135623730951},"370":{"tf":1.0},"565":{"tf":1.0},"584":{"tf":2.0}},"g":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"r":{"d":{"df":3,"docs":{"270":{"tf":1.0},"564":{"tf":1.4142135623730951},"565":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"v":{"df":0,"docs":{},"p":{"df":1,"docs":{"8":{"tf":1.0}}}},"y":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"421":{"tf":1.4142135623730951}},"e":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"581":{"tf":1.0}}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"i":{"a":{"d":{"df":2,"docs":{"231":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"68":{"tf":1.4142135623730951},"69":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"580":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"n":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"292":{"tf":1.0}}},"i":{"df":0,"docs":{},"v":{"df":2,"docs":{"336":{"tf":1.0},"440":{"tf":1.0}}}},"m":{"df":0,"docs":{},"e":{"df":21,"docs":{"113":{"tf":1.4142135623730951},"157":{"tf":1.0},"163":{"tf":1.4142135623730951},"258":{"tf":1.0},"28":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"404":{"tf":1.0},"42":{"tf":1.0},"423":{"tf":1.4142135623730951},"478":{"tf":1.0},"489":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"56":{"tf":1.0},"57":{"tf":1.4142135623730951},"578":{"tf":1.7320508075688772},"579":{"tf":1.0},"64":{"tf":1.0},"67":{"tf":1.4142135623730951},"97":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"153":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"431":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"599":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":4,"docs":{"116":{"tf":1.0},"211":{"tf":1.4142135623730951},"230":{"tf":1.0},"231":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":7,"docs":{"195":{"tf":1.0},"218":{"tf":1.0},"350":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0},"503":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":1,"docs":{"209":{"tf":1.0}}}}}},"b":{"df":1,"docs":{"492":{"tf":1.0}}},"d":{"a":{"df":1,"docs":{"598":{"tf":1.0}}},"df":0,"docs":{}},"df":1,"docs":{"370":{"tf":3.3166247903554}},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"276":{"tf":1.0}}}}},"t":{"df":1,"docs":{"360":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"360":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":5,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"417":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"218":{"tf":1.0},"273":{"tf":1.0},"404":{"tf":1.0},"460":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"d":{"df":102,"docs":{"110":{"tf":1.4142135623730951},"112":{"tf":1.0},"118":{"tf":1.0},"119":{"tf":1.0},"12":{"tf":1.4142135623730951},"121":{"tf":1.4142135623730951},"122":{"tf":1.0},"125":{"tf":1.0},"130":{"tf":1.4142135623730951},"139":{"tf":1.0},"152":{"tf":1.4142135623730951},"153":{"tf":1.0},"156":{"tf":3.1622776601683795},"177":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.4142135623730951},"199":{"tf":2.0},"2":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.4142135623730951},"217":{"tf":2.23606797749979},"218":{"tf":1.0},"219":{"tf":1.7320508075688772},"220":{"tf":1.0},"221":{"tf":1.4142135623730951},"222":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":1.7320508075688772},"226":{"tf":1.0},"230":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.4142135623730951},"265":{"tf":1.0},"266":{"tf":1.7320508075688772},"267":{"tf":1.0},"268":{"tf":1.7320508075688772},"269":{"tf":1.0},"270":{"tf":1.7320508075688772},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"300":{"tf":2.449489742783178},"307":{"tf":1.0},"309":{"tf":1.0},"319":{"tf":1.0},"328":{"tf":1.4142135623730951},"330":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"341":{"tf":2.0},"347":{"tf":1.0},"349":{"tf":1.0},"359":{"tf":1.0},"368":{"tf":1.7320508075688772},"369":{"tf":1.0},"370":{"tf":2.0},"371":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"374":{"tf":1.0},"375":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"452":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":2.0},"480":{"tf":1.0},"485":{"tf":1.4142135623730951},"490":{"tf":1.0},"501":{"tf":1.0},"504":{"tf":1.0},"511":{"tf":1.0},"517":{"tf":1.4142135623730951},"519":{"tf":1.0},"521":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0},"546":{"tf":1.0},"549":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.4142135623730951},"57":{"tf":1.0},"571":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.7320508075688772},"68":{"tf":1.0},"8":{"tf":1.0},"96":{"tf":1.0},"99":{"tf":1.0}},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"g":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"29":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"df":5,"docs":{"259":{"tf":1.0},"370":{"tf":1.0},"496":{"tf":1.4142135623730951},"55":{"tf":1.0},"59":{"tf":1.0}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"469":{"tf":1.0}}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"603":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":2,"docs":{"313":{"tf":1.0},"544":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":3,"docs":{"156":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.0}}}},"t":{"df":3,"docs":{"190":{"tf":1.0},"284":{"tf":1.0},"341":{"tf":1.0}},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":14,"docs":{"116":{"tf":1.0},"125":{"tf":1.7320508075688772},"127":{"tf":2.23606797749979},"128":{"tf":1.0},"138":{"tf":1.0},"140":{"tf":1.0},"347":{"tf":2.0},"357":{"tf":1.4142135623730951},"360":{"tf":1.0},"433":{"tf":1.0},"503":{"tf":1.4142135623730951},"546":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":13,"docs":{"168":{"tf":1.0},"178":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.0},"502":{"tf":1.0}}}}},"w":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":6,"docs":{"278":{"tf":1.0},"303":{"tf":1.0},"359":{"tf":1.0},"360":{"tf":1.4142135623730951},"363":{"tf":1.0},"599":{"tf":1.0}}}}},"df":63,"docs":{"14":{"tf":1.4142135623730951},"143":{"tf":1.0},"156":{"tf":1.4142135623730951},"157":{"tf":1.7320508075688772},"16":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"189":{"tf":1.0},"196":{"tf":1.0},"200":{"tf":1.0},"21":{"tf":2.0},"218":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"231":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.4142135623730951},"258":{"tf":1.7320508075688772},"26":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.4142135623730951},"300":{"tf":1.4142135623730951},"309":{"tf":1.7320508075688772},"316":{"tf":1.0},"319":{"tf":1.7320508075688772},"331":{"tf":1.0},"332":{"tf":1.0},"336":{"tf":1.0},"339":{"tf":1.4142135623730951},"365":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"383":{"tf":1.4142135623730951},"389":{"tf":2.23606797749979},"39":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.0},"438":{"tf":1.7320508075688772},"439":{"tf":1.0},"440":{"tf":1.0},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":2.6457513110645907},"482":{"tf":1.0},"489":{"tf":1.7320508075688772},"497":{"tf":1.0},"538":{"tf":1.7320508075688772},"558":{"tf":1.0},"572":{"tf":1.0},"602":{"tf":1.0},"65":{"tf":2.23606797749979},"71":{"tf":1.4142135623730951},"79":{"tf":1.4142135623730951},"84":{"tf":1.4142135623730951},"86":{"tf":1.0},"97":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"237":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"268":{"tf":1.0}}}}},"x":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{".":{"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":1,"docs":{"458":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":1,"docs":{"457":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":26,"docs":{"139":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.4142135623730951},"200":{"tf":1.0},"211":{"tf":1.0},"259":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":2.0},"391":{"tf":1.4142135623730951},"446":{"tf":1.7320508075688772},"447":{"tf":1.0},"448":{"tf":2.449489742783178},"449":{"tf":1.0},"450":{"tf":2.449489742783178},"451":{"tf":1.4142135623730951},"452":{"tf":1.0},"453":{"tf":1.4142135623730951},"456":{"tf":1.4142135623730951},"457":{"tf":1.0},"470":{"tf":1.0},"483":{"tf":1.0},"486":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"538":{"tf":1.0},"573":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"e":{"df":9,"docs":{"130":{"tf":1.0},"231":{"tf":1.0},"307":{"tf":1.0},"341":{"tf":1.4142135623730951},"365":{"tf":1.4142135623730951},"403":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.4142135623730951},"82":{"tf":1.0}},"r":{"df":2,"docs":{"380":{"tf":1.0},"599":{"tf":1.0}}}},"h":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"517":{"tf":1.0}}}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"245":{"tf":1.0},"380":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"u":{"df":41,"docs":{"156":{"tf":1.7320508075688772},"214":{"tf":1.0},"218":{"tf":1.0},"226":{"tf":1.4142135623730951},"240":{"tf":1.0},"251":{"tf":1.0},"273":{"tf":1.0},"340":{"tf":1.0},"353":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"436":{"tf":1.0},"463":{"tf":1.0},"466":{"tf":1.7320508075688772},"467":{"tf":1.0},"468":{"tf":1.0},"469":{"tf":2.449489742783178},"470":{"tf":3.1622776601683795},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":2.0},"475":{"tf":1.0},"476":{"tf":1.7320508075688772},"477":{"tf":1.0},"478":{"tf":3.0},"479":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.7320508075688772},"483":{"tf":1.0},"512":{"tf":1.7320508075688772},"530":{"tf":1.7320508075688772},"544":{"tf":2.449489742783178},"65":{"tf":1.0},"67":{"tf":1.0},"83":{"tf":1.0},"84":{"tf":1.7320508075688772},"85":{"tf":1.0},"86":{"tf":2.0},"87":{"tf":2.0}},"s":{"'":{"df":2,"docs":{"347":{"tf":1.0},"41":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"o":{"'":{"df":2,"docs":{"365":{"tf":1.0},"599":{"tf":1.0}}},"df":1,"docs":{"482":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":7,"docs":{"1":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"553":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0},"61":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":5,"docs":{"108":{"tf":1.0},"111":{"tf":1.0},"221":{"tf":1.7320508075688772},"340":{"tf":1.0},"546":{"tf":1.0}}},"df":0,"docs":{}}}},"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"533":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"j":{"df":4,"docs":{"189":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"72":{"tf":1.0}}}},"df":5,"docs":{"108":{"tf":1.0},"111":{"tf":1.0},"127":{"tf":1.0},"134":{"tf":1.0},"217":{"tf":2.23606797749979}},"j":{"df":2,"docs":{"231":{"tf":1.0},"280":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"199":{"tf":1.0}}}},"n":{"df":14,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.7320508075688772},"221":{"tf":1.0},"347":{"tf":1.0},"372":{"tf":1.0},"410":{"tf":1.0},"450":{"tf":1.0},"456":{"tf":1.0},"517":{"tf":1.0},"526":{"tf":1.0},"534":{"tf":1.0},"566":{"tf":1.0},"62":{"tf":1.4142135623730951}},"e":{"df":10,"docs":{"138":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"245":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.4142135623730951},"360":{"tf":1.0},"421":{"tf":1.0},"457":{"tf":1.4142135623730951},"568":{"tf":1.0}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"310":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":1,"docs":{"336":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"171":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":27,"docs":{"154":{"tf":1.0},"156":{"tf":1.4142135623730951},"18":{"tf":1.0},"196":{"tf":1.0},"209":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"292":{"tf":1.4142135623730951},"311":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"358":{"tf":1.0},"36":{"tf":1.0},"370":{"tf":2.449489742783178},"380":{"tf":1.7320508075688772},"397":{"tf":1.4142135623730951},"440":{"tf":5.656854249492381},"486":{"tf":1.0},"538":{"tf":1.4142135623730951},"560":{"tf":1.0},"596":{"tf":1.0},"597":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.4142135623730951},"96":{"tf":1.0}}},"h":{"df":4,"docs":{"217":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"408":{"tf":1.4142135623730951},"538":{"tf":1.7320508075688772}}},"i":{"c":{"df":21,"docs":{"167":{"tf":1.0},"168":{"tf":1.4142135623730951},"169":{"tf":1.0},"198":{"tf":1.4142135623730951},"199":{"tf":1.0},"257":{"tf":1.0},"268":{"tf":1.4142135623730951},"292":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"389":{"tf":1.0},"408":{"tf":1.0},"431":{"tf":1.4142135623730951},"448":{"tf":1.0},"456":{"tf":1.0},"470":{"tf":1.4142135623730951},"487":{"tf":1.0},"538":{"tf":1.0}}},"df":0,"docs":{},"f":{"df":1,"docs":{"457":{"tf":1.0}},"i":{"df":1,"docs":{"328":{"tf":2.23606797749979}}}}}},"w":{"df":46,"docs":{"116":{"tf":1.0},"134":{"tf":1.0},"14":{"tf":1.7320508075688772},"155":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.7320508075688772},"233":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":2.0},"258":{"tf":1.7320508075688772},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.4142135623730951},"328":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":1.7320508075688772},"397":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.0},"421":{"tf":1.4142135623730951},"431":{"tf":1.0},"448":{"tf":1.4142135623730951},"456":{"tf":1.0},"458":{"tf":1.0},"470":{"tf":2.0},"475":{"tf":1.0},"486":{"tf":1.0},"502":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":2.0},"538":{"tf":1.0},"546":{"tf":1.0},"552":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.0},"9":{"tf":1.0}}}},"p":{"df":0,"docs":{},"m":{"df":1,"docs":{"231":{"tf":1.0}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{")":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":2.23606797749979}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":18,"docs":{"130":{"tf":1.0},"156":{"tf":1.4142135623730951},"234":{"tf":1.0},"276":{"tf":1.0},"307":{"tf":1.0},"319":{"tf":1.0},"341":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"389":{"tf":1.0},"392":{"tf":1.0},"412":{"tf":1.0},"419":{"tf":1.0},"470":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"538":{"tf":1.0},"73":{"tf":1.0},"79":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"392":{"tf":1.0}}}}}}}},"o":{"0":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"0":{"df":0,"docs":{},"o":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}}}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":13,"docs":{"198":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.0},"252":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"417":{"tf":1.7320508075688772},"418":{"tf":1.4142135623730951},"437":{"tf":1.4142135623730951},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"464":{"tf":1.4142135623730951},"470":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":5,"docs":{"178":{"tf":1.0},"188":{"tf":1.0},"319":{"tf":1.0},"380":{"tf":1.0},"538":{"tf":1.0}}}}},"t":{"a":{"c":{"df":0,"docs":{},"l":{"df":9,"docs":{"429":{"tf":1.7320508075688772},"430":{"tf":1.0},"431":{"tf":1.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"423":{"tf":1.0},"61":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":8,"docs":{"156":{"tf":1.4142135623730951},"218":{"tf":1.0},"276":{"tf":1.0},"419":{"tf":1.0},"442":{"tf":1.0},"445":{"tf":1.0},"460":{"tf":1.4142135623730951},"515":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}}}}}},"c":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"357":{"tf":1.0},"431":{"tf":1.0}}}}}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"336":{"tf":1.0}}}},"r":{"df":5,"docs":{"156":{"tf":1.0},"164":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"28":{"tf":1.0}}}}},"df":0,"docs":{}},"d":{"d":{"df":2,"docs":{"200":{"tf":1.0},"217":{"tf":1.0}}},"df":0,"docs":{}},"df":2,"docs":{"309":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"f":{"df":2,"docs":{"365":{"tf":1.0},"394":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":19,"docs":{"125":{"tf":1.0},"129":{"tf":1.0},"276":{"tf":1.0},"3":{"tf":1.0},"309":{"tf":1.0},"315":{"tf":1.0},"321":{"tf":2.0},"325":{"tf":2.449489742783178},"391":{"tf":1.4142135623730951},"393":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"503":{"tf":1.0},"511":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"542":{"tf":1.0},"73":{"tf":1.0}}}},"i":{"c":{"df":0,"docs":{},"i":{"df":2,"docs":{"230":{"tf":1.0},"284":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"417":{"tf":1.0}}}}}}},"h":{"df":7,"docs":{"199":{"tf":1.0},"217":{"tf":1.0},"300":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.4142135623730951},"522":{"tf":1.0},"538":{"tf":1.4142135623730951}}},"k":{"(":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}},"df":0,"docs":{}}}},"_":{"df":2,"docs":{"276":{"tf":1.0},"328":{"tf":1.7320508075688772}}},"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":1,"docs":{"196":{"tf":1.4142135623730951}}}}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.0}}}}},"o":{"df":1,"docs":{"440":{"tf":2.0}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"r":{"df":1,"docs":{"292":{"tf":1.0}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":2.0}}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"z":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"(":{"&":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{".":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"196":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},":":{":":{"<":{"_":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"y":{"df":2,"docs":{"217":{"tf":1.0},"328":{"tf":1.0}}}},"df":14,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"231":{"tf":1.4142135623730951},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"312":{"tf":1.0},"321":{"tf":1.0},"36":{"tf":1.0},"487":{"tf":1.0},"493":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}},"l":{"d":{"df":4,"docs":{"168":{"tf":1.4142135623730951},"217":{"tf":1.0},"268":{"tf":1.0},"89":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"237":{"tf":1.0}}}}},"df":0,"docs":{}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"218":{"tf":1.0},"336":{"tf":1.0},"397":{"tf":1.4142135623730951}}}}},"n":{"c":{"df":28,"docs":{"15":{"tf":1.0},"156":{"tf":2.23606797749979},"167":{"tf":1.0},"169":{"tf":1.0},"188":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"32":{"tf":1.0},"321":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.4142135623730951},"394":{"tf":1.0},"408":{"tf":1.0},"423":{"tf":1.4142135623730951},"457":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"504":{"tf":1.0},"510":{"tf":1.0},"538":{"tf":1.0},"547":{"tf":1.0},"562":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"86":{"tf":1.0}}},"df":83,"docs":{"11":{"tf":1.0},"112":{"tf":1.0},"118":{"tf":1.0},"130":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"167":{"tf":1.0},"177":{"tf":1.0},"187":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"213":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.7320508075688772},"221":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.4142135623730951},"244":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.4142135623730951},"252":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":2.449489742783178},"278":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.0},"304":{"tf":1.0},"309":{"tf":1.0},"313":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.4142135623730951},"35":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":2.23606797749979},"374":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":2.23606797749979},"389":{"tf":1.0},"394":{"tf":1.0},"40":{"tf":1.0},"405":{"tf":1.0},"41":{"tf":1.7320508075688772},"417":{"tf":1.0},"42":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"431":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.4142135623730951},"478":{"tf":1.0},"481":{"tf":1.0},"502":{"tf":1.4142135623730951},"516":{"tf":1.0},"522":{"tf":1.0},"527":{"tf":1.4142135623730951},"529":{"tf":1.0},"538":{"tf":2.0},"542":{"tf":1.0},"556":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":2.23606797749979},"601":{"tf":1.0},"61":{"tf":2.0},"62":{"tf":1.4142135623730951},"69":{"tf":1.4142135623730951},"8":{"tf":1.4142135623730951},"84":{"tf":1.0},"9":{"tf":1.0}},"e":{"'":{"df":2,"docs":{"211":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"370":{"tf":1.0},"457":{"tf":1.0},"538":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"o":{"df":5,"docs":{"217":{"tf":1.0},"421":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"562":{"tf":1.0}}}}},"o":{"df":1,"docs":{"365":{"tf":1.0}},"p":{"df":1,"docs":{"200":{"tf":1.0}}}},"p":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"42":{"tf":1.0}}},"q":{"df":0,"docs":{},"u":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":1,"docs":{"336":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":66,"docs":{"103":{"tf":1.4142135623730951},"112":{"tf":1.4142135623730951},"116":{"tf":1.0},"120":{"tf":1.4142135623730951},"129":{"tf":1.4142135623730951},"138":{"tf":1.4142135623730951},"143":{"tf":1.0},"147":{"tf":1.4142135623730951},"148":{"tf":1.0},"149":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.4142135623730951},"158":{"tf":1.0},"16":{"tf":2.0},"166":{"tf":1.0},"17":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.4142135623730951},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"21":{"tf":1.7320508075688772},"216":{"tf":1.0},"220":{"tf":1.0},"24":{"tf":1.4142135623730951},"25":{"tf":2.0},"257":{"tf":1.0},"26":{"tf":1.7320508075688772},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.4142135623730951},"283":{"tf":1.0},"284":{"tf":1.4142135623730951},"29":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"39":{"tf":1.7320508075688772},"391":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"416":{"tf":1.0},"44":{"tf":1.0},"447":{"tf":1.0},"453":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"485":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"522":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0},"55":{"tf":1.0},"603":{"tf":1.0},"84":{"tf":1.0}}},"r":{"df":23,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.4142135623730951},"143":{"tf":1.0},"156":{"tf":1.0},"178":{"tf":1.4142135623730951},"181":{"tf":1.0},"209":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"261":{"tf":1.0},"268":{"tf":1.0},"292":{"tf":1.4142135623730951},"309":{"tf":1.0},"312":{"tf":1.0},"336":{"tf":1.0},"391":{"tf":1.4142135623730951},"408":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"278":{"tf":1.4142135623730951},"357":{"tf":1.0},"363":{"tf":1.0},"487":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":2,"docs":{"54":{"tf":1.0},"55":{"tf":1.0}}}}}},"s":{"df":1,"docs":{"276":{"tf":1.0}}}}},"t":{"df":2,"docs":{"456":{"tf":1.0},"538":{"tf":1.0}},"i":{"df":0,"docs":{},"m":{"df":6,"docs":{"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"343":{"tf":1.0},"529":{"tf":1.0},"62":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"423":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{".":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"t":{"df":1,"docs":{"450":{"tf":1.0}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"457":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"568":{"tf":1.0}}}},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}}},"df":21,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.4142135623730951},"231":{"tf":1.4142135623730951},"239":{"tf":1.0},"245":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"321":{"tf":1.0},"370":{"tf":1.0},"377":{"tf":1.0},"389":{"tf":1.0},"41":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"458":{"tf":1.0},"499":{"tf":1.4142135623730951},"5":{"tf":1.0},"517":{"tf":1.0},"542":{"tf":1.0},"548":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951}}}}}}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":14,"docs":{"136":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.0},"450":{"tf":1.0}}}}},"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"n":{"df":5,"docs":{"10":{"tf":1.0},"218":{"tf":1.0},"276":{"tf":1.0},"3":{"tf":1.0},"603":{"tf":1.0}}}},"df":1,"docs":{"47":{"tf":1.0}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"11":{"tf":1.0},"462":{"tf":1.0},"544":{"tf":1.0}}}}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":15,"docs":{"134":{"tf":1.0},"199":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"218":{"tf":1.4142135623730951},"246":{"tf":1.0},"276":{"tf":1.0},"279":{"tf":1.0},"280":{"tf":1.0},"320":{"tf":1.0},"361":{"tf":1.0},"389":{"tf":1.0},"440":{"tf":1.0},"539":{"tf":1.0}}}}}},"m":{"df":1,"docs":{"235":{"tf":1.0}}}},"s":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"/":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":6,"docs":{"190":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"344":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"192":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"56":{"tf":1.0}}}},"df":0,"docs":{}}},"df":18,"docs":{"101":{"tf":1.4142135623730951},"110":{"tf":1.4142135623730951},"118":{"tf":1.4142135623730951},"127":{"tf":1.7320508075688772},"136":{"tf":1.4142135623730951},"145":{"tf":1.4142135623730951},"147":{"tf":1.0},"155":{"tf":1.0},"157":{"tf":1.0},"22":{"tf":1.0},"23":{"tf":1.0},"25":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"400":{"tf":1.0},"421":{"tf":1.0},"53":{"tf":1.0},"598":{"tf":1.0}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":6,"docs":{"157":{"tf":1.0},"217":{"tf":1.0},"372":{"tf":1.0},"489":{"tf":1.0},"558":{"tf":1.0},"6":{"tf":1.0}}}}}}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"370":{"tf":1.0},"599":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":1,"docs":{"10":{"tf":1.0}}}}}}},"t":{"df":98,"docs":{"10":{"tf":1.0},"12":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.4142135623730951},"157":{"tf":1.0},"164":{"tf":1.7320508075688772},"174":{"tf":1.7320508075688772},"178":{"tf":1.0},"184":{"tf":1.7320508075688772},"19":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"195":{"tf":1.0},"199":{"tf":1.7320508075688772},"200":{"tf":1.0},"206":{"tf":1.4142135623730951},"209":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"226":{"tf":1.4142135623730951},"230":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"240":{"tf":1.4142135623730951},"241":{"tf":1.7320508075688772},"245":{"tf":2.23606797749979},"246":{"tf":1.0},"251":{"tf":1.7320508075688772},"258":{"tf":1.0},"264":{"tf":1.7320508075688772},"265":{"tf":1.7320508075688772},"268":{"tf":1.7320508075688772},"271":{"tf":1.0},"273":{"tf":1.4142135623730951},"276":{"tf":1.7320508075688772},"278":{"tf":1.0},"28":{"tf":1.4142135623730951},"281":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"289":{"tf":1.4142135623730951},"292":{"tf":2.0},"297":{"tf":1.4142135623730951},"300":{"tf":1.0},"302":{"tf":1.0},"310":{"tf":1.4142135623730951},"311":{"tf":1.4142135623730951},"317":{"tf":2.0},"32":{"tf":1.0},"333":{"tf":1.4142135623730951},"340":{"tf":1.4142135623730951},"347":{"tf":2.0},"353":{"tf":1.7320508075688772},"367":{"tf":1.4142135623730951},"370":{"tf":2.449489742783178},"377":{"tf":1.4142135623730951},"380":{"tf":1.0},"385":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"394":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"40":{"tf":1.0},"402":{"tf":1.4142135623730951},"408":{"tf":1.4142135623730951},"41":{"tf":1.0},"414":{"tf":1.4142135623730951},"428":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"436":{"tf":1.4142135623730951},"445":{"tf":1.4142135623730951},"453":{"tf":1.7320508075688772},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"463":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"475":{"tf":1.4142135623730951},"483":{"tf":1.4142135623730951},"487":{"tf":1.4142135623730951},"49":{"tf":1.4142135623730951},"498":{"tf":1.0},"499":{"tf":1.4142135623730951},"51":{"tf":1.7320508075688772},"515":{"tf":1.0},"516":{"tf":1.0},"52":{"tf":1.0},"53":{"tf":1.4142135623730951},"534":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.4142135623730951},"556":{"tf":1.0},"74":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"300":{"tf":1.0},"349":{"tf":1.0},"538":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":9,"docs":{"209":{"tf":1.0},"217":{"tf":1.0},"244":{"tf":1.0},"336":{"tf":1.0},"380":{"tf":1.0},"421":{"tf":2.0},"448":{"tf":1.0},"538":{"tf":1.4142135623730951},"544":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"539":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":5,"docs":{"110":{"tf":1.0},"199":{"tf":1.0},"226":{"tf":1.0},"418":{"tf":2.0},"47":{"tf":1.0}}},"df":0,"docs":{}},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"16":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":1,"docs":{"341":{"tf":1.0}}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"l":{"df":11,"docs":{"11":{"tf":1.0},"16":{"tf":1.0},"214":{"tf":1.0},"319":{"tf":1.0},"380":{"tf":1.0},"46":{"tf":1.0},"515":{"tf":1.0},"65":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"92":{"tf":1.0}}}},"df":44,"docs":{"143":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.7320508075688772},"188":{"tf":1.0},"190":{"tf":1.4142135623730951},"209":{"tf":1.4142135623730951},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"245":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"298":{"tf":1.7320508075688772},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"301":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"318":{"tf":1.4142135623730951},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"358":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"448":{"tf":1.0},"456":{"tf":1.7320508075688772},"460":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"486":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0}},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":3,"docs":{"244":{"tf":1.4142135623730951},"245":{"tf":1.0},"370":{"tf":1.0}}}}}},"h":{"df":0,"docs":{},"e":{"a":{"d":{"df":11,"docs":{"209":{"tf":1.7320508075688772},"211":{"tf":1.4142135623730951},"259":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.0},"421":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0},"513":{"tf":1.4142135623730951},"543":{"tf":1.0},"61":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"278":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"308":{"tf":1.0}}},"o":{"a":{"d":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"417":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"190":{"tf":1.0}}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"m":{"df":4,"docs":{"231":{"tf":1.0},"363":{"tf":1.0},"397":{"tf":1.0},"86":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"336":{"tf":1.0}}}}}}}}},"w":{"df":0,"docs":{},"n":{"df":4,"docs":{"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"341":{"tf":1.0},"517":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"417":{"tf":2.0},"421":{"tf":3.605551275463989},"423":{"tf":1.0},"553":{"tf":1.0},"61":{"tf":1.0}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":6,"docs":{"156":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"389":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"599":{"tf":1.0}}}}}}}},"s":{"(":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"_":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"p":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"p":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"z":{"_":{"df":0,"docs":{},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"9":{"9":{"df":1,"docs":{"431":{"tf":1.0}}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"231":{"tf":1.0}}},"k":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"523":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"143":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":10,"docs":{"12":{"tf":1.0},"152":{"tf":1.4142135623730951},"157":{"tf":1.0},"177":{"tf":1.0},"19":{"tf":1.0},"198":{"tf":1.4142135623730951},"485":{"tf":1.4142135623730951},"489":{"tf":1.0},"539":{"tf":1.0},"550":{"tf":1.0}}}},"i":{"d":{"df":1,"docs":{"200":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":7,"docs":{"221":{"tf":1.0},"233":{"tf":1.0},"286":{"tf":1.0},"315":{"tf":1.0},"372":{"tf":1.0},"410":{"tf":1.0},"59":{"tf":1.0}}},"r":{"df":1,"docs":{"300":{"tf":1.0}}}},"n":{"df":1,"docs":{"389":{"tf":1.0}},"i":{"c":{"!":{"df":1,"docs":{"470":{"tf":1.0}}},".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"4":{"3":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":14,"docs":{"156":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"234":{"tf":1.0},"309":{"tf":1.4142135623730951},"321":{"tf":1.4142135623730951},"323":{"tf":1.0},"325":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":2.449489742783178},"418":{"tf":1.0},"419":{"tf":1.0},"425":{"tf":1.0},"529":{"tf":1.0}},"k":{"df":4,"docs":{"233":{"tf":1.0},"258":{"tf":1.0},"309":{"tf":1.0},"397":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"3":{"4":{"3":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"7":{"9":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":1,"docs":{"153":{"tf":1.0}}}}},"r":{"a":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"m":{"df":1,"docs":{"360":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"<":{"df":1,"docs":{"579":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":8,"docs":{"156":{"tf":1.0},"336":{"tf":1.0},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"469":{"tf":2.0},"470":{"tf":2.0},"472":{"tf":1.0},"475":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":6,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":2.0},"218":{"tf":2.8284271247461903},"458":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"a":{"df":1,"docs":{"359":{"tf":1.0}}},"d":{"df":1,"docs":{"359":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"(":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"s":{"df":1,"docs":{"217":{"tf":1.0}},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"235":{"tf":1.0}}}}},"t":{"df":64,"docs":{"116":{"tf":1.0},"12":{"tf":1.0},"134":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"195":{"tf":1.0},"204":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"245":{"tf":1.0},"252":{"tf":1.0},"254":{"tf":1.0},"259":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":1.7320508075688772},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"343":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"355":{"tf":1.0},"358":{"tf":1.0},"366":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"383":{"tf":1.7320508075688772},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"448":{"tf":1.0},"455":{"tf":1.0},"457":{"tf":1.0},"467":{"tf":1.0},"47":{"tf":1.0},"474":{"tf":1.0},"477":{"tf":1.0},"481":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"503":{"tf":1.0},"516":{"tf":1.0},"519":{"tf":1.0},"523":{"tf":1.0},"537":{"tf":1.0},"599":{"tf":1.0}},"i":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"363":{"tf":1.0},"393":{"tf":1.0}}}},"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":2,"docs":{"278":{"tf":1.4142135623730951},"601":{"tf":1.7320508075688772}}}},"l":{"df":1,"docs":{"469":{"tf":1.0}}},"u":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":22,"docs":{"156":{"tf":1.4142135623730951},"18":{"tf":1.0},"221":{"tf":1.0},"248":{"tf":1.0},"27":{"tf":1.0},"300":{"tf":1.0},"376":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"408":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.4142135623730951},"458":{"tf":1.0},"462":{"tf":1.4142135623730951},"478":{"tf":1.0},"487":{"tf":1.0},"527":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"561":{"tf":1.0},"62":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":1,"docs":{"221":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":7,"docs":{"110":{"tf":1.0},"143":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"286":{"tf":1.0},"315":{"tf":1.0},"350":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":2,"docs":{"221":{"tf":1.0},"380":{"tf":1.0}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"389":{"tf":1.0}}}}}}},"s":{"c":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":15,"docs":{"200":{"tf":1.0},"217":{"tf":2.23606797749979},"218":{"tf":1.0},"244":{"tf":1.0},"246":{"tf":1.0},"292":{"tf":1.0},"336":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.7320508075688772},"423":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.7320508075688772},"573":{"tf":1.0},"599":{"tf":1.0}}},"t":{"df":7,"docs":{"276":{"tf":1.0},"284":{"tf":1.0},"321":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.7320508075688772},"599":{"tf":1.0},"76":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"469":{"tf":2.8284271247461903},"470":{"tf":2.23606797749979}}}},"df":0,"docs":{},"h":{"df":10,"docs":{"156":{"tf":1.0},"286":{"tf":1.0},"394":{"tf":1.4142135623730951},"41":{"tf":1.0},"417":{"tf":1.0},"448":{"tf":1.4142135623730951},"458":{"tf":1.0},"463":{"tf":1.0},"470":{"tf":1.4142135623730951},"558":{"tf":1.0}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"363":{"tf":1.0}},"n":{"df":18,"docs":{"125":{"tf":1.0},"156":{"tf":2.0},"191":{"tf":1.0},"195":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.4142135623730951},"363":{"tf":1.0},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"372":{"tf":1.0},"389":{"tf":1.0},"450":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"#":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"d":{"df":1,"docs":{"365":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"y":{"df":4,"docs":{"110":{"tf":1.0},"213":{"tf":1.0},"340":{"tf":1.0},"515":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":1,"docs":{"214":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":3,"docs":{"470":{"tf":1.0},"539":{"tf":1.4142135623730951},"558":{"tf":2.449489742783178}},"e":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"131":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"370":{"tf":1.0}}}},"n":{"df":1,"docs":{"478":{"tf":1.0}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":63,"docs":{"154":{"tf":1.4142135623730951},"158":{"tf":1.0},"16":{"tf":1.0},"164":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"23":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"267":{"tf":1.0},"27":{"tf":1.0},"275":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"283":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.4142135623730951},"291":{"tf":1.0},"292":{"tf":1.0},"306":{"tf":1.0},"317":{"tf":1.0},"319":{"tf":1.0},"322":{"tf":1.4142135623730951},"323":{"tf":1.4142135623730951},"331":{"tf":1.4142135623730951},"333":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"357":{"tf":1.0},"36":{"tf":1.0},"361":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"42":{"tf":1.4142135623730951},"435":{"tf":1.0},"437":{"tf":1.0},"447":{"tf":1.0},"453":{"tf":1.0},"467":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.4142135623730951},"490":{"tf":1.4142135623730951},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"53":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"54":{"tf":1.0},"583":{"tf":1.4142135623730951},"597":{"tf":1.0},"60":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.4142135623730951},"64":{"tf":1.0},"9":{"tf":1.0}},"e":{"'":{"df":3,"docs":{"27":{"tf":1.0},"299":{"tf":1.0},"54":{"tf":1.0}}},"df":0,"docs":{}}}}},"r":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"336":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":8,"docs":{"319":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.0},"412":{"tf":1.7320508075688772},"421":{"tf":1.7320508075688772},"422":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"469":{"tf":1.0}},"f":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":21,"docs":{"305":{"tf":1.7320508075688772},"306":{"tf":1.0},"307":{"tf":1.4142135623730951},"308":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.4142135623730951},"323":{"tf":1.0},"324":{"tf":1.0},"325":{"tf":1.0}}}}}}},"df":5,"docs":{"209":{"tf":2.6457513110645907},"214":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"543":{"tf":1.0},"82":{"tf":1.0}},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"110":{"tf":1.0},"35":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"137":{"tf":1.0},"217":{"tf":1.0},"380":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"221":{"tf":2.449489742783178}}}}}}}}}},"df":45,"docs":{"134":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"207":{"tf":1.7320508075688772},"208":{"tf":1.0},"209":{"tf":2.6457513110645907},"210":{"tf":1.0},"211":{"tf":2.449489742783178},"212":{"tf":1.0},"213":{"tf":1.4142135623730951},"214":{"tf":1.0},"223":{"tf":1.0},"256":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"292":{"tf":1.0},"308":{"tf":1.0},"312":{"tf":1.0},"315":{"tf":1.0},"319":{"tf":1.7320508075688772},"345":{"tf":1.4142135623730951},"347":{"tf":1.0},"350":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"408":{"tf":1.7320508075688772},"41":{"tf":1.0},"431":{"tf":1.4142135623730951},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"510":{"tf":1.0},"521":{"tf":1.4142135623730951},"528":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.4142135623730951},"543":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.4142135623730951},"82":{"tf":1.0},"9":{"tf":1.7320508075688772}}}}}},"h":{"a":{"df":0,"docs":{},"p":{"df":13,"docs":{"156":{"tf":1.0},"200":{"tf":1.0},"252":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"359":{"tf":1.0},"365":{"tf":1.0},"389":{"tf":1.4142135623730951},"428":{"tf":1.0},"49":{"tf":1.0},"496":{"tf":1.0},"515":{"tf":1.0},"54":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"o":{"d":{"df":44,"docs":{"15":{"tf":2.23606797749979},"158":{"tf":1.0},"16":{"tf":2.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"457":{"tf":1.0},"46":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"58":{"tf":1.0},"60":{"tf":1.0}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"146":{"tf":1.0},"177":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"244":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":16,"docs":{"200":{"tf":1.0},"213":{"tf":1.0},"218":{"tf":1.0},"238":{"tf":1.0},"262":{"tf":1.0},"303":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"364":{"tf":1.0},"384":{"tf":1.0},"443":{"tf":1.0},"451":{"tf":1.0},"461":{"tf":1.0},"474":{"tf":1.0},"558":{"tf":1.0},"64":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"29":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"259":{"tf":1.0}}}}}},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"55":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"469":{"tf":1.0},"470":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":18,"docs":{"113":{"tf":1.4142135623730951},"156":{"tf":1.0},"231":{"tf":2.0},"232":{"tf":1.4142135623730951},"237":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"35":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"408":{"tf":1.0},"480":{"tf":1.7320508075688772},"483":{"tf":1.0},"538":{"tf":1.0},"61":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"15":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"e":{"c":{"df":3,"docs":{"246":{"tf":1.0},"248":{"tf":1.0},"374":{"tf":1.0}}},"df":0,"docs":{}},"n":{":":{":":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"370":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"370":{"tf":1.0}}}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"d":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":6,"docs":{"197":{"tf":1.0},"217":{"tf":1.0},"336":{"tf":1.7320508075688772},"418":{"tf":1.0},"421":{"tf":2.0},"568":{"tf":1.0}}}}}},"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":6,"docs":{"199":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":1.0},"328":{"tf":1.4142135623730951},"370":{"tf":1.0},"375":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"328":{"tf":1.0}}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.7320508075688772}}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":3,"docs":{"246":{"tf":2.23606797749979},"248":{"tf":1.0},"251":{"tf":1.0}}}}}},"df":19,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":2.0},"199":{"tf":1.7320508075688772},"203":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":2.449489742783178},"248":{"tf":1.0},"251":{"tf":1.7320508075688772},"252":{"tf":1.7320508075688772},"258":{"tf":1.0},"332":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.0},"383":{"tf":1.0},"394":{"tf":1.0},"570":{"tf":1.0},"572":{"tf":1.4142135623730951}},"g":{"df":1,"docs":{"397":{"tf":1.7320508075688772}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"457":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"l":{"df":5,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"367":{"tf":1.0},"456":{"tf":1.0},"496":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"l":{"a":{"c":{"df":0,"docs":{},"e":{"df":13,"docs":{"2":{"tf":1.0},"251":{"tf":1.0},"40":{"tf":1.0},"402":{"tf":1.0},"421":{"tf":1.0},"442":{"tf":1.0},"465":{"tf":1.4142135623730951},"475":{"tf":1.0},"497":{"tf":1.4142135623730951},"52":{"tf":1.0},"539":{"tf":1.0},"562":{"tf":1.0},"598":{"tf":1.0}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"551":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"156":{"tf":1.0},"460":{"tf":1.0}}}},"n":{"df":14,"docs":{"11":{"tf":1.0},"16":{"tf":1.0},"18":{"tf":1.0},"19":{"tf":1.0},"328":{"tf":1.0},"40":{"tf":1.0},"46":{"tf":1.0},"486":{"tf":1.0},"49":{"tf":1.0},"532":{"tf":1.0},"550":{"tf":1.0},"552":{"tf":2.0},"553":{"tf":1.0},"61":{"tf":1.0}}},"y":{"df":51,"docs":{"130":{"tf":1.0},"156":{"tf":2.0},"164":{"tf":1.7320508075688772},"174":{"tf":1.7320508075688772},"184":{"tf":1.7320508075688772},"192":{"tf":1.4142135623730951},"206":{"tf":1.4142135623730951},"213":{"tf":1.0},"214":{"tf":1.4142135623730951},"218":{"tf":1.0},"226":{"tf":1.4142135623730951},"240":{"tf":1.4142135623730951},"241":{"tf":1.4142135623730951},"251":{"tf":1.4142135623730951},"259":{"tf":1.0},"264":{"tf":1.7320508075688772},"265":{"tf":1.4142135623730951},"273":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"281":{"tf":1.4142135623730951},"289":{"tf":1.4142135623730951},"297":{"tf":1.4142135623730951},"317":{"tf":1.4142135623730951},"32":{"tf":1.0},"333":{"tf":1.4142135623730951},"340":{"tf":1.4142135623730951},"353":{"tf":1.4142135623730951},"366":{"tf":1.0},"367":{"tf":1.4142135623730951},"377":{"tf":1.4142135623730951},"378":{"tf":1.7320508075688772},"379":{"tf":1.0},"380":{"tf":1.7320508075688772},"381":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.7320508075688772},"386":{"tf":1.0},"394":{"tf":1.4142135623730951},"402":{"tf":1.4142135623730951},"414":{"tf":1.4142135623730951},"428":{"tf":1.4142135623730951},"436":{"tf":1.4142135623730951},"445":{"tf":1.4142135623730951},"453":{"tf":1.4142135623730951},"463":{"tf":1.4142135623730951},"475":{"tf":1.4142135623730951},"483":{"tf":1.4142135623730951},"599":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"217":{"tf":1.0}}},".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":1,"docs":{"217":{"tf":1.0}}}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"356":{"tf":1.0},"380":{"tf":1.0}}}}},"df":9,"docs":{"113":{"tf":1.0},"21":{"tf":1.0},"23":{"tf":1.0},"25":{"tf":1.0},"26":{"tf":1.0},"37":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.0},"39":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":1,"docs":{"209":{"tf":1.0}},"g":{"df":2,"docs":{"300":{"tf":1.0},"458":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"217":{"tf":1.4142135623730951},"542":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}}},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":31,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.4142135623730951},"17":{"tf":1.0},"171":{"tf":1.0},"178":{"tf":1.4142135623730951},"200":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.4142135623730951},"230":{"tf":1.0},"257":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"271":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"325":{"tf":1.0},"336":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"419":{"tf":1.0},"469":{"tf":1.0},"49":{"tf":1.0},"498":{"tf":1.0},"507":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951},"559":{"tf":1.0},"56":{"tf":1.0},"562":{"tf":1.0},"583":{"tf":1.0},"61":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"190":{"tf":1.0},"198":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"458":{"tf":1.0}}}}}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"380":{"tf":1.0}}}},"l":{"df":0,"docs":{},"l":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"217":{"tf":1.0},"336":{"tf":1.7320508075688772},"421":{"tf":2.0}}}}}}},":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":5,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"336":{"tf":2.0},"418":{"tf":1.0},"457":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":4,"docs":{"200":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"421":{"tf":1.4142135623730951}}},"y":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"418":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"k":{"(":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}},"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"v":{"df":1,"docs":{"200":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"568":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"t":{"df":1,"docs":{"418":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"197":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":3,"docs":{"217":{"tf":1.0},"336":{"tf":1.7320508075688772},"421":{"tf":2.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"197":{"tf":1.0},"418":{"tf":1.0}}}}}}},"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"572":{"tf":1.0}}}}}}}},"df":2,"docs":{"199":{"tf":1.0},"568":{"tf":1.0}}}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"328":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":29,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"171":{"tf":1.7320508075688772},"197":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"217":{"tf":1.0},"276":{"tf":1.0},"279":{"tf":1.0},"284":{"tf":1.4142135623730951},"328":{"tf":2.8284271247461903},"336":{"tf":3.1622776601683795},"342":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"353":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":2.23606797749979},"423":{"tf":1.4142135623730951},"456":{"tf":2.0},"457":{"tf":2.6457513110645907},"538":{"tf":1.0},"539":{"tf":1.0},"570":{"tf":1.4142135623730951},"62":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":1,"docs":{"276":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"325":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"331":{"tf":1.4142135623730951},"470":{"tf":1.0}}},"r":{"df":3,"docs":{"167":{"tf":1.0},"321":{"tf":1.0},"599":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"347":{"tf":1.0},"599":{"tf":1.0}}}}}},"p":{"df":4,"docs":{"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"258":{"tf":1.0},"397":{"tf":1.0}},"u":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":10,"docs":{"232":{"tf":1.0},"300":{"tf":1.0},"315":{"tf":1.0},"359":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"452":{"tf":1.0},"546":{"tf":1.0},"599":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"509":{"tf":1.0}}}},"df":0,"docs":{}},"df":7,"docs":{"209":{"tf":1.0},"408":{"tf":1.0},"532":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0},"546":{"tf":1.0},"73":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"116":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":5,"docs":{"15":{"tf":1.0},"217":{"tf":1.0},"421":{"tf":1.0},"487":{"tf":1.4142135623730951},"84":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":29,"docs":{"120":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.4142135623730951},"128":{"tf":1.0},"192":{"tf":1.0},"203":{"tf":1.0},"206":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.0},"391":{"tf":1.0},"394":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"418":{"tf":1.0},"428":{"tf":1.0},"478":{"tf":1.0},"483":{"tf":1.0},"498":{"tf":1.0},"526":{"tf":1.4142135623730951},"61":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"t":{"]":{"(":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"/":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"271":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":23,"docs":{"162":{"tf":1.0},"192":{"tf":1.0},"199":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.4142135623730951},"28":{"tf":1.0},"284":{"tf":1.4142135623730951},"312":{"tf":1.0},"319":{"tf":1.0},"343":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.4142135623730951},"36":{"tf":1.0},"360":{"tf":1.0},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"486":{"tf":1.0},"599":{"tf":2.8284271247461903},"60":{"tf":1.0},"9":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":9,"docs":{"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"221":{"tf":1.0},"246":{"tf":1.0},"268":{"tf":1.4142135623730951},"389":{"tf":1.7320508075688772},"42":{"tf":1.0},"496":{"tf":1.4142135623730951},"560":{"tf":1.0}}}}}}},"v":{"df":2,"docs":{"27":{"tf":1.0},"40":{"tf":1.0}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"108":{"tf":1.0},"127":{"tf":1.0},"259":{"tf":1.4142135623730951}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":9,"docs":{"203":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"302":{"tf":1.0},"341":{"tf":1.0},"401":{"tf":1.0},"513":{"tf":1.0},"564":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"8":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":59,"docs":{"14":{"tf":1.4142135623730951},"148":{"tf":1.0},"149":{"tf":1.0},"152":{"tf":1.0},"157":{"tf":1.0},"158":{"tf":1.0},"16":{"tf":2.23606797749979},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"19":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"21":{"tf":1.7320508075688772},"216":{"tf":1.0},"217":{"tf":1.0},"22":{"tf":1.7320508075688772},"220":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.7320508075688772},"267":{"tf":1.0},"27":{"tf":1.4142135623730951},"275":{"tf":1.0},"28":{"tf":1.4142135623730951},"283":{"tf":1.0},"29":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"379":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.7320508075688772},"396":{"tf":1.0},"40":{"tf":2.0},"407":{"tf":1.0},"41":{"tf":1.4142135623730951},"416":{"tf":1.0},"42":{"tf":1.0},"44":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"481":{"tf":1.0},"485":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"55":{"tf":1.4142135623730951},"58":{"tf":1.0},"60":{"tf":1.0},"84":{"tf":1.0}},"e":{"c":{"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"566":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"s":{"df":4,"docs":{"19":{"tf":1.0},"29":{"tf":1.0},"336":{"tf":1.0},"49":{"tf":1.0}}}}},"d":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"51":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":8,"docs":{"21":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.0},"319":{"tf":1.0},"347":{"tf":1.0},"37":{"tf":1.0},"417":{"tf":1.0},"61":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"408":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":10,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"251":{"tf":1.0},"27":{"tf":1.4142135623730951},"336":{"tf":1.0},"356":{"tf":1.0},"40":{"tf":1.0},"486":{"tf":1.0},"503":{"tf":1.0},"544":{"tf":1.0}}}},"r":{"df":0,"docs":{},"v":{"df":1,"docs":{"517":{"tf":1.4142135623730951}}}}},"s":{"df":2,"docs":{"284":{"tf":1.0},"336":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"478":{"tf":1.0},"539":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"i":{"df":15,"docs":{"156":{"tf":1.4142135623730951},"178":{"tf":1.0},"188":{"tf":1.0},"21":{"tf":1.0},"221":{"tf":1.4142135623730951},"259":{"tf":1.0},"264":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"502":{"tf":1.0},"510":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"599":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":9,"docs":{"110":{"tf":1.0},"125":{"tf":1.0},"167":{"tf":1.0},"218":{"tf":1.0},"263":{"tf":1.0},"284":{"tf":1.0},"319":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"487":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":6,"docs":{"360":{"tf":1.0},"363":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"418":{"tf":1.0},"440":{"tf":1.0}},"s":{"df":5,"docs":{"209":{"tf":1.0},"284":{"tf":1.0},"313":{"tf":1.0},"360":{"tf":1.4142135623730951},"469":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"140":{"tf":1.0},"474":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"347":{"tf":1.0}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"462":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":2,"docs":{"156":{"tf":1.0},"61":{"tf":1.0}}}}}},"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"(":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":5,"docs":{"245":{"tf":1.0},"284":{"tf":1.0},"336":{"tf":3.1622776601683795},"380":{"tf":2.23606797749979},"448":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"336":{"tf":2.6457513110645907}}}}}}},"l":{"df":0,"docs":{},"n":{"!":{"(":{"\"":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"320":{"tf":1.0},"380":{"tf":3.3166247903554}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"458":{"tf":1.0}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":7,"docs":{"168":{"tf":1.0},"171":{"tf":1.0},"258":{"tf":1.0},"286":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"523":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"153":{"tf":1.0},"155":{"tf":2.0},"539":{"tf":1.0}},"i":{"df":5,"docs":{"328":{"tf":2.0},"331":{"tf":1.0},"41":{"tf":2.0},"64":{"tf":1.0},"65":{"tf":2.0}}}}}}},"v":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"187":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"b":{"a":{"b":{"df":0,"docs":{},"l":{"df":28,"docs":{"174":{"tf":1.4142135623730951},"214":{"tf":1.7320508075688772},"218":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"251":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"284":{"tf":1.0},"315":{"tf":1.0},"321":{"tf":1.0},"325":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"352":{"tf":1.0},"367":{"tf":1.0},"385":{"tf":1.0},"418":{"tf":1.0},"445":{"tf":1.0},"450":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"96":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":1,"docs":{"389":{"tf":1.0}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":80,"docs":{"155":{"tf":1.0},"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"161":{"tf":1.0},"164":{"tf":1.0},"177":{"tf":1.7320508075688772},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"181":{"tf":1.0},"204":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"233":{"tf":2.0},"234":{"tf":2.23606797749979},"244":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"251":{"tf":1.0},"256":{"tf":1.7320508075688772},"257":{"tf":1.0},"258":{"tf":2.23606797749979},"259":{"tf":1.0},"261":{"tf":1.0},"264":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"284":{"tf":1.0},"297":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"319":{"tf":1.0},"323":{"tf":1.4142135623730951},"328":{"tf":1.0},"331":{"tf":1.0},"345":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"349":{"tf":1.4142135623730951},"370":{"tf":1.0},"375":{"tf":1.0},"377":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.0},"397":{"tf":1.0},"400":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"419":{"tf":1.4142135623730951},"42":{"tf":1.0},"421":{"tf":1.0},"425":{"tf":1.0},"431":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.4142135623730951},"46":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.4142135623730951},"469":{"tf":1.7320508075688772},"470":{"tf":2.0},"472":{"tf":1.4142135623730951},"475":{"tf":1.0},"478":{"tf":1.0},"490":{"tf":1.0},"499":{"tf":1.4142135623730951},"501":{"tf":1.0},"519":{"tf":1.0},"521":{"tf":1.7320508075688772},"537":{"tf":1.0},"539":{"tf":1.7320508075688772},"54":{"tf":1.0},"561":{"tf":1.0},"599":{"tf":1.0},"74":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"516":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"199":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":29,"docs":{"15":{"tf":1.0},"152":{"tf":1.0},"156":{"tf":1.0},"181":{"tf":1.0},"189":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.7320508075688772},"303":{"tf":1.0},"31":{"tf":1.4142135623730951},"312":{"tf":1.0},"330":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"410":{"tf":1.0},"42":{"tf":1.7320508075688772},"421":{"tf":1.0},"44":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"469":{"tf":1.4142135623730951},"485":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.7320508075688772},"62":{"tf":1.0}}}}}},"d":{"df":1,"docs":{"292":{"tf":2.449489742783178}},"u":{"c":{"df":4,"docs":{"214":{"tf":1.0},"276":{"tf":1.0},"350":{"tf":1.0},"599":{"tf":1.0}},"t":{"df":22,"docs":{"131":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":1.0},"168":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.0},"318":{"tf":2.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.0},"351":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"470":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":1.0},"9":{"tf":1.4142135623730951},"91":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{":":{":":{"<":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{">":{"(":{"&":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"276":{"tf":1.0},"469":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"469":{"tf":1.0}}}}}}},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"383":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":3,"docs":{"209":{"tf":1.7320508075688772},"248":{"tf":1.0},"435":{"tf":1.0}}}}},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":42,"docs":{"110":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.4142135623730951},"187":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.4142135623730951},"232":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"289":{"tf":1.0},"300":{"tf":1.0},"315":{"tf":1.0},"339":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":2.0},"408":{"tf":1.0},"436":{"tf":1.0},"448":{"tf":1.7320508075688772},"457":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.7320508075688772},"474":{"tf":1.4142135623730951},"483":{"tf":1.0},"510":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"528":{"tf":1.0},"538":{"tf":2.8284271247461903},"539":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"67":{"tf":1.0},"72":{"tf":1.0},"74":{"tf":1.0},"79":{"tf":1.4142135623730951},"84":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"286":{"tf":1.0}}}},"df":49,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"211":{"tf":1.0},"216":{"tf":1.0},"218":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"241":{"tf":1.0},"243":{"tf":1.0},"250":{"tf":1.4142135623730951},"254":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"339":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.4142135623730951},"467":{"tf":1.0},"469":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"65":{"tf":1.0},"84":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":10,"docs":{"156":{"tf":1.0},"18":{"tf":1.0},"268":{"tf":1.0},"342":{"tf":1.0},"380":{"tf":1.0},"412":{"tf":1.4142135623730951},"470":{"tf":1.0},"538":{"tf":1.4142135623730951},"558":{"tf":1.7320508075688772},"562":{"tf":1.0}}}}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":121,"docs":{"100":{"tf":1.0},"101":{"tf":1.7320508075688772},"102":{"tf":1.7320508075688772},"103":{"tf":1.7320508075688772},"104":{"tf":1.7320508075688772},"105":{"tf":1.7320508075688772},"106":{"tf":1.7320508075688772},"107":{"tf":1.4142135623730951},"108":{"tf":1.0},"109":{"tf":1.0},"110":{"tf":1.7320508075688772},"111":{"tf":1.0},"112":{"tf":1.7320508075688772},"113":{"tf":1.0},"114":{"tf":1.7320508075688772},"115":{"tf":1.4142135623730951},"116":{"tf":1.0},"117":{"tf":1.0},"118":{"tf":2.0},"119":{"tf":1.0},"120":{"tf":2.0},"121":{"tf":1.7320508075688772},"122":{"tf":1.7320508075688772},"123":{"tf":1.7320508075688772},"124":{"tf":1.4142135623730951},"125":{"tf":1.0},"126":{"tf":1.0},"127":{"tf":2.23606797749979},"128":{"tf":1.0},"129":{"tf":1.7320508075688772},"130":{"tf":1.7320508075688772},"131":{"tf":1.7320508075688772},"132":{"tf":1.7320508075688772},"133":{"tf":1.4142135623730951},"134":{"tf":1.0},"135":{"tf":1.0},"136":{"tf":1.0},"137":{"tf":1.0},"138":{"tf":1.7320508075688772},"139":{"tf":1.7320508075688772},"14":{"tf":1.0},"140":{"tf":1.7320508075688772},"141":{"tf":1.7320508075688772},"142":{"tf":1.4142135623730951},"143":{"tf":1.0},"144":{"tf":1.0},"145":{"tf":1.7320508075688772},"146":{"tf":1.7320508075688772},"147":{"tf":1.7320508075688772},"148":{"tf":1.7320508075688772},"149":{"tf":1.7320508075688772},"150":{"tf":1.0},"16":{"tf":1.4142135623730951},"187":{"tf":1.4142135623730951},"20":{"tf":1.7320508075688772},"209":{"tf":1.0},"21":{"tf":2.449489742783178},"213":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":2.23606797749979},"22":{"tf":1.7320508075688772},"221":{"tf":1.0},"224":{"tf":1.0},"230":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"244":{"tf":1.0},"249":{"tf":1.0},"256":{"tf":1.4142135623730951},"257":{"tf":2.0},"258":{"tf":1.7320508075688772},"276":{"tf":2.23606797749979},"278":{"tf":1.0},"292":{"tf":1.4142135623730951},"3":{"tf":1.0},"300":{"tf":1.7320508075688772},"315":{"tf":1.0},"341":{"tf":1.4142135623730951},"356":{"tf":1.7320508075688772},"357":{"tf":1.0},"360":{"tf":1.0},"366":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"389":{"tf":2.449489742783178},"392":{"tf":1.0},"41":{"tf":1.7320508075688772},"456":{"tf":2.0},"458":{"tf":1.0},"47":{"tf":1.7320508075688772},"496":{"tf":1.0},"499":{"tf":1.4142135623730951},"502":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.7320508075688772},"515":{"tf":2.23606797749979},"517":{"tf":1.4142135623730951},"521":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"532":{"tf":2.0},"533":{"tf":1.7320508075688772},"535":{"tf":1.4142135623730951},"546":{"tf":1.4142135623730951},"547":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951},"557":{"tf":1.7320508075688772},"558":{"tf":1.4142135623730951},"559":{"tf":1.0},"599":{"tf":1.0},"72":{"tf":1.4142135623730951},"79":{"tf":1.0},"89":{"tf":1.0},"91":{"tf":1.0},"93":{"tf":1.7320508075688772},"94":{"tf":1.7320508075688772},"95":{"tf":1.7320508075688772},"96":{"tf":2.8284271247461903},"97":{"tf":2.23606797749979},"98":{"tf":1.4142135623730951},"99":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":2,"docs":{"55":{"tf":1.0},"59":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"211":{"tf":1.0}}},"s":{"df":9,"docs":{"156":{"tf":1.0},"188":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"278":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.0},"599":{"tf":1.0},"76":{"tf":1.0}},"e":{".":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"n":{"df":0,"docs":{},"e":{"df":2,"docs":{"330":{"tf":1.0},"433":{"tf":1.0}}}},"o":{"df":0,"docs":{},"f":{"df":2,"docs":{"422":{"tf":1.4142135623730951},"431":{"tf":1.0}}}},"p":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"276":{"tf":1.0},"347":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"214":{"tf":1.0}}}},"s":{"df":10,"docs":{"14":{"tf":1.4142135623730951},"152":{"tf":1.0},"157":{"tf":1.0},"16":{"tf":1.4142135623730951},"31":{"tf":1.4142135623730951},"319":{"tf":1.0},"44":{"tf":1.4142135623730951},"478":{"tf":1.0},"485":{"tf":1.0},"489":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"237":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0}}}}}}},"t":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"64":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"263":{"tf":1.0},"272":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"o":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":12,"docs":{"141":{"tf":1.7320508075688772},"142":{"tf":1.0},"143":{"tf":1.7320508075688772},"144":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"150":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":6,"docs":{"209":{"tf":1.7320508075688772},"349":{"tf":1.0},"370":{"tf":1.7320508075688772},"408":{"tf":1.0},"538":{"tf":1.0},"548":{"tf":1.0}},"e":{"_":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"538":{"tf":1.4142135623730951},"539":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"d":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"i":{"d":{"df":34,"docs":{"11":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"125":{"tf":1.0},"155":{"tf":1.4142135623730951},"156":{"tf":1.0},"168":{"tf":1.0},"203":{"tf":1.0},"209":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.4142135623730951},"241":{"tf":1.0},"245":{"tf":1.0},"252":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"457":{"tf":1.4142135623730951},"543":{"tf":1.0},"548":{"tf":1.0},"559":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"x":{"df":0,"docs":{},"i":{"df":1,"docs":{"268":{"tf":2.8284271247461903}}}}}},"u":{"b":{"(":{"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":7,"docs":{"217":{"tf":1.7320508075688772},"292":{"tf":2.23606797749979},"328":{"tf":2.8284271247461903},"380":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":2.0},"568":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"c":{"df":4,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"129":{"tf":1.0},"221":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":5,"docs":{"221":{"tf":1.0},"276":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"47":{"tf":1.0}}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":7,"docs":{"276":{"tf":2.23606797749979},"279":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"389":{"tf":1.0},"534":{"tf":1.0},"603":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"225":{"tf":1.0},"456":{"tf":1.0}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":3,"docs":{"119":{"tf":1.0},"310":{"tf":1.0},"421":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"h":{"df":7,"docs":{"173":{"tf":1.0},"209":{"tf":1.4142135623730951},"261":{"tf":1.0},"309":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0}}}},"t":{"df":14,"docs":{"195":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.4142135623730951},"258":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"53":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"55":{"tf":1.0},"562":{"tf":1.0}}},"z":{"df":0,"docs":{},"z":{"df":0,"docs":{},"l":{"df":3,"docs":{"234":{"tf":1.0},"284":{"tf":1.0},"599":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"347":{"tf":1.0}}},"df":1,"docs":{"347":{"tf":1.0}}}}}}}},"q":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"423":{"tf":1.0}}}}},"df":0,"docs":{}}},"{":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":3,"docs":{"417":{"tf":1.0},"421":{"tf":2.449489742783178},"422":{"tf":1.0}}}}}},"df":0,"docs":{},"t":{"df":2,"docs":{"192":{"tf":1.0},"599":{"tf":1.0}}},"u":{"a":{"d":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"311":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":7,"docs":{"110":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"328":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"599":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":4,"docs":{"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"209":{"tf":1.0},"347":{"tf":2.23606797749979}},"e":{"df":0,"docs":{},"s":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{":":{":":{"<":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"c":{"<":{"d":{"a":{"df":0,"docs":{},"t":{"a":{">":{">":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":79,"docs":{"100":{"tf":1.4142135623730951},"109":{"tf":1.4142135623730951},"117":{"tf":1.4142135623730951},"126":{"tf":1.4142135623730951},"135":{"tf":1.4142135623730951},"144":{"tf":1.4142135623730951},"154":{"tf":1.7320508075688772},"16":{"tf":1.0},"160":{"tf":1.4142135623730951},"164":{"tf":1.0},"170":{"tf":1.4142135623730951},"180":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"202":{"tf":1.4142135623730951},"210":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"222":{"tf":1.4142135623730951},"236":{"tf":1.4142135623730951},"247":{"tf":1.4142135623730951},"25":{"tf":1.0},"260":{"tf":1.4142135623730951},"269":{"tf":1.4142135623730951},"27":{"tf":1.0},"277":{"tf":1.4142135623730951},"28":{"tf":1.7320508075688772},"284":{"tf":1.0},"285":{"tf":1.4142135623730951},"29":{"tf":1.4142135623730951},"292":{"tf":1.0},"293":{"tf":1.4142135623730951},"30":{"tf":1.4142135623730951},"300":{"tf":2.23606797749979},"301":{"tf":1.4142135623730951},"314":{"tf":1.4142135623730951},"329":{"tf":1.4142135623730951},"337":{"tf":1.4142135623730951},"348":{"tf":1.4142135623730951},"362":{"tf":1.4142135623730951},"371":{"tf":1.4142135623730951},"381":{"tf":1.4142135623730951},"390":{"tf":1.4142135623730951},"398":{"tf":1.4142135623730951},"408":{"tf":1.0},"409":{"tf":1.4142135623730951},"41":{"tf":1.7320508075688772},"42":{"tf":1.4142135623730951},"424":{"tf":1.4142135623730951},"43":{"tf":1.4142135623730951},"432":{"tf":1.4142135623730951},"441":{"tf":1.4142135623730951},"449":{"tf":1.4142135623730951},"458":{"tf":1.0},"459":{"tf":1.4142135623730951},"471":{"tf":1.4142135623730951},"479":{"tf":1.4142135623730951},"487":{"tf":1.0},"492":{"tf":1.4142135623730951},"505":{"tf":1.4142135623730951},"506":{"tf":1.0},"509":{"tf":1.0},"524":{"tf":1.4142135623730951},"529":{"tf":1.0},"534":{"tf":1.4142135623730951},"538":{"tf":1.0},"540":{"tf":1.4142135623730951},"556":{"tf":1.0},"56":{"tf":1.7320508075688772},"566":{"tf":1.4142135623730951},"57":{"tf":1.7320508075688772},"572":{"tf":1.0},"573":{"tf":1.4142135623730951},"582":{"tf":1.4142135623730951},"593":{"tf":1.4142135623730951},"599":{"tf":1.0},"66":{"tf":1.4142135623730951},"75":{"tf":1.4142135623730951},"80":{"tf":1.4142135623730951},"85":{"tf":1.4142135623730951},"90":{"tf":1.4142135623730951}}}}}}},"u":{"df":0,"docs":{},"e":{"df":2,"docs":{"328":{"tf":1.0},"347":{"tf":1.0}}}}},"i":{"c":{"df":1,"docs":{"150":{"tf":1.0}},"k":{"df":5,"docs":{"195":{"tf":1.0},"24":{"tf":1.0},"284":{"tf":1.0},"38":{"tf":1.0},"538":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":16,"docs":{"130":{"tf":1.0},"195":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.7320508075688772},"389":{"tf":1.0},"391":{"tf":1.0},"397":{"tf":1.0},"457":{"tf":1.0}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"187":{"tf":1.0}}}},"t":{"df":25,"docs":{"156":{"tf":1.0},"190":{"tf":1.4142135623730951},"211":{"tf":1.0},"230":{"tf":1.4142135623730951},"245":{"tf":1.0},"258":{"tf":1.0},"270":{"tf":1.0},"307":{"tf":1.0},"330":{"tf":1.0},"347":{"tf":1.0},"356":{"tf":1.0},"359":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"475":{"tf":1.0},"512":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"599":{"tf":1.0}}}},"o":{"df":382,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"15":{"tf":1.7320508075688772},"151":{"tf":1.7320508075688772},"152":{"tf":1.4142135623730951},"153":{"tf":1.7320508075688772},"154":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.4142135623730951},"157":{"tf":2.449489742783178},"158":{"tf":2.0},"159":{"tf":1.0},"16":{"tf":1.7320508075688772},"160":{"tf":1.0},"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"165":{"tf":1.7320508075688772},"166":{"tf":2.0},"167":{"tf":1.0},"168":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":1.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"175":{"tf":1.7320508075688772},"176":{"tf":2.0},"177":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"185":{"tf":1.7320508075688772},"186":{"tf":2.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"19":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"193":{"tf":1.7320508075688772},"194":{"tf":2.0},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.0},"202":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"207":{"tf":1.7320508075688772},"208":{"tf":2.0},"209":{"tf":1.0},"21":{"tf":1.0},"210":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"215":{"tf":1.7320508075688772},"216":{"tf":2.0},"217":{"tf":1.0},"218":{"tf":1.0},"219":{"tf":1.7320508075688772},"220":{"tf":2.0},"221":{"tf":1.0},"222":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"227":{"tf":1.7320508075688772},"228":{"tf":1.4142135623730951},"229":{"tf":1.0},"23":{"tf":2.23606797749979},"230":{"tf":1.0},"231":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"236":{"tf":1.0},"237":{"tf":1.0},"238":{"tf":1.0},"239":{"tf":1.0},"24":{"tf":2.0},"240":{"tf":1.0},"241":{"tf":1.0},"242":{"tf":1.7320508075688772},"243":{"tf":1.4142135623730951},"244":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"247":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.0},"25":{"tf":1.7320508075688772},"250":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":1.4142135623730951},"255":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"26":{"tf":1.0},"260":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.7320508075688772},"267":{"tf":2.0},"268":{"tf":1.0},"269":{"tf":1.0},"27":{"tf":2.0},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"274":{"tf":1.7320508075688772},"275":{"tf":2.0},"276":{"tf":1.0},"277":{"tf":1.0},"278":{"tf":1.0},"279":{"tf":1.0},"28":{"tf":1.4142135623730951},"280":{"tf":1.0},"281":{"tf":1.0},"282":{"tf":1.7320508075688772},"283":{"tf":2.0},"284":{"tf":1.0},"285":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.7320508075688772},"290":{"tf":1.7320508075688772},"291":{"tf":2.0},"292":{"tf":1.0},"293":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"298":{"tf":1.7320508075688772},"299":{"tf":2.0},"30":{"tf":1.0},"300":{"tf":1.0},"301":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0},"305":{"tf":1.7320508075688772},"306":{"tf":2.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.0},"31":{"tf":1.7320508075688772},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"325":{"tf":1.0},"326":{"tf":1.7320508075688772},"327":{"tf":1.4142135623730951},"328":{"tf":1.0},"329":{"tf":1.0},"33":{"tf":1.0},"330":{"tf":1.0},"331":{"tf":1.0},"332":{"tf":1.0},"333":{"tf":1.0},"334":{"tf":1.7320508075688772},"335":{"tf":2.0},"336":{"tf":1.0},"337":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.0},"34":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0},"345":{"tf":1.7320508075688772},"346":{"tf":2.0},"347":{"tf":1.0},"348":{"tf":1.0},"349":{"tf":1.0},"35":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"354":{"tf":1.7320508075688772},"355":{"tf":1.4142135623730951},"356":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"36":{"tf":1.7320508075688772},"360":{"tf":1.0},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"368":{"tf":1.7320508075688772},"369":{"tf":2.0},"370":{"tf":1.0},"371":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"374":{"tf":1.0},"375":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.7320508075688772},"379":{"tf":2.0},"380":{"tf":1.0},"381":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"386":{"tf":1.0},"387":{"tf":1.7320508075688772},"388":{"tf":1.4142135623730951},"389":{"tf":1.0},"390":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"395":{"tf":1.7320508075688772},"396":{"tf":2.0},"397":{"tf":1.0},"398":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.0},"403":{"tf":1.0},"404":{"tf":1.0},"405":{"tf":1.0},"406":{"tf":1.7320508075688772},"407":{"tf":2.0},"408":{"tf":1.0},"409":{"tf":1.0},"41":{"tf":1.4142135623730951},"410":{"tf":1.0},"411":{"tf":1.0},"412":{"tf":1.0},"413":{"tf":1.0},"414":{"tf":1.0},"415":{"tf":1.0},"416":{"tf":2.0},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.4142135623730951},"420":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"424":{"tf":1.0},"425":{"tf":1.0},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0},"429":{"tf":1.7320508075688772},"430":{"tf":1.4142135623730951},"431":{"tf":1.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0},"438":{"tf":1.7320508075688772},"439":{"tf":1.4142135623730951},"440":{"tf":1.0},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"446":{"tf":1.7320508075688772},"447":{"tf":2.0},"448":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"454":{"tf":1.7320508075688772},"455":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.0},"46":{"tf":1.7320508075688772},"460":{"tf":1.0},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"466":{"tf":1.7320508075688772},"467":{"tf":2.0},"468":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":1.0},"475":{"tf":1.0},"476":{"tf":1.7320508075688772},"477":{"tf":2.0},"478":{"tf":1.0},"479":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"493":{"tf":1.7320508075688772},"506":{"tf":1.4142135623730951},"507":{"tf":1.4142135623730951},"525":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951},"53":{"tf":1.4142135623730951},"539":{"tf":1.0},"54":{"tf":1.0},"541":{"tf":1.4142135623730951},"55":{"tf":1.0},"551":{"tf":1.0},"56":{"tf":1.7320508075688772},"58":{"tf":1.0},"59":{"tf":1.4142135623730951},"597":{"tf":1.0},"598":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}}}}},"r":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}}}}},"a":{"b":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"258":{"tf":1.0},"300":{"tf":1.0}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":8,"docs":{"167":{"tf":1.4142135623730951},"178":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.4142135623730951},"374":{"tf":1.0},"469":{"tf":1.0},"521":{"tf":1.0}}},"k":{"df":2,"docs":{"125":{"tf":1.0},"127":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"259":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"134":{"tf":1.0},"72":{"tf":1.0}}},"s":{"df":3,"docs":{"154":{"tf":1.0},"292":{"tf":1.0},"57":{"tf":1.0}}}},"m":{"df":2,"docs":{"336":{"tf":2.0},"340":{"tf":1.0}}},"n":{"d":{"df":1,"docs":{"481":{"tf":1.4142135623730951}},"o":{"df":0,"docs":{},"m":{"df":2,"docs":{"27":{"tf":1.0},"370":{"tf":1.0}}}}},"df":1,"docs":{"470":{"tf":1.0}},"g":{"df":1,"docs":{"8":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"140":{"tf":1.0},"419":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":2,"docs":{"538":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"240":{"tf":1.0}}}},"df":0,"docs":{}}}}},"w":{"df":4,"docs":{"157":{"tf":1.0},"276":{"tf":1.0},"328":{"tf":1.0},"489":{"tf":1.0}},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"190":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"336":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":2,"docs":{"190":{"tf":1.0},"336":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"599":{"tf":1.0}}},"df":4,"docs":{"360":{"tf":1.0},"389":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}}},"c":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"423":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"0":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"1":{"_":{"df":0,"docs":{},"u":{"3":{"2":{"df":1,"docs":{"423":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"419":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"418":{"tf":1.0}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"_":{"df":1,"docs":{"419":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"418":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"422":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":3,"docs":{"421":{"tf":1.0},"423":{"tf":1.0},"470":{"tf":1.0}}},"df":3,"docs":{"292":{"tf":2.449489742783178},"370":{"tf":1.7320508075688772},"440":{"tf":2.0}},"e":{"a":{"c":{"df":0,"docs":{},"h":{"df":6,"docs":{"209":{"tf":1.0},"245":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"286":{"tf":1.0},"448":{"tf":1.0},"556":{"tf":1.0}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"233":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0}}}}}},"d":{"df":33,"docs":{"156":{"tf":2.23606797749979},"178":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.4142135623730951},"198":{"tf":1.4142135623730951},"199":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.4142135623730951},"249":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.7320508075688772},"357":{"tf":1.4142135623730951},"360":{"tf":1.0},"361":{"tf":1.0},"365":{"tf":1.7320508075688772},"367":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.7320508075688772},"383":{"tf":1.4142135623730951},"402":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.7320508075688772},"486":{"tf":1.0},"527":{"tf":1.0},"565":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"481":{"tf":1.0},"538":{"tf":1.7320508075688772}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"478":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":3,"docs":{"195":{"tf":1.0},"196":{"tf":1.4142135623730951},"199":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"i":{"df":13,"docs":{"17":{"tf":1.0},"199":{"tf":1.4142135623730951},"230":{"tf":2.0},"232":{"tf":1.0},"235":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"380":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"551":{"tf":1.0},"560":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}},"m":{"df":3,"docs":{"221":{"tf":1.0},"538":{"tf":1.0},"543":{"tf":1.0}}},"y":{"!":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{"c":{"df":0,"docs":{},"x":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"(":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"c":{"df":0,"docs":{},"x":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"df":45,"docs":{"110":{"tf":1.0},"154":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"23":{"tf":1.4142135623730951},"233":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"278":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"322":{"tf":1.4142135623730951},"327":{"tf":1.0},"33":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"47":{"tf":1.0},"477":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":3,"docs":{"190":{"tf":1.0},"237":{"tf":1.0},"347":{"tf":1.0}}},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"156":{"tf":1.0},"487":{"tf":1.0}}}},"z":{"df":38,"docs":{"178":{"tf":1.0},"195":{"tf":1.0},"198":{"tf":1.0},"201":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.0},"383":{"tf":1.0},"41":{"tf":1.4142135623730951},"421":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.4142135623730951},"47":{"tf":1.0},"470":{"tf":1.0},"487":{"tf":1.0},"497":{"tf":1.0},"499":{"tf":1.4142135623730951},"516":{"tf":1.7320508075688772},"517":{"tf":1.4142135623730951},"534":{"tf":1.4142135623730951},"535":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"548":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951}}}},"l":{"df":0,"docs":{},"i":{"df":30,"docs":{"148":{"tf":1.0},"149":{"tf":1.0},"156":{"tf":1.4142135623730951},"217":{"tf":1.0},"245":{"tf":1.4142135623730951},"259":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"315":{"tf":1.0},"32":{"tf":1.0},"321":{"tf":1.4142135623730951},"340":{"tf":1.0},"35":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"408":{"tf":1.4142135623730951},"423":{"tf":1.0},"47":{"tf":1.0},"478":{"tf":1.7320508075688772},"481":{"tf":1.7320508075688772},"499":{"tf":1.0},"511":{"tf":1.0},"514":{"tf":1.0},"534":{"tf":1.0},"55":{"tf":1.0},"551":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"461":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"110":{"tf":1.0}}}}}},"r":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"179":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":17,"docs":{"190":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.0},"319":{"tf":1.0},"324":{"tf":1.0},"341":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"357":{"tf":1.0},"360":{"tf":1.4142135623730951},"370":{"tf":1.0},"404":{"tf":1.0},"440":{"tf":1.0},"45":{"tf":1.0},"512":{"tf":1.0},"61":{"tf":1.0},"82":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"c":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":9,"docs":{"120":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.7320508075688772},"292":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.7320508075688772},"539":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"380":{"tf":1.0},"481":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":3,"docs":{"259":{"tf":1.0},"284":{"tf":1.0},"380":{"tf":1.0}}}},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":5,"docs":{"178":{"tf":1.0},"209":{"tf":1.7320508075688772},"217":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"470":{"tf":1.0},"522":{"tf":1.0}}}}}},"r":{"d":{"df":4,"docs":{"209":{"tf":1.4142135623730951},"392":{"tf":1.0},"448":{"tf":2.0},"598":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":4,"docs":{"156":{"tf":1.0},"245":{"tf":1.4142135623730951},"370":{"tf":2.6457513110645907},"375":{"tf":1.4142135623730951}}}}},"v":{"df":1,"docs":{"539":{"tf":1.0}}}},"d":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"258":{"tf":1.0},"27":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0}}}}},"df":3,"docs":{"218":{"tf":1.0},"245":{"tf":1.0},"538":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":2,"docs":{"336":{"tf":1.0},"389":{"tf":1.0}}}}}}},"o":{"df":1,"docs":{"599":{"tf":1.0}}},"u":{"c":{"df":5,"docs":{"209":{"tf":1.0},"336":{"tf":1.0},"397":{"tf":1.7320508075688772},"405":{"tf":1.0},"73":{"tf":1.0}},"t":{"df":1,"docs":{"341":{"tf":1.0}}}},"df":0,"docs":{}}},"df":9,"docs":{"192":{"tf":1.0},"200":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":3.1622776601683795},"336":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"517":{"tf":1.0},"599":{"tf":1.0}},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"258":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":3,"docs":{"417":{"tf":2.0},"422":{"tf":1.0},"425":{"tf":1.0}},"l":{":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"417":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":3,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"565":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":16,"docs":{"156":{"tf":1.0},"213":{"tf":1.4142135623730951},"217":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"268":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.4142135623730951},"328":{"tf":1.0},"417":{"tf":1.4142135623730951},"42":{"tf":1.0},"421":{"tf":1.0},"470":{"tf":1.0},"538":{"tf":1.4142135623730951},"598":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"154":{"tf":1.0},"94":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"198":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"336":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":40,"docs":{"155":{"tf":1.0},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"176":{"tf":1.4142135623730951},"186":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"208":{"tf":1.4142135623730951},"216":{"tf":1.4142135623730951},"220":{"tf":1.4142135623730951},"228":{"tf":1.0},"23":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"259":{"tf":1.0},"267":{"tf":1.4142135623730951},"275":{"tf":1.4142135623730951},"283":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"299":{"tf":1.4142135623730951},"306":{"tf":1.4142135623730951},"327":{"tf":1.0},"335":{"tf":1.4142135623730951},"346":{"tf":1.4142135623730951},"355":{"tf":1.0},"369":{"tf":1.4142135623730951},"37":{"tf":1.0},"379":{"tf":1.4142135623730951},"388":{"tf":1.0},"396":{"tf":1.4142135623730951},"407":{"tf":1.4142135623730951},"416":{"tf":1.4142135623730951},"430":{"tf":1.0},"439":{"tf":1.0},"444":{"tf":1.0},"447":{"tf":1.4142135623730951},"455":{"tf":1.0},"458":{"tf":1.0},"467":{"tf":1.4142135623730951},"477":{"tf":1.4142135623730951},"539":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"g":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"278":{"tf":1.0},"496":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":3,"docs":{"316":{"tf":1.0},"321":{"tf":1.0},"341":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"469":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"200":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"r":{"df":2,"docs":{"203":{"tf":1.0},"292":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":9,"docs":{"156":{"tf":1.4142135623730951},"207":{"tf":1.7320508075688772},"208":{"tf":1.0},"209":{"tf":1.0},"210":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":5,"docs":{"110":{"tf":1.0},"195":{"tf":1.0},"217":{"tf":1.0},"310":{"tf":1.0},"457":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"18":{"tf":1.0},"51":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"190":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0}}}}}}}}}},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"417":{"tf":1.0}}}}}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":6,"docs":{"268":{"tf":1.0},"386":{"tf":1.4142135623730951},"460":{"tf":1.0},"480":{"tf":1.0},"538":{"tf":1.0},"566":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"338":{"tf":1.0}}}}}}}}}},"y":{"df":1,"docs":{"108":{"tf":1.0}}}},"df":9,"docs":{"246":{"tf":1.0},"248":{"tf":1.0},"300":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"370":{"tf":1.0},"495":{"tf":1.0},"502":{"tf":1.0},"507":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"s":{"df":6,"docs":{"218":{"tf":1.0},"328":{"tf":1.4142135623730951},"357":{"tf":1.0},"380":{"tf":1.0},"422":{"tf":1.0},"89":{"tf":1.0}}}},"df":0,"docs":{},"v":{"df":3,"docs":{"172":{"tf":1.0},"559":{"tf":1.0},"579":{"tf":1.0}}}},"i":{"a":{"b":{"df":0,"docs":{},"l":{"df":4,"docs":{"119":{"tf":1.0},"121":{"tf":1.0},"130":{"tf":1.4142135623730951},"72":{"tf":1.0}}}},"df":0,"docs":{}},"df":5,"docs":{"248":{"tf":1.0},"456":{"tf":1.4142135623730951},"462":{"tf":1.4142135623730951},"544":{"tf":1.0},"548":{"tf":1.0}},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"358":{"tf":1.0},"370":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"458":{"tf":1.0}}},"df":5,"docs":{"169":{"tf":1.0},"209":{"tf":1.0},"357":{"tf":1.0},"458":{"tf":1.0},"517":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":19,"docs":{"167":{"tf":1.0},"199":{"tf":1.0},"23":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":1.0},"25":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"311":{"tf":1.0},"37":{"tf":1.0},"380":{"tf":2.0},"385":{"tf":1.0},"419":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"538":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.0},"89":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"231":{"tf":1.0},"448":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"v":{"df":7,"docs":{"131":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"380":{"tf":1.4142135623730951},"392":{"tf":1.0},"559":{"tf":1.0}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"391":{"tf":1.0},"538":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"217":{"tf":1.0},"542":{"tf":1.0}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":4,"docs":{"300":{"tf":1.0},"343":{"tf":1.0},"370":{"tf":1.0},"474":{"tf":1.0}},"e":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"328":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"l":{"a":{"c":{"df":9,"docs":{"157":{"tf":1.0},"279":{"tf":1.0},"310":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"470":{"tf":1.0},"489":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":2,"docs":{"300":{"tf":1.4142135623730951},"54":{"tf":1.0}}}},"o":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}}},":":{":":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"16":{"tf":1.0},"292":{"tf":2.449489742783178},"562":{"tf":1.0},"580":{"tf":1.0}},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"221":{"tf":1.0}}}},"r":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":8,"docs":{"209":{"tf":2.23606797749979},"214":{"tf":1.0},"221":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.7320508075688772},"400":{"tf":1.0},"404":{"tf":1.4142135623730951},"9":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":3,"docs":{"24":{"tf":1.0},"25":{"tf":1.0},"603":{"tf":1.0}}}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":8,"docs":{"155":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"280":{"tf":1.0},"328":{"tf":1.0},"423":{"tf":1.0},"457":{"tf":1.0},"94":{"tf":1.0}}}},"o":{"'":{"df":1,"docs":{"286":{"tf":1.0}}},"d":{"df":0,"docs":{},"u":{"c":{"df":4,"docs":{"178":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.4142135623730951},"431":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"284":{"tf":1.0}}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"278":{"tf":1.0}}}}},"q":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"418":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"347":{"tf":1.4142135623730951},"579":{"tf":1.0},"580":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":26,"docs":{"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.0},"169":{"tf":2.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"217":{"tf":2.23606797749979},"221":{"tf":2.449489742783178},"232":{"tf":1.4142135623730951},"268":{"tf":3.7416573867739413},"276":{"tf":2.23606797749979},"279":{"tf":1.0},"292":{"tf":2.23606797749979},"300":{"tf":1.4142135623730951},"307":{"tf":1.4142135623730951},"315":{"tf":1.0},"347":{"tf":2.449489742783178},"349":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":2.0},"523":{"tf":1.7320508075688772},"603":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"r":{"df":60,"docs":{"102":{"tf":1.4142135623730951},"111":{"tf":1.4142135623730951},"112":{"tf":1.0},"119":{"tf":1.4142135623730951},"128":{"tf":1.4142135623730951},"129":{"tf":1.0},"137":{"tf":1.4142135623730951},"146":{"tf":1.4142135623730951},"153":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.7320508075688772},"171":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"252":{"tf":1.0},"268":{"tf":1.4142135623730951},"270":{"tf":1.0},"273":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.7320508075688772},"302":{"tf":1.0},"319":{"tf":1.4142135623730951},"328":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"351":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":2.6457513110645907},"380":{"tf":1.0},"41":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":2.23606797749979},"431":{"tf":1.0},"440":{"tf":6.708203932499369},"442":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.4142135623730951},"522":{"tf":1.0},"535":{"tf":1.4142135623730951},"549":{"tf":1.4142135623730951},"559":{"tf":1.0},"579":{"tf":1.7320508075688772},"598":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.4142135623730951}}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"323":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{"df":0,"docs":{},"w":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"258":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":7,"docs":{"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.7320508075688772},"237":{"tf":1.7320508075688772},"258":{"tf":1.0},"307":{"tf":1.0},"321":{"tf":2.0}}}}}}},"s":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"181":{"tf":1.0},"183":{"tf":1.0},"359":{"tf":1.0},"469":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":7,"docs":{"181":{"tf":1.0},"218":{"tf":1.0},"319":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.7320508075688772}}}},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"385":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"c":{"df":18,"docs":{"108":{"tf":1.0},"119":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.4142135623730951},"125":{"tf":1.0},"127":{"tf":1.0},"131":{"tf":1.0},"178":{"tf":1.0},"217":{"tf":1.0},"284":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"370":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"538":{"tf":2.8284271247461903},"539":{"tf":1.4142135623730951},"544":{"tf":1.0},"546":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"213":{"tf":1.0},"53":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"n":{"d":{"df":9,"docs":{"209":{"tf":1.0},"217":{"tf":1.0},"276":{"tf":1.0},"29":{"tf":1.0},"300":{"tf":1.4142135623730951},"336":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":20,"docs":{"167":{"tf":2.23606797749979},"168":{"tf":1.0},"169":{"tf":2.23606797749979},"189":{"tf":1.0},"195":{"tf":1.7320508075688772},"201":{"tf":1.0},"209":{"tf":1.0},"221":{"tf":2.8284271247461903},"230":{"tf":1.0},"276":{"tf":1.7320508075688772},"28":{"tf":1.0},"292":{"tf":1.7320508075688772},"300":{"tf":1.4142135623730951},"347":{"tf":1.0},"370":{"tf":1.4142135623730951},"397":{"tf":1.0},"41":{"tf":1.0},"538":{"tf":1.4142135623730951},"580":{"tf":1.4142135623730951},"599":{"tf":1.0}},"e":{"<":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"284":{"tf":1.0},"448":{"tf":1.0}}}}},"df":4,"docs":{"357":{"tf":1.0},"389":{"tf":1.0},"457":{"tf":1.0},"92":{"tf":1.0}},"r":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"370":{"tf":1.0},"421":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"<":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"292":{"tf":1.0}},"e":{"<":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{":":{":":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"u":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"209":{"tf":1.0}}},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"<":{"df":0,"docs":{},"u":{"8":{"df":2,"docs":{"196":{"tf":1.4142135623730951},"197":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":43,"docs":{"108":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"276":{"tf":1.7320508075688772},"278":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":2.6457513110645907},"307":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"347":{"tf":2.6457513110645907},"374":{"tf":1.0},"377":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0},"431":{"tf":1.0},"445":{"tf":1.0},"448":{"tf":1.7320508075688772},"469":{"tf":1.0},"470":{"tf":2.0},"472":{"tf":1.0},"502":{"tf":1.4142135623730951},"521":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.0},"561":{"tf":1.0},"578":{"tf":1.7320508075688772},"579":{"tf":1.0},"599":{"tf":1.4142135623730951},"79":{"tf":1.0}}}},"m":{"df":1,"docs":{"573":{"tf":1.0}},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"440":{"tf":2.0}}}}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"11":{"tf":1.0},"179":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":7,"docs":{"40":{"tf":1.0},"41":{"tf":1.4142135623730951},"45":{"tf":1.0},"493":{"tf":1.4142135623730951},"506":{"tf":1.4142135623730951},"525":{"tf":1.4142135623730951},"541":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"336":{"tf":1.0}},"e":{"df":0,"docs":{},"v":{"df":2,"docs":{"336":{"tf":1.0},"342":{"tf":1.0}}}}},"y":{"_":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":2,"docs":{"457":{"tf":1.7320508075688772},"458":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":26,"docs":{"167":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":2.6457513110645907},"209":{"tf":1.4142135623730951},"217":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"246":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":2.0},"294":{"tf":1.0},"336":{"tf":3.1622776601683795},"341":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"418":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":2.0},"458":{"tf":1.7320508075688772},"465":{"tf":1.4142135623730951},"508":{"tf":1.0},"51":{"tf":1.0},"522":{"tf":1.0},"573":{"tf":1.7320508075688772}}}}}},"u":{"df":0,"docs":{},"s":{"df":4,"docs":{"196":{"tf":1.0},"205":{"tf":1.0},"571":{"tf":1.0},"96":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"399":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":1,"docs":{"463":{"tf":1.0}}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":9,"docs":{"15":{"tf":1.0},"16":{"tf":1.4142135623730951},"230":{"tf":1.0},"259":{"tf":1.0},"29":{"tf":1.7320508075688772},"347":{"tf":1.0},"370":{"tf":1.0},"42":{"tf":1.7320508075688772},"558":{"tf":2.6457513110645907}}}},"s":{"df":1,"docs":{"61":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"18":{"tf":1.0},"268":{"tf":1.0},"347":{"tf":1.0},"51":{"tf":1.0}}}}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":19,"docs":{"512":{"tf":1.0},"518":{"tf":1.7320508075688772},"519":{"tf":1.0},"520":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":6,"docs":{"134":{"tf":1.0},"209":{"tf":1.0},"313":{"tf":1.0},"370":{"tf":1.0},"431":{"tf":1.0},"460":{"tf":1.0}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"370":{"tf":1.0}}}}}}}}}},"f":{"c":{"df":4,"docs":{"17":{"tf":1.0},"478":{"tf":1.0},"560":{"tf":1.0},"562":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":1,"docs":{"602":{"tf":1.0}}}}}}}}},"h":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"602":{"tf":1.0}}}}}}}}},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"542":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":29,"docs":{"129":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"178":{"tf":1.0},"199":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"268":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"300":{"tf":1.4142135623730951},"304":{"tf":1.0},"319":{"tf":1.0},"321":{"tf":1.0},"359":{"tf":1.0},"361":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"380":{"tf":1.4142135623730951},"394":{"tf":1.0},"421":{"tf":1.7320508075688772},"431":{"tf":1.0},"472":{"tf":1.0},"475":{"tf":1.0},"522":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0},"552":{"tf":1.0},"558":{"tf":1.0},"559":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"460":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"401":{"tf":1.0}}},"k":{"df":1,"docs":{"538":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":2.23606797749979}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":1,"docs":{"380":{"tf":1.0}}}},"o":{"a":{"d":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"df":7,"docs":{"10":{"tf":1.0},"155":{"tf":1.0},"550":{"tf":1.7320508075688772},"551":{"tf":1.0},"552":{"tf":1.0},"553":{"tf":1.7320508075688772},"562":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"57":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}},"i":{"df":1,"docs":{"221":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":2,"docs":{"28":{"tf":1.4142135623730951},"41":{"tf":1.4142135623730951}}}},"m":{"df":1,"docs":{"156":{"tf":1.0}}},"o":{"df":0,"docs":{},"m":{"df":2,"docs":{"200":{"tf":1.0},"57":{"tf":1.0}}},"t":{"df":1,"docs":{"250":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"268":{"tf":1.0},"380":{"tf":1.0}}}}}},"t":{"df":6,"docs":{"195":{"tf":1.0},"201":{"tf":1.0},"268":{"tf":3.4641016151377544},"292":{"tf":1.0},"300":{"tf":1.0},"431":{"tf":1.7320508075688772}},"e":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"/":{"\"":{")":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"_":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"_":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"\"":{"/":{"\"":{")":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"(":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"_":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"(":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":3,"docs":{"268":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0}}},"s":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"(":{"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"268":{"tf":1.0}},"e":{")":{"?":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"230":{"tf":1.0},"502":{"tf":1.0}}}}}},"w":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}},"p":{"c":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"w":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":2,"docs":{"276":{"tf":2.6457513110645907},"359":{"tf":1.0}}},"df":0,"docs":{}},"s":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"349":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"279":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"df":2,"docs":{"440":{"tf":2.0},"602":{"tf":1.0}}},"t":{".":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"f":{"df":1,"docs":{"309":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"5":{"1":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"6":{"5":{":":{"5":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{":":{"1":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":1,"docs":{"309":{"tf":1.0}},"l":{"d":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"=":{"<":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"b":{"d":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"503":{"tf":1.0}}},"i":{"df":2,"docs":{"134":{"tf":1.0},"72":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":1,"docs":{"218":{"tf":1.4142135623730951}}}}},"l":{"df":0,"docs":{},"e":{"df":5,"docs":{"156":{"tf":1.4142135623730951},"218":{"tf":1.0},"515":{"tf":1.0},"54":{"tf":1.0},"59":{"tf":1.0}}}},"m":{"df":0,"docs":{},"q":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":1,"docs":{"323":{"tf":1.0}}}}}},"n":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":61,"docs":{"112":{"tf":1.0},"121":{"tf":1.0},"125":{"tf":2.0},"127":{"tf":1.0},"128":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":2.0},"16":{"tf":1.0},"171":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.4142135623730951},"192":{"tf":1.0},"221":{"tf":1.0},"233":{"tf":1.4142135623730951},"234":{"tf":1.0},"242":{"tf":1.7320508075688772},"243":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":1.4142135623730951},"246":{"tf":1.0},"247":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.4142135623730951},"273":{"tf":1.0},"284":{"tf":1.7320508075688772},"309":{"tf":1.0},"318":{"tf":1.4142135623730951},"319":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.0},"347":{"tf":1.4142135623730951},"380":{"tf":2.449489742783178},"385":{"tf":1.0},"389":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"408":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.4142135623730951},"448":{"tf":1.7320508075688772},"453":{"tf":1.0},"504":{"tf":2.449489742783178},"508":{"tf":1.0},"509":{"tf":1.0},"510":{"tf":1.0},"517":{"tf":1.0},"522":{"tf":1.4142135623730951},"523":{"tf":1.0},"528":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.4142135623730951},"73":{"tf":1.0},"74":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":85,"docs":{"102":{"tf":1.4142135623730951},"111":{"tf":1.4142135623730951},"119":{"tf":2.0},"128":{"tf":1.7320508075688772},"137":{"tf":2.0},"146":{"tf":1.7320508075688772},"156":{"tf":3.1622776601683795},"167":{"tf":1.0},"189":{"tf":2.23606797749979},"190":{"tf":2.449489742783178},"191":{"tf":1.0},"192":{"tf":1.4142135623730951},"203":{"tf":1.0},"233":{"tf":2.0},"234":{"tf":1.7320508075688772},"235":{"tf":1.0},"237":{"tf":2.0},"240":{"tf":1.0},"241":{"tf":1.0},"256":{"tf":2.0},"257":{"tf":1.0},"258":{"tf":2.6457513110645907},"261":{"tf":2.0},"265":{"tf":1.0},"268":{"tf":1.0},"278":{"tf":1.4142135623730951},"284":{"tf":1.7320508075688772},"286":{"tf":1.0},"288":{"tf":1.4142135623730951},"300":{"tf":2.23606797749979},"302":{"tf":1.0},"309":{"tf":2.0},"319":{"tf":2.449489742783178},"323":{"tf":1.0},"325":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.7320508075688772},"349":{"tf":1.7320508075688772},"358":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":2.0},"372":{"tf":1.0},"380":{"tf":1.0},"399":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":2.0},"418":{"tf":1.4142135623730951},"421":{"tf":2.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"437":{"tf":1.7320508075688772},"462":{"tf":1.0},"464":{"tf":1.7320508075688772},"470":{"tf":1.4142135623730951},"500":{"tf":1.7320508075688772},"501":{"tf":1.0},"502":{"tf":3.0},"503":{"tf":1.4142135623730951},"504":{"tf":1.7320508075688772},"505":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":2.6457513110645907},"508":{"tf":1.7320508075688772},"509":{"tf":1.7320508075688772},"510":{"tf":1.0},"511":{"tf":1.7320508075688772},"512":{"tf":1.0},"513":{"tf":1.4142135623730951},"514":{"tf":1.4142135623730951},"515":{"tf":1.4142135623730951},"516":{"tf":1.4142135623730951},"517":{"tf":2.0},"521":{"tf":2.0},"526":{"tf":1.4142135623730951},"527":{"tf":2.0},"529":{"tf":1.7320508075688772},"532":{"tf":1.0},"533":{"tf":1.4142135623730951},"534":{"tf":1.7320508075688772},"564":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":2.23606797749979},"62":{"tf":1.7320508075688772}},"e":{"'":{"df":1,"docs":{"349":{"tf":1.0}}},".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{")":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"(":{"df":0,"docs":{},"|":{"df":0,"docs":{},"f":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"167":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":1,"docs":{"599":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"179":{"tf":1.0}}}}}},"t":{"'":{"df":19,"docs":{"156":{"tf":1.0},"181":{"tf":1.0},"211":{"tf":1.4142135623730951},"218":{"tf":1.0},"231":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"289":{"tf":1.0},"338":{"tf":1.0},"350":{"tf":1.0},"363":{"tf":1.4142135623730951},"367":{"tf":1.4142135623730951},"403":{"tf":1.0},"456":{"tf":1.4142135623730951},"469":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"502":{"tf":1.0},"76":{"tf":1.0}}},"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"e":{"=":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":1,"docs":{"556":{"tf":1.0}}}}},"c":{"df":2,"docs":{"292":{"tf":1.0},"440":{"tf":1.0}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"o":{"c":{"df":1,"docs":{"465":{"tf":1.0}}},"df":0,"docs":{}}},"df":195,"docs":{"108":{"tf":1.0},"11":{"tf":1.7320508075688772},"110":{"tf":1.7320508075688772},"118":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.4142135623730951},"15":{"tf":1.0},"153":{"tf":1.7320508075688772},"156":{"tf":3.7416573867739413},"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"17":{"tf":1.0},"176":{"tf":1.4142135623730951},"178":{"tf":1.0},"183":{"tf":1.0},"186":{"tf":1.4142135623730951},"187":{"tf":1.7320508075688772},"188":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"195":{"tf":1.4142135623730951},"198":{"tf":1.0},"204":{"tf":1.0},"208":{"tf":1.4142135623730951},"209":{"tf":2.8284271247461903},"211":{"tf":2.0},"213":{"tf":1.0},"216":{"tf":1.4142135623730951},"217":{"tf":1.7320508075688772},"218":{"tf":1.4142135623730951},"220":{"tf":1.4142135623730951},"221":{"tf":1.7320508075688772},"227":{"tf":1.7320508075688772},"228":{"tf":1.7320508075688772},"229":{"tf":1.0},"23":{"tf":1.4142135623730951},"230":{"tf":2.6457513110645907},"231":{"tf":1.0},"232":{"tf":1.4142135623730951},"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":2.0},"236":{"tf":1.0},"237":{"tf":1.7320508075688772},"238":{"tf":1.0},"239":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"243":{"tf":1.4142135623730951},"244":{"tf":1.0},"245":{"tf":1.4142135623730951},"251":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":1.7320508075688772},"255":{"tf":1.0},"256":{"tf":2.0},"257":{"tf":1.4142135623730951},"258":{"tf":2.8284271247461903},"259":{"tf":2.23606797749979},"260":{"tf":1.0},"261":{"tf":2.23606797749979},"262":{"tf":1.0},"263":{"tf":1.4142135623730951},"264":{"tf":1.7320508075688772},"265":{"tf":1.0},"267":{"tf":1.4142135623730951},"268":{"tf":2.6457513110645907},"27":{"tf":1.0},"270":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"275":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"283":{"tf":1.4142135623730951},"284":{"tf":2.449489742783178},"289":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"292":{"tf":1.4142135623730951},"299":{"tf":1.4142135623730951},"3":{"tf":1.0},"300":{"tf":2.0},"303":{"tf":1.0},"304":{"tf":1.0},"306":{"tf":1.4142135623730951},"316":{"tf":1.4142135623730951},"317":{"tf":1.0},"327":{"tf":1.4142135623730951},"332":{"tf":1.0},"333":{"tf":1.0},"335":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"338":{"tf":1.4142135623730951},"339":{"tf":1.4142135623730951},"340":{"tf":1.4142135623730951},"341":{"tf":1.7320508075688772},"343":{"tf":1.0},"346":{"tf":1.4142135623730951},"347":{"tf":1.7320508075688772},"349":{"tf":1.0},"350":{"tf":1.0},"355":{"tf":1.4142135623730951},"356":{"tf":2.23606797749979},"357":{"tf":1.4142135623730951},"358":{"tf":1.4142135623730951},"359":{"tf":1.4142135623730951},"363":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.4142135623730951},"37":{"tf":1.7320508075688772},"370":{"tf":1.7320508075688772},"376":{"tf":1.0},"379":{"tf":1.4142135623730951},"380":{"tf":4.47213595499958},"382":{"tf":1.0},"383":{"tf":2.0},"385":{"tf":1.0},"386":{"tf":1.0},"388":{"tf":1.4142135623730951},"389":{"tf":2.0},"393":{"tf":1.0},"394":{"tf":1.0},"396":{"tf":1.4142135623730951},"399":{"tf":1.0},"40":{"tf":1.0},"405":{"tf":1.4142135623730951},"407":{"tf":1.4142135623730951},"408":{"tf":1.7320508075688772},"41":{"tf":1.0},"416":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.0},"427":{"tf":1.0},"430":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"435":{"tf":1.0},"439":{"tf":1.4142135623730951},"447":{"tf":1.4142135623730951},"455":{"tf":1.4142135623730951},"456":{"tf":2.6457513110645907},"457":{"tf":1.4142135623730951},"458":{"tf":1.4142135623730951},"460":{"tf":2.23606797749979},"461":{"tf":1.0},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"467":{"tf":1.4142135623730951},"469":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"475":{"tf":1.0},"477":{"tf":1.4142135623730951},"478":{"tf":1.0},"483":{"tf":1.0},"490":{"tf":2.0},"499":{"tf":1.4142135623730951},"501":{"tf":2.0},"502":{"tf":1.4142135623730951},"512":{"tf":1.4142135623730951},"519":{"tf":2.0},"521":{"tf":1.7320508075688772},"522":{"tf":1.0},"523":{"tf":1.0},"525":{"tf":1.0},"530":{"tf":1.0},"537":{"tf":2.0},"538":{"tf":1.7320508075688772},"544":{"tf":1.0},"597":{"tf":1.0},"599":{"tf":2.449489742783178},"600":{"tf":1.0},"601":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.7320508075688772},"64":{"tf":1.0},"65":{"tf":2.23606797749979},"71":{"tf":1.4142135623730951},"72":{"tf":1.7320508075688772},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.4142135623730951},"79":{"tf":2.23606797749979},"8":{"tf":2.0},"81":{"tf":1.4142135623730951},"82":{"tf":1.0},"86":{"tf":1.4142135623730951},"87":{"tf":1.0},"89":{"tf":2.0},"9":{"tf":2.449489742783178},"91":{"tf":2.0},"92":{"tf":1.7320508075688772}},"f":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"245":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"i":{"df":1,"docs":{"156":{"tf":1.0}}},"u":{"df":0,"docs":{},"p":{"df":4,"docs":{"110":{"tf":1.0},"245":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"469":{"tf":1.0}}}}}}}},"w":{"<":{"'":{"a":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"x":{"df":1,"docs":{"448":{"tf":1.0}}},"y":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"224":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}},"s":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"579":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"131":{"tf":1.0}}},"df":0,"docs":{}}}}}},"d":{"df":1,"docs":{"221":{"tf":1.0}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":14,"docs":{"110":{"tf":1.0},"178":{"tf":1.0},"198":{"tf":1.0},"320":{"tf":1.0},"336":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"470":{"tf":1.0},"563":{"tf":1.7320508075688772},"564":{"tf":1.0},"565":{"tf":1.0},"566":{"tf":1.0}},"r":{"df":2,"docs":{"425":{"tf":1.0},"428":{"tf":1.0}}},"t":{"df":0,"docs":{},"i":{"df":20,"docs":{"171":{"tf":1.0},"190":{"tf":1.0},"218":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.0},"344":{"tf":1.4142135623730951},"41":{"tf":1.0},"456":{"tf":1.7320508075688772},"460":{"tf":1.4142135623730951},"469":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"511":{"tf":1.4142135623730951},"521":{"tf":1.0},"529":{"tf":1.0},"65":{"tf":1.4142135623730951},"76":{"tf":1.0},"79":{"tf":1.0},"81":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}}}}},"m":{"df":0,"docs":{},"e":{"df":55,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"190":{"tf":1.0},"192":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.0},"230":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":2.0},"237":{"tf":1.7320508075688772},"240":{"tf":1.0},"25":{"tf":1.0},"252":{"tf":1.4142135623730951},"257":{"tf":1.0},"261":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"321":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"331":{"tf":1.0},"341":{"tf":1.0},"358":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"393":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":1.0},"423":{"tf":1.4142135623730951},"437":{"tf":1.4142135623730951},"45":{"tf":1.0},"453":{"tf":1.4142135623730951},"457":{"tf":1.0},"458":{"tf":1.0},"46":{"tf":1.4142135623730951},"463":{"tf":1.0},"464":{"tf":1.4142135623730951},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"512":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"61":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.4142135623730951},"96":{"tf":1.0}}},"p":{"df":0,"docs":{},"l":{"df":11,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.0},"142":{"tf":1.0},"209":{"tf":1.0},"336":{"tf":1.0},"496":{"tf":1.0},"94":{"tf":1.0},"98":{"tf":1.0}}}}},"n":{"d":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"315":{"tf":1.0},"321":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"389":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":7,"docs":{"246":{"tf":1.0},"258":{"tf":1.0},"330":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"470":{"tf":1.0},"57":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":5,"docs":{"122":{"tf":1.0},"199":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.4142135623730951},"417":{"tf":1.0}}}},"w":{"df":1,"docs":{"465":{"tf":1.0}}},"y":{"df":2,"docs":{"300":{"tf":1.0},"538":{"tf":1.0}}}},"c":{"a":{"df":0,"docs":{},"l":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":1,"docs":{"73":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":4,"docs":{"284":{"tf":1.0},"347":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0}}}},"n":{"df":1,"docs":{"408":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":3,"docs":{"156":{"tf":1.0},"300":{"tf":1.0},"450":{"tf":1.0}}}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"389":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":8,"docs":{"209":{"tf":1.0},"318":{"tf":1.0},"328":{"tf":3.7416573867739413},"418":{"tf":1.0},"470":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"529":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"=":{"0":{"df":0,"docs":{},"x":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"d":{"b":{"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"328":{"tf":1.0}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"531":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":3,"docs":{"178":{"tf":1.0},"389":{"tf":1.0},"47":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"458":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"330":{"tf":1.0},"460":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"198":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"217":{"tf":1.0},"539":{"tf":1.4142135623730951}}}}},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"538":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":4,"docs":{"292":{"tf":1.0},"328":{"tf":1.4142135623730951},"440":{"tf":2.8284271247461903},"470":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"507":{"tf":1.0}}}}}}}}},"n":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"603":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"r":{"c":{"df":0,"docs":{},"h":{"df":14,"docs":{"178":{"tf":1.7320508075688772},"181":{"tf":1.0},"195":{"tf":1.0},"232":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":2.449489742783178},"258":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"385":{"tf":1.0},"440":{"tf":1.0},"458":{"tf":1.0},"475":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"237":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"433":{"tf":1.0}}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":15,"docs":{"130":{"tf":1.0},"16":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.4142135623730951},"259":{"tf":1.0},"284":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.7320508075688772},"431":{"tf":1.0},"458":{"tf":1.7320508075688772},"469":{"tf":1.0},"470":{"tf":2.23606797749979},"539":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"89":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":6,"docs":{"154":{"tf":1.7320508075688772},"380":{"tf":1.0},"551":{"tf":1.4142135623730951},"597":{"tf":1.4142135623730951},"598":{"tf":1.4142135623730951},"94":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"237":{"tf":1.0}}}}},"df":1,"docs":{"341":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"53":{"tf":1.0}}},"df":59,"docs":{"152":{"tf":1.4142135623730951},"156":{"tf":1.0},"157":{"tf":1.0},"161":{"tf":1.0},"178":{"tf":2.0},"188":{"tf":1.0},"190":{"tf":1.0},"196":{"tf":1.0},"209":{"tf":2.23606797749979},"217":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"244":{"tf":1.4142135623730951},"245":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.4142135623730951},"27":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":2.23606797749979},"292":{"tf":1.0},"300":{"tf":1.0},"328":{"tf":1.0},"343":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.23606797749979},"393":{"tf":1.0},"397":{"tf":1.0},"404":{"tf":1.4142135623730951},"408":{"tf":1.7320508075688772},"421":{"tf":1.4142135623730951},"440":{"tf":1.0},"463":{"tf":1.0},"485":{"tf":1.4142135623730951},"489":{"tf":1.0},"499":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"509":{"tf":1.0},"516":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.4142135623730951},"538":{"tf":3.1622776601683795},"539":{"tf":1.4142135623730951},"542":{"tf":1.0},"543":{"tf":1.0},"551":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.4142135623730951},"580":{"tf":1.0},"599":{"tf":1.0},"65":{"tf":1.0},"68":{"tf":1.4142135623730951},"69":{"tf":1.4142135623730951},"73":{"tf":1.0},"95":{"tf":1.0},"97":{"tf":1.0}},"k":{"df":2,"docs":{"178":{"tf":1.0},"179":{"tf":1.0}}},"m":{"df":33,"docs":{"139":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.0},"221":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":2.23606797749979},"276":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":1.4142135623730951},"292":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.7320508075688772},"319":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"358":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.4142135623730951},"389":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"450":{"tf":1.0},"458":{"tf":1.0},"478":{"tf":1.0},"57":{"tf":1.0},"599":{"tf":1.0}}},"n":{"df":7,"docs":{"198":{"tf":1.0},"245":{"tf":1.0},"284":{"tf":1.0},"347":{"tf":1.4142135623730951},"380":{"tf":1.0},"445":{"tf":1.4142135623730951},"502":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":13,"docs":{"15":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.0},"192":{"tf":1.0},"211":{"tf":1.0},"246":{"tf":1.4142135623730951},"252":{"tf":1.0},"370":{"tf":1.0},"422":{"tf":1.0},"538":{"tf":1.0},"588":{"tf":1.7320508075688772},"60":{"tf":1.0}}}},"df":0,"docs":{}},"f":{"(":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},".":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"f":{".":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"418":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":1,"docs":{"167":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"167":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":1,"docs":{"370":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"_":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"167":{"tf":1.0},"169":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}},"m":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"190":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"370":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"q":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"200":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":2.0},"200":{"tf":2.0}},"e":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"328":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"268":{"tf":2.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"o":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"580":{"tf":1.4142135623730951}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"221":{"tf":1.4142135623730951}}}}}}}}}},"df":0,"docs":{}},"=":{"0":{"df":0,"docs":{},"x":{"5":{"5":{"5":{"5":{"5":{"5":{"7":{"0":{"1":{"a":{"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"d":{"b":{"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"2":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"8":{"df":1,"docs":{"284":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"d":{"0":{"0":{"8":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"df":0,"docs":{},"f":{"8":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"3":{"0":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":11,"docs":{"167":{"tf":1.0},"169":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":2.23606797749979},"217":{"tf":1.0},"292":{"tf":1.4142135623730951},"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772},"418":{"tf":1.0},"421":{"tf":2.8284271247461903},"568":{"tf":1.4142135623730951}}},"l":{"df":1,"docs":{"235":{"tf":1.4142135623730951}}}},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"171":{"tf":1.0},"270":{"tf":1.0},"341":{"tf":1.0},"453":{"tf":1.0},"470":{"tf":1.0}}}}},"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"572":{"tf":1.0}}}}}},"n":{"d":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"189":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":20,"docs":{"156":{"tf":1.4142135623730951},"169":{"tf":1.4142135623730951},"195":{"tf":1.0},"268":{"tf":3.3166247903554},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.7320508075688772},"292":{"tf":2.8284271247461903},"328":{"tf":2.23606797749979},"341":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.4142135623730951},"470":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":2.0},"564":{"tf":1.0},"579":{"tf":2.449489742783178},"599":{"tf":1.0},"62":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"276":{"tf":1.0},"328":{"tf":1.0},"538":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":10,"docs":{"156":{"tf":1.0},"217":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"310":{"tf":1.0},"328":{"tf":1.0},"349":{"tf":1.0},"352":{"tf":1.0},"389":{"tf":1.0}},"i":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"116":{"tf":1.0},"230":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"df":8,"docs":{"106":{"tf":1.7320508075688772},"107":{"tf":1.0},"108":{"tf":1.7320508075688772},"109":{"tf":1.0},"110":{"tf":1.0},"111":{"tf":1.4142135623730951},"112":{"tf":1.0},"113":{"tf":1.0}}}}},"t":{"df":2,"docs":{"169":{"tf":1.0},"276":{"tf":2.23606797749979}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":6,"docs":{"217":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"349":{"tf":1.0},"389":{"tf":1.0},"457":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"191":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"509":{"tf":1.0},"527":{"tf":1.0}}},"n":{"c":{"df":1,"docs":{"336":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"r":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"j":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"&":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"s":{")":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":2,"docs":{"182":{"tf":1.0},"400":{"tf":1.0}}}}},"i":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"292":{"tf":2.0},"347":{"tf":1.4142135623730951},"469":{"tf":1.0}},"i":{"df":0,"docs":{},"z":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"s":{"(":{"&":{"b":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"347":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":1,"docs":{"458":{"tf":1.0}}},"v":{"df":3,"docs":{"119":{"tf":1.0},"302":{"tf":1.0},"572":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":35,"docs":{"111":{"tf":1.4142135623730951},"116":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.0},"132":{"tf":1.7320508075688772},"133":{"tf":1.0},"134":{"tf":1.4142135623730951},"135":{"tf":1.0},"136":{"tf":2.449489742783178},"137":{"tf":1.4142135623730951},"138":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"167":{"tf":1.4142135623730951},"195":{"tf":1.0},"209":{"tf":1.0},"227":{"tf":1.7320508075688772},"228":{"tf":1.0},"229":{"tf":1.0},"230":{"tf":1.7320508075688772},"231":{"tf":2.23606797749979},"232":{"tf":1.0},"233":{"tf":1.4142135623730951},"234":{"tf":1.0},"235":{"tf":1.4142135623730951},"236":{"tf":1.0},"237":{"tf":1.4142135623730951},"238":{"tf":1.0},"239":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"276":{"tf":2.0},"599":{"tf":1.0}}}},"i":{"c":{"df":30,"docs":{"116":{"tf":1.0},"125":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.4142135623730951},"167":{"tf":2.0},"209":{"tf":1.4142135623730951},"212":{"tf":1.0},"224":{"tf":1.0},"268":{"tf":2.0},"284":{"tf":2.23606797749979},"300":{"tf":1.0},"347":{"tf":2.23606797749979},"370":{"tf":1.0},"408":{"tf":1.7320508075688772},"429":{"tf":1.7320508075688772},"430":{"tf":1.0},"431":{"tf":2.23606797749979},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0},"538":{"tf":2.449489742783178},"579":{"tf":1.4142135623730951},"580":{"tf":2.0},"599":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"8":{"tf":1.0}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"235":{"tf":1.0},"60":{"tf":1.0},"601":{"tf":1.7320508075688772},"79":{"tf":1.0}}}}}}},"t":{"df":25,"docs":{"156":{"tf":1.7320508075688772},"168":{"tf":1.0},"169":{"tf":1.7320508075688772},"199":{"tf":1.0},"209":{"tf":1.0},"232":{"tf":1.0},"245":{"tf":1.0},"261":{"tf":1.0},"328":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.4142135623730951},"389":{"tf":1.4142135623730951},"393":{"tf":1.0},"417":{"tf":1.0},"435":{"tf":1.0},"448":{"tf":1.7320508075688772},"450":{"tf":1.0},"453":{"tf":1.0},"457":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"490":{"tf":1.0},"501":{"tf":1.0},"516":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":1.0}}}}}}}},"l":{"df":1,"docs":{"199":{"tf":1.0}}}},"u":{"df":0,"docs":{},"p":{"df":4,"docs":{"156":{"tf":1.4142135623730951},"240":{"tf":1.0},"347":{"tf":1.0},"470":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":16,"docs":{"155":{"tf":1.0},"168":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"195":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"383":{"tf":1.0},"408":{"tf":1.0},"419":{"tf":1.0},"538":{"tf":1.0},"91":{"tf":1.0}}}}}},"h":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"276":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"217":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"df":3,"docs":{"297":{"tf":1.0},"560":{"tf":1.0},"573":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"(":{"c":{"df":0,"docs":{},"x":{"df":1,"docs":{"422":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"422":{"tf":1.4142135623730951}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"422":{"tf":1.0}}}}}}}}},"df":29,"docs":{"11":{"tf":1.0},"156":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"276":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.7320508075688772},"419":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"470":{"tf":2.23606797749979},"476":{"tf":1.7320508075688772},"477":{"tf":1.0},"478":{"tf":1.0},"479":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"548":{"tf":1.0},"79":{"tf":1.0},"8":{"tf":1.0},"92":{"tf":1.0}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"16":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"359":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"'":{"d":{"df":3,"docs":{"225":{"tf":1.0},"394":{"tf":1.0},"82":{"tf":1.0}}},"df":20,"docs":{"251":{"tf":1.4142135623730951},"268":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"321":{"tf":1.0},"370":{"tf":2.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"393":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"413":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":2.23606797749979},"81":{"tf":1.0},"82":{"tf":1.0},"89":{"tf":1.0}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"308":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"129":{"tf":1.0},"370":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}}},"i":{"df":104,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"15":{"tf":1.7320508075688772},"16":{"tf":1.7320508075688772},"17":{"tf":1.0},"18":{"tf":1.0},"19":{"tf":1.0},"21":{"tf":1.0},"37":{"tf":2.0},"38":{"tf":1.4142135623730951},"39":{"tf":1.0},"40":{"tf":2.449489742783178},"41":{"tf":2.0},"42":{"tf":1.0},"43":{"tf":1.0},"44":{"tf":1.7320508075688772},"45":{"tf":1.7320508075688772},"46":{"tf":2.23606797749979},"47":{"tf":2.0},"48":{"tf":1.0},"484":{"tf":1.7320508075688772},"485":{"tf":1.4142135623730951},"486":{"tf":1.4142135623730951},"487":{"tf":1.0},"488":{"tf":1.0},"489":{"tf":2.449489742783178},"49":{"tf":2.0},"490":{"tf":2.0},"491":{"tf":1.0},"492":{"tf":1.0},"493":{"tf":1.0},"494":{"tf":1.7320508075688772},"495":{"tf":1.7320508075688772},"496":{"tf":1.0},"497":{"tf":1.4142135623730951},"498":{"tf":1.0},"499":{"tf":1.4142135623730951},"50":{"tf":1.0},"500":{"tf":1.7320508075688772},"501":{"tf":2.0},"502":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"505":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.0},"51":{"tf":2.0},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.7320508075688772},"517":{"tf":1.0},"518":{"tf":1.7320508075688772},"519":{"tf":2.0},"520":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.4142135623730951},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.7320508075688772},"535":{"tf":1.0},"536":{"tf":1.7320508075688772},"537":{"tf":2.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.4142135623730951},"540":{"tf":1.0},"541":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.7320508075688772},"549":{"tf":1.0},"55":{"tf":1.0},"57":{"tf":1.7320508075688772},"58":{"tf":1.0},"59":{"tf":1.4142135623730951},"602":{"tf":1.0},"603":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}}},"y":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"39":{"tf":1.0},"489":{"tf":1.0}}}}}}}},"df":0,"docs":{}}},"p":{"df":3,"docs":{"168":{"tf":1.0},"268":{"tf":1.4142135623730951},"560":{"tf":1.0}}}},"o":{"df":0,"docs":{},"e":{"df":1,"docs":{"276":{"tf":1.0}}},"o":{"df":0,"docs":{},"t":{"df":1,"docs":{"573":{"tf":1.0}}}},"p":{"df":2,"docs":{"284":{"tf":1.0},"73":{"tf":1.0}}},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"558":{"tf":1.0}}}},"df":7,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"233":{"tf":1.0},"268":{"tf":1.4142135623730951},"270":{"tf":1.0},"276":{"tf":1.0},"598":{"tf":1.0}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"579":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"292":{"tf":1.0}}}}}},"t":{"df":2,"docs":{"284":{"tf":1.0},"538":{"tf":1.0}}},"u":{"df":0,"docs":{},"l":{"d":{"'":{"df":0,"docs":{},"v":{"df":1,"docs":{"365":{"tf":1.0}}}},"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":2,"docs":{"178":{"tf":1.0},"375":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"w":{"df":10,"docs":{"209":{"tf":1.0},"221":{"tf":1.4142135623730951},"27":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.0},"522":{"tf":1.0},"539":{"tf":1.7320508075688772}},"n":{"df":2,"docs":{"246":{"tf":1.0},"347":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"i":{"d":{"df":0,"docs":{},"e":{"b":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"95":{"tf":1.0}}}},"df":0,"docs":{}},"df":3,"docs":{"181":{"tf":1.0},"224":{"tf":1.0},"389":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"(":{"&":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":3,"docs":{"196":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":3,"docs":{"196":{"tf":1.0},"199":{"tf":2.449489742783178},"200":{"tf":2.23606797749979}},"h":{"df":1,"docs":{"370":{"tf":1.0}}},"n":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"196":{"tf":1.4142135623730951}}}}}},"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"336":{"tf":1.0},"344":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":5,"docs":{"195":{"tf":1.4142135623730951},"199":{"tf":2.23606797749979},"217":{"tf":1.0},"292":{"tf":1.0},"421":{"tf":1.7320508075688772}},"e":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"196":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":4,"docs":{"195":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.0},"230":{"tf":1.0}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":6,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"336":{"tf":1.0},"340":{"tf":1.0},"347":{"tf":1.0},"366":{"tf":1.0}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"199":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"197":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951}}}}}}}}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":33,"docs":{"167":{"tf":1.0},"171":{"tf":1.0},"192":{"tf":1.4142135623730951},"195":{"tf":1.0},"196":{"tf":1.0},"204":{"tf":1.0},"206":{"tf":1.0},"218":{"tf":1.0},"22":{"tf":1.0},"233":{"tf":1.0},"25":{"tf":1.4142135623730951},"251":{"tf":1.0},"259":{"tf":1.0},"261":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"323":{"tf":1.4142135623730951},"333":{"tf":1.0},"347":{"tf":1.4142135623730951},"352":{"tf":1.0},"370":{"tf":1.0},"386":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"437":{"tf":1.0},"456":{"tf":1.4142135623730951},"457":{"tf":1.7320508075688772},"475":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":6,"docs":{"231":{"tf":1.0},"264":{"tf":1.0},"317":{"tf":1.0},"340":{"tf":1.0},"358":{"tf":1.0},"61":{"tf":1.0}}}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"l":{"df":12,"docs":{"177":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"321":{"tf":1.0},"375":{"tf":1.0},"380":{"tf":1.4142135623730951},"523":{"tf":1.0},"61":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"389":{"tf":1.0},"460":{"tf":1.0}}}},"i":{"c":{"df":1,"docs":{"357":{"tf":1.0}}},"df":6,"docs":{"196":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"232":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"df":4,"docs":{"292":{"tf":1.0},"330":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"l":{"df":11,"docs":{"156":{"tf":1.4142135623730951},"466":{"tf":1.7320508075688772},"467":{"tf":1.0},"468":{"tf":1.0},"469":{"tf":1.7320508075688772},"470":{"tf":1.4142135623730951},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.4142135623730951},"474":{"tf":1.0},"475":{"tf":1.0}},"t":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":21,"docs":{"156":{"tf":1.0},"177":{"tf":1.0},"189":{"tf":1.4142135623730951},"195":{"tf":1.0},"318":{"tf":1.4142135623730951},"319":{"tf":1.0},"336":{"tf":2.0},"341":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":1.0},"363":{"tf":1.0},"391":{"tf":1.0},"423":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.4142135623730951},"533":{"tf":1.0},"534":{"tf":1.0},"539":{"tf":1.4142135623730951},"564":{"tf":1.0},"62":{"tf":2.0}},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"177":{"tf":1.4142135623730951}}}}}}}},"k":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"599":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":11,"docs":{"156":{"tf":1.0},"274":{"tf":1.7320508075688772},"275":{"tf":1.0},"276":{"tf":2.449489742783178},"277":{"tf":1.0},"278":{"tf":1.7320508075688772},"279":{"tf":2.0},"280":{"tf":1.0},"281":{"tf":1.0},"589":{"tf":1.7320508075688772},"599":{"tf":1.4142135623730951}}}},"t":{"df":2,"docs":{"268":{"tf":1.0},"380":{"tf":1.0}},"e":{"df":4,"docs":{"138":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"232":{"tf":1.0}}},"u":{"a":{"df":0,"docs":{},"t":{"df":8,"docs":{"226":{"tf":1.0},"237":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"278":{"tf":1.0},"286":{"tf":1.0},"336":{"tf":1.0},"359":{"tf":1.0},"419":{"tf":1.0}}}},"df":0,"docs":{}}},"x":{"df":1,"docs":{"15":{"tf":1.0}}},"z":{"df":0,"docs":{},"e":{"=":{"<":{"df":0,"docs":{},"s":{"df":1,"docs":{"245":{"tf":1.0}}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"568":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":15,"docs":{"11":{"tf":1.0},"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"245":{"tf":2.23606797749979},"258":{"tf":1.0},"292":{"tf":1.4142135623730951},"336":{"tf":2.0},"340":{"tf":1.0},"341":{"tf":2.23606797749979},"342":{"tf":1.7320508075688772},"343":{"tf":1.4142135623730951},"370":{"tf":1.0},"515":{"tf":1.0},"527":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"336":{"tf":1.0}}}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"498":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"192":{"tf":1.0},"221":{"tf":1.0}}}},"m":{"df":4,"docs":{"209":{"tf":1.0},"358":{"tf":1.0},"367":{"tf":1.0},"538":{"tf":1.4142135623730951}}},"p":{"df":2,"docs":{"41":{"tf":1.0},"448":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"457":{"tf":1.0}}}}}},"df":2,"docs":{"380":{"tf":1.0},"566":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"375":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"[":{"1":{".":{".":{"]":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"375":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"375":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"259":{"tf":1.0},"419":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"300":{"tf":1.0},"386":{"tf":1.0},"458":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"g":{"df":1,"docs":{"292":{"tf":1.0}}},"w":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"}":{"df":0,"docs":{},"}":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"347":{"tf":1.0}}}}}},"df":13,"docs":{"141":{"tf":1.7320508075688772},"142":{"tf":1.0},"143":{"tf":1.4142135623730951},"144":{"tf":1.0},"145":{"tf":1.4142135623730951},"146":{"tf":1.4142135623730951},"147":{"tf":1.4142135623730951},"148":{"tf":1.0},"149":{"tf":1.0},"150":{"tf":2.0},"156":{"tf":1.0},"397":{"tf":1.0},"532":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}}}}},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":13,"docs":{"209":{"tf":1.4142135623730951},"302":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.0},"356":{"tf":1.0},"380":{"tf":1.0},"458":{"tf":1.0},"474":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"245":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"252":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":1,"docs":{"188":{"tf":1.0}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"268":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"3":{"tf":1.0},"370":{"tf":1.0}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"341":{"tf":1.0}}}}}}}}},"n":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"c":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"276":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":11,"docs":{"195":{"tf":1.0},"274":{"tf":1.7320508075688772},"275":{"tf":1.0},"276":{"tf":2.23606797749979},"277":{"tf":1.0},"278":{"tf":1.0},"279":{"tf":1.0},"280":{"tf":1.0},"281":{"tf":1.0},"408":{"tf":1.0},"431":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":6,"docs":{"110":{"tf":1.0},"112":{"tf":1.0},"127":{"tf":1.0},"130":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"e":{"df":2,"docs":{"539":{"tf":1.4142135623730951},"543":{"tf":1.0}}},"i":{"d":{"df":2,"docs":{"181":{"tf":1.0},"363":{"tf":1.0}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":4,"docs":{"256":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"521":{"tf":1.0}}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":34,"docs":{"129":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951},"179":{"tf":1.7320508075688772},"181":{"tf":1.0},"183":{"tf":1.0},"190":{"tf":1.0},"200":{"tf":1.0},"223":{"tf":1.0},"226":{"tf":1.0},"234":{"tf":1.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.7320508075688772},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"279":{"tf":1.0},"286":{"tf":1.0},"347":{"tf":1.4142135623730951},"349":{"tf":1.7320508075688772},"370":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"410":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":1.7320508075688772},"469":{"tf":2.6457513110645907},"470":{"tf":2.449489742783178},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"560":{"tf":1.4142135623730951},"570":{"tf":1.0}}}},"v":{"df":19,"docs":{"179":{"tf":1.0},"278":{"tf":1.4142135623730951},"328":{"tf":1.0},"349":{"tf":1.0},"440":{"tf":1.0},"445":{"tf":1.7320508075688772},"457":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"478":{"tf":1.0},"490":{"tf":1.0},"499":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"54":{"tf":1.0},"561":{"tf":1.0},"579":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"470":{"tf":1.0},"473":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"(":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"167":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"195":{"tf":1.0},"196":{"tf":1.0}}}}}},"x":{".":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"457":{"tf":1.7320508075688772},"458":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"g":{"df":1,"docs":{"276":{"tf":1.7320508075688772}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.4142135623730951}}}}}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}},"df":0,"docs":{}},"w":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":3,"docs":{"19":{"tf":1.4142135623730951},"50":{"tf":1.4142135623730951},"54":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"217":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":18,"docs":{"153":{"tf":1.0},"178":{"tf":1.0},"192":{"tf":1.0},"24":{"tf":1.0},"251":{"tf":1.0},"292":{"tf":1.0},"302":{"tf":1.0},"339":{"tf":1.0},"367":{"tf":1.0},"37":{"tf":1.0},"421":{"tf":1.4142135623730951},"450":{"tf":1.0},"452":{"tf":1.0},"460":{"tf":1.0},"474":{"tf":1.0},"498":{"tf":1.0},"55":{"tf":1.0},"559":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":51,"docs":{"129":{"tf":1.0},"130":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.0},"181":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"221":{"tf":1.0},"241":{"tf":1.0},"245":{"tf":1.0},"248":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"276":{"tf":1.0},"29":{"tf":1.0},"292":{"tf":1.0},"312":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.7320508075688772},"336":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"397":{"tf":1.4142135623730951},"402":{"tf":1.0},"408":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"469":{"tf":1.0},"480":{"tf":1.0},"489":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"55":{"tf":1.0},"558":{"tf":1.0},"562":{"tf":1.0},"564":{"tf":1.0},"573":{"tf":1.0},"579":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"564":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"m":{"df":29,"docs":{"156":{"tf":2.6457513110645907},"16":{"tf":1.0},"168":{"tf":1.0},"177":{"tf":1.0},"218":{"tf":1.0},"27":{"tf":1.0},"278":{"tf":1.0},"319":{"tf":1.0},"324":{"tf":1.0},"347":{"tf":1.7320508075688772},"372":{"tf":1.0},"376":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"40":{"tf":1.0},"417":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"47":{"tf":1.0},"478":{"tf":1.4142135623730951},"487":{"tf":1.0},"51":{"tf":1.0},"539":{"tf":1.4142135623730951},"571":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.4142135623730951},"73":{"tf":1.0},"74":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"t":{"df":9,"docs":{"167":{"tf":1.0},"205":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"251":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"457":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"284":{"tf":1.0},"336":{"tf":1.0},"342":{"tf":1.0},"380":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"n":{"df":6,"docs":{"190":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"300":{"tf":1.0},"328":{"tf":1.0},"431":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"453":{"tf":1.0}}}}},"o":{"df":1,"docs":{"599":{"tf":1.0}}}},"p":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"110":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"i":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}},"df":10,"docs":{"200":{"tf":1.0},"25":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.0},"40":{"tf":1.0},"526":{"tf":1.0},"539":{"tf":1.0},"61":{"tf":1.0}}}},"u":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"284":{"tf":1.0},"393":{"tf":1.0}}},"df":0,"docs":{}},"p":{"df":2,"docs":{"292":{"tf":1.0},"294":{"tf":1.0}}},"r":{"c":{"df":56,"docs":{"103":{"tf":1.4142135623730951},"112":{"tf":1.7320508075688772},"120":{"tf":1.4142135623730951},"129":{"tf":1.4142135623730951},"138":{"tf":1.4142135623730951},"140":{"tf":1.0},"143":{"tf":1.0},"147":{"tf":1.4142135623730951},"154":{"tf":1.0},"157":{"tf":1.0},"162":{"tf":1.4142135623730951},"172":{"tf":1.7320508075688772},"178":{"tf":1.4142135623730951},"182":{"tf":1.4142135623730951},"192":{"tf":1.0},"204":{"tf":1.4142135623730951},"209":{"tf":2.8284271247461903},"212":{"tf":1.4142135623730951},"218":{"tf":1.0},"224":{"tf":1.4142135623730951},"238":{"tf":1.4142135623730951},"245":{"tf":1.0},"249":{"tf":1.4142135623730951},"262":{"tf":1.4142135623730951},"27":{"tf":1.4142135623730951},"271":{"tf":1.4142135623730951},"276":{"tf":1.0},"278":{"tf":1.4142135623730951},"279":{"tf":1.4142135623730951},"28":{"tf":1.0},"287":{"tf":1.4142135623730951},"292":{"tf":1.0},"295":{"tf":1.4142135623730951},"303":{"tf":1.4142135623730951},"321":{"tf":1.0},"331":{"tf":1.4142135623730951},"351":{"tf":1.4142135623730951},"364":{"tf":1.4142135623730951},"373":{"tf":1.4142135623730951},"384":{"tf":1.4142135623730951},"392":{"tf":1.4142135623730951},"399":{"tf":1.0},"400":{"tf":1.4142135623730951},"408":{"tf":1.0},"411":{"tf":1.4142135623730951},"426":{"tf":1.4142135623730951},"434":{"tf":1.4142135623730951},"440":{"tf":1.0},"443":{"tf":1.4142135623730951},"451":{"tf":1.4142135623730951},"461":{"tf":1.4142135623730951},"473":{"tf":1.4142135623730951},"481":{"tf":1.4142135623730951},"489":{"tf":1.0},"538":{"tf":1.0},"598":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"a":{"c":{"df":0,"docs":{},"e":{"df":6,"docs":{"156":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"561":{"tf":1.0},"89":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}},"w":{"df":0,"docs":{},"n":{"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":6,"docs":{"310":{"tf":2.23606797749979},"320":{"tf":1.0},"322":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"349":{"tf":1.7320508075688772},"360":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{"(":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"217":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"<":{"df":0,"docs":{},"f":{">":{"(":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"217":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":1,"docs":{"217":{"tf":2.0}}},"df":0,"docs":{}}}},"df":21,"docs":{"178":{"tf":1.0},"181":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"310":{"tf":1.7320508075688772},"322":{"tf":1.4142135623730951},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"341":{"tf":1.4142135623730951},"344":{"tf":1.0},"347":{"tf":2.0},"349":{"tf":1.0},"403":{"tf":1.0},"408":{"tf":1.0},"412":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.7320508075688772},"538":{"tf":1.0},"599":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{},"e":{"c":{"df":1,"docs":{"156":{"tf":1.0}},"i":{"a":{"df":0,"docs":{},"l":{"df":9,"docs":{"112":{"tf":1.0},"129":{"tf":1.0},"156":{"tf":1.0},"218":{"tf":1.0},"330":{"tf":1.0},"341":{"tf":1.0},"403":{"tf":1.0},"579":{"tf":1.0},"61":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"f":{"df":28,"docs":{"156":{"tf":1.0},"164":{"tf":1.0},"182":{"tf":1.0},"187":{"tf":1.0},"192":{"tf":1.0},"201":{"tf":1.0},"211":{"tf":1.0},"218":{"tf":1.0},"232":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"33":{"tf":1.7320508075688772},"336":{"tf":1.0},"34":{"tf":1.4142135623730951},"347":{"tf":1.0},"349":{"tf":1.0},"36":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"417":{"tf":1.4142135623730951},"431":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.7320508075688772},"486":{"tf":1.0},"496":{"tf":1.0},"538":{"tf":1.0},"543":{"tf":1.0},"56":{"tf":1.0}},"i":{"df":4,"docs":{"276":{"tf":1.0},"380":{"tf":1.0},"470":{"tf":1.0},"49":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"d":{"df":3,"docs":{"336":{"tf":1.0},"347":{"tf":1.0},"478":{"tf":1.0}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"380":{"tf":1.0},"40":{"tf":1.0}}}},"n":{"d":{"df":9,"docs":{"156":{"tf":1.0},"190":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"458":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}}},"i":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"259":{"tf":2.8284271247461903}}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"59":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"209":{"tf":1.0},"276":{"tf":1.7320508075688772}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"456":{"tf":1.0}}}},"t":{"df":1,"docs":{"259":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"372":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"l":{"df":3,"docs":{"370":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"365":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":1,"docs":{"336":{"tf":1.7320508075688772}}}}}}}},"q":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"178":{"tf":1.0}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"(":{"\"":{"df":0,"docs":{},"s":{"df":0,"docs":{},"q":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{"\"":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":2,"docs":{"177":{"tf":1.4142135623730951},"259":{"tf":1.4142135623730951}}}}},"x":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"a":{"df":0,"docs":{},"s":{"(":{"\"":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"177":{"tf":1.0},"178":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"177":{"tf":1.4142135623730951},"178":{"tf":1.4142135623730951}}}},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"z":{"df":2,"docs":{"256":{"tf":1.0},"521":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"522":{"tf":1.0}}}}}}}},"r":{"c":{"/":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"7":{"8":{"7":{":":{"9":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{":":{"2":{"7":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"1":{":":{"1":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{":":{"9":{"df":1,"docs":{"196":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"5":{"df":2,"docs":{"221":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"0":{":":{"5":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{":":{"1":{"4":{"df":1,"docs":{"307":{"tf":1.0}}},"7":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"6":{":":{"5":{"df":1,"docs":{"397":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"1":{"df":1,"docs":{"397":{"tf":1.0}}},"df":0,"docs":{}},"df":1,"docs":{"522":{"tf":1.4142135623730951}}},"2":{"2":{":":{"1":{"4":{"df":1,"docs":{"310":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{":":{"2":{"7":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"4":{"1":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{"5":{"df":1,"docs":{"209":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{":":{"5":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{":":{"2":{"5":{"df":1,"docs":{"522":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"9":{"df":1,"docs":{"397":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"5":{"2":{":":{"2":{"6":{"df":1,"docs":{"370":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"1":{":":{"4":{"3":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}}},"\\":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"1":{"3":{":":{"7":{"1":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{":":{"3":{"1":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"4":{":":{"3":{"1":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"a":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":4,"docs":{"156":{"tf":1.0},"292":{"tf":1.0},"572":{"tf":1.0},"91":{"tf":1.0}},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"230":{"tf":1.0}}}}}},"l":{"df":4,"docs":{"237":{"tf":1.4142135623730951},"239":{"tf":1.0},"310":{"tf":1.0},"380":{"tf":1.0}}}},"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"=":{"0":{"df":0,"docs":{},"x":{"0":{"0":{"0":{"0":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"d":{"c":{"7":{"8":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":34,"docs":{"112":{"tf":1.0},"128":{"tf":1.0},"136":{"tf":1.0},"138":{"tf":1.0},"140":{"tf":1.0},"156":{"tf":1.0},"209":{"tf":1.7320508075688772},"218":{"tf":1.7320508075688772},"221":{"tf":1.0},"230":{"tf":1.0},"242":{"tf":1.7320508075688772},"243":{"tf":1.0},"244":{"tf":1.7320508075688772},"245":{"tf":2.6457513110645907},"246":{"tf":1.7320508075688772},"247":{"tf":1.0},"248":{"tf":1.4142135623730951},"249":{"tf":1.0},"250":{"tf":1.4142135623730951},"251":{"tf":1.7320508075688772},"252":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"313":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"397":{"tf":2.449489742783178},"399":{"tf":1.4142135623730951},"402":{"tf":1.4142135623730951},"403":{"tf":1.0},"412":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}},"o":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":3,"docs":{"27":{"tf":1.0},"284":{"tf":1.4142135623730951},"470":{"tf":1.0}}}}}}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":12,"docs":{"156":{"tf":1.4142135623730951},"395":{"tf":1.7320508075688772},"396":{"tf":1.0},"397":{"tf":1.0},"398":{"tf":1.0},"399":{"tf":1.0},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.0},"403":{"tf":1.4142135623730951},"404":{"tf":1.0},"405":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"_":{"a":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"s":{"c":{"a":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"470":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":5,"docs":{"192":{"tf":1.0},"209":{"tf":1.0},"470":{"tf":1.0},"561":{"tf":1.7320508075688772},"562":{"tf":1.4142135623730951}}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"487":{"tf":1.0}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"422":{"tf":2.23606797749979},"423":{"tf":1.0},"426":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"347":{"tf":1.0}}}},"n":{"d":{"a":{"df":0,"docs":{},"r":{"d":{"df":28,"docs":{"127":{"tf":1.0},"156":{"tf":1.4142135623730951},"160":{"tf":1.0},"221":{"tf":1.0},"223":{"tf":1.0},"231":{"tf":1.0},"240":{"tf":1.0},"257":{"tf":1.4142135623730951},"268":{"tf":1.0},"28":{"tf":1.0},"3":{"tf":1.0},"329":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"381":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"390":{"tf":1.0},"397":{"tf":1.0},"398":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.7320508075688772},"422":{"tf":1.0},"449":{"tf":1.0},"47":{"tf":1.4142135623730951},"523":{"tf":1.0},"530":{"tf":1.0},"599":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":1,"docs":{"245":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"300":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"478":{"tf":1.0}}}},"t":{".":{"c":{":":{"3":{"0":{"8":{":":{"1":{"6":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":75,"docs":{"14":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":2.0},"157":{"tf":1.0},"160":{"tf":1.0},"171":{"tf":1.0},"197":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"24":{"tf":1.0},"245":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":1.0},"255":{"tf":1.0},"256":{"tf":1.7320508075688772},"257":{"tf":1.4142135623730951},"258":{"tf":1.7320508075688772},"259":{"tf":1.4142135623730951},"260":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.4142135623730951},"29":{"tf":1.0},"300":{"tf":2.0},"309":{"tf":1.4142135623730951},"311":{"tf":1.4142135623730951},"324":{"tf":1.4142135623730951},"329":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.4142135623730951},"366":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":2.0},"38":{"tf":1.0},"380":{"tf":2.0},"381":{"tf":1.0},"383":{"tf":1.0},"386":{"tf":1.0},"389":{"tf":1.4142135623730951},"390":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.4142135623730951},"398":{"tf":1.0},"408":{"tf":1.0},"42":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.7320508075688772},"449":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"463":{"tf":1.0},"472":{"tf":1.0},"475":{"tf":1.0},"480":{"tf":1.0},"489":{"tf":1.0},"516":{"tf":1.0},"521":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"525":{"tf":1.0},"526":{"tf":1.0},"538":{"tf":1.0},"556":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0},"9":{"tf":1.0}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"284":{"tf":1.0}}}}},"v":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"538":{"tf":1.0}}}},"df":2,"docs":{"122":{"tf":1.0},"349":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"s":{"c":{"a":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"_":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"h":{"df":0,"docs":{},"y":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},":":{":":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"199":{"tf":1.7320508075688772},"200":{"tf":1.7320508075688772}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"_":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":1,"docs":{"200":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{".":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":27,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":4.123105625617661},"200":{"tf":1.7320508075688772},"206":{"tf":1.0},"217":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":4.69041575982343},"309":{"tf":1.0},"328":{"tf":3.3166247903554},"336":{"tf":1.7320508075688772},"365":{"tf":1.0},"380":{"tf":1.0},"391":{"tf":1.0},"410":{"tf":1.0},"412":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"458":{"tf":1.4142135623730951},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"539":{"tf":1.0},"545":{"tf":1.0},"549":{"tf":1.0},"6":{"tf":1.0},"8":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"232":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"178":{"tf":1.4142135623730951},"343":{"tf":1.0},"450":{"tf":1.0}}}}}}},"i":{"c":{"df":16,"docs":{"136":{"tf":1.4142135623730951},"217":{"tf":2.449489742783178},"218":{"tf":1.7320508075688772},"268":{"tf":1.0},"292":{"tf":2.6457513110645907},"328":{"tf":1.7320508075688772},"336":{"tf":2.449489742783178},"347":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":2.6457513110645907},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"428":{"tf":1.0},"448":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"u":{"df":390,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.4142135623730951},"142":{"tf":1.0},"15":{"tf":1.7320508075688772},"151":{"tf":1.7320508075688772},"152":{"tf":1.4142135623730951},"153":{"tf":1.7320508075688772},"154":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.4142135623730951},"157":{"tf":2.449489742783178},"158":{"tf":2.449489742783178},"159":{"tf":1.0},"16":{"tf":1.7320508075688772},"160":{"tf":1.0},"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"165":{"tf":1.7320508075688772},"166":{"tf":2.449489742783178},"167":{"tf":1.0},"168":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":1.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"175":{"tf":1.7320508075688772},"176":{"tf":2.449489742783178},"177":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"185":{"tf":1.7320508075688772},"186":{"tf":2.449489742783178},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"19":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"193":{"tf":1.7320508075688772},"194":{"tf":2.449489742783178},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"201":{"tf":1.0},"202":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"207":{"tf":1.7320508075688772},"208":{"tf":2.449489742783178},"209":{"tf":1.0},"21":{"tf":1.0},"210":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"215":{"tf":1.7320508075688772},"216":{"tf":2.449489742783178},"217":{"tf":1.0},"218":{"tf":1.0},"219":{"tf":1.7320508075688772},"220":{"tf":2.449489742783178},"221":{"tf":1.0},"222":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"227":{"tf":1.7320508075688772},"228":{"tf":2.0},"229":{"tf":1.0},"23":{"tf":2.23606797749979},"230":{"tf":1.0},"231":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"236":{"tf":1.0},"237":{"tf":1.0},"238":{"tf":1.0},"239":{"tf":1.0},"24":{"tf":2.0},"240":{"tf":1.0},"241":{"tf":1.0},"242":{"tf":1.7320508075688772},"243":{"tf":2.0},"244":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"247":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.0},"25":{"tf":1.7320508075688772},"250":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":2.0},"255":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"26":{"tf":1.0},"260":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.7320508075688772},"267":{"tf":2.449489742783178},"268":{"tf":1.0},"269":{"tf":1.0},"27":{"tf":2.0},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"274":{"tf":1.7320508075688772},"275":{"tf":2.449489742783178},"276":{"tf":1.0},"277":{"tf":1.0},"278":{"tf":1.0},"279":{"tf":1.0},"28":{"tf":1.4142135623730951},"280":{"tf":1.0},"281":{"tf":1.0},"282":{"tf":1.7320508075688772},"283":{"tf":2.449489742783178},"284":{"tf":1.0},"285":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.7320508075688772},"290":{"tf":1.7320508075688772},"291":{"tf":2.449489742783178},"292":{"tf":1.0},"293":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"298":{"tf":1.7320508075688772},"299":{"tf":2.449489742783178},"30":{"tf":1.0},"300":{"tf":1.0},"301":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0},"305":{"tf":1.7320508075688772},"306":{"tf":2.449489742783178},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.0},"31":{"tf":1.7320508075688772},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"325":{"tf":1.0},"326":{"tf":1.7320508075688772},"327":{"tf":2.0},"328":{"tf":1.0},"329":{"tf":1.0},"33":{"tf":1.0},"330":{"tf":1.0},"331":{"tf":1.0},"332":{"tf":1.0},"333":{"tf":1.0},"334":{"tf":1.7320508075688772},"335":{"tf":2.449489742783178},"336":{"tf":1.0},"337":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.0},"34":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0},"345":{"tf":1.7320508075688772},"346":{"tf":2.449489742783178},"347":{"tf":1.0},"348":{"tf":1.0},"349":{"tf":1.0},"35":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"354":{"tf":1.7320508075688772},"355":{"tf":2.0},"356":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"36":{"tf":1.7320508075688772},"360":{"tf":1.0},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"368":{"tf":1.7320508075688772},"369":{"tf":2.449489742783178},"370":{"tf":1.0},"371":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"374":{"tf":1.0},"375":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.7320508075688772},"379":{"tf":2.449489742783178},"380":{"tf":1.0},"381":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"386":{"tf":1.0},"387":{"tf":1.7320508075688772},"388":{"tf":2.0},"389":{"tf":1.0},"390":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"395":{"tf":1.7320508075688772},"396":{"tf":2.449489742783178},"397":{"tf":1.0},"398":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.0},"403":{"tf":1.0},"404":{"tf":1.0},"405":{"tf":1.0},"406":{"tf":1.7320508075688772},"407":{"tf":2.449489742783178},"408":{"tf":1.0},"409":{"tf":1.0},"41":{"tf":1.4142135623730951},"410":{"tf":1.0},"411":{"tf":1.0},"412":{"tf":1.0},"413":{"tf":1.0},"414":{"tf":1.0},"415":{"tf":1.0},"416":{"tf":2.449489742783178},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.4142135623730951},"420":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"424":{"tf":1.0},"425":{"tf":1.0},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0},"429":{"tf":1.7320508075688772},"430":{"tf":2.0},"431":{"tf":1.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0},"438":{"tf":1.7320508075688772},"439":{"tf":2.0},"440":{"tf":1.0},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"446":{"tf":1.7320508075688772},"447":{"tf":2.449489742783178},"448":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"454":{"tf":1.7320508075688772},"455":{"tf":2.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.0},"46":{"tf":1.7320508075688772},"460":{"tf":1.0},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"466":{"tf":1.7320508075688772},"467":{"tf":2.449489742783178},"468":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.0},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":1.0},"475":{"tf":1.0},"476":{"tf":1.7320508075688772},"477":{"tf":2.449489742783178},"478":{"tf":1.0},"479":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"490":{"tf":1.4142135623730951},"493":{"tf":1.7320508075688772},"501":{"tf":1.4142135623730951},"506":{"tf":1.4142135623730951},"507":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"525":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951},"53":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"54":{"tf":1.0},"541":{"tf":1.4142135623730951},"55":{"tf":1.0},"551":{"tf":1.0},"553":{"tf":1.0},"56":{"tf":1.7320508075688772},"562":{"tf":1.0},"58":{"tf":1.0},"59":{"tf":1.4142135623730951},"597":{"tf":1.0},"598":{"tf":1.0},"61":{"tf":1.4142135623730951},"64":{"tf":1.0},"9":{"tf":1.0},"98":{"tf":1.0}},"s":{"_":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"o":{"df":2,"docs":{"157":{"tf":1.0},"26":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"292":{"tf":2.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"y":{"df":2,"docs":{"125":{"tf":1.0},"417":{"tf":1.0}}}},"d":{"'":{"df":1,"docs":{"167":{"tf":1.0}}},"/":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"/":{"6":{"3":{"1":{"df":1,"docs":{"349":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},":":{":":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":1,"docs":{"526":{"tf":1.0}}}},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"522":{"tf":1.7320508075688772},"523":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"522":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":2,"docs":{"502":{"tf":1.0},"503":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"502":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"502":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"419":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":5,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"502":{"tf":1.0},"522":{"tf":2.0},"523":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"f":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":1,"docs":{"522":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"383":{"tf":1.0}},"e":{"<":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"292":{"tf":1.4142135623730951}}}}}}}}},"df":0,"docs":{}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":2,"docs":{"380":{"tf":2.23606797749979},"383":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"=":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"307":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"310":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"+":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{">":{":":{":":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"#":{"0":{"df":1,"docs":{"440":{"tf":3.4641016151377544}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"440":{"tf":4.242640687119285}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"199":{"tf":1.0},"200":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"323":{"tf":1.0}}}}}}},"p":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"c":{":":{":":{"c":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{":":{":":{"df":0,"docs":{},"h":{"8":{"3":{"6":{"6":{"7":{"1":{"9":{"d":{"1":{"df":0,"docs":{},"f":{"6":{"1":{"5":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":1,"docs":{"404":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{":":{":":{"d":{"df":0,"docs":{},"o":{"_":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"h":{"6":{"b":{"0":{"df":0,"docs":{},"f":{"4":{"3":{"0":{"d":{"4":{"8":{"1":{"2":{"2":{"d":{"d":{"df":0,"docs":{},"f":{"df":1,"docs":{"404":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"6":{"b":{"a":{"4":{"2":{"0":{"df":0,"docs":{},"e":{"2":{"df":0,"docs":{},"e":{"2":{"1":{"b":{"5":{"a":{"df":0,"docs":{},"f":{"a":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":1,"docs":{"198":{"tf":1.0}}}}},"r":{"c":{":":{":":{"df":0,"docs":{},"r":{"c":{"df":2,"docs":{"419":{"tf":1.0},"421":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"268":{"tf":1.0}},"g":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"r":{"d":{"<":{"'":{"_":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"457":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"<":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"397":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"397":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"383":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"v":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"y":{":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{":":{":":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"<":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":24,"docs":{"156":{"tf":1.4142135623730951},"233":{"tf":1.0},"276":{"tf":1.4142135623730951},"3":{"tf":1.0},"325":{"tf":1.0},"365":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.0},"483":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.7320508075688772},"509":{"tf":1.4142135623730951},"513":{"tf":1.4142135623730951},"515":{"tf":2.0},"516":{"tf":1.0},"517":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"535":{"tf":1.0},"544":{"tf":1.0},"572":{"tf":1.0},"599":{"tf":1.4142135623730951}},"l":{"df":0,"docs":{},"i":{"b":{"df":3,"docs":{"399":{"tf":1.0},"478":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"l":{"df":2,"docs":{"319":{"tf":1.0},"328":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":3,"docs":{"156":{"tf":1.0},"261":{"tf":1.0},"470":{"tf":1.0}}}},"p":{"df":16,"docs":{"181":{"tf":1.0},"199":{"tf":1.0},"336":{"tf":2.23606797749979},"386":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.4142135623730951},"41":{"tf":1.0},"417":{"tf":1.0},"440":{"tf":1.0},"448":{"tf":1.0},"450":{"tf":1.0},"516":{"tf":1.7320508075688772},"534":{"tf":1.4142135623730951},"548":{"tf":1.4142135623730951},"549":{"tf":1.0},"56":{"tf":1.0}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"54":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"481":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":4,"docs":{"258":{"tf":1.0},"278":{"tf":1.0},"361":{"tf":1.0},"456":{"tf":1.4142135623730951}}},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":40,"docs":{"134":{"tf":1.0},"152":{"tf":1.0},"153":{"tf":1.0},"178":{"tf":1.4142135623730951},"225":{"tf":1.0},"237":{"tf":1.0},"263":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.4142135623730951},"300":{"tf":1.0},"310":{"tf":1.0},"315":{"tf":1.0},"328":{"tf":1.0},"358":{"tf":1.0},"361":{"tf":1.0},"365":{"tf":1.0},"380":{"tf":1.4142135623730951},"401":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"413":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":1.0},"456":{"tf":1.0},"48":{"tf":1.0},"485":{"tf":1.0},"49":{"tf":1.0},"538":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"558":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":1.7320508075688772},"62":{"tf":1.0},"74":{"tf":1.0},"89":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":10,"docs":{"2":{"tf":1.0},"217":{"tf":1.0},"256":{"tf":1.0},"268":{"tf":1.0},"341":{"tf":1.0},"404":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.7320508075688772},"451":{"tf":1.0},"521":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"221":{"tf":1.0}}}}}},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"571":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":9,"docs":{"167":{"tf":1.0},"169":{"tf":1.0},"199":{"tf":1.4142135623730951},"209":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"380":{"tf":1.0},"572":{"tf":1.0}}},"i":{"df":316,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"14":{"tf":1.7320508075688772},"142":{"tf":1.0},"15":{"tf":2.23606797749979},"151":{"tf":1.4142135623730951},"152":{"tf":1.4142135623730951},"153":{"tf":2.0},"154":{"tf":2.449489742783178},"155":{"tf":2.23606797749979},"156":{"tf":2.449489742783178},"157":{"tf":2.0},"158":{"tf":2.0},"159":{"tf":1.7320508075688772},"16":{"tf":2.6457513110645907},"161":{"tf":1.4142135623730951},"162":{"tf":1.7320508075688772},"163":{"tf":1.7320508075688772},"164":{"tf":1.4142135623730951},"165":{"tf":1.4142135623730951},"166":{"tf":1.7320508075688772},"167":{"tf":1.4142135623730951},"17":{"tf":1.0},"171":{"tf":1.4142135623730951},"172":{"tf":1.7320508075688772},"173":{"tf":1.4142135623730951},"174":{"tf":1.7320508075688772},"175":{"tf":1.4142135623730951},"176":{"tf":2.0},"18":{"tf":1.0},"181":{"tf":2.0},"182":{"tf":1.7320508075688772},"183":{"tf":1.4142135623730951},"184":{"tf":1.7320508075688772},"185":{"tf":1.4142135623730951},"186":{"tf":2.0},"187":{"tf":1.4142135623730951},"192":{"tf":2.23606797749979},"193":{"tf":1.4142135623730951},"194":{"tf":2.0},"195":{"tf":1.4142135623730951},"203":{"tf":1.4142135623730951},"204":{"tf":1.7320508075688772},"205":{"tf":1.4142135623730951},"206":{"tf":1.7320508075688772},"207":{"tf":1.4142135623730951},"208":{"tf":2.0},"209":{"tf":1.4142135623730951},"21":{"tf":1.0},"211":{"tf":1.4142135623730951},"212":{"tf":1.4142135623730951},"213":{"tf":1.4142135623730951},"214":{"tf":1.4142135623730951},"215":{"tf":1.4142135623730951},"216":{"tf":2.0},"217":{"tf":1.4142135623730951},"218":{"tf":2.449489742783178},"219":{"tf":1.4142135623730951},"220":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"223":{"tf":1.4142135623730951},"224":{"tf":1.4142135623730951},"225":{"tf":2.23606797749979},"226":{"tf":1.4142135623730951},"227":{"tf":1.4142135623730951},"228":{"tf":1.0},"229":{"tf":1.4142135623730951},"23":{"tf":2.23606797749979},"233":{"tf":1.0},"237":{"tf":1.4142135623730951},"238":{"tf":1.4142135623730951},"239":{"tf":1.4142135623730951},"24":{"tf":2.23606797749979},"240":{"tf":1.4142135623730951},"241":{"tf":1.7320508075688772},"242":{"tf":1.4142135623730951},"243":{"tf":1.0},"248":{"tf":1.4142135623730951},"249":{"tf":2.0},"25":{"tf":2.6457513110645907},"250":{"tf":2.0},"251":{"tf":1.4142135623730951},"253":{"tf":1.4142135623730951},"254":{"tf":1.0},"255":{"tf":1.4142135623730951},"258":{"tf":1.0},"26":{"tf":1.0},"261":{"tf":1.4142135623730951},"262":{"tf":1.4142135623730951},"263":{"tf":1.4142135623730951},"264":{"tf":1.4142135623730951},"265":{"tf":1.4142135623730951},"266":{"tf":1.4142135623730951},"267":{"tf":2.0},"268":{"tf":1.4142135623730951},"27":{"tf":2.23606797749979},"270":{"tf":1.4142135623730951},"271":{"tf":1.4142135623730951},"272":{"tf":1.4142135623730951},"273":{"tf":1.4142135623730951},"274":{"tf":1.4142135623730951},"275":{"tf":2.0},"276":{"tf":1.4142135623730951},"278":{"tf":1.4142135623730951},"279":{"tf":1.4142135623730951},"28":{"tf":2.6457513110645907},"280":{"tf":1.4142135623730951},"281":{"tf":1.4142135623730951},"282":{"tf":1.4142135623730951},"283":{"tf":2.0},"284":{"tf":1.4142135623730951},"286":{"tf":1.4142135623730951},"287":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"289":{"tf":1.4142135623730951},"29":{"tf":2.0},"290":{"tf":1.4142135623730951},"291":{"tf":2.0},"292":{"tf":1.4142135623730951},"294":{"tf":1.4142135623730951},"295":{"tf":1.4142135623730951},"296":{"tf":1.4142135623730951},"297":{"tf":1.4142135623730951},"298":{"tf":1.4142135623730951},"299":{"tf":2.0},"30":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.4142135623730951},"303":{"tf":1.4142135623730951},"304":{"tf":1.4142135623730951},"305":{"tf":1.4142135623730951},"306":{"tf":2.0},"307":{"tf":1.4142135623730951},"31":{"tf":1.7320508075688772},"315":{"tf":1.4142135623730951},"316":{"tf":1.7320508075688772},"317":{"tf":1.4142135623730951},"32":{"tf":2.23606797749979},"325":{"tf":1.4142135623730951},"326":{"tf":1.4142135623730951},"327":{"tf":1.0},"328":{"tf":1.4142135623730951},"33":{"tf":1.7320508075688772},"330":{"tf":1.4142135623730951},"331":{"tf":1.7320508075688772},"332":{"tf":1.7320508075688772},"333":{"tf":1.7320508075688772},"334":{"tf":1.4142135623730951},"335":{"tf":2.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.4142135623730951},"339":{"tf":1.7320508075688772},"34":{"tf":1.0},"340":{"tf":1.4142135623730951},"345":{"tf":1.4142135623730951},"346":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"349":{"tf":1.0},"35":{"tf":1.7320508075688772},"350":{"tf":1.4142135623730951},"351":{"tf":1.4142135623730951},"352":{"tf":1.7320508075688772},"353":{"tf":1.4142135623730951},"354":{"tf":1.4142135623730951},"355":{"tf":1.0},"36":{"tf":1.7320508075688772},"363":{"tf":1.7320508075688772},"364":{"tf":1.4142135623730951},"365":{"tf":1.4142135623730951},"366":{"tf":2.23606797749979},"367":{"tf":1.7320508075688772},"368":{"tf":1.4142135623730951},"369":{"tf":2.0},"37":{"tf":2.449489742783178},"370":{"tf":1.4142135623730951},"372":{"tf":1.4142135623730951},"373":{"tf":1.4142135623730951},"376":{"tf":1.4142135623730951},"377":{"tf":1.4142135623730951},"378":{"tf":1.4142135623730951},"379":{"tf":2.0},"38":{"tf":1.4142135623730951},"380":{"tf":1.4142135623730951},"382":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"384":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"386":{"tf":1.7320508075688772},"387":{"tf":1.4142135623730951},"388":{"tf":1.0},"389":{"tf":1.4142135623730951},"39":{"tf":1.0},"391":{"tf":1.4142135623730951},"392":{"tf":1.7320508075688772},"393":{"tf":1.4142135623730951},"394":{"tf":1.4142135623730951},"395":{"tf":1.4142135623730951},"396":{"tf":2.0},"397":{"tf":1.4142135623730951},"399":{"tf":1.4142135623730951},"40":{"tf":2.449489742783178},"400":{"tf":1.4142135623730951},"401":{"tf":1.4142135623730951},"402":{"tf":1.4142135623730951},"406":{"tf":1.4142135623730951},"407":{"tf":2.0},"408":{"tf":1.4142135623730951},"41":{"tf":2.449489742783178},"410":{"tf":1.4142135623730951},"411":{"tf":1.4142135623730951},"413":{"tf":1.4142135623730951},"414":{"tf":1.7320508075688772},"416":{"tf":2.0},"417":{"tf":1.4142135623730951},"42":{"tf":1.7320508075688772},"425":{"tf":1.4142135623730951},"426":{"tf":1.4142135623730951},"427":{"tf":1.4142135623730951},"428":{"tf":1.4142135623730951},"429":{"tf":1.4142135623730951},"43":{"tf":1.0},"430":{"tf":1.0},"431":{"tf":1.4142135623730951},"433":{"tf":1.4142135623730951},"434":{"tf":1.4142135623730951},"435":{"tf":1.7320508075688772},"436":{"tf":1.4142135623730951},"437":{"tf":1.4142135623730951},"438":{"tf":1.4142135623730951},"439":{"tf":1.0},"44":{"tf":1.7320508075688772},"440":{"tf":1.4142135623730951},"442":{"tf":1.4142135623730951},"443":{"tf":1.4142135623730951},"444":{"tf":1.4142135623730951},"445":{"tf":1.4142135623730951},"447":{"tf":2.0},"448":{"tf":1.4142135623730951},"45":{"tf":2.0},"450":{"tf":1.4142135623730951},"451":{"tf":1.4142135623730951},"452":{"tf":1.4142135623730951},"453":{"tf":1.4142135623730951},"454":{"tf":1.4142135623730951},"455":{"tf":1.0},"456":{"tf":1.4142135623730951},"46":{"tf":2.23606797749979},"460":{"tf":1.4142135623730951},"461":{"tf":1.4142135623730951},"462":{"tf":1.4142135623730951},"463":{"tf":1.7320508075688772},"466":{"tf":1.4142135623730951},"467":{"tf":2.0},"468":{"tf":1.4142135623730951},"47":{"tf":2.449489742783178},"472":{"tf":1.4142135623730951},"473":{"tf":1.7320508075688772},"474":{"tf":1.7320508075688772},"475":{"tf":1.7320508075688772},"476":{"tf":1.4142135623730951},"477":{"tf":2.0},"478":{"tf":1.4142135623730951},"48":{"tf":1.0},"480":{"tf":1.7320508075688772},"481":{"tf":1.4142135623730951},"482":{"tf":1.4142135623730951},"483":{"tf":1.4142135623730951},"485":{"tf":1.4142135623730951},"487":{"tf":1.0},"488":{"tf":1.4142135623730951},"489":{"tf":2.0},"49":{"tf":1.0},"490":{"tf":2.0},"491":{"tf":1.7320508075688772},"492":{"tf":1.0},"493":{"tf":1.7320508075688772},"497":{"tf":2.23606797749979},"498":{"tf":2.6457513110645907},"499":{"tf":1.0},"50":{"tf":1.0},"500":{"tf":1.4142135623730951},"501":{"tf":2.0},"502":{"tf":1.4142135623730951},"506":{"tf":2.0},"507":{"tf":1.4142135623730951},"509":{"tf":1.0},"51":{"tf":2.0},"518":{"tf":1.4142135623730951},"519":{"tf":2.0},"520":{"tf":1.4142135623730951},"525":{"tf":2.0},"526":{"tf":1.4142135623730951},"527":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.0},"534":{"tf":1.4142135623730951},"536":{"tf":1.4142135623730951},"537":{"tf":2.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.7320508075688772},"54":{"tf":2.6457513110645907},"541":{"tf":2.0},"55":{"tf":1.7320508075688772},"56":{"tf":1.7320508075688772},"57":{"tf":1.7320508075688772},"59":{"tf":2.449489742783178},"601":{"tf":1.0},"602":{"tf":1.7320508075688772},"603":{"tf":1.0},"64":{"tf":1.4142135623730951},"9":{"tf":2.0},"94":{"tf":1.0},"96":{"tf":1.4142135623730951},"98":{"tf":1.0}}},"y":{"'":{"df":2,"docs":{"29":{"tf":1.0},"42":{"tf":1.0}}},"]":{"[":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"v":{"df":0,"docs":{},"s":{"df":0,"docs":{},"q":{"df":3,"docs":{"166":{"tf":1.0},"220":{"tf":1.0},"346":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"179":{"tf":1.0}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":2,"docs":{"423":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"331":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":2,"docs":{"209":{"tf":1.0},"470":{"tf":1.4142135623730951}}}}}},"y":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":2,"docs":{"309":{"tf":1.0},"375":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"m":{"'":{"df":1,"docs":{"199":{"tf":1.0}}},":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":2,"docs":{"458":{"tf":1.4142135623730951},"465":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":2,"docs":{"191":{"tf":1.0},"458":{"tf":1.0}}}}}}},"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"(":{"c":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":1,"docs":{"458":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":44,"docs":{"156":{"tf":2.0},"188":{"tf":1.0},"193":{"tf":1.7320508075688772},"194":{"tf":1.0},"195":{"tf":2.23606797749979},"196":{"tf":1.7320508075688772},"197":{"tf":2.23606797749979},"198":{"tf":1.0},"199":{"tf":1.0},"2":{"tf":1.0},"200":{"tf":1.4142135623730951},"201":{"tf":1.4142135623730951},"202":{"tf":1.0},"203":{"tf":1.4142135623730951},"204":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"258":{"tf":1.0},"276":{"tf":1.7320508075688772},"313":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":2.6457513110645907},"387":{"tf":1.7320508075688772},"388":{"tf":1.0},"389":{"tf":2.8284271247461903},"390":{"tf":1.0},"391":{"tf":2.23606797749979},"392":{"tf":1.7320508075688772},"393":{"tf":1.7320508075688772},"394":{"tf":2.0},"4":{"tf":1.0},"418":{"tf":1.7320508075688772},"458":{"tf":2.23606797749979},"460":{"tf":1.7320508075688772},"462":{"tf":1.0},"567":{"tf":1.7320508075688772},"568":{"tf":1.4142135623730951},"569":{"tf":1.0},"570":{"tf":1.0},"571":{"tf":2.0},"572":{"tf":1.0},"573":{"tf":1.4142135623730951},"599":{"tf":1.7320508075688772},"61":{"tf":1.4142135623730951}},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"df":2,"docs":{"276":{"tf":1.0},"572":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"418":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"s":{"/":{"#":{"df":0,"docs":{},"w":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":1,"docs":{"279":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"458":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"431":{"tf":1.0},"62":{"tf":2.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"62":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"347":{"tf":1.0}}}},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"e":{"[":{"0":{".":{".":{"1":{"df":1,"docs":{"375":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}},"df":7,"docs":{"156":{"tf":1.0},"167":{"tf":1.0},"169":{"tf":1.0},"217":{"tf":1.7320508075688772},"268":{"tf":2.0},"276":{"tf":1.4142135623730951},"375":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"156":{"tf":1.0}}}}}}},"p":{"df":1,"docs":{"292":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"156":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":10,"docs":{"110":{"tf":1.0},"341":{"tf":1.0},"394":{"tf":1.0},"41":{"tf":1.0},"456":{"tf":1.0},"529":{"tf":1.0},"61":{"tf":1.0},"65":{"tf":1.0},"77":{"tf":1.0},"87":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"414":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"470":{"tf":1.0}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":16,"docs":{"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.0},"245":{"tf":1.0},"268":{"tf":1.0},"328":{"tf":2.0},"336":{"tf":1.0},"380":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"421":{"tf":2.6457513110645907},"458":{"tf":1.0},"508":{"tf":1.4142135623730951},"599":{"tf":1.0}},"u":{"df":0,"docs":{},"r":{"df":4,"docs":{"199":{"tf":1.0},"419":{"tf":1.0},"470":{"tf":1.0},"599":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":8,"docs":{"134":{"tf":1.0},"189":{"tf":1.0},"218":{"tf":1.0},"240":{"tf":1.0},"292":{"tf":1.0},"297":{"tf":1.0},"340":{"tf":1.0},"463":{"tf":1.0}}}}}}},"u":{"c":{"df":0,"docs":{},"k":{"df":7,"docs":{"246":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.0},"35":{"tf":1.0},"370":{"tf":1.0},"408":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"469":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"o":{"'":{"df":1,"docs":{"284":{"tf":1.0}}},"df":1,"docs":{"414":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":12,"docs":{"157":{"tf":1.0},"190":{"tf":1.0},"198":{"tf":1.0},"273":{"tf":1.0},"307":{"tf":1.4142135623730951},"308":{"tf":1.4142135623730951},"309":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"40":{"tf":1.0},"417":{"tf":1.0},"489":{"tf":1.0},"522":{"tf":1.0}}}},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"358":{"tf":1.0}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":7,"docs":{"199":{"tf":1.0},"218":{"tf":1.0},"344":{"tf":1.0},"393":{"tf":1.0},"423":{"tf":1.0},"440":{"tf":1.4142135623730951},"462":{"tf":1.0}}}}}},"u":{"b":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"469":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"271":{"tf":1.0},"475":{"tf":1.0},"598":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":41,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"17":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"58":{"tf":1.0},"6":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"d":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"359":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"159":{"tf":1.0},"491":{"tf":1.0}}}},"df":0,"docs":{},"t":{"df":3,"docs":{"155":{"tf":1.0},"156":{"tf":1.0},"515":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"l":{"df":6,"docs":{"156":{"tf":2.0},"251":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"372":{"tf":1.0},"539":{"tf":1.4142135623730951}},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"272":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"538":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"c":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}},"e":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"292":{"tf":1.0}}}}}}}},"c":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"209":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":6,"docs":{"129":{"tf":1.0},"256":{"tf":1.0},"380":{"tf":1.0},"521":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":5,"docs":{"169":{"tf":1.0},"268":{"tf":1.0},"322":{"tf":1.4142135623730951},"380":{"tf":1.0},"431":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{},"h":{"df":23,"docs":{"127":{"tf":1.4142135623730951},"190":{"tf":1.0},"209":{"tf":1.0},"218":{"tf":1.0},"252":{"tf":1.0},"268":{"tf":1.0},"286":{"tf":1.0},"288":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"338":{"tf":1.0},"451":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"472":{"tf":1.0},"499":{"tf":1.0},"538":{"tf":1.0},"542":{"tf":1.0},"62":{"tf":1.0},"82":{"tf":1.0}}}},"d":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"217":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"539":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"209":{"tf":1.0}}}},"i":{"c":{"df":0,"docs":{},"i":{"df":3,"docs":{"360":{"tf":1.0},"457":{"tf":1.0},"546":{"tf":1.0}}}},"df":0,"docs":{}}}},"g":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"370":{"tf":1.0},"457":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":14,"docs":{"16":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"279":{"tf":1.0},"347":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":1.0},"389":{"tf":1.0},"522":{"tf":1.4142135623730951},"572":{"tf":1.0},"59":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":5,"docs":{"336":{"tf":1.0},"338":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.4142135623730951},"527":{"tf":1.0}}}},"df":0,"docs":{}},"df":1,"docs":{"470":{"tf":1.0}}}},"m":{"(":{"df":0,"docs":{},"n":{"df":1,"docs":{"370":{"tf":3.4641016151377544}}}},"df":1,"docs":{"15":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"z":{"df":1,"docs":{"598":{"tf":1.0}}}},"r":{"df":2,"docs":{"156":{"tf":1.0},"494":{"tf":1.0}},"i":{"df":2,"docs":{"154":{"tf":1.4142135623730951},"597":{"tf":1.0}}},"y":{".":{"df":0,"docs":{},"m":{"d":{"df":10,"docs":{"157":{"tf":1.0},"16":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"296":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"357":{"tf":1.0}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"259":{"tf":1.0}}}}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":4,"docs":{"218":{"tf":1.0},"508":{"tf":1.0},"539":{"tf":1.0},"546":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":35,"docs":{"110":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"192":{"tf":1.4142135623730951},"209":{"tf":1.0},"221":{"tf":1.7320508075688772},"230":{"tf":1.4142135623730951},"232":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"3":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.7320508075688772},"340":{"tf":1.0},"341":{"tf":1.7320508075688772},"370":{"tf":1.4142135623730951},"389":{"tf":1.0},"405":{"tf":1.4142135623730951},"41":{"tf":1.0},"421":{"tf":1.0},"474":{"tf":1.0},"502":{"tf":1.0},"509":{"tf":2.0},"53":{"tf":1.4142135623730951},"544":{"tf":1.0},"545":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.0},"87":{"tf":1.4142135623730951}}}},"s":{"df":2,"docs":{"310":{"tf":1.0},"522":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":21,"docs":{"131":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.0},"22":{"tf":1.0},"23":{"tf":1.0},"276":{"tf":1.0},"281":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"296":{"tf":1.0},"300":{"tf":1.0},"36":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":1.4142135623730951},"421":{"tf":1.0},"456":{"tf":1.0},"487":{"tf":1.0},"506":{"tf":1.0},"62":{"tf":1.0}}},"f":{"a":{"c":{"df":3,"docs":{"156":{"tf":1.0},"347":{"tf":1.0},"394":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":12,"docs":{"231":{"tf":1.0},"234":{"tf":1.0},"258":{"tf":1.0},"261":{"tf":1.0},"272":{"tf":1.0},"347":{"tf":1.0},"380":{"tf":1.4142135623730951},"448":{"tf":1.0},"481":{"tf":1.0},"497":{"tf":1.4142135623730951},"529":{"tf":1.0},"59":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"408":{"tf":1.0},"538":{"tf":1.0}}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"276":{"tf":1.0},"359":{"tf":1.0}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":3,"docs":{"284":{"tf":1.0},"297":{"tf":1.0},"546":{"tf":1.0}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"156":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{}}}}},"w":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"538":{"tf":1.0},"539":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":34,"docs":{"209":{"tf":1.0},"233":{"tf":1.0},"268":{"tf":1.7320508075688772},"276":{"tf":1.0},"292":{"tf":1.0},"309":{"tf":1.4142135623730951},"359":{"tf":1.0},"380":{"tf":1.0},"422":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"470":{"tf":1.0},"500":{"tf":1.7320508075688772},"501":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"505":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.4142135623730951},"512":{"tf":1.0},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"y":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":3,"docs":{"397":{"tf":1.0},"399":{"tf":1.0},"401":{"tf":1.0}}}}},"df":0,"docs":{}},"n":{"c":{"/":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"302":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":37,"docs":{"156":{"tf":2.23606797749979},"191":{"tf":1.0},"218":{"tf":1.7320508075688772},"292":{"tf":1.4142135623730951},"300":{"tf":2.6457513110645907},"305":{"tf":1.7320508075688772},"306":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.7320508075688772},"311":{"tf":1.4142135623730951},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":2.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":2.23606797749979},"322":{"tf":1.0},"323":{"tf":1.7320508075688772},"324":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"341":{"tf":1.0},"365":{"tf":1.0},"408":{"tf":1.7320508075688772},"423":{"tf":1.0},"448":{"tf":1.4142135623730951},"531":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":19,"docs":{"156":{"tf":1.7320508075688772},"179":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"232":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.7320508075688772},"308":{"tf":1.0},"309":{"tf":1.0},"313":{"tf":1.0},"320":{"tf":1.4142135623730951},"321":{"tf":2.23606797749979},"323":{"tf":1.0},"324":{"tf":1.4142135623730951},"344":{"tf":1.0},"389":{"tf":1.4142135623730951},"502":{"tf":1.0},"522":{"tf":1.0},"61":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}},"df":0,"docs":{},"x":{"df":10,"docs":{"196":{"tf":1.4142135623730951},"218":{"tf":1.0},"292":{"tf":1.7320508075688772},"336":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"570":{"tf":1.0},"573":{"tf":1.7320508075688772},"74":{"tf":1.0},"89":{"tf":1.0}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":1,"docs":{"502":{"tf":1.0}}}}}}},"s":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"v":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"/":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"_":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"c":{":":{"3":{"0":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":39,"docs":{"108":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.4142135623730951},"199":{"tf":1.0},"211":{"tf":1.0},"273":{"tf":1.0},"284":{"tf":1.0},"289":{"tf":1.4142135623730951},"318":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"339":{"tf":1.0},"347":{"tf":1.7320508075688772},"356":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.7320508075688772},"394":{"tf":1.4142135623730951},"408":{"tf":1.0},"410":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.0},"436":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"522":{"tf":1.0},"539":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":2.449489742783178},"65":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"79":{"tf":1.7320508075688772},"8":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"192":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"t":{"0":{"df":1,"docs":{"440":{"tf":2.0}}},"1":{"df":1,"docs":{"440":{"tf":2.0}}},"=":{"0":{"df":0,"docs":{},"x":{"7":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"c":{"a":{"df":0,"docs":{},"f":{"0":{"df":1,"docs":{"284":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},">":{"(":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"<":{"'":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"421":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"b":{"df":1,"docs":{"397":{"tf":1.0}},"l":{"df":3,"docs":{"156":{"tf":1.0},"408":{"tf":1.0},"538":{"tf":1.0}}}},"d":{"a":{"df":1,"docs":{"558":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":2,"docs":{"24":{"tf":1.0},"25":{"tf":1.0}}},"i":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}},"l":{"df":1,"docs":{"431":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":7,"docs":{"102":{"tf":1.4142135623730951},"111":{"tf":1.4142135623730951},"119":{"tf":1.4142135623730951},"128":{"tf":1.4142135623730951},"137":{"tf":1.4142135623730951},"146":{"tf":1.4142135623730951},"511":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"y":{"df":3,"docs":{"154":{"tf":1.0},"161":{"tf":1.0},"28":{"tf":1.0}}}},"df":0,"docs":{}}},"df":42,"docs":{"125":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.0},"157":{"tf":1.0},"190":{"tf":1.4142135623730951},"2":{"tf":1.4142135623730951},"217":{"tf":1.0},"230":{"tf":1.0},"246":{"tf":1.4142135623730951},"248":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"271":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.0},"292":{"tf":2.0},"303":{"tf":1.0},"310":{"tf":1.0},"318":{"tf":1.4142135623730951},"319":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"347":{"tf":1.4142135623730951},"374":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"393":{"tf":1.0},"40":{"tf":1.0},"418":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0},"47":{"tf":1.0},"48":{"tf":1.0},"481":{"tf":1.0},"517":{"tf":1.0},"53":{"tf":1.0},"552":{"tf":1.0},"556":{"tf":1.0},"558":{"tf":1.0},"560":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.0}},"n":{"df":7,"docs":{"17":{"tf":1.0},"353":{"tf":1.0},"402":{"tf":1.0},"440":{"tf":1.0},"456":{"tf":1.0},"458":{"tf":1.0},"599":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"k":{"df":16,"docs":{"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"268":{"tf":1.0},"279":{"tf":1.0},"28":{"tf":1.7320508075688772},"32":{"tf":1.0},"35":{"tf":1.0},"359":{"tf":1.0},"41":{"tf":1.4142135623730951},"47":{"tf":1.0},"49":{"tf":1.0},"527":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.0},"68":{"tf":1.0}}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"419":{"tf":1.0}}}}},"p":{"df":1,"docs":{"538":{"tf":1.7320508075688772}}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"/":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"448":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"\\":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"\\":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"244":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":7,"docs":{"211":{"tf":1.0},"284":{"tf":1.0},"431":{"tf":1.0},"448":{"tf":1.0},"532":{"tf":1.0},"573":{"tf":1.0},"94":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"k":{"(":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"539":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"(":{")":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"(":{"&":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":2,"docs":{"189":{"tf":1.0},"190":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{".":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"(":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"328":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"328":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"542":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"566":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"_":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"_":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"457":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"320":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":33,"docs":{"156":{"tf":1.7320508075688772},"178":{"tf":1.7320508075688772},"189":{"tf":1.4142135623730951},"190":{"tf":1.7320508075688772},"200":{"tf":1.4142135623730951},"209":{"tf":1.0},"230":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":3.4641016151377544},"288":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"328":{"tf":5.385164807134504},"330":{"tf":1.4142135623730951},"331":{"tf":1.0},"347":{"tf":2.23606797749979},"349":{"tf":1.0},"380":{"tf":1.0},"408":{"tf":2.449489742783178},"412":{"tf":3.0},"460":{"tf":1.0},"470":{"tf":2.8284271247461903},"475":{"tf":1.0},"502":{"tf":1.4142135623730951},"504":{"tf":1.7320508075688772},"538":{"tf":4.358898943540674},"539":{"tf":2.8284271247461903},"544":{"tf":1.0},"599":{"tf":1.0},"62":{"tf":2.6457513110645907}},"s":{".":{"df":0,"docs":{},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"_":{"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"347":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":3,"docs":{"209":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0}}}}}}},"b":{"d":{"df":1,"docs":{"19":{"tf":1.0}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.4142135623730951}}}}},"p":{"df":4,"docs":{"143":{"tf":1.0},"276":{"tf":1.0},"503":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"d":{"df":2,"docs":{"12":{"tf":1.0},"539":{"tf":1.0}}},"df":6,"docs":{"199":{"tf":1.0},"211":{"tf":1.0},"268":{"tf":1.0},"380":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":2.8284271247461903}},"e":{"a":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"358":{"tf":1.4142135623730951},"359":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":20,"docs":{"110":{"tf":1.0},"120":{"tf":1.0},"134":{"tf":1.4142135623730951},"15":{"tf":1.0},"17":{"tf":1.4142135623730951},"249":{"tf":1.0},"259":{"tf":1.4142135623730951},"268":{"tf":1.0},"284":{"tf":1.0},"370":{"tf":1.0},"392":{"tf":1.0},"431":{"tf":1.0},"456":{"tf":2.23606797749979},"457":{"tf":2.6457513110645907},"458":{"tf":1.4142135623730951},"460":{"tf":1.7320508075688772},"463":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.4142135623730951},"580":{"tf":1.0}},"m":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"457":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{}}}},"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"599":{"tf":1.0},"84":{"tf":1.0}},"n":{"df":0,"docs":{},"i":{"c":{"df":7,"docs":{"192":{"tf":1.0},"221":{"tf":1.0},"278":{"tf":1.0},"363":{"tf":1.0},"499":{"tf":1.0},"513":{"tf":1.0},"57":{"tf":1.4142135623730951}}},"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":3,"docs":{"156":{"tf":1.0},"319":{"tf":1.0},"417":{"tf":1.7320508075688772}}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":3,"docs":{"116":{"tf":1.0},"120":{"tf":1.0},"217":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":52,"docs":{"148":{"tf":1.0},"149":{"tf":1.0},"163":{"tf":1.4142135623730951},"173":{"tf":1.4142135623730951},"183":{"tf":1.4142135623730951},"192":{"tf":1.0},"205":{"tf":1.4142135623730951},"213":{"tf":1.4142135623730951},"218":{"tf":1.0},"225":{"tf":1.4142135623730951},"239":{"tf":1.4142135623730951},"248":{"tf":1.0},"250":{"tf":1.4142135623730951},"256":{"tf":1.0},"263":{"tf":1.4142135623730951},"268":{"tf":1.0},"27":{"tf":1.0},"272":{"tf":1.7320508075688772},"28":{"tf":1.0},"280":{"tf":1.4142135623730951},"288":{"tf":1.4142135623730951},"296":{"tf":1.4142135623730951},"304":{"tf":1.4142135623730951},"316":{"tf":1.4142135623730951},"332":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"339":{"tf":1.4142135623730951},"352":{"tf":1.4142135623730951},"366":{"tf":1.4142135623730951},"376":{"tf":1.4142135623730951},"380":{"tf":1.0},"382":{"tf":1.4142135623730951},"393":{"tf":1.4142135623730951},"401":{"tf":1.4142135623730951},"408":{"tf":1.0},"413":{"tf":1.4142135623730951},"427":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"435":{"tf":1.4142135623730951},"444":{"tf":1.4142135623730951},"452":{"tf":1.4142135623730951},"462":{"tf":1.4142135623730951},"47":{"tf":1.0},"474":{"tf":1.4142135623730951},"482":{"tf":1.4142135623730951},"486":{"tf":1.0},"521":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"56":{"tf":1.0},"89":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"394":{"tf":1.0}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":37,"docs":{"100":{"tf":1.0},"101":{"tf":1.0},"102":{"tf":1.0},"103":{"tf":1.0},"104":{"tf":1.0},"105":{"tf":1.0},"157":{"tf":2.23606797749979},"158":{"tf":1.0},"159":{"tf":1.0},"16":{"tf":1.4142135623730951},"160":{"tf":1.0},"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"458":{"tf":1.4142135623730951},"489":{"tf":2.23606797749979},"490":{"tf":1.0},"491":{"tf":1.0},"492":{"tf":1.0},"493":{"tf":1.0},"494":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"498":{"tf":1.0},"499":{"tf":1.0},"97":{"tf":1.4142135623730951},"98":{"tf":1.0},"99":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"450":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"417":{"tf":1.0},"421":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"t":{"df":4,"docs":{"278":{"tf":1.0},"300":{"tf":1.0},"452":{"tf":1.0},"456":{"tf":1.0}}}}},"n":{"d":{"df":3,"docs":{"153":{"tf":1.0},"319":{"tf":1.0},"62":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":2,"docs":{"61":{"tf":2.449489742783178},"62":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"m":{"df":8,"docs":{"218":{"tf":1.0},"231":{"tf":1.0},"393":{"tf":1.0},"450":{"tf":1.0},"511":{"tf":1.0},"560":{"tf":1.0},"6":{"tf":1.0},"65":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"538":{"tf":2.23606797749979},"539":{"tf":1.4142135623730951},"542":{"tf":1.0}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":1,"docs":{"417":{"tf":1.0}}}}}}}}}},"s":{"df":0,"docs":{},"t":{"(":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":1,"docs":{"312":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"v":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":1,"docs":{"217":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"b":{"df":0,"docs":{},"y":{"(":{"df":0,"docs":{},"|":{"a":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":9,"docs":{"110":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"417":{"tf":1.0},"418":{"tf":1.0},"431":{"tf":1.0},"440":{"tf":1.7320508075688772},"62":{"tf":2.0}}}},"x":{"df":0,"docs":{},"t":{"df":4,"docs":{"258":{"tf":1.0},"397":{"tf":1.7320508075688772},"523":{"tf":1.0},"538":{"tf":1.0}}}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":7,"docs":{"397":{"tf":1.0},"456":{"tf":1.0},"460":{"tf":1.0},"600":{"tf":1.0},"601":{"tf":1.0},"602":{"tf":1.0},"603":{"tf":1.0}},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"199":{"tf":1.0}}}}}}}}},"t":{"'":{"df":14,"docs":{"156":{"tf":1.0},"217":{"tf":1.4142135623730951},"237":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"352":{"tf":1.0},"36":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"487":{"tf":1.0},"493":{"tf":1.0},"504":{"tf":1.0},"65":{"tf":1.4142135623730951}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":1,"docs":{"603":{"tf":1.0}}}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":10,"docs":{"138":{"tf":1.0},"156":{"tf":1.0},"211":{"tf":1.0},"226":{"tf":1.0},"241":{"tf":1.0},"265":{"tf":1.0},"391":{"tf":1.0},"457":{"tf":1.0},"460":{"tf":1.0},"559":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"284":{"tf":1.0},"389":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"67":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"'":{"df":11,"docs":{"122":{"tf":1.0},"200":{"tf":1.0},"278":{"tf":1.4142135623730951},"300":{"tf":1.0},"309":{"tf":1.0},"336":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"410":{"tf":1.0},"475":{"tf":1.0},"558":{"tf":1.0}}},"df":1,"docs":{"599":{"tf":1.0}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":5,"docs":{"138":{"tf":1.0},"195":{"tf":1.0},"323":{"tf":1.0},"336":{"tf":1.0},"456":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":1,"docs":{"356":{"tf":1.0}}}},"y":{"'":{"df":0,"docs":{},"r":{"df":10,"docs":{"129":{"tf":1.0},"131":{"tf":1.0},"134":{"tf":1.0},"225":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"358":{"tf":1.0},"360":{"tf":1.0},"370":{"tf":1.0},"8":{"tf":1.0}}},"v":{"df":3,"docs":{"134":{"tf":1.0},"284":{"tf":1.0},"361":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"456":{"tf":1.4142135623730951}},"g":{"df":67,"docs":{"125":{"tf":1.0},"129":{"tf":1.0},"131":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":2.6457513110645907},"16":{"tf":1.0},"167":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"190":{"tf":1.0},"195":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":2.8284271247461903},"223":{"tf":1.0},"231":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"300":{"tf":1.4142135623730951},"311":{"tf":1.0},"315":{"tf":1.0},"317":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"336":{"tf":1.4142135623730951},"347":{"tf":1.4142135623730951},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"385":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.0},"412":{"tf":1.4142135623730951},"419":{"tf":1.0},"421":{"tf":1.0},"428":{"tf":1.0},"456":{"tf":1.0},"46":{"tf":1.0},"47":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"499":{"tf":1.4142135623730951},"504":{"tf":1.4142135623730951},"509":{"tf":1.0},"51":{"tf":1.0},"511":{"tf":1.0},"521":{"tf":1.0},"53":{"tf":1.0},"538":{"tf":1.0},"552":{"tf":1.0},"562":{"tf":1.0},"565":{"tf":1.0},"59":{"tf":1.0},"598":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.4142135623730951},"86":{"tf":1.0}}},"k":{"df":53,"docs":{"10":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"159":{"tf":1.0},"188":{"tf":1.0},"190":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":1.7320508075688772},"221":{"tf":1.4142135623730951},"235":{"tf":1.0},"237":{"tf":1.0},"258":{"tf":1.0},"264":{"tf":1.0},"266":{"tf":1.7320508075688772},"267":{"tf":1.0},"268":{"tf":1.0},"269":{"tf":1.0},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.7320508075688772},"284":{"tf":1.7320508075688772},"300":{"tf":1.7320508075688772},"307":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.0},"325":{"tf":1.0},"328":{"tf":1.0},"331":{"tf":1.0},"333":{"tf":1.0},"347":{"tf":1.4142135623730951},"37":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":2.0},"389":{"tf":1.0},"394":{"tf":1.0},"408":{"tf":1.7320508075688772},"41":{"tf":2.0},"421":{"tf":1.4142135623730951},"456":{"tf":1.0},"487":{"tf":1.4142135623730951},"491":{"tf":1.0},"498":{"tf":1.7320508075688772},"506":{"tf":1.0},"522":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"56":{"tf":1.0},"570":{"tf":1.0},"599":{"tf":1.0},"64":{"tf":1.4142135623730951}}}},"r":{"d":{"df":4,"docs":{"221":{"tf":1.0},"276":{"tf":1.0},"279":{"tf":1.0},"458":{"tf":1.0}}},"df":0,"docs":{}},"s":{".":{"a":{"df":0,"docs":{},"s":{"_":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"(":{")":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"(":{"\"":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":1,"docs":{"408":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"367":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":40,"docs":{"118":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.7320508075688772},"190":{"tf":1.0},"192":{"tf":1.0},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"213":{"tf":1.0},"218":{"tf":1.4142135623730951},"256":{"tf":1.0},"276":{"tf":1.0},"288":{"tf":1.0},"32":{"tf":1.0},"321":{"tf":1.0},"328":{"tf":1.0},"33":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.4142135623730951},"36":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"397":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.0},"423":{"tf":1.0},"448":{"tf":1.0},"458":{"tf":1.0},"462":{"tf":1.0},"47":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"480":{"tf":1.0},"517":{"tf":1.0},"521":{"tf":1.0},"538":{"tf":1.4142135623730951},"54":{"tf":1.0},"562":{"tf":1.0},"62":{"tf":1.0},"82":{"tf":1.0},"9":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":25,"docs":{"154":{"tf":1.0},"192":{"tf":1.0},"2":{"tf":1.0},"221":{"tf":1.0},"259":{"tf":1.0},"263":{"tf":1.0},"292":{"tf":1.0},"313":{"tf":1.0},"321":{"tf":1.0},"336":{"tf":1.0},"35":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.7320508075688772},"389":{"tf":1.0},"399":{"tf":1.0},"451":{"tf":1.0},"503":{"tf":1.0},"529":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"62":{"tf":1.0},"96":{"tf":1.0}},"t":{"df":9,"docs":{"156":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"328":{"tf":1.4142135623730951},"343":{"tf":1.4142135623730951},"389":{"tf":1.0},"408":{"tf":1.0},"470":{"tf":1.4142135623730951},"599":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{"2":{"6":{"3":{":":{"5":{"4":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"380":{"tf":1.0}}}}}},"df":41,"docs":{"189":{"tf":1.7320508075688772},"190":{"tf":1.0},"191":{"tf":1.0},"233":{"tf":1.0},"244":{"tf":1.4142135623730951},"256":{"tf":1.0},"258":{"tf":1.0},"268":{"tf":1.0},"272":{"tf":1.0},"276":{"tf":1.7320508075688772},"284":{"tf":3.3166247903554},"309":{"tf":1.7320508075688772},"318":{"tf":2.0},"319":{"tf":2.8284271247461903},"328":{"tf":2.0},"331":{"tf":1.7320508075688772},"336":{"tf":2.23606797749979},"344":{"tf":2.0},"347":{"tf":1.4142135623730951},"357":{"tf":1.0},"361":{"tf":1.0},"394":{"tf":1.0},"397":{"tf":1.7320508075688772},"404":{"tf":1.0},"412":{"tf":1.0},"421":{"tf":1.4142135623730951},"422":{"tf":1.4142135623730951},"423":{"tf":2.0},"431":{"tf":1.4142135623730951},"456":{"tf":1.7320508075688772},"457":{"tf":1.0},"462":{"tf":1.4142135623730951},"469":{"tf":1.7320508075688772},"470":{"tf":2.6457513110645907},"504":{"tf":1.0},"521":{"tf":1.0},"561":{"tf":1.0},"564":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":2.449489742783178},"62":{"tf":2.23606797749979}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"517":{"tf":1.0}}}}}}},"df":0,"docs":{},"t":{"df":1,"docs":{"125":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"218":{"tf":1.0},"422":{"tf":1.0}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"319":{"tf":1.0}}},"df":0,"docs":{}}}}}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":4,"docs":{"230":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"545":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":23,"docs":{"168":{"tf":1.0},"169":{"tf":1.0},"190":{"tf":1.4142135623730951},"217":{"tf":1.0},"221":{"tf":1.0},"245":{"tf":1.7320508075688772},"276":{"tf":1.0},"284":{"tf":1.0},"300":{"tf":1.0},"303":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"367":{"tf":1.0},"370":{"tf":1.0},"389":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.0},"417":{"tf":2.0},"421":{"tf":1.0},"448":{"tf":1.7320508075688772},"450":{"tf":1.0},"515":{"tf":1.0}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"47":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":5,"docs":{"143":{"tf":1.0},"209":{"tf":1.0},"214":{"tf":1.0},"268":{"tf":1.4142135623730951},"431":{"tf":1.0}}}}}}}},"w":{"df":2,"docs":{"157":{"tf":1.0},"268":{"tf":1.0}},"n":{"df":1,"docs":{"261":{"tf":1.0}}}}}},"u":{"df":4,"docs":{"129":{"tf":1.0},"169":{"tf":1.0},"218":{"tf":1.0},"453":{"tf":1.0}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"232":{"tf":1.4142135623730951}}}}}},"d":{"df":0,"docs":{},"e":{"df":4,"docs":{"231":{"tf":1.0},"233":{"tf":1.0},"237":{"tf":1.0},"276":{"tf":1.4142135623730951}}}},"df":5,"docs":{"156":{"tf":1.0},"218":{"tf":1.0},"221":{"tf":1.0},"370":{"tf":1.0},"9":{"tf":1.0}},"e":{"df":2,"docs":{"431":{"tf":1.0},"62":{"tf":1.0}}},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"389":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"286":{"tf":1.0},"288":{"tf":1.0}}}}}}},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"14":{"tf":1.7320508075688772}}}},"m":{"df":0,"docs":{},"e":{"df":75,"docs":{"110":{"tf":1.7320508075688772},"131":{"tf":1.0},"138":{"tf":1.0},"156":{"tf":1.7320508075688772},"174":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"189":{"tf":1.4142135623730951},"190":{"tf":2.0},"2":{"tf":1.0},"200":{"tf":1.0},"209":{"tf":2.0},"214":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.4142135623730951},"221":{"tf":1.4142135623730951},"223":{"tf":1.0},"226":{"tf":1.0},"230":{"tf":1.7320508075688772},"235":{"tf":1.0},"237":{"tf":1.0},"240":{"tf":1.0},"246":{"tf":1.0},"248":{"tf":1.0},"25":{"tf":1.0},"251":{"tf":1.4142135623730951},"261":{"tf":1.0},"268":{"tf":1.4142135623730951},"273":{"tf":1.0},"276":{"tf":1.4142135623730951},"284":{"tf":1.4142135623730951},"286":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"311":{"tf":1.0},"319":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"332":{"tf":1.0},"341":{"tf":1.4142135623730951},"343":{"tf":1.0},"347":{"tf":2.23606797749979},"359":{"tf":1.4142135623730951},"367":{"tf":1.0},"370":{"tf":1.7320508075688772},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"389":{"tf":1.0},"393":{"tf":1.0},"397":{"tf":1.0},"402":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"412":{"tf":1.0},"417":{"tf":1.7320508075688772},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.4142135623730951},"431":{"tf":1.0},"436":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":2.6457513110645907},"469":{"tf":1.4142135623730951},"470":{"tf":1.7320508075688772},"472":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"515":{"tf":1.0},"538":{"tf":1.7320508075688772},"551":{"tf":1.4142135623730951},"555":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0},"9":{"tf":1.0}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"=":{"4":{"9":{"1":{"5":{"2":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"167":{"tf":1.0},"181":{"tf":1.0},"284":{"tf":1.4142135623730951}}}}},"r":{"df":3,"docs":{"300":{"tf":1.0},"336":{"tf":1.4142135623730951},"457":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"259":{"tf":1.0}}}},"i":{"df":1,"docs":{"380":{"tf":1.0}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"72":{"tf":1.0}}}}}},"p":{"df":1,"docs":{"153":{"tf":1.0}}}},"l":{";":{"d":{"df":0,"docs":{},"r":{"df":2,"docs":{"24":{"tf":1.4142135623730951},"38":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"421":{"tf":1.7320508075688772}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"421":{"tf":1.0}}}}}},"df":0,"docs":{}},"<":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"421":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"m":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"1":{"tf":1.0},"603":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"o":{"_":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"<":{"df":0,"docs":{},"h":{"df":1,"docs":{"292":{"tf":1.0}}}},"_":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"292":{"tf":1.7320508075688772}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"<":{"df":0,"docs":{},"f":{">":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"292":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"292":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"344":{"tf":1.0}}}},"d":{"a":{"df":0,"docs":{},"y":{"df":41,"docs":{"153":{"tf":1.0},"156":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"495":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":3,"docs":{"328":{"tf":1.0},"336":{"tf":2.0},"601":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"261":{"tf":1.0},"84":{"tf":1.0}}},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":8,"docs":{"156":{"tf":1.4142135623730951},"258":{"tf":1.0},"268":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"531":{"tf":1.0},"599":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"'":{"df":5,"docs":{"167":{"tf":1.0},"209":{"tf":1.0},"252":{"tf":1.0},"268":{"tf":1.4142135623730951},"309":{"tf":1.7320508075688772}}},":":{":":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{":":{":":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"h":{"4":{"1":{"0":{"d":{"c":{"df":0,"docs":{},"e":{"d":{"2":{"a":{"7":{"d":{"df":0,"docs":{},"f":{"3":{"df":0,"docs":{},"e":{"c":{"8":{"(":{"df":0,"docs":{},"f":{"=":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"404":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"_":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"h":{"c":{"d":{"4":{"7":{"7":{"7":{"3":{"4":{"d":{"4":{"9":{"7":{"0":{"df":0,"docs":{},"e":{"d":{"5":{"(":{"b":{"df":0,"docs":{},"u":{"d":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"=":{"(":{"_":{"_":{"0":{"df":1,"docs":{"404":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"d":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"<":{"df":0,"docs":{},"t":{">":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":6,"docs":{"258":{"tf":1.0},"309":{"tf":1.4142135623730951},"320":{"tf":1.0},"380":{"tf":1.0},"448":{"tf":1.7320508075688772},"450":{"tf":1.0}}}}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"a":{",":{"b":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{">":{":":{":":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":2.0}}}}}}}}}},"df":1,"docs":{"284":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"397":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"_":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"{":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"r":{"d":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{":":{":":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"309":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"284":{"tf":1.0},"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"309":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"397":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"284":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"268":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":4,"docs":{"268":{"tf":1.4142135623730951},"347":{"tf":1.0},"349":{"tf":1.0},"448":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{":":{":":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"c":{"df":1,"docs":{"347":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"310":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"s":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"(":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"310":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"310":{"tf":1.0},"347":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"310":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{":":{":":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"df":0,"docs":{},"p":{">":{":":{":":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"284":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"284":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"383":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"_":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"(":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"y":{")":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"380":{"tf":2.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":31,"docs":{"156":{"tf":1.4142135623730951},"209":{"tf":1.4142135623730951},"214":{"tf":1.0},"233":{"tf":1.4142135623730951},"234":{"tf":2.23606797749979},"258":{"tf":1.4142135623730951},"268":{"tf":1.0},"276":{"tf":1.4142135623730951},"3":{"tf":1.0},"309":{"tf":1.7320508075688772},"318":{"tf":1.4142135623730951},"320":{"tf":1.0},"325":{"tf":1.4142135623730951},"347":{"tf":2.23606797749979},"359":{"tf":1.7320508075688772},"360":{"tf":1.4142135623730951},"365":{"tf":1.0},"370":{"tf":2.8284271247461903},"372":{"tf":1.0},"374":{"tf":1.0},"380":{"tf":3.3166247903554},"383":{"tf":1.7320508075688772},"397":{"tf":1.4142135623730951},"431":{"tf":1.0},"434":{"tf":1.0},"437":{"tf":1.0},"470":{"tf":2.0},"517":{"tf":1.0},"544":{"tf":1.0},"548":{"tf":1.0},"599":{"tf":1.4142135623730951}}}}},"l":{"d":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"240":{"tf":1.0}}}}},"n":{"df":1,"docs":{"370":{"tf":1.0}}},"o":{"df":0,"docs":{},"k":{"df":2,"docs":{"389":{"tf":1.4142135623730951},"59":{"tf":1.0}}},"l":{"'":{"df":1,"docs":{"544":{"tf":1.0}}},"b":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"453":{"tf":1.0}}}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"110":{"tf":1.0},"245":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":28,"docs":{"110":{"tf":1.4142135623730951},"130":{"tf":1.0},"156":{"tf":1.0},"16":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.7320508075688772},"213":{"tf":1.4142135623730951},"230":{"tf":1.0},"251":{"tf":1.0},"288":{"tf":1.0},"347":{"tf":1.0},"403":{"tf":1.0},"408":{"tf":1.0},"41":{"tf":1.0},"414":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"433":{"tf":1.0},"436":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"475":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.4142135623730951},"545":{"tf":1.0},"65":{"tf":1.0},"73":{"tf":1.0},"77":{"tf":1.0},"82":{"tf":1.4142135623730951}}}},"p":{"df":11,"docs":{"125":{"tf":1.0},"128":{"tf":1.0},"189":{"tf":1.0},"258":{"tf":1.0},"347":{"tf":1.0},"41":{"tf":2.0},"421":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.4142135623730951},"599":{"tf":1.0},"65":{"tf":2.0}},"i":{"c":{"df":2,"docs":{"16":{"tf":1.0},"480":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"a":{"d":{"d":{"df":0,"docs":{},"r":{"df":1,"docs":{"538":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"t":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"300":{"tf":1.0},"341":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"367":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":7,"docs":{"360":{"tf":1.0},"41":{"tf":1.0},"462":{"tf":1.0},"487":{"tf":1.0},"516":{"tf":1.4142135623730951},"534":{"tf":1.4142135623730951},"548":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}},"y":{"df":2,"docs":{"380":{"tf":1.4142135623730951},"448":{"tf":1.0}}}},"r":{"a":{"c":{"df":0,"docs":{},"e":{"df":13,"docs":{"209":{"tf":1.0},"214":{"tf":1.0},"284":{"tf":1.0},"397":{"tf":1.7320508075688772},"399":{"tf":1.4142135623730951},"402":{"tf":1.4142135623730951},"403":{"tf":1.0},"410":{"tf":1.4142135623730951},"412":{"tf":1.4142135623730951},"453":{"tf":1.0},"470":{"tf":1.0},"545":{"tf":1.0},"548":{"tf":1.4142135623730951}},"r":{"df":1,"docs":{"469":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"289":{"tf":1.0}}}}}}}}}}}}},"df":0,"docs":{}}}},"k":{"df":9,"docs":{"18":{"tf":1.0},"199":{"tf":1.0},"218":{"tf":1.0},"271":{"tf":1.0},"470":{"tf":1.0},"552":{"tf":1.0},"557":{"tf":1.0},"560":{"tf":1.0},"562":{"tf":1.4142135623730951}}}},"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"394":{"tf":1.0}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":7,"docs":{"111":{"tf":1.0},"156":{"tf":1.0},"251":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.4142135623730951},"347":{"tf":1.0},"349":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"t":{"df":11,"docs":{"132":{"tf":1.7320508075688772},"133":{"tf":1.0},"134":{"tf":1.0},"135":{"tf":1.0},"136":{"tf":1.0},"137":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"408":{"tf":1.0},"91":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":4,"docs":{"125":{"tf":1.7320508075688772},"134":{"tf":1.0},"209":{"tf":1.4142135623730951},"213":{"tf":1.0}},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":9,"docs":{"123":{"tf":1.7320508075688772},"124":{"tf":1.0},"125":{"tf":2.23606797749979},"126":{"tf":1.0},"127":{"tf":1.7320508075688772},"128":{"tf":2.23606797749979},"129":{"tf":1.7320508075688772},"130":{"tf":1.4142135623730951},"131":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"t":{"'":{"df":1,"docs":{"209":{"tf":1.0}}},"df":59,"docs":{"156":{"tf":2.23606797749979},"195":{"tf":1.0},"199":{"tf":1.0},"209":{"tf":2.8284271247461903},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"219":{"tf":1.7320508075688772},"220":{"tf":1.0},"221":{"tf":4.58257569495584},"222":{"tf":1.0},"223":{"tf":1.7320508075688772},"224":{"tf":1.4142135623730951},"225":{"tf":1.0},"226":{"tf":1.4142135623730951},"276":{"tf":1.7320508075688772},"278":{"tf":1.4142135623730951},"279":{"tf":1.0},"292":{"tf":2.23606797749979},"300":{"tf":1.0},"307":{"tf":1.0},"310":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"340":{"tf":1.0},"341":{"tf":1.7320508075688772},"370":{"tf":3.3166247903554},"380":{"tf":2.0},"421":{"tf":1.7320508075688772},"440":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"47":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.4142135623730951},"535":{"tf":1.0},"553":{"tf":1.0},"567":{"tf":1.7320508075688772},"568":{"tf":2.0},"569":{"tf":1.0},"570":{"tf":1.4142135623730951},"571":{"tf":1.0},"572":{"tf":1.0},"574":{"tf":1.7320508075688772},"575":{"tf":2.0},"576":{"tf":1.4142135623730951},"577":{"tf":1.0},"578":{"tf":1.4142135623730951},"579":{"tf":1.7320508075688772},"580":{"tf":1.7320508075688772},"581":{"tf":1.4142135623730951},"582":{"tf":1.0},"583":{"tf":1.0},"589":{"tf":1.7320508075688772},"599":{"tf":2.0}},"s":{"/":{"a":{"d":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"394":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"51":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"342":{"tf":1.4142135623730951},"417":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":5,"docs":{"201":{"tf":1.0},"209":{"tf":1.0},"259":{"tf":1.0},"442":{"tf":1.0},"458":{"tf":1.4142135623730951}}}}}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"300":{"tf":1.4142135623730951}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"62":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}}}}},"p":{"df":1,"docs":{"214":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"191":{"tf":1.0}}}},"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"431":{"tf":1.0}}},"df":0,"docs":{}}},"i":{"a":{"df":0,"docs":{},"g":{"df":8,"docs":{"2":{"tf":1.0},"397":{"tf":1.0},"554":{"tf":1.7320508075688772},"555":{"tf":1.4142135623730951},"556":{"tf":1.4142135623730951},"557":{"tf":1.4142135623730951},"558":{"tf":2.23606797749979},"559":{"tf":1.0}}}},"c":{"df":0,"docs":{},"k":{"df":9,"docs":{"153":{"tf":1.0},"156":{"tf":1.0},"321":{"tf":1.0},"41":{"tf":1.0},"460":{"tf":1.4142135623730951},"511":{"tf":1.4142135623730951},"516":{"tf":1.0},"517":{"tf":1.0},"529":{"tf":1.0}},"i":{"df":5,"docs":{"156":{"tf":1.0},"347":{"tf":1.0},"456":{"tf":1.4142135623730951},"52":{"tf":1.0},"552":{"tf":1.0}}}}},"df":105,"docs":{"153":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":2.23606797749979},"16":{"tf":1.0},"165":{"tf":1.7320508075688772},"166":{"tf":1.0},"167":{"tf":1.4142135623730951},"168":{"tf":1.4142135623730951},"169":{"tf":1.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"178":{"tf":1.0},"183":{"tf":1.0},"192":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.7320508075688772},"209":{"tf":2.23606797749979},"217":{"tf":1.0},"221":{"tf":1.7320508075688772},"223":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"256":{"tf":1.4142135623730951},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.4142135623730951},"274":{"tf":1.7320508075688772},"275":{"tf":1.0},"276":{"tf":2.6457513110645907},"277":{"tf":1.0},"278":{"tf":1.4142135623730951},"279":{"tf":1.0},"280":{"tf":1.0},"281":{"tf":1.0},"282":{"tf":1.7320508075688772},"283":{"tf":1.0},"284":{"tf":1.7320508075688772},"285":{"tf":1.0},"286":{"tf":1.7320508075688772},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"292":{"tf":1.7320508075688772},"300":{"tf":1.4142135623730951},"307":{"tf":1.0},"309":{"tf":1.4142135623730951},"310":{"tf":1.7320508075688772},"311":{"tf":1.4142135623730951},"333":{"tf":1.0},"336":{"tf":1.4142135623730951},"34":{"tf":1.4142135623730951},"340":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.4142135623730951},"357":{"tf":1.4142135623730951},"360":{"tf":1.0},"370":{"tf":2.6457513110645907},"380":{"tf":3.3166247903554},"385":{"tf":1.0},"387":{"tf":1.7320508075688772},"388":{"tf":1.0},"389":{"tf":1.4142135623730951},"390":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.4142135623730951},"393":{"tf":1.0},"394":{"tf":1.4142135623730951},"397":{"tf":1.0},"402":{"tf":1.0},"421":{"tf":1.0},"426":{"tf":1.0},"438":{"tf":1.7320508075688772},"439":{"tf":1.0},"440":{"tf":1.4142135623730951},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"448":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.7320508075688772},"458":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"461":{"tf":1.0},"470":{"tf":1.7320508075688772},"486":{"tf":1.0},"494":{"tf":1.0},"507":{"tf":1.4142135623730951},"521":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"526":{"tf":1.4142135623730951},"538":{"tf":1.0},"54":{"tf":1.0},"543":{"tf":1.0},"559":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"9":{"tf":1.0}},"g":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":6,"docs":{"173":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"286":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0}}}}}},"m":{"df":12,"docs":{"156":{"tf":1.0},"395":{"tf":1.7320508075688772},"396":{"tf":1.0},"397":{"tf":1.0},"398":{"tf":1.0},"399":{"tf":1.0},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.4142135623730951},"403":{"tf":1.0},"404":{"tf":1.0},"405":{"tf":1.7320508075688772}}},"p":{"df":2,"docs":{"272":{"tf":1.0},"393":{"tf":1.0}}},"v":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"l":{"df":6,"docs":{"156":{"tf":1.0},"221":{"tf":1.0},"347":{"tf":1.0},"350":{"tf":1.0},"410":{"tf":1.0},"517":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"l":{"df":15,"docs":{"156":{"tf":1.0},"242":{"tf":1.7320508075688772},"243":{"tf":1.0},"244":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"247":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.0},"276":{"tf":1.0},"372":{"tf":1.0},"53":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"/":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"258":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"e":{"df":7,"docs":{"154":{"tf":1.7320508075688772},"270":{"tf":1.0},"300":{"tf":1.0},"456":{"tf":1.0},"54":{"tf":1.0},"578":{"tf":1.0},"61":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":39,"docs":{"156":{"tf":1.4142135623730951},"230":{"tf":1.0},"233":{"tf":1.0},"241":{"tf":1.0},"253":{"tf":1.7320508075688772},"254":{"tf":1.0},"255":{"tf":1.0},"256":{"tf":2.449489742783178},"257":{"tf":1.0},"258":{"tf":2.0},"259":{"tf":1.0},"260":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"383":{"tf":1.0},"386":{"tf":1.0},"389":{"tf":1.0},"512":{"tf":1.0},"518":{"tf":1.7320508075688772},"519":{"tf":1.0},"520":{"tf":1.0},"521":{"tf":2.449489742783178},"522":{"tf":1.0},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.4142135623730951},"526":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"487":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"<":{"'":{"_":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"t":{"c":{"df":0,"docs":{},"p":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"i":{"df":1,"docs":{"448":{"tf":1.0}}},"n":{"df":0,"docs":{},"e":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"129":{"tf":1.0}}}},"df":0,"docs":{}},"df":5,"docs":{"125":{"tf":1.0},"129":{"tf":1.0},"209":{"tf":1.4142135623730951},"319":{"tf":1.0},"502":{"tf":1.0}}}},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"292":{"tf":1.0}}}},"r":{"b":{"df":0,"docs":{},"o":{"df":1,"docs":{"503":{"tf":1.7320508075688772}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"67":{"tf":1.0}}},"n":{"df":19,"docs":{"156":{"tf":1.0},"168":{"tf":1.0},"178":{"tf":1.0},"195":{"tf":1.4142135623730951},"199":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"230":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"257":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"359":{"tf":1.0},"389":{"tf":1.0},"417":{"tf":1.0},"470":{"tf":1.0},"498":{"tf":1.4142135623730951},"51":{"tf":1.7320508075688772}}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"343":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":4,"docs":{"359":{"tf":1.0},"360":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0}}}}}}},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"df":4,"docs":{"138":{"tf":1.0},"209":{"tf":1.0},"342":{"tf":1.4142135623730951},"73":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":8,"docs":{"162":{"tf":1.0},"28":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"36":{"tf":1.0},"361":{"tf":1.0},"599":{"tf":1.0},"9":{"tf":1.0}}}}},"i":{"c":{"df":0,"docs":{},"e":{"df":5,"docs":{"235":{"tf":1.0},"328":{"tf":1.4142135623730951},"336":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"389":{"tf":1.0}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"201":{"tf":1.0},"583":{"tf":1.4142135623730951},"599":{"tf":1.7320508075688772}}}}}}},"o":{"df":18,"docs":{"15":{"tf":1.0},"167":{"tf":1.0},"209":{"tf":1.7320508075688772},"218":{"tf":1.0},"276":{"tf":1.4142135623730951},"29":{"tf":1.0},"328":{"tf":1.0},"336":{"tf":1.7320508075688772},"347":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"42":{"tf":1.0},"456":{"tf":1.0},"469":{"tf":1.0},"522":{"tf":1.0},"599":{"tf":1.0}}}},"x":{"df":1,"docs":{"448":{"tf":1.0}}},"y":{"df":1,"docs":{"221":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"'":{"df":1,"docs":{"214":{"tf":1.0}}},"df":52,"docs":{"110":{"tf":1.0},"136":{"tf":1.4142135623730951},"197":{"tf":1.0},"198":{"tf":1.4142135623730951},"199":{"tf":1.4142135623730951},"209":{"tf":2.23606797749979},"211":{"tf":1.4142135623730951},"214":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"221":{"tf":1.4142135623730951},"245":{"tf":2.23606797749979},"268":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":3.1622776601683795},"294":{"tf":1.0},"307":{"tf":2.0},"310":{"tf":2.0},"317":{"tf":1.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"370":{"tf":1.4142135623730951},"380":{"tf":2.23606797749979},"383":{"tf":1.0},"394":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":3.0},"422":{"tf":1.4142135623730951},"423":{"tf":1.4142135623730951},"440":{"tf":4.242640687119285},"448":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":3.0},"460":{"tf":1.4142135623730951},"465":{"tf":1.4142135623730951},"470":{"tf":1.4142135623730951},"472":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"522":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.7320508075688772},"564":{"tf":1.0},"565":{"tf":1.7320508075688772},"566":{"tf":1.0},"568":{"tf":1.0},"579":{"tf":1.4142135623730951},"580":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":3,"docs":{"230":{"tf":1.0},"231":{"tf":1.0},"280":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"i":{"c":{"df":7,"docs":{"111":{"tf":1.0},"153":{"tf":1.0},"237":{"tf":1.0},"421":{"tf":1.0},"478":{"tf":1.0},"564":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"u":{"1":{"6":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"3":{"2":{"df":1,"docs":{"522":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"6":{"4":{"df":1,"docs":{"328":{"tf":2.0}}},"df":0,"docs":{}},"8":{"df":2,"docs":{"328":{"tf":1.4142135623730951},"336":{"tf":1.7320508075688772}}},"a":{"df":0,"docs":{},"z":{"df":0,"docs":{},"u":{"df":1,"docs":{"602":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"p":{"df":1,"docs":{"143":{"tf":1.0}}}},"df":0,"docs":{},"h":{"df":3,"docs":{"148":{"tf":1.0},"149":{"tf":1.0},"217":{"tf":1.0}}},"i":{"df":5,"docs":{"188":{"tf":1.0},"189":{"tf":1.0},"191":{"tf":1.4142135623730951},"192":{"tf":1.0},"403":{"tf":1.0}},"e":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"191":{"tf":1.0}}}}}}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":10,"docs":{"171":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.0},"302":{"tf":1.0},"321":{"tf":1.0},"336":{"tf":1.0},"370":{"tf":1.0},"445":{"tf":1.0},"470":{"tf":1.0},"9":{"tf":1.0}}}}}},"n":{"a":{"b":{"df":0,"docs":{},"l":{"df":3,"docs":{"289":{"tf":1.0},"336":{"tf":1.4142135623730951},"391":{"tf":1.0}}}},"df":0,"docs":{},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"338":{"tf":1.0}}},"df":0,"docs":{}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":3,"docs":{"340":{"tf":1.0},"367":{"tf":1.0},"428":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"558":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":3,"docs":{"408":{"tf":1.4142135623730951},"538":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"c":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"558":{"tf":1.0}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":3,"docs":{"18":{"tf":1.0},"40":{"tf":1.0},"487":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":3,"docs":{"252":{"tf":1.0},"278":{"tf":1.0},"370":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"65":{"tf":1.0},"84":{"tf":1.4142135623730951}}}}}}},"v":{"df":2,"docs":{"497":{"tf":1.0},"561":{"tf":1.0}}}}},"d":{"df":1,"docs":{"192":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":14,"docs":{"12":{"tf":1.4142135623730951},"152":{"tf":1.4142135623730951},"218":{"tf":1.0},"221":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"324":{"tf":1.0},"347":{"tf":1.0},"358":{"tf":1.0},"457":{"tf":1.4142135623730951},"470":{"tf":1.0},"485":{"tf":1.4142135623730951},"5":{"tf":1.0},"522":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":8,"docs":{"140":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"347":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.4142135623730951},"460":{"tf":1.4142135623730951},"502":{"tf":1.0}}}},"n":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"370":{"tf":1.0},"394":{"tf":1.0}}}}},"df":0,"docs":{}}},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"391":{"tf":1.0}}}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":39,"docs":{"156":{"tf":1.0},"16":{"tf":1.0},"171":{"tf":1.0},"173":{"tf":1.0},"178":{"tf":1.0},"181":{"tf":1.0},"183":{"tf":1.0},"195":{"tf":1.0},"211":{"tf":1.0},"226":{"tf":1.0},"246":{"tf":1.0},"248":{"tf":1.4142135623730951},"251":{"tf":1.0},"258":{"tf":1.4142135623730951},"261":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.4142135623730951},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"288":{"tf":1.0},"33":{"tf":1.0},"336":{"tf":1.0},"357":{"tf":1.0},"380":{"tf":1.4142135623730951},"389":{"tf":1.7320508075688772},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"394":{"tf":1.0},"421":{"tf":1.0},"427":{"tf":1.0},"440":{"tf":1.0},"457":{"tf":1.0},"463":{"tf":1.0},"47":{"tf":1.0},"470":{"tf":1.4142135623730951},"54":{"tf":2.449489742783178},"544":{"tf":1.4142135623730951},"599":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"389":{"tf":1.0}}},"df":0,"docs":{}}}}}}}},"df":1,"docs":{"559":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":2,"docs":{"300":{"tf":1.0},"380":{"tf":1.0}}}}},"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":5,"docs":{"181":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"497":{"tf":1.4142135623730951},"59":{"tf":1.0}},"e":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"f":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"197":{"tf":1.0},"383":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"<":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"458":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":1,"docs":{"465":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":9,"docs":{"168":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"196":{"tf":1.0},"268":{"tf":1.4142135623730951},"276":{"tf":1.0},"389":{"tf":1.0},"408":{"tf":1.4142135623730951},"538":{"tf":1.0}}}}}}}},"i":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"460":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"1":{"0":{"0":{"df":1,"docs":{"380":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"380":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"218":{"tf":1.0}}}}}}},"q":{"df":0,"docs":{},"u":{"df":3,"docs":{"112":{"tf":1.0},"118":{"tf":1.0},"264":{"tf":1.0}}}},"t":{"df":3,"docs":{"394":{"tf":1.0},"470":{"tf":1.0},"573":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":3,"docs":{"356":{"tf":1.0},"386":{"tf":1.0},"469":{"tf":1.0}}}}}},"x":{"df":4,"docs":{"336":{"tf":1.0},"344":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0}}}},"k":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"319":{"tf":1.0}},"n":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}}}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"367":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":5,"docs":{"16":{"tf":1.0},"321":{"tf":1.0},"380":{"tf":1.0},"403":{"tf":1.0},"6":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"k":{"df":3,"docs":{"112":{"tf":1.0},"214":{"tf":1.0},"61":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"338":{"tf":1.0},"54":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"363":{"tf":1.0}}}}}},"r":{"d":{"df":1,"docs":{"156":{"tf":1.0}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":4,"docs":{"198":{"tf":1.0},"370":{"tf":2.449489742783178},"380":{"tf":1.0},"440":{"tf":4.0}}}}},"r":{"df":0,"docs":{},"e":{"a":{"c":{"df":0,"docs":{},"h":{"df":3,"docs":{"199":{"tf":1.0},"200":{"tf":1.0},"328":{"tf":1.0}}}},"d":{"df":1,"docs":{"470":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"59":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"s":{"a":{"df":0,"docs":{},"f":{"df":4,"docs":{"190":{"tf":1.0},"198":{"tf":1.4142135623730951},"328":{"tf":2.449489742783178},"336":{"tf":1.4142135623730951}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"278":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":3,"docs":{"457":{"tf":1.0},"460":{"tf":1.0},"543":{"tf":1.0}}}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"344":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"458":{"tf":1.0}}}}}},"df":0,"docs":{}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"380":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"421":{"tf":1.0}}}},"r":{"df":4,"docs":{"197":{"tf":1.0},"268":{"tf":1.0},"361":{"tf":1.0},"456":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"245":{"tf":1.0}}}},"i":{"df":0,"docs":{},"l":{"df":13,"docs":{"15":{"tf":1.7320508075688772},"16":{"tf":1.0},"167":{"tf":1.0},"234":{"tf":1.0},"237":{"tf":1.0},"357":{"tf":1.0},"397":{"tf":1.0},"417":{"tf":1.0},"422":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":1.0},"559":{"tf":1.4142135623730951},"562":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"200":{"tf":1.0}}}},"df":0,"docs":{}}}},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":3,"docs":{"258":{"tf":1.0},"320":{"tf":1.0},"470":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":10,"docs":{"18":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"336":{"tf":1.0},"358":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.0},"550":{"tf":1.0},"553":{"tf":1.0},"561":{"tf":1.0}}}},"df":0,"docs":{}},"df":68,"docs":{"112":{"tf":1.0},"134":{"tf":1.0},"156":{"tf":1.7320508075688772},"167":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.4142135623730951},"179":{"tf":1.0},"189":{"tf":1.0},"191":{"tf":1.4142135623730951},"196":{"tf":1.0},"201":{"tf":1.4142135623730951},"209":{"tf":1.4142135623730951},"211":{"tf":1.0},"217":{"tf":1.4142135623730951},"221":{"tf":1.0},"232":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"272":{"tf":1.0},"278":{"tf":1.0},"28":{"tf":1.0},"284":{"tf":2.0},"292":{"tf":1.4142135623730951},"307":{"tf":1.0},"309":{"tf":1.0},"322":{"tf":1.0},"336":{"tf":1.7320508075688772},"342":{"tf":1.7320508075688772},"347":{"tf":1.4142135623730951},"357":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"363":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.4142135623730951},"389":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.0},"397":{"tf":1.0},"40":{"tf":1.0},"41":{"tf":1.0},"417":{"tf":1.0},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":2.0},"460":{"tf":1.0},"462":{"tf":1.0},"478":{"tf":1.4142135623730951},"48":{"tf":1.0},"504":{"tf":1.0},"510":{"tf":1.0},"522":{"tf":1.0},"528":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"538":{"tf":2.449489742783178},"539":{"tf":2.0},"552":{"tf":1.0},"559":{"tf":1.0},"565":{"tf":1.0},"599":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"462":{"tf":1.0}}}}}}},"g":{"df":0,"docs":{},"r":{"a":{"d":{"df":1,"docs":{"237":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"218":{"tf":1.0}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"n":{"df":5,"docs":{"201":{"tf":1.0},"209":{"tf":1.0},"27":{"tf":1.0},"358":{"tf":1.0},"470":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":2,"docs":{"292":{"tf":1.0},"347":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"r":{"df":1,"docs":{"156":{"tf":1.0}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"602":{"tf":1.0}}}}}},"l":{":":{":":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"268":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":9,"docs":{"217":{"tf":1.4142135623730951},"268":{"tf":1.4142135623730951},"307":{"tf":2.23606797749979},"308":{"tf":1.7320508075688772},"309":{"tf":1.4142135623730951},"310":{"tf":2.0},"311":{"tf":1.4142135623730951},"312":{"tf":2.0},"320":{"tf":1.4142135623730951}},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"309":{"tf":1.0},"320":{"tf":1.0}}}}},"df":0,"docs":{}}}},"s":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"530":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":11,"docs":{"127":{"tf":1.0},"268":{"tf":1.0},"336":{"tf":1.4142135623730951},"340":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0},"450":{"tf":1.0},"469":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.0}}}},"df":221,"docs":{"10":{"tf":1.0},"107":{"tf":1.0},"108":{"tf":1.4142135623730951},"110":{"tf":1.0},"115":{"tf":1.0},"116":{"tf":1.0},"118":{"tf":1.4142135623730951},"124":{"tf":1.0},"127":{"tf":1.7320508075688772},"133":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.0},"142":{"tf":1.0},"143":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.4142135623730951},"15":{"tf":1.0},"153":{"tf":1.4142135623730951},"154":{"tf":1.0},"155":{"tf":1.4142135623730951},"156":{"tf":2.0},"16":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"168":{"tf":1.0},"177":{"tf":1.4142135623730951},"178":{"tf":1.0},"179":{"tf":1.0},"181":{"tf":1.0},"185":{"tf":1.4142135623730951},"187":{"tf":1.0},"189":{"tf":1.0},"190":{"tf":1.0},"191":{"tf":1.4142135623730951},"192":{"tf":1.0},"195":{"tf":2.0},"198":{"tf":1.0},"200":{"tf":1.4142135623730951},"203":{"tf":1.0},"206":{"tf":1.0},"209":{"tf":2.6457513110645907},"21":{"tf":1.0},"211":{"tf":1.0},"213":{"tf":1.7320508075688772},"217":{"tf":1.7320508075688772},"218":{"tf":2.449489742783178},"221":{"tf":3.3166247903554},"224":{"tf":1.0},"225":{"tf":1.0},"23":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.7320508075688772},"233":{"tf":1.0},"234":{"tf":2.0},"237":{"tf":2.0},"245":{"tf":1.4142135623730951},"246":{"tf":1.7320508075688772},"248":{"tf":1.4142135623730951},"250":{"tf":1.0},"251":{"tf":1.7320508075688772},"252":{"tf":1.7320508075688772},"256":{"tf":1.0},"257":{"tf":2.449489742783178},"258":{"tf":2.0},"259":{"tf":1.0},"26":{"tf":1.0},"261":{"tf":1.0},"268":{"tf":2.8284271247461903},"27":{"tf":1.4142135623730951},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"274":{"tf":1.7320508075688772},"275":{"tf":1.0},"276":{"tf":4.0},"277":{"tf":1.0},"278":{"tf":1.7320508075688772},"279":{"tf":1.4142135623730951},"28":{"tf":1.4142135623730951},"280":{"tf":1.0},"281":{"tf":1.0},"284":{"tf":2.8284271247461903},"288":{"tf":1.4142135623730951},"289":{"tf":1.0},"292":{"tf":3.872983346207417},"300":{"tf":2.8284271247461903},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":2.449489742783178},"31":{"tf":1.0},"310":{"tf":1.4142135623730951},"311":{"tf":1.0},"312":{"tf":1.0},"315":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"320":{"tf":1.0},"321":{"tf":2.449489742783178},"323":{"tf":1.7320508075688772},"325":{"tf":1.0},"328":{"tf":1.7320508075688772},"336":{"tf":3.0},"338":{"tf":1.4142135623730951},"340":{"tf":1.0},"341":{"tf":2.0},"344":{"tf":1.0},"347":{"tf":3.872983346207417},"349":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":2.23606797749979},"358":{"tf":1.4142135623730951},"359":{"tf":2.0},"360":{"tf":1.0},"370":{"tf":3.3166247903554},"380":{"tf":3.1622776601683795},"383":{"tf":1.4142135623730951},"389":{"tf":2.0},"39":{"tf":1.0},"391":{"tf":1.7320508075688772},"392":{"tf":1.4142135623730951},"394":{"tf":1.4142135623730951},"397":{"tf":1.0},"40":{"tf":1.0},"408":{"tf":1.4142135623730951},"41":{"tf":1.4142135623730951},"414":{"tf":1.7320508075688772},"415":{"tf":1.7320508075688772},"416":{"tf":1.0},"417":{"tf":2.449489742783178},"418":{"tf":1.0},"419":{"tf":1.7320508075688772},"420":{"tf":1.0},"421":{"tf":3.4641016151377544},"422":{"tf":2.449489742783178},"423":{"tf":1.0},"424":{"tf":1.0},"425":{"tf":1.4142135623730951},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0},"431":{"tf":2.0},"435":{"tf":1.0},"437":{"tf":1.7320508075688772},"44":{"tf":1.0},"440":{"tf":1.7320508075688772},"445":{"tf":1.0},"448":{"tf":1.0},"45":{"tf":1.7320508075688772},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.7320508075688772},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.0},"462":{"tf":1.7320508075688772},"463":{"tf":1.4142135623730951},"464":{"tf":1.7320508075688772},"465":{"tf":1.4142135623730951},"469":{"tf":2.0},"47":{"tf":1.0},"470":{"tf":3.3166247903554},"474":{"tf":1.0},"478":{"tf":1.0},"481":{"tf":1.4142135623730951},"483":{"tf":1.0},"487":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"502":{"tf":1.4142135623730951},"503":{"tf":2.449489742783178},"504":{"tf":2.0},"507":{"tf":1.4142135623730951},"511":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.4142135623730951},"517":{"tf":1.7320508075688772},"519":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":3.0},"523":{"tf":1.4142135623730951},"526":{"tf":1.4142135623730951},"529":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.4142135623730951},"542":{"tf":1.0},"543":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"557":{"tf":1.0},"56":{"tf":1.0},"561":{"tf":1.0},"564":{"tf":1.4142135623730951},"565":{"tf":1.0},"572":{"tf":1.0},"573":{"tf":1.0},"580":{"tf":1.4142135623730951},"581":{"tf":1.4142135623730951},"597":{"tf":1.4142135623730951},"598":{"tf":1.0},"599":{"tf":2.6457513110645907},"61":{"tf":2.0},"62":{"tf":1.4142135623730951},"64":{"tf":1.0},"65":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"76":{"tf":1.4142135623730951},"77":{"tf":1.0},"8":{"tf":1.7320508075688772},"82":{"tf":1.4142135623730951},"89":{"tf":1.0},"9":{"tf":1.7320508075688772},"91":{"tf":1.0},"98":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"'":{"df":1,"docs":{"397":{"tf":1.0}}},"df":71,"docs":{"11":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.0},"139":{"tf":1.0},"155":{"tf":1.4142135623730951},"156":{"tf":2.23606797749979},"158":{"tf":1.0},"166":{"tf":1.0},"168":{"tf":1.0},"171":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"221":{"tf":2.23606797749979},"228":{"tf":1.0},"23":{"tf":1.0},"237":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"261":{"tf":1.4142135623730951},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"300":{"tf":2.23606797749979},"302":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"331":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"367":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"376":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":2.0},"392":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.7320508075688772},"407":{"tf":1.0},"412":{"tf":1.4142135623730951},"416":{"tf":1.0},"430":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"450":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"508":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0},"538":{"tf":1.0}},"s":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"284":{"tf":1.0}}}}}}},"df":0,"docs":{},"p":{"a":{"c":{"df":1,"docs":{"344":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"z":{"df":5,"docs":{"217":{"tf":1.7320508075688772},"370":{"tf":3.872983346207417},"419":{"tf":1.0},"421":{"tf":1.0},"568":{"tf":1.0}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":13,"docs":{"127":{"tf":1.4142135623730951},"237":{"tf":1.0},"240":{"tf":1.0},"245":{"tf":1.0},"272":{"tf":1.0},"284":{"tf":1.0},"347":{"tf":1.0},"360":{"tf":1.0},"383":{"tf":1.0},"42":{"tf":1.0},"45":{"tf":1.0},"469":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":9,"docs":{"116":{"tf":1.0},"120":{"tf":1.0},"125":{"tf":1.0},"156":{"tf":1.0},"284":{"tf":1.0},"372":{"tf":1.4142135623730951},"517":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":2,"docs":{"234":{"tf":1.0},"300":{"tf":1.0}}}}}}}}},"v":{"0":{".":{"1":{".":{"0":{"df":1,"docs":{"440":{"tf":1.0}}},"df":0,"docs":{}},"1":{".":{"2":{"df":1,"docs":{"234":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"df":1,"docs":{"234":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"1":{"df":1,"docs":{"234":{"tf":1.0}}},"3":{".":{"3":{".":{"2":{"df":1,"docs":{"234":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"a":{"c":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"552":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":4,"docs":{"268":{"tf":1.0},"321":{"tf":1.0},"380":{"tf":1.0},"560":{"tf":1.0}}}},"l":{"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"178":{"tf":1.0},"217":{"tf":1.0},"54":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":21,"docs":{"209":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"246":{"tf":1.0},"268":{"tf":1.0},"271":{"tf":1.0},"292":{"tf":1.4142135623730951},"307":{"tf":1.4142135623730951},"310":{"tf":1.4142135623730951},"380":{"tf":1.0},"389":{"tf":1.0},"440":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":1.7320508075688772},"495":{"tf":1.0},"496":{"tf":1.0},"573":{"tf":1.4142135623730951},"599":{"tf":1.0},"86":{"tf":1.0},"9":{"tf":1.0},"92":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"a":{"b":{"df":0,"docs":{},"l":{"df":4,"docs":{"217":{"tf":1.4142135623730951},"336":{"tf":1.0},"397":{"tf":1.0},"599":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":10,"docs":{"199":{"tf":1.0},"209":{"tf":2.0},"214":{"tf":1.0},"320":{"tf":1.0},"323":{"tf":1.0},"325":{"tf":1.4142135623730951},"522":{"tf":1.0},"72":{"tf":1.4142135623730951},"73":{"tf":1.4142135623730951},"74":{"tf":1.4142135623730951}}}},"t":{"df":2,"docs":{"392":{"tf":1.0},"498":{"tf":2.23606797749979}}}},"df":2,"docs":{"174":{"tf":1.0},"560":{"tf":1.0}},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":2,"docs":{"146":{"tf":1.0},"389":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"u":{"df":26,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"142":{"tf":1.0},"15":{"tf":1.0},"156":{"tf":1.4142135623730951},"19":{"tf":1.0},"300":{"tf":1.4142135623730951},"307":{"tf":1.0},"358":{"tf":1.0},"365":{"tf":1.0},"417":{"tf":1.0},"419":{"tf":1.4142135623730951},"421":{"tf":1.7320508075688772},"498":{"tf":1.0},"502":{"tf":1.0},"503":{"tf":1.0},"557":{"tf":1.0},"58":{"tf":1.0},"584":{"tf":1.0},"82":{"tf":1.0},"89":{"tf":1.0},"9":{"tf":1.0},"94":{"tf":1.0},"98":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"231":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"!":{"[":{"1":{",":{"3":{",":{"5":{",":{"3":{"1":{",":{"2":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"380":{"tf":2.23606797749979}}}}}},"df":0,"docs":{}},"<":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":7,"docs":{"307":{"tf":2.0},"308":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":2.23606797749979},"311":{"tf":1.0},"312":{"tf":1.7320508075688772},"320":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"209":{"tf":1.0}}}}}}}}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"<":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"df":1,"docs":{"380":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"309":{"tf":1.0}}}}},"u":{"8":{"df":1,"docs":{"199":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"380":{"tf":2.0}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"125":{"tf":1.0},"209":{"tf":1.0},"312":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"r":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":3,"docs":{"397":{"tf":1.4142135623730951},"440":{"tf":1.0},"448":{"tf":1.0}}}}},"df":0,"docs":{},"g":{"df":1,"docs":{"139":{"tf":1.0}}},"i":{"df":41,"docs":{"108":{"tf":1.4142135623730951},"110":{"tf":1.4142135623730951},"111":{"tf":1.0},"130":{"tf":1.0},"156":{"tf":2.449489742783178},"190":{"tf":1.0},"192":{"tf":1.0},"195":{"tf":1.0},"203":{"tf":1.0},"211":{"tf":1.0},"213":{"tf":1.0},"221":{"tf":1.0},"233":{"tf":1.0},"235":{"tf":1.0},"241":{"tf":1.0},"261":{"tf":1.0},"265":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.7320508075688772},"302":{"tf":1.0},"309":{"tf":1.0},"316":{"tf":1.0},"336":{"tf":1.0},"341":{"tf":1.0},"347":{"tf":1.4142135623730951},"356":{"tf":1.0},"372":{"tf":1.4142135623730951},"380":{"tf":2.449489742783178},"408":{"tf":1.0},"410":{"tf":1.0},"417":{"tf":1.4142135623730951},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"460":{"tf":1.4142135623730951},"51":{"tf":1.0},"533":{"tf":1.0},"549":{"tf":1.0},"566":{"tf":1.0},"599":{"tf":1.0},"73":{"tf":1.0}},"f":{"df":1,"docs":{"178":{"tf":1.0}},"i":{"df":3,"docs":{"237":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0}}}}},"s":{"a":{"df":1,"docs":{"321":{"tf":1.0}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":19,"docs":{"209":{"tf":1.7320508075688772},"214":{"tf":1.0},"224":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":2.0},"237":{"tf":2.0},"257":{"tf":1.0},"276":{"tf":1.0},"323":{"tf":1.0},"336":{"tf":1.7320508075688772},"358":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.4142135623730951},"41":{"tf":1.0},"470":{"tf":1.4142135623730951},"483":{"tf":1.0},"5":{"tf":1.0},"522":{"tf":1.0},"599":{"tf":1.7320508075688772}}}}},"u":{"df":1,"docs":{"211":{"tf":1.0}}}}}},"i":{"a":{"df":12,"docs":{"110":{"tf":1.0},"209":{"tf":1.4142135623730951},"213":{"tf":1.0},"214":{"tf":1.0},"342":{"tf":1.0},"347":{"tf":1.0},"422":{"tf":1.0},"453":{"tf":1.0},"503":{"tf":1.0},"539":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0}}},"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"530":{"tf":1.0}}}}},"df":0,"docs":{}}},"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"321":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":1,"docs":{"113":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"258":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":6,"docs":{"380":{"tf":1.0},"404":{"tf":1.4142135623730951},"448":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.0},"542":{"tf":1.0}}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"209":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"156":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":547,"docs":{"10":{"tf":2.23606797749979},"100":{"tf":1.0},"101":{"tf":1.0},"102":{"tf":1.0},"103":{"tf":1.0},"104":{"tf":1.0},"105":{"tf":1.0},"106":{"tf":1.0},"107":{"tf":1.0},"108":{"tf":1.0},"109":{"tf":1.0},"11":{"tf":1.7320508075688772},"110":{"tf":1.0},"111":{"tf":1.0},"112":{"tf":1.0},"113":{"tf":1.0},"114":{"tf":1.0},"115":{"tf":1.0},"116":{"tf":1.0},"117":{"tf":1.0},"118":{"tf":1.0},"119":{"tf":1.0},"12":{"tf":1.4142135623730951},"120":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"123":{"tf":1.0},"124":{"tf":1.0},"125":{"tf":1.0},"126":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.0},"129":{"tf":1.0},"13":{"tf":2.0},"130":{"tf":1.0},"131":{"tf":1.0},"132":{"tf":1.0},"133":{"tf":1.0},"134":{"tf":1.0},"135":{"tf":1.0},"136":{"tf":1.0},"137":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.0},"14":{"tf":1.4142135623730951},"140":{"tf":1.0},"141":{"tf":1.0},"142":{"tf":1.0},"143":{"tf":1.0},"144":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"15":{"tf":1.7320508075688772},"150":{"tf":1.0},"151":{"tf":1.0},"152":{"tf":1.7320508075688772},"153":{"tf":1.0},"154":{"tf":1.0},"155":{"tf":1.0},"156":{"tf":1.0},"157":{"tf":1.4142135623730951},"158":{"tf":1.0},"159":{"tf":1.0},"16":{"tf":1.4142135623730951},"160":{"tf":1.0},"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"165":{"tf":1.0},"166":{"tf":1.0},"167":{"tf":1.0},"168":{"tf":1.0},"169":{"tf":1.0},"17":{"tf":2.0},"170":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"175":{"tf":1.0},"176":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"18":{"tf":1.4142135623730951},"180":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"185":{"tf":1.0},"186":{"tf":1.0},"187":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"19":{"tf":1.4142135623730951},"190":{"tf":1.0},"191":{"tf":1.0},"192":{"tf":1.0},"193":{"tf":1.0},"194":{"tf":1.0},"195":{"tf":1.0},"196":{"tf":1.0},"197":{"tf":1.0},"198":{"tf":1.0},"199":{"tf":1.0},"20":{"tf":2.0},"200":{"tf":1.0},"201":{"tf":1.0},"202":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"207":{"tf":1.0},"208":{"tf":1.0},"209":{"tf":1.0},"21":{"tf":1.4142135623730951},"210":{"tf":1.0},"211":{"tf":1.4142135623730951},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"215":{"tf":1.0},"216":{"tf":1.0},"217":{"tf":1.0},"218":{"tf":1.0},"219":{"tf":1.0},"22":{"tf":1.4142135623730951},"220":{"tf":1.0},"221":{"tf":1.0},"222":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"227":{"tf":1.0},"228":{"tf":1.0},"229":{"tf":1.0},"23":{"tf":2.23606797749979},"230":{"tf":1.0},"231":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"235":{"tf":1.0},"236":{"tf":1.0},"237":{"tf":1.0},"238":{"tf":1.0},"239":{"tf":1.0},"24":{"tf":1.4142135623730951},"240":{"tf":1.0},"241":{"tf":1.0},"242":{"tf":1.0},"243":{"tf":1.0},"244":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"247":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.0},"25":{"tf":1.4142135623730951},"250":{"tf":1.0},"251":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.0},"254":{"tf":1.0},"255":{"tf":1.0},"256":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"26":{"tf":1.4142135623730951},"260":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.0},"267":{"tf":1.0},"268":{"tf":1.0},"269":{"tf":1.0},"27":{"tf":1.4142135623730951},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"274":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.0},"277":{"tf":1.0},"278":{"tf":1.0},"279":{"tf":1.0},"28":{"tf":1.4142135623730951},"280":{"tf":1.0},"281":{"tf":1.0},"282":{"tf":1.0},"283":{"tf":1.0},"284":{"tf":1.0},"285":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"29":{"tf":1.4142135623730951},"290":{"tf":1.0},"291":{"tf":1.0},"292":{"tf":1.0},"293":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"298":{"tf":1.0},"299":{"tf":1.0},"30":{"tf":1.4142135623730951},"300":{"tf":1.0},"301":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0},"305":{"tf":1.0},"306":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.0},"31":{"tf":1.4142135623730951},"310":{"tf":1.0},"311":{"tf":1.0},"312":{"tf":1.0},"313":{"tf":1.0},"314":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.4142135623730951},"320":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"325":{"tf":1.0},"326":{"tf":1.0},"327":{"tf":1.0},"328":{"tf":1.0},"329":{"tf":1.0},"33":{"tf":1.4142135623730951},"330":{"tf":1.0},"331":{"tf":1.0},"332":{"tf":1.0},"333":{"tf":1.0},"334":{"tf":1.0},"335":{"tf":1.0},"336":{"tf":1.0},"337":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.0},"34":{"tf":1.4142135623730951},"340":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"344":{"tf":1.0},"345":{"tf":1.0},"346":{"tf":1.0},"347":{"tf":1.0},"348":{"tf":1.0},"349":{"tf":1.0},"35":{"tf":1.4142135623730951},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"354":{"tf":1.0},"355":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"359":{"tf":1.0},"36":{"tf":1.4142135623730951},"360":{"tf":1.0},"361":{"tf":1.0},"362":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"368":{"tf":1.0},"369":{"tf":1.0},"37":{"tf":2.23606797749979},"370":{"tf":1.0},"371":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"374":{"tf":1.0},"375":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.0},"379":{"tf":1.0},"38":{"tf":1.4142135623730951},"380":{"tf":1.0},"381":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"386":{"tf":1.0},"387":{"tf":1.0},"388":{"tf":1.0},"389":{"tf":1.0},"39":{"tf":1.4142135623730951},"390":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"395":{"tf":1.0},"396":{"tf":1.0},"397":{"tf":1.0},"398":{"tf":1.0},"399":{"tf":1.0},"40":{"tf":1.4142135623730951},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.0},"403":{"tf":1.0},"404":{"tf":1.0},"405":{"tf":1.0},"406":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"409":{"tf":1.0},"41":{"tf":1.4142135623730951},"410":{"tf":1.0},"411":{"tf":1.0},"412":{"tf":1.0},"413":{"tf":1.0},"414":{"tf":1.0},"415":{"tf":1.0},"416":{"tf":1.0},"417":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.4142135623730951},"420":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"423":{"tf":1.0},"424":{"tf":1.0},"425":{"tf":1.0},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0},"429":{"tf":1.0},"43":{"tf":1.4142135623730951},"430":{"tf":1.0},"431":{"tf":1.0},"432":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"437":{"tf":1.0},"438":{"tf":1.0},"439":{"tf":1.0},"44":{"tf":1.4142135623730951},"440":{"tf":1.0},"441":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"446":{"tf":1.0},"447":{"tf":1.0},"448":{"tf":1.0},"449":{"tf":1.0},"45":{"tf":1.4142135623730951},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"454":{"tf":1.0},"455":{"tf":1.0},"456":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"459":{"tf":1.0},"46":{"tf":1.4142135623730951},"460":{"tf":1.0},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"466":{"tf":1.0},"467":{"tf":1.0},"468":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":2.0},"470":{"tf":1.0},"471":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":1.0},"475":{"tf":1.0},"476":{"tf":1.0},"477":{"tf":1.0},"478":{"tf":1.0},"479":{"tf":1.0},"48":{"tf":1.4142135623730951},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"484":{"tf":1.0},"485":{"tf":1.7320508075688772},"486":{"tf":1.0},"487":{"tf":1.0},"488":{"tf":1.0},"489":{"tf":1.4142135623730951},"49":{"tf":1.4142135623730951},"490":{"tf":1.4142135623730951},"491":{"tf":1.0},"492":{"tf":1.0},"493":{"tf":1.0},"494":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"497":{"tf":1.0},"498":{"tf":1.0},"499":{"tf":1.0},"50":{"tf":1.4142135623730951},"500":{"tf":1.0},"501":{"tf":1.4142135623730951},"502":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"505":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.0},"51":{"tf":2.0},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"518":{"tf":1.0},"519":{"tf":1.4142135623730951},"52":{"tf":2.0},"520":{"tf":1.0},"521":{"tf":1.0},"522":{"tf":1.0},"523":{"tf":1.0},"524":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"53":{"tf":1.4142135623730951},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"536":{"tf":1.0},"537":{"tf":1.4142135623730951},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.4142135623730951},"540":{"tf":1.0},"541":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"55":{"tf":1.4142135623730951},"550":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"553":{"tf":1.0},"56":{"tf":1.4142135623730951},"57":{"tf":1.4142135623730951},"58":{"tf":2.0},"59":{"tf":1.4142135623730951},"60":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0},"63":{"tf":1.0},"64":{"tf":1.0},"65":{"tf":1.0},"66":{"tf":1.0},"67":{"tf":1.0},"68":{"tf":1.0},"69":{"tf":1.0},"7":{"tf":1.7320508075688772},"70":{"tf":1.0},"71":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0},"75":{"tf":1.0},"76":{"tf":1.0},"77":{"tf":1.0},"78":{"tf":1.0},"79":{"tf":1.0},"8":{"tf":1.4142135623730951},"80":{"tf":1.0},"81":{"tf":1.0},"82":{"tf":1.0},"83":{"tf":1.0},"84":{"tf":1.0},"85":{"tf":1.0},"86":{"tf":1.0},"87":{"tf":1.0},"88":{"tf":1.0},"89":{"tf":1.0},"9":{"tf":1.7320508075688772},"90":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.0},"93":{"tf":1.0},"94":{"tf":1.0},"95":{"tf":1.0},"96":{"tf":1.0},"97":{"tf":1.0},"98":{"tf":1.0},"99":{"tf":1.0}}}},"t":{"df":1,"docs":{"27":{"tf":1.0}}}},"u":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"284":{"tf":1.0},"414":{"tf":1.0},"504":{"tf":1.0}},"v":{"df":0,"docs":{},"m":{"df":1,"docs":{"213":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"l":{"a":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"1":{"0":{"0":{"0":{"df":1,"docs":{"602":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"m":{"df":1,"docs":{"414":{"tf":1.0}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"559":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":4,"docs":{"14":{"tf":1.0},"16":{"tf":1.0},"58":{"tf":1.0},"60":{"tf":1.7320508075688772}}}},"w":{"df":1,"docs":{"276":{"tf":1.0}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"195":{"tf":1.4142135623730951}}}}}},"s":{"c":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"380":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":4,"docs":{"136":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.0},"300":{"tf":1.0}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"336":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"53":{"tf":1.0}}}}}}}},"w":{".":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"t":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{}}},"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":23,"docs":{"156":{"tf":1.0},"19":{"tf":1.4142135623730951},"2":{"tf":1.0},"237":{"tf":1.0},"284":{"tf":2.0},"328":{"tf":1.0},"336":{"tf":1.4142135623730951},"380":{"tf":2.6457513110645907},"408":{"tf":1.0},"412":{"tf":1.0},"446":{"tf":1.7320508075688772},"447":{"tf":1.0},"448":{"tf":1.4142135623730951},"449":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"456":{"tf":1.7320508075688772},"457":{"tf":1.0},"538":{"tf":2.0},"539":{"tf":1.4142135623730951},"556":{"tf":1.0}}}},"k":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}}},"/":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"b":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":8,"docs":{"200":{"tf":1.0},"284":{"tf":1.0},"328":{"tf":2.6457513110645907},"336":{"tf":2.0},"342":{"tf":1.4142135623730951},"412":{"tf":1.0},"431":{"tf":1.0},"457":{"tf":2.0}},"r":{".":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"_":{"b":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"336":{"tf":1.0}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"328":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"w":{"a":{"df":0,"docs":{},"k":{"df":2,"docs":{"336":{"tf":1.7320508075688772},"342":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":9,"docs":{"156":{"tf":1.0},"197":{"tf":1.0},"200":{"tf":2.0},"203":{"tf":1.0},"258":{"tf":1.0},"328":{"tf":2.449489742783178},"332":{"tf":1.0},"336":{"tf":2.23606797749979},"457":{"tf":1.7320508075688772}}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"336":{"tf":2.0}}}}}},"l":{"df":0,"docs":{},"k":{"df":2,"docs":{"276":{"tf":1.0},"448":{"tf":1.4142135623730951}}},"l":{"df":2,"docs":{"347":{"tf":1.0},"440":{"tf":1.0}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"503":{"tf":1.0}}}}},"df":0,"docs":{},"n":{"a":{"df":1,"docs":{"483":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":57,"docs":{"11":{"tf":1.0},"118":{"tf":1.0},"156":{"tf":1.7320508075688772},"16":{"tf":1.0},"190":{"tf":1.0},"199":{"tf":1.0},"200":{"tf":1.0},"217":{"tf":1.4142135623730951},"218":{"tf":1.0},"23":{"tf":1.0},"24":{"tf":1.0},"268":{"tf":1.0},"27":{"tf":1.0},"276":{"tf":1.0},"300":{"tf":1.7320508075688772},"315":{"tf":1.0},"331":{"tf":1.0},"349":{"tf":1.0},"359":{"tf":1.0},"360":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"38":{"tf":1.0},"405":{"tf":1.0},"412":{"tf":1.4142135623730951},"437":{"tf":1.0},"450":{"tf":1.0},"458":{"tf":1.0},"46":{"tf":1.0},"462":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.4142135623730951},"484":{"tf":1.4142135623730951},"498":{"tf":1.0},"503":{"tf":1.0},"504":{"tf":1.0},"517":{"tf":1.4142135623730951},"52":{"tf":1.0},"527":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"55":{"tf":1.4142135623730951},"556":{"tf":1.4142135623730951},"566":{"tf":1.0},"573":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"599":{"tf":1.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.7320508075688772},"76":{"tf":1.4142135623730951},"8":{"tf":1.0},"81":{"tf":1.4142135623730951},"86":{"tf":1.4142135623730951},"91":{"tf":1.4142135623730951}}}},"r":{"df":0,"docs":{},"n":{"!":{"(":{"\"":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"440":{"tf":1.0}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"w":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":41,"docs":{"158":{"tf":1.4142135623730951},"166":{"tf":1.4142135623730951},"176":{"tf":1.4142135623730951},"186":{"tf":1.4142135623730951},"194":{"tf":1.4142135623730951},"203":{"tf":1.0},"208":{"tf":1.4142135623730951},"216":{"tf":1.4142135623730951},"220":{"tf":1.4142135623730951},"228":{"tf":1.4142135623730951},"243":{"tf":1.4142135623730951},"254":{"tf":1.4142135623730951},"267":{"tf":1.4142135623730951},"275":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"283":{"tf":1.4142135623730951},"291":{"tf":1.4142135623730951},"299":{"tf":1.4142135623730951},"306":{"tf":1.4142135623730951},"327":{"tf":1.4142135623730951},"335":{"tf":1.4142135623730951},"346":{"tf":1.4142135623730951},"355":{"tf":1.4142135623730951},"369":{"tf":1.4142135623730951},"379":{"tf":1.4142135623730951},"388":{"tf":1.4142135623730951},"396":{"tf":1.4142135623730951},"407":{"tf":1.4142135623730951},"416":{"tf":1.4142135623730951},"430":{"tf":1.4142135623730951},"439":{"tf":1.4142135623730951},"447":{"tf":1.4142135623730951},"455":{"tf":1.4142135623730951},"467":{"tf":1.4142135623730951},"477":{"tf":1.4142135623730951},"490":{"tf":1.4142135623730951},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"522":{"tf":1.4142135623730951},"537":{"tf":1.4142135623730951},"539":{"tf":1.0}}},"p":{"df":2,"docs":{"276":{"tf":1.0},"370":{"tf":1.7320508075688772}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"357":{"tf":1.0}}},"m":{"df":1,"docs":{"217":{"tf":1.0}}},"n":{"'":{"df":0,"docs":{},"t":{"df":4,"docs":{"199":{"tf":1.0},"245":{"tf":1.4142135623730951},"276":{"tf":1.4142135623730951},"599":{"tf":1.0}}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"402":{"tf":1.0}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":5,"docs":{"113":{"tf":1.0},"258":{"tf":1.0},"300":{"tf":1.0},"380":{"tf":1.0},"392":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"<":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"440":{"tf":3.7416573867739413}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"y":{"df":69,"docs":{"118":{"tf":1.0},"146":{"tf":1.0},"153":{"tf":1.0},"154":{"tf":1.0},"156":{"tf":1.0},"171":{"tf":1.4142135623730951},"178":{"tf":1.0},"179":{"tf":1.0},"181":{"tf":1.0},"187":{"tf":1.0},"191":{"tf":1.4142135623730951},"195":{"tf":1.0},"197":{"tf":1.0},"203":{"tf":1.0},"213":{"tf":1.0},"224":{"tf":1.0},"252":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"27":{"tf":1.0},"273":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"29":{"tf":1.0},"296":{"tf":1.0},"300":{"tf":1.4142135623730951},"302":{"tf":1.0},"309":{"tf":1.0},"319":{"tf":1.0},"320":{"tf":1.4142135623730951},"322":{"tf":1.0},"323":{"tf":1.4142135623730951},"336":{"tf":1.4142135623730951},"342":{"tf":1.4142135623730951},"344":{"tf":1.0},"349":{"tf":1.0},"350":{"tf":1.0},"370":{"tf":1.4142135623730951},"372":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.4142135623730951},"408":{"tf":1.4142135623730951},"410":{"tf":1.4142135623730951},"413":{"tf":1.0},"417":{"tf":1.7320508075688772},"418":{"tf":1.0},"419":{"tf":1.0},"42":{"tf":1.0},"421":{"tf":1.0},"423":{"tf":1.7320508075688772},"445":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.7320508075688772},"460":{"tf":1.0},"470":{"tf":1.0},"487":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0},"507":{"tf":1.0},"508":{"tf":1.0},"515":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"54":{"tf":1.0},"57":{"tf":1.0},"599":{"tf":1.7320508075688772},"61":{"tf":1.0},"84":{"tf":1.0}}}},"df":0,"docs":{},"e":{"'":{"d":{"df":3,"docs":{"16":{"tf":1.0},"487":{"tf":1.0},"508":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":14,"docs":{"155":{"tf":1.0},"157":{"tf":1.0},"21":{"tf":1.0},"24":{"tf":1.0},"26":{"tf":1.0},"31":{"tf":1.0},"38":{"tf":1.0},"39":{"tf":1.0},"44":{"tf":1.0},"489":{"tf":1.0},"493":{"tf":1.0},"499":{"tf":1.4142135623730951},"506":{"tf":1.0},"58":{"tf":1.0}}}},"r":{"df":7,"docs":{"155":{"tf":1.0},"49":{"tf":1.0},"53":{"tf":1.0},"55":{"tf":1.0},"550":{"tf":1.4142135623730951},"551":{"tf":1.4142135623730951},"60":{"tf":1.0}}},"v":{"df":7,"docs":{"153":{"tf":1.0},"18":{"tf":1.0},"21":{"tf":1.0},"481":{"tf":1.0},"64":{"tf":1.0},"9":{"tf":1.0},"96":{"tf":1.0}}}},"b":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":1,"docs":{"217":{"tf":1.0}}},"y":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"217":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"509":{"tf":1.0},"62":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":32,"docs":{"156":{"tf":1.4142135623730951},"195":{"tf":1.0},"212":{"tf":1.0},"227":{"tf":1.7320508075688772},"228":{"tf":1.0},"229":{"tf":1.0},"230":{"tf":3.0},"231":{"tf":2.23606797749979},"232":{"tf":1.0},"233":{"tf":1.4142135623730951},"234":{"tf":2.0},"235":{"tf":1.7320508075688772},"236":{"tf":1.0},"237":{"tf":2.449489742783178},"238":{"tf":1.0},"239":{"tf":1.4142135623730951},"240":{"tf":1.0},"241":{"tf":1.0},"290":{"tf":1.7320508075688772},"291":{"tf":1.0},"292":{"tf":2.8284271247461903},"293":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.4142135623730951},"297":{"tf":1.0},"300":{"tf":1.0},"307":{"tf":1.4142135623730951},"315":{"tf":1.0},"370":{"tf":1.0},"523":{"tf":1.7320508075688772},"542":{"tf":1.0}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"0":{"tf":1.0},"134":{"tf":1.0},"27":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":3,"docs":{"156":{"tf":1.0},"276":{"tf":2.8284271247461903},"279":{"tf":1.4142135623730951}},"s":{"/":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"/":{"1":{"5":{"#":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"279":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"/":{"1":{"7":{"df":1,"docs":{"279":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"k":{"df":6,"docs":{"15":{"tf":1.4142135623730951},"168":{"tf":1.0},"195":{"tf":1.0},"276":{"tf":1.0},"380":{"tf":1.0},"456":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"246":{"tf":1.0},"370":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"i":{"df":3,"docs":{"2":{"tf":1.0},"555":{"tf":1.0},"558":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":1,"docs":{"300":{"tf":1.0}},"t":{"df":3,"docs":{"336":{"tf":1.4142135623730951},"338":{"tf":1.0},"343":{"tf":1.0}}}}},"r":{"d":{"df":1,"docs":{"199":{"tf":1.0}}},"df":0,"docs":{}}},"l":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":9,"docs":{"0":{"tf":2.0},"1":{"tf":1.0},"2":{"tf":1.0},"276":{"tf":1.0},"3":{"tf":1.0},"4":{"tf":1.0},"437":{"tf":1.0},"5":{"tf":1.0},"6":{"tf":1.0}}}}},"df":0,"docs":{},"l":{"df":44,"docs":{"143":{"tf":1.0},"156":{"tf":1.4142135623730951},"177":{"tf":1.0},"188":{"tf":1.0},"189":{"tf":1.0},"199":{"tf":1.0},"211":{"tf":1.0},"217":{"tf":1.0},"259":{"tf":1.0},"276":{"tf":1.4142135623730951},"292":{"tf":1.0},"300":{"tf":1.0},"309":{"tf":1.0},"310":{"tf":1.0},"317":{"tf":1.0},"318":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"352":{"tf":1.0},"380":{"tf":1.4142135623730951},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"41":{"tf":1.0},"436":{"tf":1.0},"457":{"tf":1.0},"469":{"tf":1.4142135623730951},"470":{"tf":1.0},"502":{"tf":1.0},"508":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.0},"515":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"538":{"tf":1.0},"539":{"tf":1.0},"542":{"tf":1.0},"599":{"tf":1.4142135623730951},"61":{"tf":1.0},"62":{"tf":1.0},"65":{"tf":1.0},"79":{"tf":1.0},"82":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"246":{"tf":1.0},"27":{"tf":1.0},"470":{"tf":1.0},"502":{"tf":1.0}}}},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":2,"docs":{"602":{"tf":1.0},"603":{"tf":1.0}}}}}}}}}},"g":{"df":6,"docs":{"0":{"tf":1.0},"16":{"tf":1.0},"17":{"tf":1.4142135623730951},"24":{"tf":1.0},"25":{"tf":1.0},"4":{"tf":1.0}}},"h":{"a":{"df":0,"docs":{},"t":{"'":{"df":9,"docs":{"261":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"284":{"tf":1.0},"309":{"tf":1.4142135623730951},"328":{"tf":1.0},"383":{"tf":1.7320508075688772},"431":{"tf":1.0},"502":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":11,"docs":{"159":{"tf":1.0},"217":{"tf":1.0},"27":{"tf":1.0},"28":{"tf":1.0},"300":{"tf":1.0},"41":{"tf":1.0},"453":{"tf":1.0},"491":{"tf":1.0},"578":{"tf":1.0},"8":{"tf":1.0},"99":{"tf":1.0}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"62":{"tf":1.0}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"217":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":1,"docs":{"341":{"tf":1.0}}},"b":{"df":0,"docs":{},"i":{"df":1,"docs":{"417":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":13,"docs":{"209":{"tf":1.0},"211":{"tf":1.0},"235":{"tf":1.0},"25":{"tf":1.0},"252":{"tf":1.0},"27":{"tf":1.0},"271":{"tf":1.0},"292":{"tf":1.0},"300":{"tf":1.4142135623730951},"423":{"tf":1.0},"529":{"tf":1.0},"539":{"tf":1.0},"543":{"tf":1.0}}}}}}},"i":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"507":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":11,"docs":{"11":{"tf":1.4142135623730951},"200":{"tf":1.0},"209":{"tf":1.0},"217":{"tf":1.4142135623730951},"226":{"tf":1.0},"258":{"tf":1.0},"284":{"tf":1.0},"311":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"538":{"tf":1.4142135623730951}}}},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"399":{"tf":1.0},"483":{"tf":1.0}}}}}},"i":{"d":{"df":0,"docs":{},"e":{"df":2,"docs":{"116":{"tf":1.0},"156":{"tf":1.0}}}},"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":1,"docs":{"192":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"559":{"tf":1.0}}}}}}},"n":{"d":{"df":3,"docs":{"156":{"tf":1.4142135623730951},"322":{"tf":1.0},"504":{"tf":1.0}},"o":{"df":0,"docs":{},"w":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"(":{"&":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"(":{")":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{".":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"217":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":5,"docs":{"188":{"tf":1.0},"217":{"tf":1.0},"245":{"tf":1.4142135623730951},"538":{"tf":1.7320508075688772},"539":{"tf":1.0}}}}},"df":2,"docs":{"389":{"tf":1.0},"60":{"tf":1.0}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"15":{"tf":1.0},"60":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"456":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"108":{"tf":1.0}}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"67":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"360":{"tf":1.0}}}},"h":{"4":{"df":7,"docs":{"538":{"tf":2.23606797749979},"539":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.4142135623730951},"546":{"tf":1.4142135623730951},"547":{"tf":1.0}}},"df":45,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"309":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"380":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"408":{"tf":1.0},"416":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.4142135623730951},"501":{"tf":1.4142135623730951},"519":{"tf":1.4142135623730951},"536":{"tf":1.7320508075688772},"537":{"tf":1.7320508075688772},"538":{"tf":1.0},"539":{"tf":1.0},"540":{"tf":1.0},"541":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"565":{"tf":1.0}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"599":{"tf":1.0}}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":24,"docs":{"107":{"tf":1.0},"115":{"tf":1.0},"124":{"tf":1.0},"133":{"tf":1.0},"142":{"tf":1.0},"209":{"tf":1.0},"231":{"tf":1.0},"276":{"tf":1.4142135623730951},"309":{"tf":1.0},"310":{"tf":1.0},"321":{"tf":1.0},"322":{"tf":1.0},"336":{"tf":1.0},"347":{"tf":1.0},"359":{"tf":1.4142135623730951},"417":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"440":{"tf":4.47213595499958},"448":{"tf":1.0},"504":{"tf":1.0},"522":{"tf":1.0},"545":{"tf":1.0},"98":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"b":{"df":0,"docs":{},"o":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"365":{"tf":1.0}}}},"df":0,"docs":{}}},"df":34,"docs":{"108":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"156":{"tf":1.0},"171":{"tf":1.0},"190":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"221":{"tf":1.4142135623730951},"239":{"tf":1.0},"278":{"tf":1.0},"292":{"tf":1.0},"294":{"tf":1.0},"319":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"341":{"tf":1.0},"343":{"tf":1.0},"363":{"tf":1.0},"380":{"tf":1.0},"394":{"tf":1.0},"418":{"tf":1.0},"421":{"tf":1.0},"422":{"tf":1.0},"457":{"tf":1.4142135623730951},"462":{"tf":1.0},"480":{"tf":1.4142135623730951},"502":{"tf":1.0},"526":{"tf":1.0},"530":{"tf":1.0},"579":{"tf":1.0},"6":{"tf":1.0},"61":{"tf":1.0},"9":{"tf":1.0}}}}}}}},"l":{"df":1,"docs":{"245":{"tf":1.0}}},"o":{"df":0,"docs":{},"e":{"df":1,"docs":{"360":{"tf":1.4142135623730951}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"342":{"tf":1.0}},"n":{"df":1,"docs":{"284":{"tf":1.4142135623730951}}}}},"n":{"'":{"df":0,"docs":{},"t":{"df":9,"docs":{"125":{"tf":1.0},"221":{"tf":1.0},"226":{"tf":1.0},"237":{"tf":1.0},"256":{"tf":1.0},"328":{"tf":1.0},"341":{"tf":1.0},"380":{"tf":1.0},"521":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":11,"docs":{"198":{"tf":1.4142135623730951},"199":{"tf":1.0},"217":{"tf":1.0},"276":{"tf":1.0},"292":{"tf":1.0},"361":{"tf":1.0},"370":{"tf":1.0},"380":{"tf":1.0},"383":{"tf":1.0},"423":{"tf":1.0},"543":{"tf":1.0}}}}},"df":0,"docs":{}},"r":{"d":{"df":2,"docs":{"249":{"tf":1.0},"336":{"tf":1.0}}},"df":0,"docs":{},"k":{"a":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"423":{"tf":1.0},"538":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":6,"docs":{"153":{"tf":1.0},"181":{"tf":1.0},"218":{"tf":1.0},"278":{"tf":1.0},"370":{"tf":1.0},"442":{"tf":1.0}}},"df":0,"docs":{}}}}}},"df":115,"docs":{"1":{"tf":1.0},"10":{"tf":1.4142135623730951},"12":{"tf":1.4142135623730951},"127":{"tf":1.0},"128":{"tf":1.0},"129":{"tf":1.7320508075688772},"130":{"tf":1.0},"131":{"tf":1.0},"136":{"tf":1.0},"15":{"tf":1.4142135623730951},"153":{"tf":1.0},"156":{"tf":3.1622776601683795},"16":{"tf":1.4142135623730951},"167":{"tf":1.4142135623730951},"168":{"tf":1.0},"171":{"tf":1.0},"177":{"tf":1.0},"178":{"tf":1.0},"188":{"tf":1.0},"192":{"tf":1.0},"196":{"tf":1.0},"199":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"217":{"tf":1.7320508075688772},"218":{"tf":1.0},"221":{"tf":2.6457513110645907},"225":{"tf":1.0},"232":{"tf":1.0},"244":{"tf":1.4142135623730951},"249":{"tf":1.0},"257":{"tf":1.0},"258":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.7320508075688772},"270":{"tf":1.0},"276":{"tf":3.0},"278":{"tf":1.0},"279":{"tf":1.0},"284":{"tf":2.0},"289":{"tf":1.0},"292":{"tf":2.23606797749979},"3":{"tf":2.0},"300":{"tf":1.0},"307":{"tf":1.0},"308":{"tf":1.0},"309":{"tf":1.7320508075688772},"311":{"tf":1.0},"313":{"tf":1.0},"315":{"tf":1.0},"317":{"tf":1.0},"319":{"tf":1.4142135623730951},"320":{"tf":1.4142135623730951},"321":{"tf":1.0},"322":{"tf":1.0},"324":{"tf":1.0},"328":{"tf":2.0},"336":{"tf":1.4142135623730951},"341":{"tf":1.0},"344":{"tf":1.0},"347":{"tf":2.0},"349":{"tf":2.0},"353":{"tf":1.0},"356":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"370":{"tf":2.8284271247461903},"380":{"tf":2.6457513110645907},"383":{"tf":1.4142135623730951},"389":{"tf":1.0},"394":{"tf":1.4142135623730951},"397":{"tf":1.4142135623730951},"408":{"tf":2.0},"41":{"tf":1.0},"421":{"tf":1.4142135623730951},"423":{"tf":1.4142135623730951},"431":{"tf":1.4142135623730951},"440":{"tf":1.0},"442":{"tf":1.0},"457":{"tf":1.0},"464":{"tf":1.0},"469":{"tf":1.0},"470":{"tf":2.0},"472":{"tf":1.0},"474":{"tf":1.4142135623730951},"475":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"487":{"tf":1.4142135623730951},"49":{"tf":1.0},"50":{"tf":1.4142135623730951},"502":{"tf":1.4142135623730951},"504":{"tf":1.4142135623730951},"507":{"tf":1.0},"511":{"tf":1.4142135623730951},"522":{"tf":1.0},"538":{"tf":1.4142135623730951},"539":{"tf":1.4142135623730951},"545":{"tf":1.0},"551":{"tf":1.0},"552":{"tf":1.0},"556":{"tf":1.0},"557":{"tf":1.0},"558":{"tf":1.4142135623730951},"559":{"tf":1.0},"566":{"tf":1.0},"572":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":2.0},"61":{"tf":1.4142135623730951},"62":{"tf":1.0},"73":{"tf":1.7320508075688772},"79":{"tf":1.0},"82":{"tf":1.0},"84":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":7,"docs":{"268":{"tf":1.0},"276":{"tf":1.0},"318":{"tf":1.0},"319":{"tf":1.0},"347":{"tf":1.0},"412":{"tf":1.0},"470":{"tf":2.23606797749979}}}},"f":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":2,"docs":{"435":{"tf":1.0},"475":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":4,"docs":{"128":{"tf":1.0},"349":{"tf":1.0},"502":{"tf":1.0},"504":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"l":{"d":{"!":{"\"":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"257":{"tf":1.4142135623730951},"258":{"tf":1.0},"522":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"(":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"<":{"'":{"_":{"df":1,"docs":{"217":{"tf":1.4142135623730951}}},"a":{"df":1,"docs":{"217":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":13,"docs":{"130":{"tf":1.0},"156":{"tf":1.0},"169":{"tf":1.0},"215":{"tf":1.7320508075688772},"216":{"tf":1.0},"217":{"tf":3.872983346207417},"218":{"tf":1.4142135623730951},"284":{"tf":1.0},"363":{"tf":1.0},"389":{"tf":1.0},"448":{"tf":1.4142135623730951},"522":{"tf":1.7320508075688772},"523":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"i":{"df":7,"docs":{"198":{"tf":1.0},"221":{"tf":1.4142135623730951},"245":{"tf":1.0},"268":{"tf":1.0},"276":{"tf":1.0},"365":{"tf":1.0},"552":{"tf":1.0}}}},"s":{"df":2,"docs":{"328":{"tf":1.0},"367":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"221":{"tf":1.0}}}},"t":{"df":5,"docs":{"190":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":4,"docs":{"268":{"tf":1.0},"309":{"tf":1.0},"341":{"tf":1.4142135623730951},"37":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"d":{"'":{"df":0,"docs":{},"v":{"df":2,"docs":{"340":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":5,"docs":{"217":{"tf":1.0},"221":{"tf":1.0},"225":{"tf":1.4142135623730951},"324":{"tf":1.4142135623730951},"428":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"d":{"df":1,"docs":{"533":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"602":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":4,"docs":{"259":{"tf":1.0},"268":{"tf":1.0},"347":{"tf":1.0},"349":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":5,"docs":{"259":{"tf":1.0},"292":{"tf":1.0},"397":{"tf":1.0},"456":{"tf":1.7320508075688772},"504":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":1,"docs":{"214":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":96,"docs":{"110":{"tf":1.0},"138":{"tf":1.0},"15":{"tf":1.0},"153":{"tf":1.0},"156":{"tf":3.3166247903554},"157":{"tf":1.0},"159":{"tf":1.0},"16":{"tf":1.0},"167":{"tf":1.0},"17":{"tf":1.0},"19":{"tf":1.0},"193":{"tf":1.7320508075688772},"194":{"tf":1.0},"195":{"tf":1.4142135623730951},"196":{"tf":1.4142135623730951},"197":{"tf":1.7320508075688772},"198":{"tf":1.4142135623730951},"199":{"tf":1.7320508075688772},"200":{"tf":1.0},"201":{"tf":1.0},"202":{"tf":1.0},"203":{"tf":1.7320508075688772},"204":{"tf":1.4142135623730951},"205":{"tf":1.0},"206":{"tf":1.4142135623730951},"217":{"tf":1.0},"23":{"tf":1.0},"232":{"tf":1.0},"237":{"tf":1.0},"239":{"tf":1.0},"24":{"tf":1.7320508075688772},"25":{"tf":1.4142135623730951},"258":{"tf":1.0},"26":{"tf":1.0},"268":{"tf":2.0},"27":{"tf":1.0},"284":{"tf":1.0},"290":{"tf":1.7320508075688772},"291":{"tf":1.0},"292":{"tf":1.7320508075688772},"293":{"tf":1.0},"294":{"tf":1.7320508075688772},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"300":{"tf":1.0},"307":{"tf":1.0},"312":{"tf":1.0},"319":{"tf":1.0},"32":{"tf":1.0},"331":{"tf":1.0},"336":{"tf":1.7320508075688772},"344":{"tf":1.0},"347":{"tf":1.0},"351":{"tf":1.0},"37":{"tf":1.7320508075688772},"370":{"tf":2.0},"38":{"tf":1.0},"380":{"tf":2.6457513110645907},"389":{"tf":1.0},"39":{"tf":1.0},"41":{"tf":1.4142135623730951},"423":{"tf":1.0},"433":{"tf":1.0},"456":{"tf":1.7320508075688772},"457":{"tf":2.449489742783178},"458":{"tf":2.0},"46":{"tf":1.0},"460":{"tf":1.7320508075688772},"462":{"tf":1.4142135623730951},"463":{"tf":1.0},"469":{"tf":1.0},"47":{"tf":1.0},"480":{"tf":1.0},"491":{"tf":1.0},"497":{"tf":2.0},"498":{"tf":1.7320508075688772},"502":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"51":{"tf":1.7320508075688772},"513":{"tf":1.0},"522":{"tf":1.7320508075688772},"523":{"tf":1.0},"53":{"tf":1.0},"54":{"tf":1.0},"55":{"tf":1.7320508075688772},"551":{"tf":1.0},"559":{"tf":1.4142135623730951},"565":{"tf":1.0},"573":{"tf":1.0},"599":{"tf":1.0},"601":{"tf":2.0},"61":{"tf":2.0},"79":{"tf":1.0},"9":{"tf":1.4142135623730951}},"r":{"df":1,"docs":{"84":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":25,"docs":{"108":{"tf":1.0},"118":{"tf":1.0},"125":{"tf":1.0},"134":{"tf":1.0},"136":{"tf":1.4142135623730951},"147":{"tf":1.0},"197":{"tf":1.0},"199":{"tf":1.0},"211":{"tf":1.0},"257":{"tf":1.0},"276":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.0},"320":{"tf":1.0},"332":{"tf":1.0},"347":{"tf":1.4142135623730951},"356":{"tf":1.0},"380":{"tf":1.0},"385":{"tf":1.0},"457":{"tf":1.0},"462":{"tf":1.0},"488":{"tf":1.0},"498":{"tf":1.4142135623730951},"509":{"tf":1.0},"599":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":43,"docs":{"130":{"tf":1.0},"140":{"tf":1.0},"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"196":{"tf":1.4142135623730951},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"276":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"328":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"359":{"tf":1.7320508075688772},"363":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"391":{"tf":1.0},"393":{"tf":1.4142135623730951},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"440":{"tf":1.0},"447":{"tf":1.0},"467":{"tf":1.0},"470":{"tf":1.0},"472":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"51":{"tf":1.4142135623730951},"519":{"tf":1.0},"53":{"tf":1.0},"537":{"tf":1.0},"54":{"tf":1.4142135623730951}}}},"t":{"df":0,"docs":{},"e":{"df":14,"docs":{"246":{"tf":1.0},"248":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"328":{"tf":1.0},"380":{"tf":1.4142135623730951},"408":{"tf":1.0},"437":{"tf":1.0},"448":{"tf":1.0},"502":{"tf":1.0},"538":{"tf":1.0},"59":{"tf":1.0},"599":{"tf":1.4142135623730951},"603":{"tf":1.0}}}}}},"s":{"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"276":{"tf":2.23606797749979}},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"(":{"df":0,"docs":{},"r":{"df":1,"docs":{"276":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":1,"docs":{"276":{"tf":2.449489742783178}}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"276":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"t":{"(":{")":{".":{"a":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"276":{"tf":1.0}}}}}}}},"df":1,"docs":{"276":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":1,"docs":{"276":{"tf":1.7320508075688772}}}},"x":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"564":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"8":{"6":{"_":{"6":{"4":{"df":1,"docs":{"397":{"tf":2.8284271247461903}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":4,"docs":{"42":{"tf":1.0},"448":{"tf":1.0},"56":{"tf":1.0},"57":{"tf":1.4142135623730951}},"m":{"a":{"df":1,"docs":{"230":{"tf":1.0}}},"df":0,"docs":{}}},"y":{"2":{"1":{"df":1,"docs":{"602":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"h":{"df":2,"docs":{"217":{"tf":1.0},"69":{"tf":1.0}}},"r":{"df":15,"docs":{"10":{"tf":1.0},"171":{"tf":1.0},"332":{"tf":1.0},"356":{"tf":1.0},"380":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"389":{"tf":1.0},"392":{"tf":1.0},"40":{"tf":1.0},"457":{"tf":1.0},"486":{"tf":1.4142135623730951},"72":{"tf":1.0},"79":{"tf":1.0},"9":{"tf":1.0}},"n":{"df":1,"docs":{"503":{"tf":1.0}}}}},"df":10,"docs":{"111":{"tf":1.0},"120":{"tf":1.0},"19":{"tf":1.0},"320":{"tf":1.0},"322":{"tf":1.0},"405":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.4142135623730951},"89":{"tf":1.0}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":11,"docs":{"196":{"tf":2.23606797749979},"214":{"tf":1.0},"259":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"310":{"tf":1.0},"563":{"tf":1.7320508075688772},"564":{"tf":1.4142135623730951},"565":{"tf":1.0},"566":{"tf":1.0},"573":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"89":{"tf":1.0}}}},"s":{"df":0,"docs":{},"h":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":1,"docs":{"602":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"u":{"'":{"d":{"df":4,"docs":{"21":{"tf":1.0},"26":{"tf":1.0},"39":{"tf":1.0},"96":{"tf":1.0}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"417":{"tf":1.0},"487":{"tf":1.0}}}},"r":{"df":8,"docs":{"157":{"tf":1.0},"2":{"tf":1.0},"25":{"tf":1.0},"300":{"tf":1.0},"321":{"tf":1.0},"41":{"tf":1.0},"421":{"tf":1.0},"556":{"tf":1.0}}},"v":{"df":3,"docs":{"156":{"tf":1.0},"292":{"tf":1.0},"417":{"tf":1.0}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":14,"docs":{"132":{"tf":1.7320508075688772},"133":{"tf":1.0},"134":{"tf":2.23606797749979},"135":{"tf":1.0},"136":{"tf":2.0},"137":{"tf":2.0},"138":{"tf":2.0},"139":{"tf":1.7320508075688772},"140":{"tf":1.0},"177":{"tf":1.0},"268":{"tf":1.0},"284":{"tf":1.0},"292":{"tf":1.4142135623730951},"532":{"tf":1.0}}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"96":{"tf":1.4142135623730951}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"2":{"tf":1.0}}}}}}}}}},"z":{"b":{"df":0,"docs":{},"u":{"df":2,"docs":{"224":{"tf":1.0},"323":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":1,"docs":{"602":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"224":{"tf":1.0}}}},"df":0,"docs":{}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"k":{"df":1,"docs":{"232":{"tf":1.0}}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"o":{"df":4,"docs":{"343":{"tf":2.6457513110645907},"422":{"tf":1.4142135623730951},"513":{"tf":1.0},"62":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":1,"docs":{"110":{"tf":1.0}}}},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"200":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"245":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"245":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":9,"docs":{"1":{"tf":1.0},"16":{"tf":1.0},"2":{"tf":1.0},"25":{"tf":1.0},"35":{"tf":1.0},"4":{"tf":1.7320508075688772},"555":{"tf":1.0},"556":{"tf":1.0},"68":{"tf":1.0}}}}}}}}},"title":{"root":{"0":{"2":{"df":1,"docs":{"599":{"tf":1.0}}},"df":0,"docs":{}},"1":{"2":{"df":1,"docs":{"599":{"tf":1.0}}},"df":1,"docs":{"418":{"tf":1.0}}},"2":{"0":{"2":{"1":{"df":2,"docs":{"550":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"419":{"tf":1.0}}},"a":{"b":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"343":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"418":{"tf":1.0}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":4,"docs":{"252":{"tf":1.0},"437":{"tf":1.0},"464":{"tf":1.0},"49":{"tf":1.0}}}}}},"k":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"600":{"tf":1.0}}}},"df":0,"docs":{}}}}}}},"t":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"349":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"313":{"tf":1.0}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":1,"docs":{"320":{"tf":1.0}}}}}}},"l":{"a":{"df":0,"docs":{},"n":{"'":{"df":1,"docs":{"518":{"tf":1.0}}},"/":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":1,"docs":{"296":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":37,"docs":{"165":{"tf":1.0},"173":{"tf":1.0},"175":{"tf":1.0},"183":{"tf":1.0},"185":{"tf":1.0},"188":{"tf":1.0},"193":{"tf":1.0},"205":{"tf":1.0},"207":{"tf":1.0},"213":{"tf":1.0},"215":{"tf":1.0},"219":{"tf":1.0},"225":{"tf":1.0},"227":{"tf":1.0},"235":{"tf":1.0},"239":{"tf":1.0},"241":{"tf":1.0},"242":{"tf":1.0},"250":{"tf":1.0},"252":{"tf":1.0},"253":{"tf":1.0},"263":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.0},"272":{"tf":1.0},"274":{"tf":1.0},"280":{"tf":1.0},"282":{"tf":1.0},"288":{"tf":1.0},"290":{"tf":1.0},"500":{"tf":1.0},"510":{"tf":1.0},"528":{"tf":1.0},"542":{"tf":1.0},"71":{"tf":1.0},"76":{"tf":1.0},"77":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":1,"docs":{"242":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"498":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"539":{"tf":1.0}}}}}},"w":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"165":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"298":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":5,"docs":{"241":{"tf":1.0},"252":{"tf":1.0},"265":{"tf":1.0},"437":{"tf":1.0},"464":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"22":{"tf":1.0},"50":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":13,"docs":{"497":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"i":{"df":4,"docs":{"252":{"tf":1.0},"321":{"tf":1.0},"454":{"tf":1.0},"508":{"tf":1.0}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"132":{"tf":1.0},"136":{"tf":1.0}}},"df":2,"docs":{"32":{"tf":1.0},"565":{"tf":1.0}}}}}},"r":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"34":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"341":{"tf":1.0}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"581":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"k":{"df":52,"docs":{"100":{"tf":1.0},"109":{"tf":1.0},"117":{"tf":1.0},"126":{"tf":1.0},"135":{"tf":1.0},"144":{"tf":1.0},"160":{"tf":1.0},"170":{"tf":1.0},"180":{"tf":1.0},"192":{"tf":1.0},"202":{"tf":1.0},"210":{"tf":1.0},"218":{"tf":1.0},"222":{"tf":1.0},"236":{"tf":1.0},"247":{"tf":1.0},"260":{"tf":1.0},"269":{"tf":1.0},"277":{"tf":1.0},"285":{"tf":1.0},"293":{"tf":1.0},"30":{"tf":1.0},"301":{"tf":1.0},"314":{"tf":1.0},"329":{"tf":1.0},"337":{"tf":1.0},"348":{"tf":1.0},"362":{"tf":1.0},"371":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"398":{"tf":1.0},"409":{"tf":1.0},"424":{"tf":1.0},"43":{"tf":1.0},"432":{"tf":1.0},"441":{"tf":1.0},"449":{"tf":1.0},"459":{"tf":1.0},"471":{"tf":1.0},"479":{"tf":1.0},"492":{"tf":1.0},"505":{"tf":1.0},"524":{"tf":1.0},"540":{"tf":1.0},"582":{"tf":1.0},"593":{"tf":1.0},"66":{"tf":1.0},"75":{"tf":1.0},"80":{"tf":1.0},"85":{"tf":1.0},"90":{"tf":1.0}}},"y":{"df":0,"docs":{},"n":{"c":{"df":30,"docs":{"219":{"tf":1.0},"253":{"tf":1.0},"257":{"tf":1.0},"266":{"tf":1.0},"305":{"tf":1.0},"309":{"tf":1.0},"323":{"tf":1.0},"324":{"tf":1.0},"326":{"tf":1.0},"354":{"tf":1.0},"357":{"tf":1.0},"358":{"tf":1.0},"360":{"tf":1.0},"368":{"tf":1.0},"375":{"tf":1.0},"378":{"tf":1.0},"387":{"tf":1.0},"406":{"tf":1.0},"522":{"tf":1.0},"575":{"tf":1.0},"585":{"tf":1.0},"586":{"tf":1.0},"590":{"tf":1.0},"594":{"tf":1.0},"595":{"tf":1.0},"61":{"tf":1.0},"76":{"tf":1.0},"81":{"tf":1.0},"86":{"tf":1.0},"91":{"tf":1.0}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"574":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"574":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"571":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"494":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":3,"docs":{"19":{"tf":1.0},"58":{"tf":1.0},"59":{"tf":1.0}}},"df":2,"docs":{"584":{"tf":1.0},"585":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"a":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"84":{"tf":1.0}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":1,"docs":{"405":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"r":{"b":{"a":{"df":0,"docs":{},"r":{"a":{"'":{"df":3,"docs":{"341":{"tf":1.0},"344":{"tf":1.0},"356":{"tf":1.0}}},"df":36,"docs":{"298":{"tf":1.0},"304":{"tf":1.0},"305":{"tf":1.0},"316":{"tf":1.0},"318":{"tf":1.0},"321":{"tf":1.0},"324":{"tf":1.0},"326":{"tf":1.0},"332":{"tf":1.0},"334":{"tf":1.0},"339":{"tf":1.0},"345":{"tf":1.0},"352":{"tf":1.0},"354":{"tf":1.0},"366":{"tf":1.0},"368":{"tf":1.0},"376":{"tf":1.0},"378":{"tf":1.0},"382":{"tf":1.0},"387":{"tf":1.0},"393":{"tf":1.0},"395":{"tf":1.0},"401":{"tf":1.0},"404":{"tf":1.0},"406":{"tf":1.0},"413":{"tf":1.0},"415":{"tf":1.0},"420":{"tf":1.0},"427":{"tf":1.0},"513":{"tf":1.0},"531":{"tf":1.0},"536":{"tf":1.0},"545":{"tf":1.0},"89":{"tf":1.0},"91":{"tf":1.0},"92":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":3,"docs":{"154":{"tf":1.0},"570":{"tf":1.0},"596":{"tf":1.0}}}}},"df":1,"docs":{"73":{"tf":1.0}},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"313":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":3,"docs":{"514":{"tf":1.0},"532":{"tf":1.0},"546":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"499":{"tf":1.0}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":3,"docs":{"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"g":{"df":4,"docs":{"15":{"tf":1.0},"356":{"tf":1.0},"359":{"tf":1.0},"487":{"tf":1.4142135623730951}}}},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"_":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"308":{"tf":1.0},"325":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"o":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"557":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"415":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"235":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"16":{"tf":1.0}}}}}}}}}},"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"305":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":4,"docs":{"77":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"92":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"168":{"tf":1.0},"556":{"tf":1.0}}},"i":{"df":0,"docs":{},"l":{"d":{"df":2,"docs":{"326":{"tf":1.0},"466":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":6,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0}}}}}}},"c":{"a":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"165":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"150":{"tf":1.0}}}},"m":{"df":0,"docs":{},"e":{"df":2,"docs":{"241":{"tf":1.0},"265":{"tf":1.0}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"581":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"334":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":3,"docs":{"564":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0}}},"t":{"df":5,"docs":{"63":{"tf":1.0},"70":{"tf":1.0},"78":{"tf":1.0},"83":{"tf":1.0},"88":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"59":{"tf":1.0}}}}}}}}},"df":2,"docs":{"454":{"tf":1.0},"74":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"415":{"tf":1.0}}}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"585":{"tf":1.0}}}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":42,"docs":{"164":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"206":{"tf":1.0},"214":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"251":{"tf":1.0},"264":{"tf":1.0},"273":{"tf":1.0},"281":{"tf":1.0},"289":{"tf":1.0},"297":{"tf":1.0},"317":{"tf":1.0},"32":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"35":{"tf":1.0},"353":{"tf":1.0},"365":{"tf":1.0},"367":{"tf":1.0},"377":{"tf":1.0},"385":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"414":{"tf":1.0},"428":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"45":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"483":{"tf":1.0},"63":{"tf":1.0},"65":{"tf":1.0},"68":{"tf":1.0},"69":{"tf":1.0},"70":{"tf":1.0},"78":{"tf":1.0},"83":{"tf":1.0},"88":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"191":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"34":{"tf":1.0}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"s":{"df":31,"docs":{"163":{"tf":1.0},"173":{"tf":1.0},"183":{"tf":1.0},"205":{"tf":1.0},"213":{"tf":1.0},"225":{"tf":1.0},"239":{"tf":1.0},"250":{"tf":1.0},"263":{"tf":1.0},"272":{"tf":1.0},"280":{"tf":1.0},"288":{"tf":1.0},"296":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.0},"332":{"tf":1.0},"339":{"tf":1.0},"352":{"tf":1.0},"366":{"tf":1.0},"376":{"tf":1.0},"382":{"tf":1.0},"393":{"tf":1.0},"401":{"tf":1.0},"413":{"tf":1.0},"427":{"tf":1.0},"435":{"tf":1.0},"444":{"tf":1.0},"452":{"tf":1.0},"462":{"tf":1.0},"474":{"tf":1.0},"482":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"586":{"tf":1.0}}}}}}},"o":{"d":{"df":0,"docs":{},"e":{"df":4,"docs":{"322":{"tf":1.0},"342":{"tf":1.0},"344":{"tf":1.0},"345":{"tf":1.0}}}},"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":3,"docs":{"572":{"tf":1.0},"587":{"tf":1.0},"588":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"67":{"tf":1.0}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"50":{"tf":1.0},"52":{"tf":1.0},"54":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"571":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"345":{"tf":1.0},"403":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":4,"docs":{"253":{"tf":1.0},"256":{"tf":1.0},"518":{"tf":1.0},"521":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"596":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":6,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0}}}}}},"n":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"422":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"df":12,"docs":{"104":{"tf":1.0},"105":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"569":{"tf":1.0},"577":{"tf":1.0}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":1,"docs":{"361":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"498":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"12":{"tf":1.0},"152":{"tf":1.0},"485":{"tf":1.0},"52":{"tf":1.0}}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"6":{"tf":1.0},"603":{"tf":1.0}}}}},"df":0,"docs":{}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":1,"docs":{"597":{"tf":1.0}}}},"y":{"df":2,"docs":{"507":{"tf":1.0},"526":{"tf":1.0}}}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"349":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"341":{"tf":1.0},"343":{"tf":1.0}}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{".":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":6,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":5,"docs":{"508":{"tf":1.0},"77":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"92":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":7,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.0},"123":{"tf":1.0},"128":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0}}}}}}},"y":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"313":{"tf":1.0}}}},"df":0,"docs":{}}},"d":{"a":{"df":0,"docs":{},"t":{"a":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"175":{"tf":1.0}}}},"df":0,"docs":{}},"df":2,"docs":{"155":{"tf":1.0},"419":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"318":{"tf":1.0},"319":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"l":{"df":1,"docs":{"189":{"tf":1.0}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"282":{"tf":1.0}},"g":{"df":1,"docs":{"404":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"357":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":1,"docs":{"359":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"568":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"429":{"tf":1.0}}}}}},"s":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":1,"docs":{"36":{"tf":1.0}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":6,"docs":{"108":{"tf":1.0},"116":{"tf":1.0},"125":{"tf":1.0},"134":{"tf":1.0},"143":{"tf":1.0},"99":{"tf":1.0}}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":6,"docs":{"342":{"tf":1.0},"560":{"tf":1.0},"561":{"tf":1.0},"562":{"tf":1.0},"570":{"tf":1.0},"61":{"tf":1.0}}}},"r":{"df":1,"docs":{"571":{"tf":1.0}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":3,"docs":{"33":{"tf":1.0},"47":{"tf":1.0},"48":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"71":{"tf":1.0},"89":{"tf":1.0}}}}}}}},"i":{"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"321":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":39,"docs":{"101":{"tf":1.0},"110":{"tf":1.0},"118":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"145":{"tf":1.0},"164":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"206":{"tf":1.0},"214":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"251":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"273":{"tf":1.0},"281":{"tf":1.0},"289":{"tf":1.0},"297":{"tf":1.0},"317":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"353":{"tf":1.0},"367":{"tf":1.0},"375":{"tf":1.0},"377":{"tf":1.0},"385":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"414":{"tf":1.0},"428":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"483":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"603":{"tf":1.0}}}}}},"df":0,"docs":{}}},"s":{"a":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":12,"docs":{"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0}}}}}}}}},"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"25":{"tf":1.0},"602":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"334":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"u":{"a":{"d":{"df":1,"docs":{"54":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"d":{"a":{"df":0,"docs":{},"t":{"a":{"df":3,"docs":{"114":{"tf":1.0},"118":{"tf":1.0},"119":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"c":{"df":2,"docs":{"561":{"tf":1.0},"562":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"18":{"tf":1.0},"365":{"tf":1.0},"560":{"tf":1.0}}}}}}}},"df":2,"docs":{"458":{"tf":1.0},"550":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":3,"docs":{"165":{"tf":1.0},"404":{"tf":1.0},"405":{"tf":1.0}}}},"df":0,"docs":{}}}},"m":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"97":{"tf":1.0}}}}},"df":0,"docs":{}},"n":{"'":{"df":0,"docs":{},"t":{"df":6,"docs":{"341":{"tf":1.0},"48":{"tf":1.0},"50":{"tf":1.0},"509":{"tf":1.0},"68":{"tf":1.0},"96":{"tf":1.0}}}},"df":0,"docs":{}},"u":{"b":{"df":0,"docs":{},"t":{"df":1,"docs":{"356":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":37,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"188":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"10":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"175":{"tf":1.0},"594":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"365":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"72":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"561":{"tf":1.0}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"259":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"342":{"tf":1.0}}}}}}},"m":{"b":{"df":0,"docs":{},"e":{"d":{"df":3,"docs":{"106":{"tf":1.0},"110":{"tf":1.0},"334":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"n":{"d":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"232":{"tf":1.0}}}}}}}},"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"77":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"92":{"tf":1.0}}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"185":{"tf":1.0},"504":{"tf":1.0}}}},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"324":{"tf":1.0}}}}}}},"i":{"d":{"df":1,"docs":{"36":{"tf":1.0}}},"df":0,"docs":{}}},"x":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"49":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":5,"docs":{"412":{"tf":1.0},"418":{"tf":1.0},"419":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":12,"docs":{"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"326":{"tf":1.0},"344":{"tf":1.0}}}}}}},"df":0,"docs":{}},"h":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"598":{"tf":1.0}}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"77":{"tf":1.0},"82":{"tf":1.0},"87":{"tf":1.0},"92":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"25":{"tf":1.0},"323":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"c":{"df":2,"docs":{"71":{"tf":1.0},"89":{"tf":1.0}}},"df":0,"docs":{}}}},"t":{"df":1,"docs":{"79":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"185":{"tf":1.0}}}}}}}},"f":{"a":{"df":0,"docs":{},"q":{"df":3,"docs":{"22":{"tf":1.0},"28":{"tf":1.0},"41":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"341":{"tf":1.0},"509":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"499":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"312":{"tf":1.0}}}}}},"n":{"d":{"df":5,"docs":{"175":{"tf":1.0},"179":{"tf":1.0},"246":{"tf":1.0},"25":{"tf":1.0},"96":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":9,"docs":{"189":{"tf":1.0},"232":{"tf":1.0},"233":{"tf":1.0},"257":{"tf":1.0},"354":{"tf":1.0},"356":{"tf":1.0},"457":{"tf":1.0},"465":{"tf":1.0},"522":{"tf":1.0}}}}},"t":{"df":2,"docs":{"35":{"tf":1.0},"527":{"tf":1.0}}},"x":{"df":1,"docs":{"556":{"tf":1.0}}}},"n":{"df":1,"docs":{"575":{"tf":1.0}}},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"y":{"df":1,"docs":{"354":{"tf":1.0}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"508":{"tf":1.0}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"423":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"a":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"258":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"290":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":52,"docs":{"100":{"tf":1.0},"109":{"tf":1.0},"117":{"tf":1.0},"126":{"tf":1.0},"135":{"tf":1.0},"144":{"tf":1.0},"160":{"tf":1.0},"170":{"tf":1.0},"180":{"tf":1.0},"192":{"tf":1.0},"202":{"tf":1.0},"210":{"tf":1.0},"218":{"tf":1.0},"222":{"tf":1.0},"236":{"tf":1.0},"247":{"tf":1.0},"260":{"tf":1.0},"269":{"tf":1.0},"277":{"tf":1.0},"285":{"tf":1.0},"293":{"tf":1.0},"30":{"tf":1.0},"301":{"tf":1.0},"314":{"tf":1.0},"329":{"tf":1.0},"337":{"tf":1.0},"348":{"tf":1.0},"362":{"tf":1.0},"371":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"398":{"tf":1.0},"409":{"tf":1.0},"424":{"tf":1.0},"43":{"tf":1.0},"432":{"tf":1.0},"441":{"tf":1.0},"449":{"tf":1.0},"459":{"tf":1.0},"471":{"tf":1.0},"479":{"tf":1.0},"492":{"tf":1.0},"505":{"tf":1.0},"524":{"tf":1.0},"540":{"tf":1.0},"582":{"tf":1.0},"593":{"tf":1.0},"66":{"tf":1.0},"75":{"tf":1.0},"80":{"tf":1.0},"85":{"tf":1.0},"90":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"583":{"tf":1.0}}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":2,"docs":{"320":{"tf":1.0},"375":{"tf":1.0}},"s":{"/":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"374":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}},"d":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"342":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"190":{"tf":1.0},"498":{"tf":1.0}}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"420":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":52,"docs":{"258":{"tf":1.0},"334":{"tf":1.0},"341":{"tf":1.0},"342":{"tf":1.0},"343":{"tf":1.0},"37":{"tf":1.0},"40":{"tf":1.0},"415":{"tf":1.0},"44":{"tf":1.0},"45":{"tf":1.0},"46":{"tf":1.0},"484":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"494":{"tf":1.0},"495":{"tf":1.0},"496":{"tf":1.0},"499":{"tf":1.0},"500":{"tf":1.0},"51":{"tf":1.0},"510":{"tf":1.0},"511":{"tf":1.0},"512":{"tf":1.0},"513":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"518":{"tf":1.0},"527":{"tf":1.0},"528":{"tf":1.0},"529":{"tf":1.0},"530":{"tf":1.0},"531":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"536":{"tf":1.0},"542":{"tf":1.0},"543":{"tf":1.0},"544":{"tf":1.0},"545":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0},"57":{"tf":1.0},"578":{"tf":1.0},"579":{"tf":1.0},"584":{"tf":1.0},"596":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"185":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}}}},"g":{"c":{"'":{"d":{"df":3,"docs":{"241":{"tf":1.0},"265":{"tf":1.0},"71":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"d":{"b":{"df":1,"docs":{"446":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"114":{"tf":1.0},"573":{"tf":1.0},"576":{"tf":1.0}}}}},"t":{"df":1,"docs":{"2":{"tf":1.0}}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"415":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":3,"docs":{"201":{"tf":1.0},"33":{"tf":1.0},"47":{"tf":1.0}}}}},"o":{"a":{"df":0,"docs":{},"l":{"df":4,"docs":{"27":{"tf":1.0},"3":{"tf":1.0},"40":{"tf":1.0},"576":{"tf":1.0}}}},"df":2,"docs":{"497":{"tf":1.0},"9":{"tf":1.0}},"o":{"d":{"df":2,"docs":{"56":{"tf":1.0},"57":{"tf":1.0}}},"df":0,"docs":{}}},"r":{"a":{"c":{"df":0,"docs":{},"e":{"df":18,"docs":{"429":{"tf":1.0},"435":{"tf":1.0},"437":{"tf":1.0},"438":{"tf":1.0},"444":{"tf":1.0},"446":{"tf":1.0},"452":{"tf":1.0},"454":{"tf":1.0},"462":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"474":{"tf":1.0},"511":{"tf":1.0},"529":{"tf":1.0},"543":{"tf":1.0},"79":{"tf":1.0},"81":{"tf":1.0},"82":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":2,"docs":{"175":{"tf":1.0},"344":{"tf":1.0}}}},"df":0,"docs":{},"g":{"df":1,"docs":{"282":{"tf":1.0}}}},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":2,"docs":{"165":{"tf":1.0},"509":{"tf":1.0}}}}}},"r":{"d":{"df":1,"docs":{"175":{"tf":1.0}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"17":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"193":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"p":{"df":4,"docs":{"12":{"tf":1.0},"14":{"tf":1.0},"152":{"tf":1.0},"485":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"368":{"tf":1.0},"374":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"96":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"515":{"tf":1.0},"533":{"tf":1.0},"547":{"tf":1.0}}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"539":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"429":{"tf":1.0}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"188":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":1,"docs":{"298":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"t":{"df":1,"docs":{"503":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"y":{"d":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"466":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"i":{"'":{"df":0,"docs":{},"m":{"df":1,"docs":{"34":{"tf":1.0}}}},"d":{"df":0,"docs":{},"e":{"a":{"df":1,"docs":{"50":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"508":{"tf":1.0}}}}}},"df":0,"docs":{},"p":{"a":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"342":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"196":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"141":{"tf":1.0},"197":{"tf":1.0},"51":{"tf":1.0}}}}}}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"51":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"v":{"df":1,"docs":{"54":{"tf":1.0}}}}}}},"n":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"233":{"tf":1.0},"234":{"tf":1.0}}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":3,"docs":{"516":{"tf":1.0},"534":{"tf":1.0},"548":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"114":{"tf":1.0},"123":{"tf":1.0},"127":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":2,"docs":{"406":{"tf":1.0},"412":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":2,"docs":{"454":{"tf":1.0},"504":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":1,"docs":{"308":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":1,"docs":{"420":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"v":{"df":4,"docs":{"11":{"tf":1.0},"2":{"tf":1.0},"375":{"tf":1.0},"499":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":1,"docs":{"25":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"553":{"tf":1.0}}},"r":{"df":1,"docs":{"207":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"155":{"tf":1.0},"499":{"tf":1.0}}}}}}}},"j":{"a":{"df":0,"docs":{},"v":{"a":{"df":1,"docs":{"73":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"_":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"311":{"tf":1.0}}}},"df":0,"docs":{}},"df":1,"docs":{"587":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"y":{"df":1,"docs":{"356":{"tf":1.0}}}}}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"320":{"tf":1.0}}}},"y":{"df":4,"docs":{"494":{"tf":1.0},"507":{"tf":1.0},"526":{"tf":1.0},"552":{"tf":1.0}}}},"i":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"412":{"tf":1.0}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":5,"docs":{"465":{"tf":1.0},"48":{"tf":1.0},"49":{"tf":1.0},"50":{"tf":1.0},"508":{"tf":1.0}},"l":{"df":0,"docs":{},"e":{"d":{"df":0,"docs":{},"g":{"df":1,"docs":{"476":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"74":{"tf":1.0}}}}}}}},"l":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{".":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":1,"docs":{"305":{"tf":1.0}}}}}},"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"g":{"df":5,"docs":{"241":{"tf":1.0},"265":{"tf":1.0},"403":{"tf":1.0},"71":{"tf":1.0},"72":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"318":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"562":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"1":{"tf":1.0}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":2,"docs":{"358":{"tf":1.0},"503":{"tf":1.0}}}},"v":{"df":1,"docs":{"50":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"438":{"tf":1.0}}}}},"df":0,"docs":{}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"y":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"595":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":2,"docs":{"375":{"tf":1.0},"581":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"563":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"95":{"tf":1.0}}}},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"18":{"tf":1.0}}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"266":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"185":{"tf":1.0},"504":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"215":{"tf":1.0}}}},"t":{"df":1,"docs":{"341":{"tf":1.0}}}}},"m":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"199":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":2,"docs":{"309":{"tf":1.0},"590":{"tf":1.0}}}},"k":{"df":0,"docs":{},"e":{"df":11,"docs":{"101":{"tf":1.0},"110":{"tf":1.0},"118":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"145":{"tf":1.0},"324":{"tf":1.0},"34":{"tf":1.0},"354":{"tf":1.0},"523":{"tf":1.0},"536":{"tf":1.0}}}},"n":{"d":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"598":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"259":{"tf":1.0}},"i":{"df":5,"docs":{"325":{"tf":1.0},"458":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0}}}},"r":{"df":1,"docs":{"356":{"tf":1.0}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"421":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"554":{"tf":1.0}}}},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"559":{"tf":1.0}}}}}},"t":{"a":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":1,"docs":{"156":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"227":{"tf":1.0},"235":{"tf":1.0}}}},"df":0,"docs":{}}},"x":{"df":2,"docs":{"322":{"tf":1.0},"323":{"tf":1.0}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"419":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":3,"docs":{"106":{"tf":1.0},"110":{"tf":1.0},"111":{"tf":1.0}}}}}}}}}}},"r":{"a":{"df":0,"docs":{},"l":{"df":31,"docs":{"161":{"tf":1.0},"171":{"tf":1.0},"181":{"tf":1.0},"203":{"tf":1.0},"211":{"tf":1.0},"223":{"tf":1.0},"237":{"tf":1.0},"248":{"tf":1.0},"261":{"tf":1.0},"270":{"tf":1.0},"278":{"tf":1.0},"286":{"tf":1.0},"294":{"tf":1.0},"302":{"tf":1.0},"315":{"tf":1.0},"330":{"tf":1.0},"338":{"tf":1.0},"350":{"tf":1.0},"363":{"tf":1.0},"372":{"tf":1.0},"383":{"tf":1.0},"391":{"tf":1.0},"399":{"tf":1.0},"410":{"tf":1.0},"425":{"tf":1.0},"433":{"tf":1.0},"442":{"tf":1.0},"450":{"tf":1.0},"460":{"tf":1.0},"472":{"tf":1.0},"480":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"503":{"tf":1.0},"69":{"tf":1.0}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"592":{"tf":1.0}}}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":8,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0},"33":{"tf":1.0},"47":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"32":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"584":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"68":{"tf":1.0},"69":{"tf":1.0}}}}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":5,"docs":{"113":{"tf":1.0},"163":{"tf":1.0},"578":{"tf":1.0},"67":{"tf":1.0},"97":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"d":{"df":6,"docs":{"12":{"tf":1.0},"152":{"tf":1.0},"219":{"tf":1.0},"266":{"tf":1.0},"368":{"tf":1.0},"485":{"tf":1.0}}},"df":0,"docs":{}},"g":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"54":{"tf":1.0}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"127":{"tf":1.0}}}}}}},"w":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"360":{"tf":1.0}}}}},"df":4,"docs":{"438":{"tf":1.0},"71":{"tf":1.0},"79":{"tf":1.0},"84":{"tf":1.0}}},"x":{"df":0,"docs":{},"t":{"df":1,"docs":{"446":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"k":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"u":{"df":10,"docs":{"466":{"tf":1.0},"474":{"tf":1.0},"476":{"tf":1.0},"482":{"tf":1.0},"512":{"tf":1.0},"530":{"tf":1.0},"544":{"tf":1.0},"84":{"tf":1.0},"86":{"tf":1.0},"87":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":1,"docs":{"35":{"tf":1.0}}}}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"252":{"tf":1.0},"418":{"tf":1.0},"437":{"tf":1.0},"464":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"t":{"a":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"429":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"k":{"df":1,"docs":{"231":{"tf":1.0}}},"n":{"df":2,"docs":{"527":{"tf":1.0},"69":{"tf":1.0}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":10,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0},"21":{"tf":1.0},"25":{"tf":1.0},"26":{"tf":1.0},"39":{"tf":1.0}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"25":{"tf":1.0},"499":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0}}}}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":7,"docs":{"101":{"tf":1.0},"110":{"tf":1.0},"118":{"tf":1.0},"127":{"tf":1.0},"136":{"tf":1.0},"145":{"tf":1.0},"25":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"t":{"df":37,"docs":{"164":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"191":{"tf":1.0},"206":{"tf":1.0},"214":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"251":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"273":{"tf":1.0},"281":{"tf":1.0},"289":{"tf":1.0},"297":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"317":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"353":{"tf":1.0},"367":{"tf":1.0},"377":{"tf":1.0},"385":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"414":{"tf":1.0},"428":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"483":{"tf":1.0},"499":{"tf":1.0},"51":{"tf":1.0}},"s":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"418":{"tf":1.0}}},"df":0,"docs":{}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"190":{"tf":1.0},"298":{"tf":1.0}}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"601":{"tf":1.0}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"470":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":3,"docs":{"322":{"tf":1.0},"323":{"tf":1.0},"583":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"305":{"tf":1.0}}}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":2,"docs":{"207":{"tf":1.0},"345":{"tf":1.0}}}}}}}},"i":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"113":{"tf":1.0},"231":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"15":{"tf":1.0}}}}}},"df":0,"docs":{},"n":{"df":1,"docs":{"198":{"tf":1.0}}},"t":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"496":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"a":{"c":{"df":0,"docs":{},"e":{"df":2,"docs":{"465":{"tf":1.0},"497":{"tf":1.0}}}},"df":0,"docs":{},"y":{"df":33,"docs":{"164":{"tf":1.0},"174":{"tf":1.0},"184":{"tf":1.0},"206":{"tf":1.0},"214":{"tf":1.0},"226":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"251":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"273":{"tf":1.0},"281":{"tf":1.0},"289":{"tf":1.0},"297":{"tf":1.0},"317":{"tf":1.0},"333":{"tf":1.0},"340":{"tf":1.0},"353":{"tf":1.0},"367":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.0},"385":{"tf":1.0},"394":{"tf":1.0},"402":{"tf":1.0},"414":{"tf":1.0},"428":{"tf":1.0},"436":{"tf":1.0},"445":{"tf":1.0},"453":{"tf":1.0},"463":{"tf":1.0},"475":{"tf":1.0},"483":{"tf":1.0}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"507":{"tf":1.0},"526":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"457":{"tf":1.0},"570":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"496":{"tf":1.0}}}}}}}},"r":{"df":6,"docs":{"21":{"tf":1.0},"22":{"tf":1.0},"26":{"tf":1.0},"27":{"tf":1.0},"39":{"tf":1.0},"40":{"tf":1.0}},"e":{"c":{"df":0,"docs":{},"e":{"d":{"df":1,"docs":{"566":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"319":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"155":{"tf":1.4142135623730951}}}}}}},"o":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":9,"docs":{"177":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"244":{"tf":1.0},"323":{"tf":1.0},"345":{"tf":1.0},"457":{"tf":1.0},"458":{"tf":1.0},"469":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":5,"docs":{"29":{"tf":1.0},"31":{"tf":1.0},"42":{"tf":1.0},"44":{"tf":1.0},"558":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"318":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"79":{"tf":1.0}},"m":{"df":1,"docs":{"84":{"tf":1.0}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":46,"docs":{"101":{"tf":1.0},"102":{"tf":1.0},"103":{"tf":1.0},"104":{"tf":1.0},"105":{"tf":1.0},"106":{"tf":1.0},"110":{"tf":1.0},"112":{"tf":1.0},"114":{"tf":1.0},"120":{"tf":1.0},"121":{"tf":1.0},"122":{"tf":1.0},"123":{"tf":1.0},"127":{"tf":1.0},"129":{"tf":1.0},"130":{"tf":1.0},"131":{"tf":1.0},"132":{"tf":1.0},"138":{"tf":1.0},"139":{"tf":1.0},"140":{"tf":1.0},"141":{"tf":1.0},"145":{"tf":1.0},"146":{"tf":1.0},"147":{"tf":1.0},"148":{"tf":1.0},"149":{"tf":1.0},"20":{"tf":1.0},"257":{"tf":1.0},"356":{"tf":1.0},"499":{"tf":1.0},"514":{"tf":1.0},"515":{"tf":1.0},"517":{"tf":1.0},"522":{"tf":1.0},"532":{"tf":1.0},"533":{"tf":1.0},"535":{"tf":1.0},"546":{"tf":1.0},"547":{"tf":1.0},"549":{"tf":1.0},"557":{"tf":1.0},"93":{"tf":1.0},"95":{"tf":1.0},"96":{"tf":1.0},"97":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"f":{"df":1,"docs":{"422":{"tf":1.0}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":2,"docs":{"31":{"tf":1.0},"44":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"141":{"tf":1.0}}}}},"df":0,"docs":{}}},"v":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"155":{"tf":1.0}}},"df":0,"docs":{}}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":55,"docs":{"100":{"tf":1.0},"109":{"tf":1.0},"117":{"tf":1.0},"126":{"tf":1.0},"135":{"tf":1.0},"144":{"tf":1.0},"160":{"tf":1.0},"170":{"tf":1.0},"180":{"tf":1.0},"192":{"tf":1.0},"202":{"tf":1.0},"210":{"tf":1.0},"218":{"tf":1.0},"222":{"tf":1.0},"236":{"tf":1.0},"247":{"tf":1.0},"260":{"tf":1.0},"269":{"tf":1.0},"277":{"tf":1.0},"285":{"tf":1.0},"293":{"tf":1.0},"30":{"tf":1.0},"301":{"tf":1.0},"314":{"tf":1.0},"329":{"tf":1.0},"337":{"tf":1.0},"348":{"tf":1.0},"362":{"tf":1.0},"371":{"tf":1.0},"381":{"tf":1.0},"390":{"tf":1.0},"398":{"tf":1.0},"409":{"tf":1.0},"424":{"tf":1.0},"43":{"tf":1.0},"432":{"tf":1.0},"441":{"tf":1.0},"449":{"tf":1.0},"459":{"tf":1.0},"471":{"tf":1.0},"479":{"tf":1.0},"492":{"tf":1.0},"505":{"tf":1.0},"524":{"tf":1.0},"540":{"tf":1.0},"56":{"tf":1.0},"566":{"tf":1.0},"57":{"tf":1.0},"582":{"tf":1.0},"593":{"tf":1.0},"66":{"tf":1.0},"75":{"tf":1.0},"80":{"tf":1.0},"85":{"tf":1.0},"90":{"tf":1.0}}}}}}}},"o":{"df":45,"docs":{"151":{"tf":1.0},"157":{"tf":1.0},"165":{"tf":1.0},"175":{"tf":1.0},"185":{"tf":1.0},"193":{"tf":1.0},"207":{"tf":1.0},"215":{"tf":1.0},"219":{"tf":1.0},"227":{"tf":1.0},"23":{"tf":1.0},"242":{"tf":1.0},"253":{"tf":1.0},"266":{"tf":1.0},"27":{"tf":1.0},"274":{"tf":1.0},"282":{"tf":1.0},"290":{"tf":1.0},"298":{"tf":1.0},"305":{"tf":1.0},"31":{"tf":1.0},"326":{"tf":1.0},"334":{"tf":1.0},"345":{"tf":1.0},"354":{"tf":1.0},"36":{"tf":1.0},"368":{"tf":1.0},"378":{"tf":1.0},"387":{"tf":1.0},"395":{"tf":1.0},"406":{"tf":1.0},"429":{"tf":1.0},"438":{"tf":1.0},"446":{"tf":1.0},"454":{"tf":1.0},"46":{"tf":1.0},"466":{"tf":1.0},"476":{"tf":1.0},"493":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"541":{"tf":1.0},"56":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"365":{"tf":1.0}},"i":{"df":1,"docs":{"230":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":1,"docs":{"322":{"tf":1.0}},"i":{"df":0,"docs":{},"z":{"df":7,"docs":{"499":{"tf":1.0},"516":{"tf":1.0},"517":{"tf":1.0},"534":{"tf":1.0},"535":{"tf":1.0},"548":{"tf":1.0},"549":{"tf":1.0}}}}}},"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":1,"docs":{"375":{"tf":1.0}}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"207":{"tf":1.0}}}}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"386":{"tf":1.0},"566":{"tf":1.0}}}},"df":0,"docs":{}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"165":{"tf":1.0},"523":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"r":{"df":10,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.0},"128":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0},"517":{"tf":1.0},"535":{"tf":1.0},"549":{"tf":1.0},"579":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"321":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"53":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"578":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":4,"docs":{"493":{"tf":1.0},"506":{"tf":1.0},"525":{"tf":1.0},"541":{"tf":1.0}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"465":{"tf":1.0}}}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":2,"docs":{"29":{"tf":1.0},"42":{"tf":1.0}}}}}},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"518":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"o":{"a":{"d":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"550":{"tf":1.0},"553":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":2,"docs":{"28":{"tf":1.0},"41":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"242":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":17,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.0},"128":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0},"189":{"tf":1.0},"233":{"tf":1.0},"234":{"tf":1.0},"319":{"tf":1.0},"418":{"tf":1.0},"437":{"tf":1.0},"464":{"tf":1.0},"500":{"tf":1.0},"508":{"tf":1.0},"509":{"tf":1.0},"527":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":14,"docs":{"227":{"tf":1.0},"230":{"tf":1.0},"235":{"tf":1.0},"253":{"tf":1.0},"356":{"tf":1.0},"405":{"tf":1.0},"499":{"tf":1.0},"71":{"tf":1.0},"76":{"tf":1.0},"79":{"tf":1.0},"81":{"tf":1.0},"86":{"tf":1.0},"89":{"tf":1.0},"91":{"tf":1.0}}}}}},"s":{"a":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":1,"docs":{"563":{"tf":1.0}},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"344":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"e":{"df":4,"docs":{"234":{"tf":1.0},"252":{"tf":1.0},"437":{"tf":1.0},"464":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"198":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"178":{"tf":1.0},"245":{"tf":1.0}}}},"df":0,"docs":{}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"234":{"tf":1.0},"458":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":2,"docs":{"68":{"tf":1.0},"69":{"tf":1.0}}},"l":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"588":{"tf":1.0}}}},"df":0,"docs":{}},"l":{"df":1,"docs":{"235":{"tf":1.0}}}},"n":{"d":{"df":1,"docs":{"579":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"106":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"132":{"tf":1.0},"136":{"tf":1.0},"227":{"tf":1.0},"231":{"tf":1.0}}}},"i":{"c":{"df":2,"docs":{"429":{"tf":1.0},"580":{"tf":1.0}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"601":{"tf":1.0}}}}}}}},"h":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":3,"docs":{"418":{"tf":1.0},"419":{"tf":1.0},"476":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":18,"docs":{"37":{"tf":1.0},"40":{"tf":1.0},"44":{"tf":1.0},"45":{"tf":1.0},"46":{"tf":1.0},"484":{"tf":1.0},"489":{"tf":1.0},"49":{"tf":1.0},"494":{"tf":1.0},"495":{"tf":1.0},"500":{"tf":1.0},"51":{"tf":1.0},"516":{"tf":1.0},"518":{"tf":1.0},"534":{"tf":1.0},"536":{"tf":1.0},"548":{"tf":1.0},"57":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"r":{"df":2,"docs":{"25":{"tf":1.0},"323":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"466":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"k":{"df":2,"docs":{"274":{"tf":1.0},"589":{"tf":1.0}}}},"z":{"df":0,"docs":{},"e":{"df":2,"docs":{"342":{"tf":1.0},"527":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":2,"docs":{"141":{"tf":1.0},"150":{"tf":1.0}}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"274":{"tf":1.0}}}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":7,"docs":{"169":{"tf":1.0},"178":{"tf":1.0},"179":{"tf":1.0},"245":{"tf":1.0},"246":{"tf":1.0},"349":{"tf":1.0},"470":{"tf":1.0}}}}},"m":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"i":{"df":2,"docs":{"19":{"tf":1.0},"50":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"c":{"df":35,"docs":{"103":{"tf":1.0},"112":{"tf":1.0},"120":{"tf":1.0},"129":{"tf":1.0},"138":{"tf":1.0},"147":{"tf":1.0},"162":{"tf":1.0},"172":{"tf":1.0},"182":{"tf":1.0},"204":{"tf":1.0},"212":{"tf":1.0},"224":{"tf":1.0},"238":{"tf":1.0},"249":{"tf":1.0},"262":{"tf":1.0},"271":{"tf":1.0},"279":{"tf":1.0},"287":{"tf":1.0},"295":{"tf":1.0},"303":{"tf":1.0},"331":{"tf":1.0},"351":{"tf":1.0},"364":{"tf":1.0},"373":{"tf":1.0},"384":{"tf":1.0},"392":{"tf":1.0},"400":{"tf":1.0},"411":{"tf":1.0},"426":{"tf":1.0},"434":{"tf":1.0},"443":{"tf":1.0},"451":{"tf":1.0},"461":{"tf":1.0},"473":{"tf":1.0},"481":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"a":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"_":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":2,"docs":{"310":{"tf":1.0},"322":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":1,"docs":{"322":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":3,"docs":{"33":{"tf":1.0},"34":{"tf":1.0},"47":{"tf":1.0}}}}},"df":0,"docs":{}},"i":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"259":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"242":{"tf":1.0}},"t":{"df":0,"docs":{},"r":{"a":{"c":{"df":1,"docs":{"395":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":2,"docs":{"561":{"tf":1.0},"562":{"tf":1.0}}}},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"253":{"tf":1.0},"324":{"tf":1.0}}}},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"199":{"tf":1.0}}},"u":{"df":82,"docs":{"151":{"tf":1.0},"157":{"tf":1.0},"158":{"tf":1.0},"165":{"tf":1.0},"166":{"tf":1.0},"175":{"tf":1.0},"176":{"tf":1.0},"185":{"tf":1.0},"186":{"tf":1.0},"193":{"tf":1.0},"194":{"tf":1.0},"207":{"tf":1.0},"208":{"tf":1.0},"215":{"tf":1.0},"216":{"tf":1.0},"219":{"tf":1.0},"220":{"tf":1.0},"227":{"tf":1.0},"228":{"tf":1.0},"23":{"tf":1.0},"242":{"tf":1.0},"243":{"tf":1.0},"253":{"tf":1.0},"254":{"tf":1.0},"266":{"tf":1.0},"267":{"tf":1.0},"27":{"tf":1.0},"274":{"tf":1.0},"275":{"tf":1.0},"282":{"tf":1.0},"283":{"tf":1.0},"290":{"tf":1.0},"291":{"tf":1.0},"298":{"tf":1.0},"299":{"tf":1.0},"305":{"tf":1.0},"306":{"tf":1.0},"31":{"tf":1.0},"326":{"tf":1.0},"327":{"tf":1.0},"334":{"tf":1.0},"335":{"tf":1.0},"345":{"tf":1.0},"346":{"tf":1.0},"354":{"tf":1.0},"355":{"tf":1.0},"36":{"tf":1.0},"368":{"tf":1.0},"369":{"tf":1.0},"378":{"tf":1.0},"379":{"tf":1.0},"387":{"tf":1.0},"388":{"tf":1.0},"395":{"tf":1.0},"396":{"tf":1.0},"406":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"429":{"tf":1.0},"430":{"tf":1.0},"438":{"tf":1.0},"439":{"tf":1.0},"446":{"tf":1.0},"447":{"tf":1.0},"454":{"tf":1.0},"455":{"tf":1.0},"46":{"tf":1.0},"466":{"tf":1.0},"467":{"tf":1.0},"476":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"493":{"tf":1.0},"501":{"tf":1.0},"506":{"tf":1.0},"507":{"tf":1.0},"519":{"tf":1.0},"525":{"tf":1.0},"526":{"tf":1.0},"537":{"tf":1.0},"541":{"tf":1.0},"56":{"tf":1.0}}}}},"d":{"df":2,"docs":{"508":{"tf":1.0},"509":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":3,"docs":{"516":{"tf":1.0},"534":{"tf":1.0},"548":{"tf":1.0}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":221,"docs":{"151":{"tf":1.0},"154":{"tf":1.0},"155":{"tf":1.0},"157":{"tf":1.0},"159":{"tf":1.0},"161":{"tf":1.0},"162":{"tf":1.0},"163":{"tf":1.0},"164":{"tf":1.0},"165":{"tf":1.0},"167":{"tf":1.0},"171":{"tf":1.0},"172":{"tf":1.0},"173":{"tf":1.0},"174":{"tf":1.0},"175":{"tf":1.0},"181":{"tf":1.0},"182":{"tf":1.0},"183":{"tf":1.0},"184":{"tf":1.0},"185":{"tf":1.0},"187":{"tf":1.0},"193":{"tf":1.0},"195":{"tf":1.0},"203":{"tf":1.0},"204":{"tf":1.0},"205":{"tf":1.0},"206":{"tf":1.0},"207":{"tf":1.0},"209":{"tf":1.0},"211":{"tf":1.0},"212":{"tf":1.0},"213":{"tf":1.0},"214":{"tf":1.0},"215":{"tf":1.0},"217":{"tf":1.0},"219":{"tf":1.0},"221":{"tf":1.0},"223":{"tf":1.0},"224":{"tf":1.0},"225":{"tf":1.0},"226":{"tf":1.0},"227":{"tf":1.0},"229":{"tf":1.0},"23":{"tf":1.0},"237":{"tf":1.0},"238":{"tf":1.0},"239":{"tf":1.0},"240":{"tf":1.0},"241":{"tf":1.0},"242":{"tf":1.0},"248":{"tf":1.0},"249":{"tf":1.0},"25":{"tf":1.0},"250":{"tf":1.0},"251":{"tf":1.0},"253":{"tf":1.0},"255":{"tf":1.0},"261":{"tf":1.0},"262":{"tf":1.0},"263":{"tf":1.0},"264":{"tf":1.0},"265":{"tf":1.0},"266":{"tf":1.0},"268":{"tf":1.0},"270":{"tf":1.0},"271":{"tf":1.0},"272":{"tf":1.0},"273":{"tf":1.0},"274":{"tf":1.0},"276":{"tf":1.0},"278":{"tf":1.0},"279":{"tf":1.0},"280":{"tf":1.0},"281":{"tf":1.0},"282":{"tf":1.0},"284":{"tf":1.0},"286":{"tf":1.0},"287":{"tf":1.0},"288":{"tf":1.0},"289":{"tf":1.0},"290":{"tf":1.0},"292":{"tf":1.0},"294":{"tf":1.0},"295":{"tf":1.0},"296":{"tf":1.0},"297":{"tf":1.0},"298":{"tf":1.0},"300":{"tf":1.0},"302":{"tf":1.0},"303":{"tf":1.0},"304":{"tf":1.0},"305":{"tf":1.0},"307":{"tf":1.0},"31":{"tf":1.0},"315":{"tf":1.0},"316":{"tf":1.0},"317":{"tf":1.0},"32":{"tf":1.0},"326":{"tf":1.0},"328":{"tf":1.0},"330":{"tf":1.0},"331":{"tf":1.0},"332":{"tf":1.0},"333":{"tf":1.0},"334":{"tf":1.0},"336":{"tf":1.0},"338":{"tf":1.0},"339":{"tf":1.0},"340":{"tf":1.0},"345":{"tf":1.0},"347":{"tf":1.0},"35":{"tf":1.0},"350":{"tf":1.0},"351":{"tf":1.0},"352":{"tf":1.0},"353":{"tf":1.0},"354":{"tf":1.0},"36":{"tf":1.0},"363":{"tf":1.0},"364":{"tf":1.0},"365":{"tf":1.0},"366":{"tf":1.0},"367":{"tf":1.0},"368":{"tf":1.0},"37":{"tf":1.0},"370":{"tf":1.0},"372":{"tf":1.0},"373":{"tf":1.0},"376":{"tf":1.0},"377":{"tf":1.0},"378":{"tf":1.0},"380":{"tf":1.0},"382":{"tf":1.0},"383":{"tf":1.0},"384":{"tf":1.0},"385":{"tf":1.0},"386":{"tf":1.0},"387":{"tf":1.0},"389":{"tf":1.0},"391":{"tf":1.0},"392":{"tf":1.0},"393":{"tf":1.0},"394":{"tf":1.0},"395":{"tf":1.0},"397":{"tf":1.0},"399":{"tf":1.0},"400":{"tf":1.0},"401":{"tf":1.0},"402":{"tf":1.0},"406":{"tf":1.0},"408":{"tf":1.0},"410":{"tf":1.0},"411":{"tf":1.0},"413":{"tf":1.0},"414":{"tf":1.0},"417":{"tf":1.0},"425":{"tf":1.0},"426":{"tf":1.0},"427":{"tf":1.0},"428":{"tf":1.0},"429":{"tf":1.0},"431":{"tf":1.0},"433":{"tf":1.0},"434":{"tf":1.0},"435":{"tf":1.0},"436":{"tf":1.0},"438":{"tf":1.0},"44":{"tf":1.0},"440":{"tf":1.0},"442":{"tf":1.0},"443":{"tf":1.0},"444":{"tf":1.0},"445":{"tf":1.0},"448":{"tf":1.0},"45":{"tf":1.0},"450":{"tf":1.0},"451":{"tf":1.0},"452":{"tf":1.0},"453":{"tf":1.0},"454":{"tf":1.0},"456":{"tf":1.0},"46":{"tf":1.0},"460":{"tf":1.0},"461":{"tf":1.0},"462":{"tf":1.0},"463":{"tf":1.0},"466":{"tf":1.0},"468":{"tf":1.0},"472":{"tf":1.0},"473":{"tf":1.0},"474":{"tf":1.0},"475":{"tf":1.0},"476":{"tf":1.0},"478":{"tf":1.0},"480":{"tf":1.0},"481":{"tf":1.0},"482":{"tf":1.0},"483":{"tf":1.0},"488":{"tf":1.0},"489":{"tf":1.0},"491":{"tf":1.0},"493":{"tf":1.0},"497":{"tf":1.4142135623730951},"498":{"tf":1.4142135623730951},"500":{"tf":1.0},"502":{"tf":1.0},"506":{"tf":1.4142135623730951},"507":{"tf":1.0},"51":{"tf":1.0},"518":{"tf":1.0},"520":{"tf":1.0},"525":{"tf":1.4142135623730951},"526":{"tf":1.0},"536":{"tf":1.0},"538":{"tf":1.0},"541":{"tf":1.4142135623730951},"55":{"tf":1.0},"56":{"tf":1.0},"57":{"tf":1.0},"602":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":5,"docs":{"193":{"tf":1.0},"197":{"tf":1.0},"387":{"tf":1.0},"567":{"tf":1.0},"571":{"tf":1.0}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"62":{"tf":1.0}}}}}}},"u":{"c":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"322":{"tf":1.0}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":3,"docs":{"405":{"tf":1.0},"509":{"tf":1.4142135623730951},"53":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"497":{"tf":1.0}}}}}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"309":{"tf":1.0},"500":{"tf":1.0}}}},"df":0,"docs":{}}}},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"305":{"tf":1.0},"321":{"tf":1.0},"323":{"tf":1.0}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"320":{"tf":1.0}}}}}}},"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"x":{"df":1,"docs":{"573":{"tf":1.0}}}},"df":0,"docs":{}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":1,"docs":{"79":{"tf":1.0}}}}}}}},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":6,"docs":{"102":{"tf":1.0},"111":{"tf":1.0},"119":{"tf":1.0},"128":{"tf":1.0},"137":{"tf":1.0},"146":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":31,"docs":{"163":{"tf":1.0},"173":{"tf":1.0},"183":{"tf":1.0},"205":{"tf":1.0},"213":{"tf":1.0},"225":{"tf":1.0},"239":{"tf":1.0},"250":{"tf":1.0},"263":{"tf":1.0},"272":{"tf":1.0},"280":{"tf":1.0},"288":{"tf":1.0},"296":{"tf":1.0},"304":{"tf":1.0},"316":{"tf":1.0},"332":{"tf":1.0},"339":{"tf":1.0},"352":{"tf":1.0},"366":{"tf":1.0},"376":{"tf":1.0},"382":{"tf":1.0},"393":{"tf":1.0},"401":{"tf":1.0},"413":{"tf":1.0},"427":{"tf":1.0},"435":{"tf":1.0},"444":{"tf":1.0},"452":{"tf":1.0},"462":{"tf":1.0},"474":{"tf":1.0},"482":{"tf":1.0}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"t":{"df":2,"docs":{"157":{"tf":1.0},"489":{"tf":1.0}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"61":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"62":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":2,"docs":{"412":{"tf":1.0},"499":{"tf":1.0}}},"k":{"df":3,"docs":{"266":{"tf":1.0},"487":{"tf":1.0},"498":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"341":{"tf":1.0}}}},"u":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"343":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":2,"docs":{"344":{"tf":1.0},"599":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":5,"docs":{"189":{"tf":1.0},"190":{"tf":1.0},"359":{"tf":1.0},"458":{"tf":1.0},"551":{"tf":1.0}}}}},"l":{";":{"d":{"df":0,"docs":{},"r":{"df":2,"docs":{"24":{"tf":1.0},"38":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"d":{"df":3,"docs":{"516":{"tf":1.0},"534":{"tf":1.0},"548":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"r":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":1,"docs":{"342":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"132":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"123":{"tf":1.0},"127":{"tf":1.0},"128":{"tf":1.0}}}}}}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"t":{"df":7,"docs":{"219":{"tf":1.0},"341":{"tf":1.0},"567":{"tf":1.0},"568":{"tf":1.0},"574":{"tf":1.0},"575":{"tf":1.0},"589":{"tf":1.0}}}}},"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"554":{"tf":1.0},"558":{"tf":1.0}}}},"df":10,"docs":{"165":{"tf":1.0},"274":{"tf":1.0},"282":{"tf":1.0},"310":{"tf":1.0},"311":{"tf":1.0},"34":{"tf":1.0},"387":{"tf":1.0},"438":{"tf":1.0},"507":{"tf":1.0},"526":{"tf":1.0}},"m":{"df":2,"docs":{"395":{"tf":1.0},"405":{"tf":1.0}}}},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"242":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"e":{"df":1,"docs":{"154":{"tf":1.0}}},"s":{"df":0,"docs":{},"t":{"df":5,"docs":{"253":{"tf":1.0},"256":{"tf":1.0},"258":{"tf":1.0},"518":{"tf":1.0},"521":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"51":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"k":{"df":1,"docs":{"342":{"tf":1.0}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"583":{"tf":1.0},"599":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":2,"docs":{"465":{"tf":1.0},"565":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"84":{"tf":1.0}}}}}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":3,"docs":{"12":{"tf":1.0},"152":{"tf":1.0},"485":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"54":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"497":{"tf":1.0}}}},"df":0,"docs":{}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"465":{"tf":1.0}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"344":{"tf":1.0}}},"df":0,"docs":{}}}}}},"p":{"df":2,"docs":{"201":{"tf":1.0},"457":{"tf":1.0}}},"s":{"df":14,"docs":{"155":{"tf":1.0},"185":{"tf":1.0},"252":{"tf":1.0},"274":{"tf":1.0},"321":{"tf":1.0},"357":{"tf":1.0},"415":{"tf":1.0},"437":{"tf":1.0},"45":{"tf":1.0},"464":{"tf":1.0},"465":{"tf":1.0},"564":{"tf":1.0},"580":{"tf":1.0},"581":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"412":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":4,"docs":{"325":{"tf":1.0},"72":{"tf":1.0},"73":{"tf":1.0},"74":{"tf":1.0}}}},"t":{"df":1,"docs":{"498":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"234":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":1,"docs":{"404":{"tf":1.0}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":8,"docs":{"10":{"tf":1.0},"13":{"tf":1.0},"20":{"tf":1.0},"23":{"tf":1.0},"37":{"tf":1.0},"52":{"tf":1.0},"58":{"tf":1.0},"7":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"60":{"tf":1.0}}}}}},"w":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"19":{"tf":1.0},"446":{"tf":1.0}}}},"k":{"df":0,"docs":{},"e":{"df":1,"docs":{"457":{"tf":1.0}},"r":{"df":1,"docs":{"200":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"t":{"df":8,"docs":{"412":{"tf":1.0},"484":{"tf":1.0},"55":{"tf":1.0},"556":{"tf":1.0},"76":{"tf":1.0},"81":{"tf":1.0},"86":{"tf":1.0},"91":{"tf":1.0}}}},"r":{"df":0,"docs":{},"n":{"df":37,"docs":{"158":{"tf":1.0},"166":{"tf":1.0},"176":{"tf":1.0},"186":{"tf":1.0},"194":{"tf":1.0},"208":{"tf":1.0},"216":{"tf":1.0},"220":{"tf":1.0},"228":{"tf":1.0},"243":{"tf":1.0},"254":{"tf":1.0},"267":{"tf":1.0},"275":{"tf":1.0},"283":{"tf":1.0},"291":{"tf":1.0},"299":{"tf":1.0},"306":{"tf":1.0},"327":{"tf":1.0},"335":{"tf":1.0},"346":{"tf":1.0},"355":{"tf":1.0},"369":{"tf":1.0},"379":{"tf":1.0},"388":{"tf":1.0},"396":{"tf":1.0},"407":{"tf":1.0},"416":{"tf":1.0},"430":{"tf":1.0},"439":{"tf":1.0},"447":{"tf":1.0},"455":{"tf":1.0},"467":{"tf":1.0},"477":{"tf":1.0},"490":{"tf":1.0},"501":{"tf":1.0},"519":{"tf":1.0},"537":{"tf":1.0}}}},"y":{"df":5,"docs":{"191":{"tf":1.0},"320":{"tf":1.0},"323":{"tf":1.0},"342":{"tf":1.0},"423":{"tf":1.0}}}},"df":0,"docs":{},"e":{"'":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"499":{"tf":1.0}}}},"r":{"df":1,"docs":{"550":{"tf":1.0}}}},"b":{"df":5,"docs":{"227":{"tf":1.0},"230":{"tf":1.0},"231":{"tf":1.0},"290":{"tf":1.0},"523":{"tf":1.0}}},"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"0":{"tf":1.0}}}}},"df":0,"docs":{}}},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"536":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"e":{"df":1,"docs":{"360":{"tf":1.0}}},"r":{"df":0,"docs":{},"k":{"df":3,"docs":{"10":{"tf":1.0},"3":{"tf":1.0},"50":{"tf":1.0}}},"l":{"d":{"df":1,"docs":{"215":{"tf":1.0}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"341":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"d":{"df":0,"docs":{},"n":{"'":{"df":0,"docs":{},"t":{"df":1,"docs":{"324":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":7,"docs":{"193":{"tf":1.0},"290":{"tf":1.0},"497":{"tf":1.0},"498":{"tf":1.0},"51":{"tf":1.0},"55":{"tf":1.0},"601":{"tf":1.0}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"498":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":2,"docs":{"196":{"tf":1.0},"359":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"563":{"tf":1.0}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"u":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"y":{"df":3,"docs":{"132":{"tf":1.0},"136":{"tf":1.0},"137":{"tf":1.0}}}}},"df":0,"docs":{},"r":{"df":1,"docs":{"96":{"tf":1.0}}}}}},"z":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"343":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":1,"docs":{"4":{"tf":1.0}}}}}}}}}},"lang":"English","pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5"},"results_options":{"limit_results":30,"teaser_word_count":30},"search_options":{"bool":"OR","expand":true,"fields":{"body":{"boost":1},"breadcrumbs":{"boost":1},"title":{"boost":2}}}} \ No newline at end of file diff --git a/docs/tomorrow-night.css b/docs/tomorrow-night.css new file mode 100644 index 00000000..f7197925 --- /dev/null +++ b/docs/tomorrow-night.css @@ -0,0 +1,104 @@ +/* Tomorrow Night Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment { + color: #969896; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-attribute, +.hljs-tag, +.hljs-regexp, +.ruby .hljs-constant, +.xml .hljs-tag .hljs-title, +.xml .hljs-pi, +.xml .hljs-doctype, +.html .hljs-doctype, +.css .hljs-id, +.css .hljs-class, +.css .hljs-pseudo { + color: #cc6666; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-preprocessor, +.hljs-pragma, +.hljs-built_in, +.hljs-literal, +.hljs-params, +.hljs-constant { + color: #de935f; +} + +/* Tomorrow Yellow */ +.ruby .hljs-class .hljs-title, +.css .hljs-rule .hljs-attribute { + color: #f0c674; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-value, +.hljs-inheritance, +.hljs-header, +.hljs-name, +.ruby .hljs-symbol, +.xml .hljs-cdata { + color: #b5bd68; +} + +/* Tomorrow Aqua */ +.hljs-title, +.css .hljs-hexcolor { + color: #8abeb7; +} + +/* Tomorrow Blue */ +.hljs-function, +.python .hljs-decorator, +.python .hljs-title, +.ruby .hljs-function .hljs-title, +.ruby .hljs-title .hljs-keyword, +.perl .hljs-sub, +.javascript .hljs-title, +.coffeescript .hljs-title { + color: #81a2be; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.javascript .hljs-function { + color: #b294bb; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1d1f21; + color: #c5c8c6; + padding: 0.5em; + -webkit-text-size-adjust: none; +} + +.coffeescript .javascript, +.javascript .xml, +.tex .hljs-formula, +.xml .javascript, +.xml .vbscript, +.xml .css, +.xml .hljs-cdata { + opacity: 0.5; +} + +.hljs-addition { + color: #718c00; +} + +.hljs-deletion { + color: #c82829; +} diff --git a/docs/triage.html b/docs/triage.html new file mode 100644 index 00000000..ab650a6e --- /dev/null +++ b/docs/triage.html @@ -0,0 +1,284 @@ + + + + + + 🔍 Triage meetings - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +
    + +
    + + + + + + + + + + + +
    +
    +

    🔍 Triage meetings

    +

    When, where

    +

    The weekly triage meeting is held on Zulip at 13:00 US Eastern time on Fridays (google calendar event for meeting).

    +

    So you want to fix a bug?

    +

    If you're interested in fixing bugs, there is no need to wait for the triage meeting. +Take a look at the mentored async-await bugs that have no assignee. +Every mentored bug should have a few comments. +If you see one you like, you can add the @rustbot claim comment into the bug and start working on it! +Feel to reach out to the mentor on Zulip to ask questions.

    +

    Project board

    +

    The project board tracks various bugs and other work items for the async foundation group. +It is used to drive the triage process.

    +

    Triage process

    +

    In our weekly triage meetings, we take new issues assigned A-async-await and categorize them. +The process is:

    +
      +
    • Review the project board, from right to left: +
        +
      • Look at what got Done, and celebrate! :tada:
      • +
      • Review In progress issues to check we are making progress and there is a clear path to finishing (otherwise, move to the appropriate column)
      • +
      • Review Blocked issues to see if there is anything we can do to unblock
      • +
      • Review Claimed issues to see if they are in progress, and if the assigned person still intends to work on it
      • +
      • Review To do issues and assign to anyone who wants to work on something
      • +
      +
    • +
    • Review uncategorized issues +
        +
      • Mark P-low, P-medium, or P-high
      • +
      • Add P-high and assigned E-needs-mentor issues to the project board
      • +
      • Mark AsyncAwait-triaged
      • +
      +
    • +
    • If there's still a shortage of To do issues, review the list of P-medium or P-low issues for candidates
    • +
    +

    Mentoring

    +

    If an issue is a good candidate for mentoring, mark E-needs-mentor and try to find a mentor.

    +

    Mentors assigned to issues should write up mentoring instructions. +Often, this is just a couple lines pointing to the relevant code. +Mentorship doesn't require intimate knowledge of the compiler, just some familiarity and a willingness to look around for the right code.

    +

    After writing instructions, mentors should un-assign themselves, add E-mentor, and remove E-needs-mentor. +On the project board, if a mentor is assigned to an issue, it should go to the Claimed column until mentoring instructions are provided. +After that, it should go to To do until someone has volunteered to work on it.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision.html b/docs/vision.html new file mode 100644 index 00000000..ccf2438c --- /dev/null +++ b/docs/vision.html @@ -0,0 +1,262 @@ + + + + + + 🔮 The vision - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    🔮 The vision

    +

    What is this

    +

    We believe Rust can become one of the most popular choices for building distributed systems, ranging from embedded devices to foundational cloud services. Whatever they're using it for, we want all developers to love using Async Rust. For that to happen, we need to move Async Rust beyond the "MVP" state it's in today and make it accessible to everyone.

    +

    This document is a collaborative effort to build a shared vision for Async Rust. Our goal is to engage the entire community in a collective act of the imagination: how can we make the end-to-end experience of using Async I/O not only a pragmatic choice, but a joyful one?

    +

    Where we are and where we are going

    +

    The "vision document" starts with a cast of characters. Each character is tied to a particular Rust value (e.g., performance, productivity, etc) determined by their background; this background also informs the expectations they bring when using Rust. Grace, for example, wants to keep the same level of performance she currently get with C, but with the productivity benefits of memory safety. Alan, meanwhile, is hoping Rust will give him higher performance without losing the safety and ergonomics that he enjoys with garbage collected languages.

    +

    For each character, we write "status quo" stories that describe the challenges they face as they try to achieve their goals (and typically fail in dramatic fashion!), These stories are not fiction. They are an amalgamation of the real experiences of people using Async Rust, as reported to us by interviews, blog posts, and tweets. Writing these stories helps us gauge the cumulative impact of the various papercuts and challenges that one encounters when using Async Rust.

    +

    The ultimate goal of the vision doc, of course, is not just to tell us where we are now, but where we are going and how we will get there. For this, we include "shiny future" stories that tell us how those same characters will fare in a few years time, when we've had a chance to improve the Async Rust experience.

    +

    The vision drives the work

    +

    The vision is not just idle speculation. It is the central document that we use to organize ourselves. When we think about our roadmap for any given year, it is always with the aim of moving us closer to the vision we lay out here.

    +

    Involving the whole community

    +

    The async vision document provides a forum where the Async Rust community can plan a great overall experience for Async Rust users. Async Rust was intentionally designed not to have a "one size fits all" mindset, and we don't want to change that. Our goal is to build a shared vision for the end-to-end experience while retaining the loosely coupled, exploration-oriented ecosystem we have built.

    +

    🚧 Under construction! Help needed! 🚧

    +

    This document is not yet complete! We are actively working on it as part of the working group, and we would like your help! Check out the How to vision doc page for more details.

    +
    graph TD;
    +A-->B;
    +A-->C;
    +B-->D;
    +C-->D;
    +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/characters.html b/docs/vision/characters.html new file mode 100644 index 00000000..7a30c151 --- /dev/null +++ b/docs/vision/characters.html @@ -0,0 +1,279 @@ + + + + + + 🙋‍♀️ Cast of characters - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    🙋‍♀️ Cast of characters

    +

    What is this?

    +

    We've created four characters that we use to guide our thinking. These characters are the protagonists of our status quo and shiny future stories, and they help us to think about the different kinds of priorities and expectations that people bring to Async Rust. Having names and personalities also makes the stories more fun and approachable.

    +

    The characters

    +
      +
    • Alan: the experienced "GC'd language" developer, new to Rust +
        +
      • Top priority: performance -- that's what he is not getting from current GC'd language
      • +
      • Expectations: absence of memory safety bugs (he gets that now from his GC), strong ecosystem, great tooling
      • +
      +
    • +
    • Grace: the systems programming expert, new to Rust +
        +
      • Top priority: memory safety -- that's what she is not getting from C/C++
      • +
      • Expectations: able to do all the things she's used to from C/C++
      • +
      +
    • +
    • Niklaus: new programmer from an unconventional background +
        +
      • Top priority: accessibility -- he's learning a lot of new things at once
      • +
      • Expectations: community -- the community enabled him to have early success, and he is excited to have it support him and him grow more
      • +
      +
    • +
    • Barbara: the experienced Rust developer +
        +
      • Top priority: overall productivity and long-term maintenance -- she loves Rust, and wants to see it extended to new areas; she has an existing code base to maintain
      • +
      • Expectations: elegance and craftsmanship, fits well with Rust
      • +
      +
    • +
    +

    🤔 Frequently Asked Questions

    +

    Where do the names come from?

    +

    Famous programming language designers and theorists. Alan Turing, Grace Hopper, Niklaus Wirth, and Barbara Liskov.

    +

    I don't see myself in these characters. What should I do?

    +

    Come to Zulip and talk to us about it! Maybe they need to be adjusted!

    +

    I see myself in more than one of these characters!

    +

    Yeah, me too.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/characters/alan.html b/docs/vision/characters/alan.html new file mode 100644 index 00000000..16f28f2d --- /dev/null +++ b/docs/vision/characters/alan.html @@ -0,0 +1,259 @@ + + + + + + Alan - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    🙋‍♀️ Cast of characters

    +

    Alan: the experienced "GC'd language" developer, new to Rust

    +

    Variant A: Dynamic languages

    +

    Alan has been programming for years. He has built systems in Ruby on Rails, node.js, and used Django too. Lately he's been learning Rust and he is tinkering with integrating Rust into some of his projects to get better performance and reliability. He's also building some projects entirely in Rust.

    +

    Variant B: Java

    +

    Alan works at a Java shop. They run a number of network services built in Java, along with some that use Kotlin or Scala. He's very familiar with the Java ecosystem and the tooling that the JVM offers. He's also sometimes had to tweak his code to work around garbage collector latencies or to reduce overall memory usage. He's curious to try porting some systems to Rust to see how it works.

    +

    Variant C: Kotlin

    +

    Alan is developing networking programs in Kotlin. He loves Kotlin for its expressive syntax and clean integration with Java. Still, he sometimes encounters problems running his services due to garbage collection latencies or overall memory usage. He's heard that Rust can be fun to use too, and is curious to try it out.

    +

    🤔 Frequently Asked Questions

    +

    What does Alan want most from Async Rust?

    +
      +
    • The promise of better performance and memory usage than the languages he's been using. Rust's safety guarantees are important too; he's considered using C++ in the past but always judged the maintenance burden would be too high.
    • +
    +

    What expectations does Alan bring from his current environment?

    +
      +
    • A focus on ease of use, a strong ecosystem, and great tooling.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/characters/barbara.html b/docs/vision/characters/barbara.html new file mode 100644 index 00000000..23f2207c --- /dev/null +++ b/docs/vision/characters/barbara.html @@ -0,0 +1,256 @@ + + + + + + Barbara - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    🙋‍♀️ Cast of characters

    +

    Barbara: the experienced Rust developer

    +

    Barbara has been using Rust since the 0.1 release. She remembers some of the crazy syntax in Ye Olde Rust of Yore and secretly still misses the alt keyword (don't tell anyone). Lately she's maintaining various projects in the async space.

    +

    🤔 Frequently Asked Questions

    +

    What does Barbara want most from Async Rust?

    +
      +
    • She is using Rust for its feeling of productivity, and she expects Async Rust to continue in that tradition.
    • +
    • She maintains several existing projects, so stability is important to her.
    • +
    +

    What expectations does Barbara bring from her current environment?

    +
      +
    • She wants a design that feels like the rest of Rust.
    • +
    • She loves Rust and she expects Async Rust to share its overall values.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/characters/grace.html b/docs/vision/characters/grace.html new file mode 100644 index 00000000..f65a7ae5 --- /dev/null +++ b/docs/vision/characters/grace.html @@ -0,0 +1,253 @@ + + + + + + Grace - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    🙋‍♀️ Cast of characters

    +

    Grace: the systems programming expert, new to Rust

    +

    Grace has been writing C and C++ for a number of years. She's accustomed to hacking lots of low-level details to coax the most performance she can from her code. She's also experienced her share of epic debugging sessions resulting from memory errors in C. She's intrigued by Rust: she likes the idea of getting the same control and performance she gets from C but with the productivity benefits she gets from memory safety. She's currently experimenting with introducing Rust into some of the systems she works on, and she's considering Rust for a few greenfield projects as well.

    +

    🤔 Frequently Asked Questions

    +

    What does Grace want most from Async Rust?

    +

    Grace is most interested in memory safety. She is comfortable with C and C++ but she's also aware of the maintenance burden that arises from the lack of memory safety.

    +

    What expectations does Grace bring from her current environment?

    +
      +
    • Grace expects to be able to get the same performance she used to get from C or C++.
    • +
    • Grace is accustomed to various bits of low-level tooling, such as gdb or perf. It's nice if Rust works reasonably well with those tools, but she'd be happy to have access to better alternatives if they were available. She's happy using cargo instead of make, for example.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/characters/niklaus.html b/docs/vision/characters/niklaus.html new file mode 100644 index 00000000..fc1564f6 --- /dev/null +++ b/docs/vision/characters/niklaus.html @@ -0,0 +1,254 @@ + + + + + + Niklaus - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    🙋‍♀️ Cast of characters

    +

    Niklaus: new programmer from an unconventional background

    +

    He's always been interested in programming but doesn't have experience with it. He's been working as a tech writer and decided to dip his toe in by opening PRs to improve the documentation for one of the libraries he was playing with. The feedback was positive so he fixed a small bug. He's now considering getting involved in a deeper way.

    +

    🤔 Frequently Asked Questions

    +

    What does Niklaus want most from Async Rust?

    +
      +
    • Niklaus values accessibility. He's learning a lot of new things at once and it can be overwhelming.
    • +
    +

    What expectations does Niklaus bring from his current environment?

    +
      +
    • Niklaus expects a strong and supportive community. The Rust community enabled him to have early success, and he is excited to have it support him and for it to help him grow more.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/how_to_vision.html b/docs/vision/how_to_vision.html new file mode 100644 index 00000000..e2e86fcd --- /dev/null +++ b/docs/vision/how_to_vision.html @@ -0,0 +1,285 @@ + + + + + + ❓How to vision - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ❓ How to vision

    +

    How you can help

    + + + + + +
    WhenWhat
    Now till 2021-04-30Improve the sample projects
    Now till 2021-04-30Propose new "status quo" stories or comment on existing PRs
    Now till 2021-04-30Propose new "shiny future" stories or comment on existing PRs
    🛑 Starting 2021-04-30Vote for the awards on the status quo and shiny future stories!
    +

    The big picture

    +

    The process we are using to write the vision doc encourages active collaboration and "positive sum" thinking. It starts with a brainstorming period, during which we aim to collect as many "status quo" and "shiny future" stories as we can.

    +

    This brainstorming period runs for six weeks, until the end of April. For the first two weeks (until 2021-04-02), we are collecting "status quo" stories only. After that, we will accept both "status quo" and "shiny future" stories until the end of the brainstorming period. Finally, to cap off the brainstorming period, we will select winners for awards like "Most Humorous Story" or "Most Supportive Contributor".

    +

    Once the brainstorming period is complete, the working group leads will begin work on assembling the various stories and shiny futures into a coherent draft. This draft will be reviewed by the community and the Rust teams and adjusted based on feedback.

    +

    Brainstorming

    +

    The brainstorming period runs until 2021-04-30:

    + +

    The more the merrier!

    +

    During this brainstorming period, we want to focus on getting as many ideas as we can. Having multiple "shiny futures" that address the same problem is a feature, not a bug, as it will let us mix-and-match later to try and find the best overall plan. Comments and questions will be used as a tool for improving understanding or sharpening proposals. Presenting alternative ideas is done by writing an alternative story.

    +

    Reviewing contributions

    +

    To merge a story or project PR, any member of the working group can open a topic on Zulip and propose it be merged. Ideally there will be no outstanding concerns. If a second member of the working group approves, the PR can then be merged.

    +

    Reviewers should ensure that new stories and projects are added to the SUMMARY.md file either before merging or directly afterwards.

    +

    Harmonizing

    +

    At this point, the wg leads will write the draft vision document, drawing on the status quo and shiny future stories that were submitted. +Like an RFC, this draft vision doc will be opened for comment and improved based on the resulting feedback. +When the wg leads feel it is ready, it will be taken to the lang and libs teams for approval (and other Rust teams as appropriate).

    +

    Living document

    +

    This meant to be a living document. We plan to revisit it regularly to track our progress and update it based on what we've learned in the meantime. Note that the shiny future stories in particular are going to involve a fair bit of uncertainty, so we expect them to change as we go.

    +

    Wait, did somebody say awards?

    +

    Yes! We are planning to give awards in various categories for folks who write status quo and shiny future PRs. The precise categories are TBD. Check out the awards page for more details.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/how_to_vision/awards.html b/docs/vision/how_to_vision/awards.html new file mode 100644 index 00000000..6d004207 --- /dev/null +++ b/docs/vision/how_to_vision/awards.html @@ -0,0 +1,259 @@ + + + + + + Awards - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ❓ How to vision: Awards

    +

    At the end of the brainstorming period, we'll also vote on various awards to give to the status quo and shiny future PRs that were submitted.

    +

    Award categories

    +

    These are the award categories:

    +
      +
    • Most humorous story
    • +
    • Most creative story
    • +
    • Most supportive -- who left the most helpful comments?
    • +
    • Most prolific -- who wrote the most stories?
    • +
    • Most unexpected -- which status quo story (or shiny future) took you by surprise?
    • +
    • Most painful "status quo" story
    • +
    • Most ambitious "shiny future" story
    • +
    • Most extensive FAQ
    • +
    +

    However, if you have an idea for another award category, we are happy to take suggestions. One rule: the awards can't be negative (e.g., no "most unrealistic"), and they can't be about which thing is "best". That would work against the brainstorming spirit.

    +

    Voting

    +

    At the end of the brainstorming period, we're going to have a voting session to select which PRs and people win the awards. The winners will be featured in a blog post. 🏆

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/how_to_vision/comment.html b/docs/vision/how_to_vision/comment.html new file mode 100644 index 00000000..394be8fd --- /dev/null +++ b/docs/vision/how_to_vision/comment.html @@ -0,0 +1,270 @@ + + + + + + Commenting - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ❓ How to vision: Constructive comments

    +

    Figuring out the future is tricky business. We all know the internet is not always a friendly place. We want this discussion to be different.

    +

    Be respectful and supportive

    +

    Writing a "status quo" or "shiny future" story is an act of bravery and vulnerability. In the status quo, we are asking people to talk about the things that they or others found hard, to admit that they had trouble figuring something out. In the case of the shiny future, we're asking people to put out half-baked ideas so that we can find the seeds that will grow into something amazing. It doesn't take much to make that go wrong.

    +

    Comment to understand or improve, not to negate or dissuade

    +
    +

    “Most people do not listen with the intent to understand; they listen with the intent to reply.”

    +

    -- Stephen Covey

    +
    +

    The golden rule is that when you leave a comment, you are looking to understand or improve the story.

    +

    For status quo stories, remember that these are true stories about people's experiences -- they can't be wrong (though they could be inaccurate). It may be that somebody tries for days to solve a problem that would've been easy if they had just known to call a particular method. That story is not wrong, it's an opportunity to write a shiny future story in which you explain how they would've learned about that method, or perhaps about how that method would become unnecessary.

    +

    For shiny future stories, even if you don't like the idea, you should ask comments with the goal of better understanding what the author likes about it. Understanding that may give you an idea for how to get those same benefits in a way that you are happier with. It's also valid to encourage the author to elaborate on the impact their story will have on different characters.

    +

    You might just want to write your own story

    +

    Remember, opening your own PR is free (In fact, we're giving an award for being "most prolific"). If you find that you had a really different experience than a status quo story, or you have a different idea for a shiny future, consider just writing your own PR instead of commenting negatively on someone else's. The goal of the brainstorming phase is to put a lot of alternatives, so that we can look for opportunities to combine them and make something with the best of both.

    +

    Good questions for status quo stories

    +

    Here are some examples of good questions for "status quo" stories:

    +
      +
    • Tell me more about this step. What led NAME to do X?
    • +
    • What do you think OTHER_NAME would have done here?
    • +
    • Can you be more specific about this point? What library did they use?
    • +
    +

    Good questions for shiny future stories

    +

    Here are some examples of good questions for "shiny future" stories:

    +
      +
    • How does NAME do X in this future?
    • +
    • It seems like this would interfere with X, which is important for application A. How would NAME handle that case in this future?
    • +
    +

    You should not be afraid to raise technical concerns -- we need to have a robust technical discussion! But do so in a way that leaves room to find an answer that satisfies both of you.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/how_to_vision/projects.html b/docs/vision/how_to_vision/projects.html new file mode 100644 index 00000000..416c9caf --- /dev/null +++ b/docs/vision/how_to_vision/projects.html @@ -0,0 +1,252 @@ + + + + + + Projects - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ❓ How to vision: Projects

    +

    How to open a PR

    +

    If you'd like to add a new project, please open a PR using this template and adding a new file into the projects directory. Do not add your file to SUMMARY.md, that will create conflicts. We'll add it after merging.

    +

    We are pretty happy to add new projects, although we would prefer only to add a new project if it has some characteristic that is distinct from the other projects we've got so far and which is important to a 'status quo' or 'shiny future' story.

    +

    FAQs to answer in your PR

    +

    In your PR, make sure to include the following FAQs:

    +
      +
    • What makes this project different from most others?
    • +
    • Are there existing crates that are similar to this project?
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/how_to_vision/shiny_future.html b/docs/vision/how_to_vision/shiny_future.html new file mode 100644 index 00000000..fc287882 --- /dev/null +++ b/docs/vision/how_to_vision/shiny_future.html @@ -0,0 +1,352 @@ + + + + + + "Shiny future" stories - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ❓ How to vision: "Shiny future" stories

    +

    We want all Async Rust users and their hopes and dreams for what Async Rust should be in the future to be reflected in the async vision doc, so please help us by writing 'shiny future' stories about what you would like async Rust to look like! Remember: we are in a brainstorming period. Please feel free to leave comments in an effort to help someone improve their PRs, but if you would prefer a different approach, you are better off writing your own story. (In fact, you should write your own story even if you like their approach but just have a few alternatives that are worth thinking over.)

    +

    TL;DR

    +

    Just want to get started? Here are quick instructions to get you going:

    +
      +
    • To write your own story: + +
    • +
    +

    How to open a PR

    +

    If you have an idea you'd like to write about, please open a PR using this template and adding a new file into the shiny_future directory. Do not add your file to SUMMARY.md, that will create conflicts. We'll do it after merging.

    +

    Goals of a shiny future PR

    +

    Shiny future PRs "retell" the story from one or more status quo PRs. The story is now taking place 2-3 years in the future, when Async Rust has had the chance to make all sorts of improvements. Shiny future stories are aspirational: we don't have to know exactly how they will be achieved yet! (Of course, it never hurts to have a plan too.)

    +

    Like status quo stories, each shiny future story is always presented from the POV of a particular character. They should be detailed. Sometimes this will mean you have to make stuff up, like method names or other details -- you can use the FAQ to spell out areas of particular uncertainty.

    +

    The role of the FAQ

    +

    Every shiny future PR includes a FAQ. This FAQ should always include answers to some standard questions:

    +
      +
    • What status quo story or stories are you retelling? +
        +
      • Link to the status quo stories here. If there isn't a story that you're retelling, write it!
      • +
      +
    • +
    • What is Alan most excited about in this future? Is he disappointed by anything? +
        +
      • Think about Alan's top priority (performance) and the expectations he brings (ease of use, tooling, etc). How do they fare in this future?
      • +
      +
    • +
    • What is Grace most excited about in this future? Is she disappointed by anything? +
        +
      • Think about Grace's top priority (memory safety) and the expectations she brings (still able to use all the tricks she knows and loves). How do they fare in this future?
      • +
      +
    • +
    • What is Niklaus most excited about in this future? Is he disappointed by anything? +
        +
      • Think about Niklaus's top priority (accessibility) and the expectations he brings (strong community that will support him). How do they fare in this future?
      • +
      +
    • +
    • What is Barbara most excited about in this future? Is she disappointed by anything? +
        +
      • Think about Barbara's top priority (productivity, maintenance over time) and the expectations she brings (fits well with Rust). How do they fare in this future?
      • +
      +
    • +
    • If this is an alternative to another shiny future, which one, and what motivated you to write an alternative? +
        +
      • Cite the story. Be specific, but focus on what you like about your version, not what you dislike about the other.
      • +
      • If this is not an alternative, you can skip this one. =)
      • +
      +
    • +
    • What projects benefit the most from this future?
    • +
    • Are there any projects that are hindered by this future?
    • +
    +

    There are also some optional questions:

    +
      +
    • What are the incremental steps towards realizing this shiny future? +
        +
      • Talk about the actual work we will do. You can link to design docs or even add new ones, as appropriate.
      • +
      • You don't have to have the whole path figured out yet!
      • +
      +
    • +
    • Does realizing this future require cooperation between many projects? +
        +
      • For example, if you are describing an interface in libstd that runtimes will have to implement, talk about that.
      • +
      +
    • +
    +

    You can feel free to add whatever other FAQs seem appropriate. You should also expect to grow the FAQ in response to questions that come up on the PR.

    +

    The review process

    +

    When you opan a status quo PR, people will start to comment on it. These comments should always be constructive. They usually have the form of asking "in this future, what does NAME do when X happens?" or asking you to elaborate on other potential problems that might arise. Ideally, you should respond to every comment in one of two ways:

    +
      +
    • Adjust the story with more details or to correct factual errors.
    • +
    • Add something to the story's FAQ to explain the confusion. +
        +
      • If the question is already covered by a FAQ, you can just refer the commenter to that.
      • +
      +
    • +
    +

    The goal is that, at the end of the review process, the status quo story has a lot more details that address the major questions people had.

    +

    🤔 Frequently Asked Questions

    +

    What is the process to propose a shiny future story?

    + +

    What character should I use for my shiny future story?

    +
      +
    • Usually you would use the same character from the status quo story you are retelling.
    • +
    • If for some reason you chose a different character, add a FAQ to explain why.
    • +
    +

    What do I do if there is no status quo story for my shiny future?

    +

    Write the status quo story first!

    +

    What happens when there are multiple "shiny future" stories about the same thing?

    +

    During this brainstorming period, we want to focus on getting as many ideas as we can. Having multiple "shiny futures" that address the same problem is a feature, not a bug, as it will let us mix-and-match later to try and find the best overall plan.

    +

    How much detail should I give? How specific should I be?

    +
      +
    • Detailed is generally better, but only if those details are helpful for understanding the morals of your story.
    • +
    • Specific is generally better, since an abstract story doesn't feel as real.
    • +
    +

    What is the "scope" of a shiny future story? Can I tell shiny future stories that involve ecosystem projects?

    +

    All the stories in the vision doc are meant to cover the full "end to end" experience of using async Rust. That means that sometimes they will take about things that are really part of projects that are outside of the Rust org. For example, we might write a shiny future that involves how the standard library has published standard traits for core concepts and those concepts have been adopted by libraries throughout the ecosystem. There is a FAQ that asks you to talk about what kinds of coordinate between projects will be required to realize this vision.

    +

    What do I do when I get to details that I don't know yet?

    +

    Take your best guess and add a FAQ explaining which details are still up in the air.

    +

    Do we have to know exactly how we will achieve the "shiny future"?

    +

    You don't have to know how your idea will work yet. We will eventually have to figure out the precise designs, but at this point we're more interested in talking about the experience we aim to create. That said, if you do have plans for how to achieve your shiny future, you can also include [design docs] in the PR, or add FAQ that specify what you have in mind (and perhaps what you have to figure out still).

    +

    What do I do if somebody leaves a comment about how my idea will work and I don't know the answer?

    +

    Add it to the FAQ!

    +

    What if we write a "shiny future" story but it turns out to be impossible to implement?

    +

    Glad you asked! The vision document is a living document, and we intend to revisit it regularly. This is important because it turns out that predicting the future is hard. We fully expect that some aspects of the "shiny future" stories we write are going to be wrong, sometimes very wrong. We will be regularly returning to the vision document to check how things are going and adjust our trajectory appropriately.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/how_to_vision/status_quo.html b/docs/vision/how_to_vision/status_quo.html new file mode 100644 index 00000000..cc734519 --- /dev/null +++ b/docs/vision/how_to_vision/status_quo.html @@ -0,0 +1,331 @@ + + + + + + "Status quo" stories - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ❓ How to vision: "Status quo" stories

    +

    We want to make sure all Async Rust users and their experiences are reflected in the async vision doc, so please help us by writing 'status quo' stories about your experiences or the experiences of others! Remember, status quo stories are not "real", but neither are they fiction. They are constructed from the real experiences of people using Async Rust (often multiple people).

    +

    TL;DR

    +

    Just want to get started? Here are quick instructions to get you going:

    + +

    Optional: open an issue to discuss your story or find others with similar experiences

    +

    If you have a story idea but you don't have the time to write about it, or if you would like to know whether other folks have encountered the same sorts of problems, you can open up a "status quo" story issue on the wg-async-foundations repository. Alternatively, if you're looking for a story to write, you can browse the open issues tagged as status-quo-story-idea and see if anything catches your eye. If you see people describing problems you have hit, or have questions about the experiences people are sharing, then please leave a comment -- but remember to comment supportively. (You can also come to Zulip to discuss.)

    +

    How to open a PR

    +

    If you have an idea you'd like to write about, please open a PR using this template and adding a new file into the status_quo directory. Do not add your file to SUMMARY.md -- that will create conflicts, we'll do it manually after merging.

    +

    Goals of a status quo PR

    +

    When writing a status quo story, your goal is to present what you see as a major challenge for Async Rust. You want to draw upon people's experiences (sometimes multiple people) to show all the aspects of the problem in an engaging and entertaining way.

    +

    Each story is always presented from the POV of a particular character. Stories should be detailed, not abstract -- it's better to give specifics than generalities. Don't say "Grace visited a website to find the answer to her question", tell us whether she went to stackoverflow, asked on reddit, or found the answer on some random blog post. Ideally you should get this detail from whatever your "source" of the story is -- but if you are using multiple sources and they disagree, you can pick one and use the FAQ to convey some of the other alternatives.

    +

    The role of the FAQ

    +

    Every status quo PR includes a FAQ. This FAQ should always include answers to some standard questions:

    +
      +
    • What are the morals of the story? +
        +
      • Talk about the major takeaways-- what do you see as the biggest problems.
      • +
      +
    • +
    • What are the sources for this story? +
        +
      • Talk about what the story is based on, ideally with links to blog posts, tweets, or other evidence.
      • +
      +
    • +
    • Why did you choose NAME to tell this story? +
        +
      • Talk about the character you used for the story and why.
      • +
      +
    • +
    • How would this story have played out differently for the other characters? +
        +
      • In some cases, there are problems that only occur for people from specific backgrounds, or which play out differently. This question can be used to highlight that.
      • +
      +
    • +
    +

    You can feel free to add whatever other FAQs seem appropriate. You should also expect to grow the FAQ in response to questions that come up on the PR.

    +

    The review process

    +

    When you open a status quo PR, people will start to comment on it. These comments should always be constructive, with the goal not of negating the story but of making it more precise or more persuasive. Ideally, you should respond to every comment in one of two ways:

    +
      +
    • Adjust the story with more details or to correct factual errors.
    • +
    • Add something to the story's FAQ to explain the confusion. +
        +
      • If the question is already covered by a FAQ, you can just refer the commenter to that.
      • +
      +
    • +
    +

    The goal is that, at the end of the review process, the status quo story has a lot more details that address the major questions people had.

    +

    🤔 Frequently Asked Questions

    +

    What is the process to propose a status quo story?

    + +

    What if my story applies to multiple characters?

    +
      +
    • Look at the "morals" of your story and decide which character will let you get those across the best.
    • +
    • Use the FAQ to talk about how other characters might have been impacted.
    • +
    • If the story would play out really differently for other characters, maybe write it more than once!
    • +
    +

    How much detail should I give? How specific should I be?

    +
      +
    • Detailed is generally better, but only if those details are helpful for understanding the morals of your story.
    • +
    • Specific is generally better, since an abstract story doesn't feel as real.
    • +
    +

    What should I do when I'm trying to be specific but I have to make an arbitrary choice?

    +

    Add a FAQ with some of the other alterantives, or just acknowledging that you made an arbitrary choice there.

    +

    None of the characters are a fit for my story.

    +

    It doesn't have to be perfect. Pick the one that seems like the closest fit. If you really feel stuck, though, come talk to us on Zulip about it!

    +

    How should I describe the "evidence" for my status quo story?

    +

    The more specific you can get, the better. If you can link to tweets or blog posts, that's ideal. You can also add notes into the conversations folder and link to those. Of course, you should be sure people are ok with that.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/projects.html b/docs/vision/projects.html new file mode 100644 index 00000000..752966e5 --- /dev/null +++ b/docs/vision/projects.html @@ -0,0 +1,249 @@ + + + + + + ⚡ Projects - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ⚡ Projects

    +

    What is this?

    +

    This section describes various sample projects that are referenced in our stories. Each project is meant to represent some domain that we are targeting.

    +

    List of projects

    +

    See the sidebar for the full list.

    +

    Don't find a project like yours here?

    +

    Don't despair! This is just a list of fun projects that we've needed for stories. If you'd like to add a project for your story, feel free to do so! Note though that you may find that some existing project has the same basic characteristics as your project, in which case it's probably better to reuse the existing project.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/projects/DistriData.html b/docs/vision/projects/DistriData.html new file mode 100644 index 00000000..4c2d4bda --- /dev/null +++ b/docs/vision/projects/DistriData.html @@ -0,0 +1,261 @@ + + + + + + DistriData (Generic Infrastructure) - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ⚡ Projects: DistriData (Generic Infrastructure)

    +

    What is this?

    +

    This is a sample project for use within the various "status quo" or "shiny future" stories.

    +

    Description

    +

    DistriData is the latest in containerized, micro-service distributed database technology. Developed completely in the open as part of Cloud Native Computing Foundation, this utility is now deployed in a large portion of networked server applications across the entire industry. Since it's so widely used, DistriData has to balance flexibility with having sensible defaults.

    +

    🤔 Frequently Asked Questions

    +

    What makes DistriData different from others?

    +
      +
    • This project is meant to be used in many different ways in many different projects, and is not unique to any one application.
    • +
    • Many of those using this project will not even need or want to know that it's written in Rust.
    • +
    +

    Does DistriData require a custom tailored runtime?

    +

    DistriData's concerns are at a higher level than the runtime. A fast, reliable, and resource conscious general purpose runtime will serve DistriData's needs.

    +

    How much of this project is likely to be built with open source components from crates.io?

    +

    Yes, while DistriData receives many contributions, it's important to the team that when possible they utilize existing technologies that developers are already familiar with to ensure that contributing to the project is easy.

    +

    What is of most concern to this project?

    +

    It needs to be resource conscious, fast, reliable, but above all else it needs to be easy to run, monitor, and maintain.

    +

    What is of least concern to this project?

    +

    While DistriData is resource conscious, it's not resource starved. There's no need to make life difficult to save on a memory allocation here or there.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/projects/MonsterMesh.html b/docs/vision/projects/MonsterMesh.html new file mode 100644 index 00000000..6110088a --- /dev/null +++ b/docs/vision/projects/MonsterMesh.html @@ -0,0 +1,261 @@ + + + + + + MonsterMesh (embedded sensors) - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ⚡ Projects: MonsterMesh (embedded sensors)

    +

    What is this?

    +

    This is a sample project for use within the various "status quo" or "shiny future" stories.

    +

    Description

    +

    "MonsterMesh" is a sensor mesh on microcontrollers using Rust. The nodes communicate wirelessly to relay their results. These sensors are built using very constrained and low power hardware without operating system, so the code is written in a #[no_std] environment and is very careful about available resources.

    +

    🤔 Frequently Asked Questions

    +

    What makes embedded projects like MonsterMesh different from others?

    +
      +
    • Embedded developers need to write error-free applications outside of the comfort zone of an operating system. Rust helps to prevent many classes of programming errors at compile time which inspires confidence in the software quality and and cuts time intensive build-flash-test iterations.
    • +
    • Embedded developers needs good hardware abstraction. Frameworks in other languages do not provide the sophisticated memory mapped IO to safe type abstraction tooling which have been created by the Rust teams.
    • +
    • Embedded developers care about hard real time capabilities; the concept of "you only pay for what you use" is very important in embedded applications. The combination of the inherently asynchronous interrupt handling of microcontrollers with the Rust async building blocks are a perfect match to effortlessly create applications with hard realtime capabilities.
    • +
    • Embedded developers are particularly appreciative of strong tooling support. The availability of the full environment via rustup and the integration of the full toolchain with cargo and build.rs make her very happy because she can focus on what she does best instead of having regular fights with the environment.
    • +
    +

    Does MonsterMesh require a custom tailored runtime?

    +

    Yes! The tradeoffs for an embedded application like MonsterMesh and a typical server are very different. Further, most server-grade frameworks are not #[no_std] compatible and far exceeded the available footprint on the sensor nodes.

    +

    How much of this project is likely to be built with open source components from crates.io?

    +

    Having no operating system to provide abstractions to it, MonsterMesh will contain all the logic it needs to run. Much of this, especially around the hardware-software-interface is unlikely to be unique to MonsterMesh and will be sourced from crates.io. However, the further up the stack one goes, the more specialized the requirements will become.

    +

    How did you pick the name?

    +

    So glad you asked! Please watch this entertaining video.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/projects/SLOW.html b/docs/vision/projects/SLOW.html new file mode 100644 index 00000000..c872cd7d --- /dev/null +++ b/docs/vision/projects/SLOW.html @@ -0,0 +1,260 @@ + + + + + + SLOW (Protocol implementation) - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ⚡ Projects: SLOW (Protocol implementation)

    +

    What is this?

    +

    This is a sample project for use within the various "status quo" or "shiny future" stories.

    +

    Description

    +

    SLOW is an open source implementation of a fancy new protocol. This protocol uses a mix of TCP and UDP packets and is designed to operate particularly well over high latency, low throughput links.

    +

    🤔 Frequently Asked Questions

    +

    What makes this project different from others?

    +

    SLOW is a library, not an application.

    +

    Does this project require a custom tailored runtime?

    +

    Ideally, SLOW would be developed in an independent way that permits it to be used across many runtimes in a variety of different environments.

    +

    How much of this project is likely to be built with open source components from crates.io?

    +

    SLOW builds on other generic libraries available from crates.io. For example, it would like to make use of compression algorithms that others have written, or to use future adapters.

    +

    What is of most concern to this project?

    +

    Uh, I don't really know! If you develop software like this, maybe open a PR and tell me! --nikomatsakis

    +

    What is of least concern to this project?

    +

    Uh, I don't really know! If you develop software like this, maybe open a PR and tell me! --nikomatsakis

    +

    Why is this called SLOW?

    +

    It's like QUIC, but slow! Get it? Get it? :D

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/projects/TrafficMonitor.html b/docs/vision/projects/TrafficMonitor.html new file mode 100644 index 00000000..f7ee4050 --- /dev/null +++ b/docs/vision/projects/TrafficMonitor.html @@ -0,0 +1,268 @@ + + + + + + TrafficMonitor (Custom Infrastructure) - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ⚡ Projects: TrafficMonitor (Custom Infrastructure)

    +

    What is this?

    +

    This is a sample project for use within the various "status quo" or "shiny future" stories.

    +

    Description

    +

    TrafficMonitor is a utility written by AmoogleSoft, a public cloud provider, for monitoring network traffic as it comes into its data centers to prevent things like distributed denial-of-service attacks. It monitors all network traffic, looking for patterns, and deciding when to take action against certain threat vectors. TrafficMonitor runs across almost all server racks in a data center, and while it does run on top of an operating system, it is resource conscious. It's also extremely important that TrafficMonitor stay running and handle network traffic with as few "hiccups" as possible. TrafficMonitor is highly tuned to the needs of AmoogleSoft's cloud offering and won't run anywhere else.

    +

    🤔 Frequently Asked Questions

    +

    What makes networking infrastructure projects like TrafficMonitor different from others?

    +
      +
    • Networking infrastructure powers entire datacenters or even public internet infrastructure, and as such it is imperative that it run without failure.
    • +
    • It is also extremely important that such projects take few resources as possible. Being on an operating system and large server racks may mean that using the standard library is possible, but memory and CPU usage should be kept to a minimum.
    • +
    • This project is worked on by software developers with different backgrounds. Some are networking infrastructure experts (usually using C) while others have experience in networked applications (usually using GCed languages like Java, Go, or Node).
    • +
    +

    Does TrafficMonitor require a custom tailored runtime?

    +

    Maybe? TrafficMonitor runs on top of a full operating system and takes full advantage of that operating systems networking stack. It's possible that a runtime meant for server workloads will work with TrafficMonitor.

    +

    How much of this project is likely to be built with open source components from crates.io?

    +
      +
    • TrafficMonitor is highly specialized to the internal workings of AmoogleSoft's public cloud offering. Thus, "off-the-shelf" solutions will only work if they're highly flexible and highly tuneable.
    • +
    • TrafficMonitor is central to AmoogleSoft's success meaning that getting things "just right" is much more important than having something from crates.io that mostly works but requires little custom tuning.
    • +
    +

    What is of most concern to this project?

    +
      +
    • Reliability is the number one concern. This infrastructure is at the core of the business - it needs to work extremely reliable. A close second is being easily monitorible. If something goes wrong, AmoogleSoft needs to know very quickly what the issue is.
    • +
    • AmoggleSoft is a large company with many existing custom tooling for building, monitoring, and deploying its software. TrafficMonitor has to play nicely in a world that existed long before it came around.
    • +
    +

    What is of least concern to this project?

    +

    AmoogleSoft is a large company with time and resources. High-level frameworks that remove control in favor of peak developer productivity is not what they're after. Sure, the easier things are to get working, the better, but that should not be at the sacrifice of control.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/projects/YouBuy.html b/docs/vision/projects/YouBuy.html new file mode 100644 index 00000000..ebacf203 --- /dev/null +++ b/docs/vision/projects/YouBuy.html @@ -0,0 +1,261 @@ + + + + + + YouBuy (Traditional Server Application) - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ⚡ Projects: YouBuy (Traditional Server Application)

    +

    What is this?

    +

    This is a sample project for use within the various "status quo" or "shiny future" stories.

    +

    Description

    +

    YouBuy is a growing e-commerce website that now has millions of users. The team behind YouBuy is struggling to keep up with traffic and keep server costs low. Having originally written YouBuy in a mix of Ruby on Rails and Node, the YouBuy team decides to rewrite many parts of their service in Rust which they've investigated and found to be performant while still allowing for high levels of abstraction they're used to.

    +

    🤔 Frequently Asked Questions

    +

    What makes YouBuy and other server applications different from others?

    +
      +
    • Many server applications are written in languages with garbage collectors. Many of the things that Rust forces users to care about are not first order concerns for those working on server applications (e.g., memory management, stack vs heap allocations, etc.).
    • +
    • Many server applications are written in languages without static type checking. The developers of YouBuy don't have much experience with statically typed languages and some of the developers early in their Rust learning journeys expressed frustration that they found it hard to get their programs to compile especially when using async constructs.
    • +
    +

    Does YouBuy require a custom tailored runtime?

    +

    YouBuy should be perfectly fine with a runtime from crates.io. In fact, their concern isn't at the runtime level but at the high-level server framework level.

    +

    How much of this project is likely to be built with open source components from crates.io?

    +

    YouBuy is in fierce competition with many other e-commerce sites. Therefore, the less that YouBuy engineers have to write themselves, the better. Ideally, YouBuy can focus 100% of its energy on features that differentiate it from its competition and none of its time on tweaking its networking stack.

    +

    What is of most concern to this project?

    +

    It seems like YouBuy is always on the verge of either becoming the next billion-dollar company with hundreds of millions of users or completely going out of business. YouBuy needs to be able to move fast and focus on the application business logic.

    +

    What is of least concern to this project?

    +

    Since moving fast is of primary concern, the ins and outs of the underlying networking stack are only of concern when something goes wrong. The hope is that that rarely if ever happens and when it does, it's easy to find the source of the issue.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/projects/template.html b/docs/vision/projects/template.html new file mode 100644 index 00000000..b0f3b1c8 --- /dev/null +++ b/docs/vision/projects/template.html @@ -0,0 +1,254 @@ + + + + + + Template - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ⚡ Projects: NAME (DOMAIN)

    +

    This is a template for adding new projects. See the instructions for more details on how to add new project!

    +

    What is this?

    +

    This is a sample project for use within the various "status quo" or "shiny future" stories.

    +

    Description

    +

    Give a fun description of the project here! Include whatever details are needed.

    +

    🤔 Frequently Asked Questions

    +

    What makes this project different from others?

    +

    Does this project require a custom tailored runtime?

    +

    How much of this project is likely to be built with open source components from crates.io?

    +

    What is of most concern to this project?

    +

    What is of least concern to this project?

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/roadmap.html b/docs/vision/roadmap.html new file mode 100644 index 00000000..037e7796 --- /dev/null +++ b/docs/vision/roadmap.html @@ -0,0 +1,259 @@ + + + + + + 📅 Roadmap for 2021 - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    📅 The roadmap: what we're doing in 2021

    +

    This page describes the current plans for 2021. +It is updated on a monthly basis.

    +

    🛑 Not time for this yet 🛑

    +

    We're not really ready to work on this section yet. We're still focused on writing out the status quo. What you see here are really just placeholders to give you the idea of what this section might look like.

    +

    Key

    + + + + + + +
    EmojiMeaning
    🥬"Healthy" -- on track with the plan as described in the doc
    ✏️"Planning" -- Still figuring out the plan
    🤒"Worried" -- things are looking a bit tricky, plans aren't working out
    🏖️"On vacation" -- taking a break right now
    ⚰️We gave up on this idea =)
    +

    Roadmap items

    + + +
    PlanOwnerStatusLast updated
    Async functions in traitsnikomatsakis🥬2021-02
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/shiny_future.html b/docs/vision/shiny_future.html new file mode 100644 index 00000000..f9e3e795 --- /dev/null +++ b/docs/vision/shiny_future.html @@ -0,0 +1,253 @@ + + + + + + ✨ Shiny future - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ✨ Shiny future: Where we want to get to

    +

    🚧 Under construction! Help needed! 🚧

    +

    We are still in the process of drafting the vision document. The stories you see on this page are examples meant to give a feeling for how a shiny future story looks; you can expect them to change. We encourage you to propose your own by opening a PR -- see the "How to vision" page for instructions and details.

    +

    What it this

    +

    The "shiny future" is here to tell you what we are trying to build over the next 2 to 3 years. That is, it presents our "best guess" as to what will look like a few years from now. When describing specific features, it also embeds links to design notes that describe the constraints and general plans around that feature.

    +

    🧐 You may also enjoy reading the blog post announcing the brainstorming effort.

    +

    Think big -- too big, if you have to

    +

    You'll notice that the ideas in this document are maximalist and ambitious. They stake out an opinionated position on how the ergonomics of Async I/O should feel. This position may not, in truth, be attainable, and for sure there will be changes along the way. Sometimes the realities of how computers actually work may prevent us from doing all that we'd like to. That's ok. This is a dream and a goal.

    +

    We fully expect that the designs and stories described in this document will change as we work towards realizing them. When there are areas of particular uncertainty, we use the Frequently Asked Questions and the design docs to call them out.

    +

    Where are the stories?

    +

    We haven't written these yet!

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/shiny_future/alan_switches_runtimes.html b/docs/vision/shiny_future/alan_switches_runtimes.html new file mode 100644 index 00000000..578de50e --- /dev/null +++ b/docs/vision/shiny_future/alan_switches_runtimes.html @@ -0,0 +1,332 @@ + + + + + + Alan switches runtimes - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ✨ Shiny future stories: Alan switches runtimes

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story!

    +

    The story

    +

    Since his early adventures with Async I/O went so well, Alan has been looking for a way to learn more. He finds a job working in Rust. One of the projects he works on is DistriData. Looking at their code, he sees an annotation he has never seen before:

    +
    #[humboldt::main]
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let result = std::async_thread::spawn(async move {
    +        do_something()
    +    });
    +}
    +
    +

    He asks Barbara, one of his coworkers, "What is this humboldt::main annotation? What's humboldt?" She answers by explaining to him that Rust's support for async I/O is actually based around an underlying runtime. "Rust gives you a pretty decent runtime by default," she says, "but it's not tuned for our workloads. We wrote our own runtime, which we call humboldt."

    +

    Alan asks, "What happens with the various std APIs? For example, I see we are calling std::async_thread::spawn -- when I used that before, it spawned tasks into the default runtime. What happens now?"

    +

    Barbara explains that the "async" APIs in std generally execute relative to the current runtime that is in use. "When you call std::async_thread::spawn, it will spawn a task onto the current runtime. It's the same with the routines in std::async_io and so forth. The humboldt::main annotation actually just creates a synchronous main function that initializes the humboldt runtime and launches the first future. When you just write an async fn main without any annotation, the compiler synthesizes the same main function with the default runtime."

    +

    Learning more about Humboldt

    +

    Alan sees that some of the networking code that is being used in their application is creating network connections using humboldt APIs:

    +
    
    +#![allow(unused)]
    +fn main() {
    +use humboldt::network;
    +}
    +
    +

    He asks Barbara, "Why don't we use the std::async_io APIs for that?" She explains that Humboldt makes use of some custom kernel extensions that, naturally enough, aren't part of the std library. "TCP is for rubes," she says, "we are using TTCP -- Turbo TCP." Her mind wanders briefly to Turbo Pascal and she has a brief moment of yearning for the days when computers had a "Turbo" button that changed them from 8 MHz to 12 MHz. She snaps back into the present day. "Anyway, the std::async_io APIs just call into humboldt's APIs via various traits. But we can code directly against humboldt when we want to access the extra capabilities it offers. That does make it harder to change to another runtime later, though."

    +

    Integrating into other event loops

    +

    Later on, Alan is working on a visualizer front-end that integrates with DistriData to give more details about their workloads. To do it, he needs to integrate with Cocoa APIs and he wants to run certain tasks on Grand Central Dispatch. He approaches Barbara and asks, "If everything is running on humboldt, is there a way for me to run some things on another event loop? How does that work?"

    +

    Barbara explains, "That's easy. You just have to use the gcd wrapper crate -- you can find it on crates.io. It implements the runtime traits for gcd and it has a spawn method. Once you spawn your task onto gcd, everything you run within gcd will be running in that context."

    +

    Alan says, "And so, if I want to get things running on humboldt again, I spawn a task back on humboldt?"

    +

    "Exactly," says Barbara. "Humboldt has a global event loop, so you can do that by just doing humboldt::spawn. You can also just use the humboldt::io APIs directly. They will always use the Humboldt I/O threads, rather than using the current runtime."

    +

    Alan winds up with some code that looks like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn do_something_on_humboldt() {
    +    gcd::spawn(async move {
    +        let foo = do_something_on_gcd();
    +
    +        let bar = humboldt::spawn(async move {
    +            do_a_little_bit_of_stuff_on_humboldt();
    +        });
    +
    +        combine(foo.await, bar.await);
    +    });
    +}
    +}
    +
    +

    🤔 Frequently Asked Questions

    +

    What status quo story or stories are you retelling?

    +

    Good question! I'm not entirely sure! I have to go looking and think about it. Maybe we'll have to write some more.

    +

    What are the key points you were trying to convey with this status quo story?

    +
      +
    • There is some way to seamlessly change to a different default runtime to use for async fn main.
    • +
    • There is no global runtime, just the current runtime.
    • +
    • When you are using this different runtime, you can write code that is hard-coded to it and which exposes additional capabilities.
    • +
    • You can integrate multiple runtimes relatively easily, and the std APIs work with whichever is the current runtime.
    • +
    +

    How do you imagine the std APIs and so forth know the current runtime?

    +

    I was imagining that we would add fields to the Context<'_> struct that is supplied to each async fn when it runs. Users don't have direct access to this struct, but the compiler does. If the std APIs return futures, they would gain access to it that way as well. If not, we'd have to create some other mechanism.

    +

    What happens for runtimes that don't support all the features that std supports?

    +

    That feels like a portability question. See the (yet to be written) sequel story, "Alan runs some things on WebAssembly". =)

    +

    What is Alan most excited about in this future? Is he disappointed by anything?

    +

    Alan is excited about how easy it is to get async programs up and running, and he finds that they perform pretty well once he does so, so he's happy.

    +

    What is Grace most excited about in this future? Is she disappointed by anything?

    +

    Grace is concerned with memory safety and being able to deploy her tricks she knows from other languages. Memory safety works fine here. In terms of tricks she knows and loves, she's happy that she can easily switch to another runtime. The default runtime is good and works well for most things, but for the [DistriData] project, they really need something tailored just for them. She is also happy she can use the extended APIs offered by humboldt.

    +

    What is Niklaus most excited about in this future? Is he disappointed by anything?

    +

    Niklaus finds it async Rust quite accessible, for the same reasons cited as in "Alan's Trust in the Rust Compiler is Rewarded".

    +

    What is Barbara most excited about in this future? Is she disappointed by anything?

    +

    Depending on the technical details, Barbara may be a bit disappointed by the details of how std interfaces with the runtimes, as that may introduce some amount of overhead. This may not matter in practice, but it could also lead to library authors avoiding the std APIs in favor of writing generics or other mechanisms that are "zero overhead".

    +

    What projects benefit the most from this future?

    +

    Projects like DistriData really benefit from being able to customize their runtime.

    +

    Are there any projects that are hindered by this future?

    +

    We have to pay careful attention to embedded projects like MonsterMesh. Some of the most obvious ways to implement this future would lean on dyn types and perhaps boxing, and that would rule out some embedded projects. Embedded runtimes like embassy are also the most different in their overall design and they would have the hardest time fitting into the std APIs (of course, many embedded projects are already no-std, but many of them make use of some subset of the std capabilities through the facade). In general, traits and generic functions in std could lead to larger code size, as well.

    +

    What are the incremental steps towards realizing this shiny future?

    +

    There are a few steps required to realize this future:

    +
      +
    • We have to determine the core mechanism that is used for std types to interface with the current scheduler. +
        +
      • Is it based on dynamic dispatch? Delayed linking? Some other tricks we have yet to invent?
      • +
      • Depending on the details, language changes may be required.
      • +
      +
    • +
    • We have to hammer out the set of traits or other interfaces used to define the parts of a runtime (see below for some of the considerations). +
        +
      • We can start with easier cases and proceed to more difficult ones, however.
      • +
      +
    • +
    +

    Does realizing this future require cooperation between many projects?

    +

    Yes. We will need to collaborate to define traits that std can use to interface with each runtime, and the runtimes will need to implement those traits. This is going to be non-trivial, because we want to preserve the ability for independent runtimes to experiment, while also preserving the ability to "max and match" and re-use components. For example, it'd probably be useful to have a bunch of shared I/O infrastructure, or to have utility crates for locks, for running threadpools, and the like. On the other hand, tokio takes advantage of the fact that it owns the I/O types and the locks and the scheduler to do some nifty tricks and we would want to ensure that remains an option.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html b/docs/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html new file mode 100644 index 00000000..6a7f5cb0 --- /dev/null +++ b/docs/vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.html @@ -0,0 +1,378 @@ + + + + + + Alan's trust in the compiler is rewarded - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ✨ Shiny future stories: Alan's trust in the compiler is rewarded

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story!

    +

    The story

    +

    Trust the compiler

    +

    Alan has a lot of experience in C#, but in the meantime has created some successful projects in Rust. +He has dealt with his fair share of race conditions/thread safety issues during runtime in C#, but is now starting to trust that if his Rust code compiles, +he won't have those annoying runtime problems to deal with.

    +

    This allows him to try to squeeze his programs for as much performance as he wants, because the compiler will stop him when he tries things that could result in runtime problems. +After seeing the performance and the lack of runtime problems, he starts to trust the compiler more and more with each project finished.

    +

    He knows what he can do with external libraries, he does not need to fear concurrency issues if the library cannot be used from multiple threads, because the compiler would tell him.

    +

    His trust in the compiler solidifies further the more he codes in Rust.

    +

    The first async project

    +

    Alan now starts with his first async project. He opens up the Rust book to the "Async I/O" chapter and it guides him to writing his first program. He starts by writing some synchronous code to write to the file system:

    +
    use std::fs::File;
    +
    +fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt")?;
    +    file.write_all(b"Hello, world!")?;
    +    Ok(())
    +}
    +
    +

    Next, he adapts that to run in an async fashion. He starts by converting main into async fn main:

    +
    use std::fs::File;
    +
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt")?;
    +    file.write_all(b"Hello, world!")?;
    +    Ok(())
    +}
    +
    +

    The code compiles, but he gets a warning:

    +
    warning: using a blocking API within an async function
    + --> src/main.rs:4:25
    +1 | use std::fs::File;
    +  |     ------------- try changing to `std::async_io::fs::File`
    +  | ...
    +4 |     let mut file: u32 = File::create("a.txt")?;
    +  |                         ^^^^^^^^^^^^ blocking functions should not be used in async fn
    +help: try importing the async version of this type
    + --> src/main.rs:1
    +1 | use std::async_fs::File;
    +
    +

    "Oh, right," he says, "I am supposed to use the async variants of the APIs." He applies the suggested fix in his IDE, and now his code looks like:

    +
    use std::async_fs::File;
    +
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt")?;
    +    file.write_all(b"Hello, world!")?;
    +    Ok(())
    +}
    +
    +

    His IDE recompiles instantaneously and he now sees two little squiggles, one under each ?. Clicking on the errors, he sees:

    +
    error: missing await
    + --> src/main.rs:4:25
    +4 |     let mut file: u32 = File::create("a.txt")?;
    +  |                                              ^ returns a future, which requires an await
    +help: try adding an await
    + --> src/main.rs:1
    +4 |     let mut file: u32 = File::create("a.txt").await?;
    +
    +

    He again applies the suggested fix, and his code now shows:

    +
    use std::async_fs::File;
    +
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt").await?;
    +    file.write_all(b"Hello, world!").await?;
    +    Ok(())
    +}
    +
    +

    Happily, it compiles, and when he runs it, everything works as expected. "Cool," he thinks, "this async stuff is pretty easy!"

    +

    Making some web requests

    +

    Next, Alan decides to experiment with some simple web requests. This isn't part of the standard library, but the fetch_rs package is listed in the Rust book. He runs cargo add fetch_rs to add it to his Cargo.toml and then writes:

    +
    use std::async_fs::File;
    +use fetch_rs;
    +
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt")?;
    +    file.write_all(b"Hello, world!")?;
    +
    +    let body = fetch_rs::get("https://www.rust-lang.org")
    +        .await?
    +        .text()
    +        .await?;
    +    println!("{}", body);
    +
    +    Ok(())
    +}
    +
    +

    This feels pretty easy!

    +

    🤔 Frequently Asked Questions

    +

    What status quo story or stories are you retelling?

    + +

    What are the key points you were trying to convey with this status quo story?

    +
      +
    • Getting started with async should be as automated as possible: +
        +
      • change main to an async fn;
      • +
      • use the APIs found in modules like std::async_foo, which should map as closely as possible to their non-async equivalents.
      • +
      +
    • +
    • You should get some sort of default runtime that is decent
    • +
    • Lints should guide you in using async: +
        +
      • identifying blocking functions
      • +
      • identifying missing await
      • +
      +
    • +
    • You should be able to grab libraries from the ecosystem and they should integrate with the default runtime without fuss
    • +
    +

    Is there a "one size fits all" runtime in this future?

    +

    This particular story doesn't talk about what happens when the default runtime isn't suitable. But you may want to read its sequel, "Alan Switches Runtimes".

    +

    What is Alan most excited about in this future? Is he disappointed by anything?

    +

    Alan is excited about how easy it is to get async programs up and running. He also finds the performance is good. He's good.

    +

    What is Grace most excited about in this future? Is she disappointed by anything?

    +

    Grace is happy because she is getting strong safety guarantees and isn't getting surprising runtime panics when composing libraries. The question of whether she's able to use the tricks she knows and loves is a good one, though. The default scheduler may not optimize for maximum performance -- this is something to explore in future stories. The "Alan Switches Runtimes", for example, talks more about the ability to change runtimes.

    +

    What is Niklaus most excited about in this future? Is he disappointed by anything?

    +

    Niklaus is quite happy. Async Rust is fairly familiar and usable for him. Further, the standard library includes "just enough" infrastructure to enable a vibrant crates-io ecosystem without centralizing everything.

    +

    What is Barbara most excited about in this future? Is she disappointed by anything?

    +

    Barbara quite likes that the std APIs for sync and sync fit together, and that there is a consistent naming scheme across them. She likes that there is a flourishing ecosystem of async crates that she can choose from.

    +

    What projects benefit the most from this future?

    +

    A number of projects benefit:

    +
      +
    • Projects like YouBuy are able to get up and going faster.
    • +
    • Libraries like SLOW become easier because they can target the std APIs and there is a defined plan for porting across runtimes.
    • +
    +

    Are there any projects that are hindered by this future?

    +

    It depends on the details of how we integrate other runtimes. If we wound up with a future where most libraries are "hard-coded" to a single default runtime, this could very well hinder any number of projects, but nobody wants that.

    +

    What are the incremental steps towards realizing this shiny future?

    +

    This question can't really be answered in isolation, because so much depends on the story for how we integrate with other runtimes. I don't think we can accept a future where is literally a single runtime that everyone has to use, but I wanted to pull out the question of "non-default runtimes" (as well as more details about the default) to other stories.

    +

    Does realizing this future require cooperation between many projects?

    +

    Yes. For external libraries like fetch_rs to interoperate they will want to use the std APIs (and probably traits).

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/shiny_future/barbara_makes_a_wish.html b/docs/vision/shiny_future/barbara_makes_a_wish.html new file mode 100644 index 00000000..b40aa725 --- /dev/null +++ b/docs/vision/shiny_future/barbara_makes_a_wish.html @@ -0,0 +1,348 @@ + + + + + + Barbara makes a wish - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ✨ Shiny future stories: Barbara makes a wish

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story!

    +

    The story

    +

    Barbara has an initial prototype of a new service she wrote in sync Rust. She then decides, since the service is extremely I/O bound, to port it to async Rust and her benchmarks have led her to believe that performance is being left on the table.

    +

    She does this by sprinkling async/.await everywhere, picking an executor, and moving dependencies from sync to async.

    +

    Once she has the program compiling, she thinks "oh that was easy". She runs it for the first time and surprisingly she finds out that when hitting an endpoint, nothing happens.

    +

    Barbara, always prepared, has already added logging to her service and she checks the logs. As she expected, she sees here that the endpoint handler has been invoked but then... nothing. Barbara exclaims, "Oh no! This was not what I was expecting, but let's dig deeper."

    +

    She checks the code and sees that the endpoint spawns several tasks, but unfortunately those tasks don't have much logging in them.

    +

    Barbara now remembers hearing something about a wish4-async-insight crate, which has gotten some buzz on her Rust-related social media channels. She decides to give that a shot.

    +

    She adds the crate as a dependency to her Cargo.toml, renaming it to just insight to make it easier to reference in her code, and then initializes it in her main async function.

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> {
    +    insight::init(); // new code
    +    ...
    +}
    +}
    +
    +

    Barbara rebuilds and runs her program again. She doesn't see anything different in the terminal output for the program itself though, and the behavior is the same as before: hitting an endpoint, nothing happens. She double-checks the readme for the wish4-async-insight crate, and realizes that she needs to connect other programs to her service to observe the insights being gathered. Barbara decides that she wants to customize the port that insight is listening on before she starts her experiments with those programs.

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn accept_loop(addr: impl ToSocketAddrs) -> Result<()> {
    +    insight::init(listen_port => 8080); // new code, leveraging keyword arguments feature added in 2024
    +    ...
    +}
    +}
    +
    +

    While her code rebuilds, Barbara investigates what programs she might use to connect to the insight crate.

    +

    One such program, consolation, can run in the terminal. Barbara is currently just deploying her service locally on her development box, so she opts to try that out and see what it tells her.

    +
    % rustup install wish4-consolation
    +...
    +% consolation --port 8080
    +
    +

    This brings up a terminal window that looks similar to the Unix top program, except that instead of a list of OS processes, this offers a list of tasks, with each task having a type, ID, and status history (i.e. percentage of time spent in running, ready to poll, or blocked). Barbara skims the output in the list, and sees that one task is listed as currently blocked.

    +

    Barbara taps the arrow-keys and sees that this causes a cursor to highlight different tasks in the list. She highlights the blocked task and hits the Enter key. This causes the terminal to switch to a Task view, describing more details about that task and its status.

    +

    The Task view here says that the task is blocked, references a file and line number, and also includes the line from the source code, which says chan.send(value).await. The blocked task also lists the resources that the task is waiting on: prototype_channel, and next to that there is text on a dark red background: "waiting on channel capacity." Again, Barbara taps the arrow-keys and sees that she can select the line for the resource.

    +

    Barbara notices that this whole time, at the bottom of the terminal, there was a line that says "For help, hit ? key"; she taps question mark. This brings up a help message in a scrollable subwindow explaining the task view in general as well as link to online documentation. The help message notes that the user can follow the chain: One can go from the blocked task to the resource it's waiting on, and from that resource to a list of tasks responsible for freeing up the resource.

    +

    Barbara hits the Escape key to close the help window. The highlight is still on the line that says "prototype_channel: waiting on channel capacity"; Barbara hits Enter, and this brings up a list with just one task on it: The channel reader task. Barbara realizes what this is saying: The channel resource is blocking the sender because it is full, and the only way that can be resolved is if the channel reader manages to receive some inputs from the channel.

    +

    Barbara opens the help window again, and brings up the link to the online documentation. There, she sees discussion of resource starvation and the specific case of a bounded channel being filled up before its receiver makes progress. The main responses outlined there are 1. decrease the send rate, 2. increase the receive rate, or 3. increase the channel's internal capacity, noting the extreme approach of changing to an unbounded channel (with the caveat that this risks resource exhaustion).

    +

    Barbara skims the task view for the channel reader, since she wants to determine why it is not making progress. However, she is eager to see if her service as a whole is workable apart from this issue, so she also adopts the quick fix of swapping in an unbounded channel. Barbara is betting that if this works, she can use the data from wish4-async-insight about the channel sizes to put a bounded channel with an appropriate size in later.

    +

    Barbara happily moves along to some initial performance analysis of her "working" code, eager to see what other things wish4-async-insight will reveal during her explorations.

    +

    Alternate History

    +

    The original status quo story just said that Barbara's problem was resolved (sort of) by switching to an unbounded channel. I, much like Barbara, could not tell why this resolved her problem. In particular, I could not tell whether there was an outright deadlock due to a cycle in the task-resource dependency chain that, or if there something more subtle happening. In the story above, I assumed it was the second case: something subtle.

    +

    Here's an important alternate history though, for the first case of a cycle. Its ... the same story, right up to when Barbara first runs consolation:

    +
    % rustup install wish4-consolation
    +...
    +% consolation --port 8080
    +
    +

    This brings up a terminal window that looks similar to the Unix top program, except that instead of a list of OS processes, this offers a list of tasks, and shows their status (i.e. running, ready to poll, or blocked), as well as some metrics about how long the tasks spend in each state.

    +

    At the top of the screen, Barbara sees highlighted warning: "deadlock cycle was detected. hit P for more info."

    +

    Barbara types capital P. The terminal switches to "problem view," which shows

    +
      +
    • The task types, ID, and attributes for each type.
    • +
    • The resources being awaited on
    • +
    • The location / backtrace of the await.
    • +
    • A link to a documentation page expanding on the issue.
    • +
    +

    The screen also says "hit D to generate a graphviz .dot file to disk describing the cycle."

    +

    Barbara hits D and stares at the resulting graph, which shows a single circle (labelled "task"), and an arc to a box (labelled "prototype_channel"), and an arc from that box back to the circle. The arc from the circle to the box is labelled send: waiting on channel capacity, and the arc from the box to the circle is labelled "sole consumer (mpsc channel)".

    +
    graph TD
    +  task -- send: waiting on channel capacity --> prototype_channel
    +  prototype_channel -- "sole receiver (mpsc channel)" --> task
    +  task((task))
    +
    +

    Barbara suddenly realizes her mistake: She had constructed a single task that was sometimes enqueuing work (by sending messages on the channel), and sometimes dequeuing work, but she had not put any controls into place to ensure that the dequeuing (via recv) would get prioritized as the channel filled up.

    +

    Barbara reflects on the matter: she knows that she could swap in an unbounded channel to resolve this, but she thinks that she would be better off thinking a bit more about her system design, to see if she can figure out a way to supply back-pressure so that the send rate will go down as the channel fills up.

    +

    🤔 Frequently Asked Questions

    +

    What status quo story or stories are you retelling?

    +

    Barbara wants Async Insights

    +

    What is Alan most excited about in this future? Is he disappointed by anything?

    +

    Alan is happy to see a tool that gives one a view into the internals of the async executor.

    +

    Alan is not so thrilled about using the consolation terminal interface; but luckily there are other options, namely IDE/editor plugins as well as a web-browser based client, that offer even richer functionality, such as renderings of the task/resource dependency graph.

    +

    What is Grace most excited about in this future? Is she disappointed by anything?

    +

    Grace is happy to see a tool, but wonders whether it could have been integrated into gdb.

    +

    Grace is not so thrilled to learn that this tool is not going to try to provide specific insight into performance issues that arise solely from computational overheads in her own code. (The readme for wish4-async-insight says on this matter "for that, use perf," which Grace finds unsatisfying.)

    +

    What is Niklaus most excited about in this future? Is he disappointed by anything?

    +

    Niklaus is happy to learn that the wish4-async-insight is supported by both async-std and tokio, since he relies on friends in both communities to help him learn more about Async Rust.

    +

    Niklaus is happy about the tool's core presentation oriented around abstractions he understands (tasks and resources). Niklaus is also happy about the integrated help.

    +

    However, Niklaus is a little nervous about some of the details in the output that he doesn't understand.

    +

    What is Barbara most excited about in this future? Is she disappointed by anything?

    +

    Barbara is thrilled with how this tool has given her insight into the innards of the async executor she is using.

    +

    She is disappointed to learn that not every async executor supports the wish4-async-insight crate. The crate works by monitoring state changes within the executor, instrumented via the tracing crate. Not every async-executor is instrumented in a fashion compatible with wish4-async-insight.

    +

    What projects benefit the most from this future?

    +

    Any async codebase that can hook into the wish4-async-insight crate and supply its data via a network port during development would benefit from this. So, I suspect any codebase that uses a sufficiently popular (i.e. appropriately instrumented) async executor will benefit.

    +

    The main exception I can imagine right now is MonsterMesh: its resource constraints and #![no_std] environment are almost certainly incompatible with the needs of the wish4-async-insight crate.

    +

    Are there any projects that are hindered by this future?

    +

    The only "hindrance" is that the there is an expectation that the async-executor be instrumented appropriately to feed its data to the wish4-async-insight crate once it is initialized.

    +

    What are the incremental steps towards realizing this shiny future? (Optional)

    +
      +
    • +

      Get tracing crate to 1.0 so that async executors can rely on it.

      +
    • +
    • +

      Prototype an insight console atop a concrete async executor (e.g. tokio)

      +
    • +
    • +

      Develop a shared protocol atop tracing that compatible async executors will use to provide the insightful data.

      +
    • +
    +

    Does realizing this future require cooperation between many projects? (Optional)

    +

    Yes. Yes it does.

    +

    At the very least, as mentioned among the "incremental steps", we will need a common protocol that the async executors use to communicate their internal state.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/shiny_future/template.html b/docs/vision/shiny_future/template.html new file mode 100644 index 00000000..2d1e013e --- /dev/null +++ b/docs/vision/shiny_future/template.html @@ -0,0 +1,270 @@ + + + + + + Template - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ✨ Shiny future stories: template

    +

    This is a template for adding new "shiny future" stories. To propose a new shiny future PR, do the following:

    +
      +
    • Create a new file in the shiny_future directory named something like Alan_loves_foo.md or Grace_does_bar_and_its_great.md, and start from the raw source from this template. You can replace all the italicized stuff. :)
    • +
    • Do not add a link to your story to the SUMMARY.md file; we'll do it after merging, otherwise there will be too many conflicts.
    • +
    +

    For more detailed instructions, see the How To Vision: Shiny Future page!

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories cannot be wrong. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to add your own shiny vision story!

    +

    The story

    +

    Write your story here! Feel free to add subsections, citations, links, code examples, whatever you think is best.

    +

    🤔 Frequently Asked Questions

    +

    NB: These are generic FAQs. Feel free to customize them to your story or to add more.

    +

    What status quo stories are you retelling?

    +

    Link to status quo stories if they exist. If not, that's ok, we'll help find them.

    +

    What are the key attributes of this shiny future?

    +

    Summarize the main attributes of the design you were trying to convey.

    +

    What is the "most shiny" about this future?

    +

    Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Which benefit the most relative to today?

    +

    What are some of the potential pitfalls about this future?

    +

    Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Are any of them negatively impacted? Are there specific application areas that are impacted negatively? You might find the sample projects helpful in this regard, or perhaps looking at the goals of each character.

    +

    Did anything surprise you when writing this story? Did the story go any place unexpected?

    +

    The act of writing shiny future stories can uncover things we didn't expect to find. Did you have any new and exciting ideas as you were writing? Realize some complications that you didn't foresee?

    +

    What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written?

    +

    Often when writing stories, we think about various possibilities. Sketch out some of the turning points here -- maybe someone will want to turn them into a full story! Alternatively, if this is a variation on an existing story, link back to it here.

    +

    What are some of the things we'll have to figure out to realize this future? What projects besides Rust itself are involved, if any? (Optional)

    +

    Often the 'shiny future' stories involve technical problems that we don't really know how to solve yet. If you see such problems, list them here!

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo.html b/docs/vision/status_quo.html new file mode 100644 index 00000000..921c055d --- /dev/null +++ b/docs/vision/status_quo.html @@ -0,0 +1,487 @@ + + + + + + 😱 Status quo - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories

    +

    🚧 Under construction! Help needed! 🚧

    +

    We are still in the process of drafting the vision document. The stories you see on this page are examples meant to give a feeling for how a status quo story looks; you can expect them to change. We encourage you to propose your own by opening a PR -- see the "How to vision" page for instructions and details.

    +

    What is this

    +

    The "status quo" stories document the experience of using Async Rust today. Each story narrates the challenges encountered by one of our characters as they try (and typically fail in dramatic fashion) to achieve their goals.

    +

    Writing the "status quo" stories helps us to compensate for the curse of knowledge: the folks working on Async Rust tend to be experts in Async Rust. We've gotten used to the workarounds required to be productive, and we know the little tips and tricks that can get you out of a jam. The stories help us gauge the cumulative impact all the paper cuts can have on someone still learning their way around. This gives us the data we need to prioritize.

    +

    Based on a true story

    +

    These stories may not be true, but they are not fiction. They are based on real-life experiences of actual people. Each story contains a "Frequently Asked Questions" section referencing sources used to create the story. In some cases, it may link to notes or summaries in the conversations section, though that is not required. The "Frequently Asked Questions" section also contains a summary of what the "morals" of the story are (i.e., what are the key takeaways), along with answers to questions that people have raised along the way.

    +

    The stories provide data we use to prioritize, not a prioritization itself

    +

    Just because a user story is represented here doesn't mean we're going to be able to fix it right now. Some of these user stories will indicate more severe problems than others. As we consider the stories, we'll select some subset to try and address; that choice is reflected in the roadmap.

    +

    Metanarrative

    +

    What follows is a kind of "metanarrative" of using async Rust that summarizes the challenges that are present today. At each point, we link to the various stories; you can read the full set in the table of contents on the left. We would like to extend this to also cover some of its glories, since reading the current stories is a litany of difficulties, but obviouly we see great promise in async Rust. Note that many stories here appear more than once.

    +

    Rust strives to be a language that brings together performance, productivity, and correctness. Rust programs are designed to surface bugs early and to make common patterns both ergonomic and efficient, leading to a sense that "if it compiles, it generally works, and works efficiently". Async Rust aims to extend that same feeling to an async setting, in which a single process interweaves numerous tasks that execute concurrently. Sometimes this works beautifully. However, other times, the reality falls short of that goal.

    +
    Making hard choices from a complex ecosystem from the start +

    The problems begin from the very first moment a user starts to try out async Rust. The async Rust support in Rust itself is very basic, consisting only of the core Future mechanism. Everything else -- including the basic async runtimes themselves -- lives in user space. This means that users must make a number of choices rom the very beginning:

    +
      +
    • what runtime to use + +
    • +
    • what http libraries to use + +
    • +
    • basic helpers and utility crates are hard to find, and there are many choices, often with subtle differences between them + +
    • +
    • Furthermore, the async ecosystem is fractured. Choosing one library may entail choosing a specific runtime. Sometimes you may wind up with multiple runtimes running at once. + +
    • +
    • There is a lack of common, standardized abstractions, which means that often there are multiple attempts to establish common traits and different libraries will employ a distinct subset. +
        +
      • Sink is not implemented by async-std websockets
      • +
      • 🚧 No standardized lower-level traits for read, write, iterators in an async setting
      • +
      • 🚧 Lack of widely used higher-level abstractions (like those tower aims to provide)
      • +
      • 🚧 Tokio doesn't support the futures Stream trait because of stability concerns
      • +
      +
    • +
    • Some of the problems are due to the design of Rust itself. The coherence rules in particular. +
        +
      • 🚧 Write about how coherence makes it impossible to establish
      • +
      +
    • +
    +
    +
    Once your basic setup is done, the best design patterns are subtle and not always known. +

    Writing async programs turns out to have all kinds of subtle tradeoffs. Rust aims to be a language that gives its users control, but that also means that users wind up having to make a lot of choices, and we don't give them much guidance.

    + +
    +
    Even once you've chosen a pattern, gettings things to compile can be a challenge. + +
    +
    Once you get it to compile, things don't "just work" at runtime, or they may be unexpectedly slow. + +
    +
    When you have those problems, you can't readily debug them or get visibility into what is going on. + +
    +
    Rust has always aimed to interoperate well with other languages and to fit itself into every niche, but that's harder with async. +
      +
    • Runtimes like tokio and async-std are not designed to "share ownership" of the event loop with foreign runtimes + +
    • +
    • Embedded environments can have pretty stringent requirements; Future was designed to be minimal, but perhaps not minimal enough + +
    • +
    • Evolving specs for C and C++ require careful thought to integrate with async Rust's polling model +
        +
      • 🚧 Convert these notes on C++ into a status quo story
      • +
      • 🚧 Write about the challenges of io-uring integration
      • +
      +
    • +
    • Advanced new techniques like Ghostcell may not fit into the traits as designed
    • +
    +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_builds_a_cache.html b/docs/vision/status_quo/alan_builds_a_cache.html new file mode 100644 index 00000000..0d1ba015 --- /dev/null +++ b/docs/vision/status_quo/alan_builds_a_cache.html @@ -0,0 +1,323 @@ + + + + + + Alan tries to cache requests, which doesn't always happen - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan tries to cache requests, which doesn't always happen.

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]!

    +

    The story

    +

    Alan is working on an HTTP server. The server makes calls to some other service. The performance of the downstream service is somewhat poor, so Alan would like to implement some basic caching.

    +

    Alan writes up some code which does the caching:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn get_response(&mut self, key: String) {
    +    // Try to get the response from cache
    +    if let Some(cached_response) = self.cache.get(key) {
    +        self.channel.send(cached_response).await;
    +        return;
    +    }
    +
    +    // Get the response from the downstream service
    +    let response = self.http_client.make_request(key).await;
    +    self.channel.send(response).await;
    +    
    +    // Store the response in the cache
    +    self.cache.set(key, response);
    +}
    +}
    +
    +

    Alan is happy with how things are working, but notices every once in a while the downstream service hangs. To prevent that, Alan implements a timeout.

    +

    He remembers from the documentation for his favorite runtime that there is the race function which can kick off two futures and polls both until one completes (similar to tokio's select and async-std's race for example).

    +
    
    +#![allow(unused)]
    +fn main() {
    +runtime::race(timeout(), get_response(key)).await
    +}
    +
    +

    The bug

    +

    Alan ships to production but after several weeks he notices some users complaining that they receive old data.

    +

    Alan looks for help. The compiler unfortunately doesn't provide any hints. He turns to his second best friend clippy, who cannot help either. +Alan tries debugging. He uses his old friend println!. After hours of working through, he notices that sometimes the line that sets the response in the cache never gets called.

    +

    The solution

    +

    Alan goes to [Barbara][] and asks why in the world that might be ⁉️

    +

    💡 Barbara looks through the code and notices that there is an await point between sending the response over the channel and setting the cache.

    +

    Since the get_response future can be dropped at each available await point, it may be dropped after the http request has been made, but before the response has successfully been sent over the channel, thus not executing the remaining instructions in the function.

    +

    This means the cache might not be set.

    +

    Alan fixes it by setting the cache before sending the result over the channel. 🎉

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn get_response(&mut self, key: String) {
    +    // ... cache miss happened here
    +
    +    // We perform the HTTP request and our code might continue
    +    // after this .await once the HTTP request is complete
    +    let response = self.http_client.make_request(key).await;
    +
    +    // Immediately store the response in the cache
    +    self.cache.set(key, response);
    +
    +    self.channel.send(response).await;
    +}
    +}
    +
    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Futures can be "canceled" at any await point. Authors of futures must be aware that after an await, the code might not run. +
        +
      • This is similar to panic safety but way more likely to happen
      • +
      +
    • +
    • Futures might be polled to completion causing the code to work. But then many years later, the code is changed and the future might conditionally not be polled to completion which breaks things.
    • +
    • The burden falls on the user of the future to poll to completion, and there is no way for the lib author to enforce this - they can only document this invariant.
    • +
    • Diagnosing and ultimately fixing this issue requires a fairly deep understanding of the semantics of futures.
    • +
    • Without a Barbara, it might be hard to even know where to start: No lints are available, Alan is left with a normal debugger and println!.
    • +
    +

    What are the sources for this story?

    +

    The relevant sources of discussion for this story have been gathered in this github issue.

    +

    Why did you choose Alan to tell this story?

    +

    Alan has enough experience and understanding of push based async languages to make the assumptions that will trigger the bug.

    +

    How would this story have played out differently for the other characters?

    +

    This story would likely have played out the same for almost everyone but Barbara, who has probably been bitten by that already. +The debugging and fixing time would however probably have varied depending on experience and luck.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_finds_database_drops_hard.html b/docs/vision/status_quo/alan_finds_database_drops_hard.html new file mode 100644 index 00000000..9024f5a7 --- /dev/null +++ b/docs/vision/status_quo/alan_finds_database_drops_hard.html @@ -0,0 +1,313 @@ + + + + + + Alan finds dropping database handles is hard - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan finds dropping database handles is hard.

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The problem

    +

    Alan has been adding an extension to YouBuy that launches a singleton actor which interacts with a Sqlite database using the sqlx crate. The Sqlite database only permits a single active connection at a time, but this is not a problem, because the actor is a singleton, and so there only should be one at a time. He consults the documentation for sqlx and comes up with the following code to create a connection and do the query he needs:

    +
    use sqlx::Connection;
    +
    +#[async_std::main]
    +async fn main() -> Result<(), sqlx::Error> {
    +    // Create a connection
    +
    +    let conn = SqliteConnection::connect("sqlite::memory:").await?;
    +
    +    // Make a simple query to return the given parameter
    +    let row: (i64,) = sqlx::query_as("SELECT $1")
    +        .bind(150_i64)
    +        .fetch_one(&conn).await?;
    +
    +    assert_eq!(row.0, 150);
    +
    +    Ok(())
    +}
    +
    +

    Things seem to be working fairly well but sometimes when he refreshes the page he encounters a panic with the message "Cannot open a new connection: connection is already open". He is flummoxed.

    +

    Searching for the Solution

    +

    Alan tries to figure out what happened from the logs, but the only information he sees is that a new connection has been received. Alan turns to the documentation for the sqlx crate to see if there are flags that might enable extra instrumentation but he can't find any.

    +

    He's a bit confused, because he's accustomed to having things generally be cleaned up automatically when they get dropped (for example, dropping a File will close it). Searching the docs, he sees the close method, but the comments confirm that he shouldn't have to call it explicitly: "This method is not required for safe and consistent operation. However, it is recommended to call it instead of letting a connection drop as the database backend will be faster at cleaning up resources." Still, just in case, he decides to add a call to close into his code. It does seem to help some, but he is still able to reproduce the problem if he refreshes often enough. Feeling confused, he adds a log statement right before calling close to see if it is working:

    +
    
    +#![allow(unused)]
    +fn main() {
    +use sqlx::Connection;
    +
    +#[async_std::main]
    +async fn do_the_thing() -> Result<(), sqlx::Error> {
    +    // Create a connection
    +    let conn = SqliteConnection::connect("sqlite::memory:").await?;
    +
    +    // Make a simple query to return the given parameter
    +    let row: (i64,) = sqlx::query_as("SELECT $1")
    +        .bind(150_i64)
    +        .fetch_one(&conn).await?; // <----- if this await is cancelled, doesn't help
    +
    +    assert_eq!(row.0, 150);
    +    
    +    // he adds this:
    +    log!("closing the connection");
    +    conn.close();
    +
    +    Ok(())
    +}
    +}
    +
    +

    He observes that in the cases where he has the problem the log statement never executes. He asks Barbara for help and she points him to this gist that explains how await can be canceled, and cancellation will invoke the destructors for things that are in scope. He reads the source for the SqliteConnection destructor and finds that destructor spawns a task to actually close the connection.

    +

    He realizes there is a race condition and the task may not have actually closed the connection before do_the_thing is called a second time. At this point, he is feeling pretty frustrated!

    +

    Next, Alan seeks verification and validation of his understanding of the source code from the sqlx forum. Someone on the forum explains why the destructor launches a fresh task: Rust doesn't have a way to execute async operations in a destructor.

    +

    Finding the Solution

    +

    Alan briefly considers rearchitecting his application in more extreme ways to retain use of async, but he gives up and seeks a more straight forward solution. He discovers rusqlite, a synchronous database library and adopts it. This requires some rearchitecting but solves the problem.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Rust's async story is lacking a way of executing async operations in destructors. Spawning is a workaround, but it can have unexpected side-effects.
    • +
    • The story demonstrates solid research steps that Alan uses to understand and resolve his problem.
    • +
    • Completion of the Cancellation and timeouts docs may have been helpful. It's difficult to know how something absent might have improved the solution search process.
    • +
    +

    What are the sources for this story?

    +

    This specific story describes an actual bug encountered by Sergey Galich at 1Password.

    +

    Why did you choose Alan to tell this story?

    +

    His experience and understanding of other languages coupled with his desire to apply Rust would likely lead him to try solutions before deeply researching them.

    +

    How would this story have played out differently for the other characters?

    +

    This story would likely have played out the same for everyone.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_has_an_event_loop.html b/docs/vision/status_quo/alan_has_an_event_loop.html new file mode 100644 index 00000000..f5d5cb4f --- /dev/null +++ b/docs/vision/status_quo/alan_has_an_event_loop.html @@ -0,0 +1,334 @@ + + + + + + Alan has an external event loop - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan has an external event loop and wants to use futures/streams

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    As a first Rust Project, Alan decides to program his own IRC Client.

    +

    Since it is Alan's first Project in Rust, it is going to be a private one. He is going to use it on is Mac, so he decides to go with the cocoa crate to not have to learn any Framework specific quirks. This way Alan can get a feel of Rust itself.

    +

    Alans hopes and dreams

    +

    Despite a learning curve, he managed to creating a first window and have some buttons and menus works. After the initialisation is done, the App hand over control to CFRunLoop::Run.

    +

    Once Alan is happy with his Mock UI, he wants to make it actually do something. Reading about async Rust, he sees that several of the concepts there map pretty well to some core Cocoa concepts:

    +
      +
    • Promises => Futures
    • +
    • Observables => Streams.
    • +
    +

    Alan smiles, thinking he knows what and more importantly how to do this.

    +

    First time dealing with runtimes

    +

    Unfortunately, coming from frameworks like Angular or Node.js, Alan is not used to being responsible for driving the processing of Futures/Streams.

    +

    After reading up about Runtimes, his mental image of a runtime is something like:

    +
    
    +#![allow(unused)]
    +fn main() {
    +impl Runtime {
    +    fn run() {
    +        while !self.tasks.is_empty() {
    +            while let Some(task) = self.awoken_tasks.pop() {
    +                task.poll();
    +                //... remove finished task from 'tasks'
    +            }
    +        }
    +    }
    +}
    +}
    +
    +

    Coming from Single-Threaded Angular development, Alan decides to limit his new App to Single-Threaded. He does not feel like learning about Send/Sync/Mutex as well as struggling with the borrow checker.

    +

    On top of that, his App is not doing any heavy calculation so he feels async should be enough to not block the main thread too bad and have a hanging UI.

    +

    Fun time is over

    +

    Soon Alan realises that he cannot use any of those runtimes because they all take control of the thread and block. The same as the OS Event loop.

    +

    Alan spends quite some time to look through several runtime implementations. Ignoring most internal things, all he wants is a runtime that looks a bit like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +impl Runtime {
    +    fn make_progress() {
    +        while let Some(task) = self.awoken_tasks.pop() {
    +            task.poll();
    +            //... remove finished task from 'tasks'
    +        }
    +    }
    +    fn run() {
    +        while !self.tasks.is_empty() {
    +            self.make_progress();
    +        }
    +    }
    +}
    +}
    +
    +

    It could be so easy. Unfortunately he does not find any such solution. Having already looked through quite a bit of low level documentation and runtime code, Alan thinks about implementing his own runtime...

    +

    ...but only for a very short time. Soon after looking into it, he finds out that he has to deal with RawWakerVTable, RawWaker, Pointers. Worst of all, he has to do that without the safety net of the rust compiler, because this stuff is unsafe.

    +

    Reimplementing the OS Event Loop is also not an option he wants to take. See here +>Override run() if you want the app to manage the main event loop differently than it does by default. (This a critical and complex task, however, that you should only attempt with good reason).

    +

    The cheap way out

    +

    Alan gives up and uses a runtime in a seperate thread from the UI. This means he has to deal with the additional burden of syncing and he has to give up the frictionless use of some of the patterns he is accustomed to by treating UI events as Stream<Item = UIEvent>.

    +

    🤔 Frequently Asked Questions

    +
      +
    • What are the morals of the story? +
        +
      • Even though you come from a language that has async support, does not mean you are used to selecting und driving a runtime.
      • +
      • It should be possible to integrate runtimes into existing Event loops.
      • +
      +
    • +
    • What are the sources for this story? + +
    • +
    • Why did you choose Alan to tell this story? +
        +
      • The story deals about UI event loops, but the other characters could run into similar issues when trying to combine event loops from different systems/frameworks.
      • +
      +
    • +
    • Is this Apple specific? +
        +
      • No! You have the same issue with other OSs/Frameworks that don't already support Rust Async.
      • +
      +
    • +
    • How would this story have played out differently for the other characters? +
        +
      • Since this is a technical and not a skill or experience issue, this would play out similar for other Characters. Although someone with deep knowledge of those Event loops, like Grace, might be more willing to re-implement them.
      • +
      +
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_hates_writing_a_stream.html b/docs/vision/status_quo/alan_hates_writing_a_stream.html new file mode 100644 index 00000000..4764fc12 --- /dev/null +++ b/docs/vision/status_quo/alan_hates_writing_a_stream.html @@ -0,0 +1,458 @@ + + + + + + Alan hates writing a Stream - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan hates writing a Stream

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Alan is used to writing web server applications using async sockets, but wants to try Rust to get that signature vroom vroom.

    +

    After a couple weeks learning Rust basics, Alan quickly understands async and await, and therefore has several routes built for his application that await a few things and then construct an HTTP response and send a buffered body. To build the buffered response bodies, Alan was reading a file, and then appending a signature, and putting that all into a single buffer of bytes.

    +

    Eventually, Alan realizes that some responses have enormous bodies, and would like to stream them instead of buffering them fully in memory. He's used the Stream trait before. Using it was very natural, and followed a similar pattern to regular async/await:

    +
    
    +#![allow(unused)]
    +fn main() {
    +while let Some(chunk) = body.next().await? {
    +    file.write_all(&chunk).await?;
    +}
    +}
    +
    +

    However, implementing Stream turns out to be rather different. With a quick search, he learned the simple way to turn a File into a Stream with ReaderStream, but the signing part was much harder.

    +

    Imperatively Wrong

    +

    Alan first hoped he could simply write signing stream imperatively, reusing his new knowledge of async and await, and assuming it'd be similar to JavaScript:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async* fn sign(file: ReaderStream) -> Result<Vec<u8>, Error> {
    +    let mut sig = Signature::new();
    +
    +    while let Some(chunk) = file.next().await? {
    +        sig.push(&chunk);
    +        yield Ok(chunk)
    +    }
    +
    +    yield Ok(sig.digest().await)
    +}
    +}
    +
    +

    Unfortunately, that doesn't work. The compiler first complains about the async* fn syntax:

    +
    error: expected item, found keyword `async`
    +  --> src/lib.rs:21:1
    +   |
    +21 | async* fn sign(file: ReaderStream) -> Result<Vec<u8>, Error> {
    +   | ^^^^^ expected item
    +
    +

    Less hopeful, Alan tries just deleting the asterisk:

    +
    error[E0658]: yield syntax is experimental
    +  --> src/lib.rs:27:9
    +   |
    +27 |         yield Ok(chunk)
    +   |         ^^^^^^^^^^^^^^^
    +   |
    +   = note: see issue #43122 <https://github.com/rust-lang/rust/issues/43122> for more information
    +
    +

    After reading about how yield is experimental, and giving up reading the 100+ comments in the linked issue, Alan figures he's just got to implement Stream manually.

    +

    Implementing Stream

    +

    Implementing a Stream means writing async code in a way that doesn't feel like the async fn that Alan has written so far. He needs to write a poll function and it has a lot of unfamiliar concepts:

    +
      +
    • Pin
    • +
    • State machines
    • +
    • Wakers
    • +
    +

    Unsure of what the final code will look like, he starts with:

    +
    
    +#![allow(unused)]
    +fn main() {
    +struct SigningFile;
    +
    +impl Stream for SigningFile {
    +    type Item = Result<Vec<u8>, Error>;
    +    
    +    fn poll_next(self: Pin<&mut Self>, cx: &mut Context)
    +        -> Poll<Self::Item>
    +    {
    + 
    +    }
    +}
    +}
    +
    +

    Pin :scream:

    +

    First, he notices Pin. Alan wonders, "Why does self have bounds? I've only ever seen self, &self, and &mut self before". Curious, he reads the std::pin page, and a bunch of jargon about pinning data in memory. He also reads that this is useful to guarantee that an object cannot move, and he wonders why he cares about that. The only example on the page explains how to write a "self-referential struct", but notices it needs unsafe code, and that triggers an internal alarm in Alan: "I thought Rust was safe..."

    +

    After asking Barbara, Alan realizes that the types he's depending on are Unpin, and so he doesn't need to worry about the unsafe stuff. It's just a more-annoying pointer type.

    +

    State Machine

    +

    With Pin hopefully ignored, Alan next notices that in the imperative style he wanted originally, he didn't need to explicitly keep track of state. The state was simply the imperative order of the function. But in a poll function, the state isn't saved by the compiler. Alan finds blog posts about the dark ages of Futures 0.1, when it was more common for manual Futures to be written with a "state machine".

    +

    He thinks about his stream's states, and settles on the following structure:

    +
    
    +#![allow(unused)]
    +fn main() {
    +struct SigningFile {
    +    state: State,
    +    file: ReaderStream,
    +    sig: Signature,
    +}
    +
    +enum State {
    +    File,
    +    Sign,
    +}
    +}
    +
    +

    It turns out it was more complicated than Alan thought (the author made this same mistake). The digest method of Signature is async, and it consumes the signature, so the state machine needs to be adjusted. The signature needs to be able to be moved out, and it needs to be able to store a future from an async fn. Trying to figure out how to represent that in the type system was difficult. He considered adding a generic T: Future to the State enum, but then wasn't sure what to set that generic to. Then, he tries just writing Signing(impl Future) as a state variant, but that triggers a compiler error that impl Trait isn't allowed outside of function return types. Patient Barbara helped again, so that Alan learns to just store a Pin<Box<dyn Future>>, wondering if the Pin there is important.

    +
    
    +#![allow(unused)]
    +fn main() {
    +struct SigningFile {
    +    state: State,
    +}
    +
    +enum State {
    +    File(ReaderStream, Signature),
    +    Signing(Pin<Box<dyn Future<Output = Vec<u8>>>>),
    +    Done,
    +}
    +}
    +
    +

    Now he tries to write the poll_next method, checking readiness of individual steps (thankfully, Alan remembers ready! from the futures 0.1 blog posts he read) and proceeding to the next state, while grumbling away the weird Pin noise:

    +
    
    +#![allow(unused)]
    +fn main() {
    +match self.state {
    +    State::File(ref mut file, ref mut sig) => {
    +        match ready!(Pin::new(file).poll_next(cx)) {
    +            Some(result) => {
    +                let chunk = result?;
    +                sig.push(&chunk);
    +                Poll::Ready(Some(Ok(chunk)))
    +            },
    +            None => {
    +                let sig = match std::mem::replace(&mut self.state, State::Done) {
    +                    State::File(_, sig) => sig,
    +                    _ => unreachable!(),
    +                };
    +                self.state = State::Signing(Box::pin(sig.digest()));
    +                Poll::Pending
    +            }
    +        }
    +    },
    +    State::Signing(ref mut sig) => {
    +        let last_chunk = ready!(sig.as_mut().poll(cx));
    +        self.state = State::Done;
    +        Poll::Ready(Some(Ok(last_chunk)))
    +    }
    +    State::Done => Poll::Ready(None),
    +}
    +}
    +
    +

    Oh well, at least it works, right?

    +

    Wakers

    +

    So far, Alan hasn't paid too much attention to Context and Poll. It's been fine to simply pass them along untouched. There's a confusing bug in his state machine. Let's look more closely:

    +
    
    +#![allow(unused)]
    +fn main() {
    +// zooming in!
    +match ready!(Pin::new(file).poll_next(cx)) {
    +    Some(result) => {
    +        let chunk = result?;
    +        sig.push(&chunk);
    +        return Poll::Ready(Some(Ok(val));
    +    },
    +    None => {
    +        self.set_state_to_signing();
    +        // oops!
    +        return Poll::Pending;
    +    }
    +}
    +}
    +
    +

    In one of the branches, the state is changed, and Poll::Pending is returned. Alan assumes that the task will be polled again with the new state. But, since the file was done (and has returned Poll::Ready), there was actually no waker registered to wake the task again. So his stream just hangs forever.

    +

    The compiler doesn't help at all, and he re-reads his code multiple times, but because of this easy-to-misunderstand logic error, Alan eventually has to ask for help in a chat room. After a half hour of explaining all sorts of details, a kind person points out he either needs to register a waker, or perhaps use a loop.

    +

    All too often, since we don't want to duplicate code in multiple branches, the solution for Alan is to add an odd loop around the whole thing, so that the next match branch uses the Context:

    +
    
    +#![allow(unused)]
    +fn main() {
    +loop {
    +    match self.state {
    +        State::File(ref mut file, ref mut sig) => {
    +            match ready!(Pin::new(file).poll_next(cx)) {
    +                Some(result) => {
    +                    let chunk = result?;
    +                    sig.push(&chunk);
    +                    return Poll::Ready(Some(Ok(chunk)))
    +                },
    +                None => {
    +                    let sig = match std::mem::replace(&mut self.state, State::Done) {
    +                        State::File(_, sig) => sig,
    +                        _ => unreachable!(),
    +                    };
    +                    self.state = State::Signing(Box::pin(sig.digest()));
    +                    // loop again, to catch the `State::Signing` branch
    +                }
    +            }
    +        },
    +        State::Signing(ref mut sig) => {
    +            let last_chunk = ready!(sig.as_mut().poll(cx));
    +            self.state = State::Done;
    +            return Poll::Ready(Some(Ok(last_chunk)))
    +        }
    +        State::Done => return Poll::Ready(None),
    +    }
    +}
    +}
    +
    +

    Gives Up

    +

    A little later, Alan needs to add some response body transforming to some routes, to add some app-specific framing. Upon realizing he needs to implement another Stream in a generic fashion, he instead closes the editor and complains on Twitter.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Writing an async Stream is drastically different than writing an async fn.
    • +
    • The documentation for Pin doesn't provide much practical guidance in how to use it, instead focusing on more abstract considerations.
    • +
    • Missing a waker registration is a runtime error, and very hard to debug. If it's even possible, a compiler warning or hint would go a long way.
    • +
    +

    What are the sources for this story?

    +

    Part of this story is based on the original motivation for async/await in Rust, since similar problems exist writing impl Future.

    +

    Why did you choose Alan to tell this story?

    +

    Choosing Alan was somewhat arbitrary, but this does get to reuse the experience that Alan may already have around await coming from JavaScript.

    +

    How would this story have played out differently for the other characters?

    +
      +
    • This likely would have been a similar story for any character.
    • +
    • It's possible Grace would be more used to writing state machines, coming from C.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_iteratively_regresses.html b/docs/vision/status_quo/alan_iteratively_regresses.html new file mode 100644 index 00000000..1b59f23b --- /dev/null +++ b/docs/vision/status_quo/alan_iteratively_regresses.html @@ -0,0 +1,309 @@ + + + + + + Alan iteratively regresses performance - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan iteratively regresses performance

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    A core part of DistriData, called DDSplit, is in charge of splitting input data records into fragments that are stored on distinct servers, and then reassembling those fragments back into records in response to user queries.

    +

    DDSplit was originally implemented using Java code (plus some C, interfaced via JNI). Alan thinks that Rust could provide the same quality of service while requiring less memory. He decides to try reimplementing DDSplit in Rust, atop tokio.

    +

    Alan wants to copy some of the abstractions he sees in the Java code that are defined via Java interfaces. Alan sees Rust traits as the closest thing to Java interfaces. However, when he experimentally defines a trait with an async fn, he gets the following message from the compiler:

    +
    error[E0706]: functions in traits cannot be declared `async`
    + --> src/main.rs:2:5
    +  |
    +2 |     async fn method() { }
    +  |     -----^^^^^^^^^^^^^^^^
    +  |     |
    +  |     `async` because of this
    +  |
    +  = note: `async` trait functions are not currently supported
    +  = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait
    +
    +

    This diagnostic leads Alan to add the async-trait crate as a dependency to his project. Alan then uses the #[async_trait] attribute provided by that crate to be able to define async fn methods within traits.

    +

    When Alan finishes the prototype code, he finds the prototype performance has 20% slower throughput compared to the Java version.

    +

    Alan is disappointed; his experience has been that Rust code performs great, (at least once you managed to get the code to be accepted by the compiler). Alan was not expecting to suffer a 20% performance hit over the Java code.

    +

    The DDSplit service is being developed on a Linux machine, so Alan is able use the perf tool to gather sampling-based profiling data the async/await port of DDSplit.

    +

    Looking at a flamegraph for the call stacks, Alan identified two sources of execution time overhead that he did not expect: calls into the memory allocator (malloc) with about 1% of the execution time, and calls to move values in memory (memcpy), with about 8% of execution time.

    +

    Alan reaches out to Barbara, as the local Rust expert, for help on how identify where the performance pitfalls are coming from.

    +

    Alan asks Barbara whether the problem could be caused by the tokio executor. Barbara says it is hard to know that without more instrumentation. She explains it could be that the program is overloading tokio's task scheduler (for example), but it also could be that the application code itself has expensive operations, such as lots of small I/O operations rather than using a buffer.

    +

    Alan and Barbara look at the perf data. They find the output of perf report difficult to navigate and interpret. The data has stack trace fragments available, which gives them a few hints to follow up on. But when they try to make perf report annotate the original source, perf only shows disassembled machine code, not the original Rust source code. Alan and Barbara both agree that trying to dissect the problem from the machine code is not an attractive strategy.

    +

    Alan asks Barbara what she thinks about the malloc calls in the profile. Barbara recommends that Alan try to eliminate the allocation calls, and if they cannot be eliminated, then that Alan try tuning the parameters for the global memory allocator, or even switching which global memory allocator he is using. Alan looks at Barbara in despair: his time tweaking GC settings on the Java Virtual Machine taught him that allocator tuning is often a black art.

    +

    Barbara suggests that they investigate where the calls to memcpy are arising, since they look like a larger source of overhead based on the profile data. From the call stacks in perf report, Alan and Barbara decide to skim over the source code files for the corresponding functions.

    +

    Upon seeing #[async_trait] in Alan's source code, Barbara recommends that if performance is a concern, then Alan should avoid #[async_trait]. She explains that #[async_trait] transforms a trait's async methods into methods that return Pin<Box<dyn Future>>, and the overhead that injects that will be hard to diagnose and impossible to remove. When Alan asks what other options he could adopt, Barbara thinks for a moment, and says he could make an enum that carries all the different implementations of the code. Alan says he'll consider it, but in the meantime he wants to see how far they can improve the code while keeping #[async_trait].

    +

    They continue looking at the code itself, essentially guessing at potential sources of where problematic memcpy's may be arising. They identify two potential sources of moves of large datatypes in the code: pushes and pops on vectors of type Vec<DistriQuery>, and functions with return types of the form Result<SuccessCode, DistriErr>.

    +

    Barbara asks how large the DistriQuery, SuccessCode, and DistriErr types are. Alan immediately notes that DistriQuery may be large, and they discuss options for avoiding the memory traffic incurred by pushing and popping DistriQuery.

    +

    For the other two types, Alan responds that the SuccessCode is small, and that the error variants are never constructed in his benchmark code. Barbara explains that the size of Result<T, E> has to be large enough to hold either variant, and that memcpy'ing a result is going to move all of those bytes. Alan investigates and sees that DistriErr has variants that embed byte arrays that go up to 50kb in size. Barbara recommends that Alan look into boxing the variants, or the whole DistriErr type itself, in order to reduce the cost of moving it around.

    +

    Alan uses Barbara's feedback to box some of the data, and this cuts the memcpy traffic in the perf report to one quarter of what it had been reporting previously.

    +

    However, there remains a significant performance delta between the Java version and the Rust version. Alan is not sure his Rust-rewrite attempt is going to get anywhere beyond the prototype stage.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    1. +

      Rust promises great performance, but when performance is not meeting one's targets, it is hard to know what to do next. Rust mostly leans on leveraging existing tools for native code development, but those tools are (a.) foreign to many of our developers, (b.) do not always measure up to what our developers have access to elsewhere, (c.) do not integrate as well with Rust as they might with C or C++.

      +
    2. +
    3. +

      Lack of certain language features leads developers to use constructs like #[async_trait] which add performance overhead that is (a.) hard to understand and (b.) may be significant.

      +
    4. +
    5. +

      Rust makes some things very explicit, e.g. the distinction between Box<T> versus T is quite prominent. But Rust's expressive type system also makes it easy to compose types without realizing how large they have gotten.

      +
    6. +
    7. +

      Programmers do not always have a good mental model for where expensive moves are coming from.

      +
    8. +
    9. +

      An important specific instance of (1c.) for the async vision: Native code tools do not have any insight into Rust's async model, as that is even more distant from the execution model of C and C++.

      +
    10. +
    11. +

      We can actually generalize (5.) further: When async performance does not match expectations, developers do not have much insight into whether the performance pitfalls arise from issues deep in the async executor that they have selected, or if the problems come directly from overheads built into the code they themselves have written.

      +
    12. +
    +

    What are the sources for this story?

    +

    Discussions with engineers at Amazon Web Services.

    +

    Why did you choose Alan to tell this story?

    +

    I chose Alan because he is used to Java, where these issues play out differently.

    +

    Java has very mature tooling, including for performance investigations. Alan has used JProfiler at his work, and VisualVM for personal hobby projects. Alan is frustrated by his attempts to use (or even identify) equivalent tools for Rust.

    +

    With respect to memory traffic: In Java, every object is handled via a reference, and those references are cheap to copy. (One pays for that convenience in other ways, of course.)

    +

    How would this story have played out differently for the other characters?

    +

    From her C and C++ background, Grace probably would avoid letting her types get so large. But then again, C and C++ do not have enums with a payload, so Grace would likely have fallen in the same trap that Alan did (of assuming that the cost of moving an enum value is proportional to its current variant, rather than to its type's overall size). Also, Grace might report that her experience with gcc-based projects yielded programs that worked better with perf, due in part to gcc producing higher quality DWARF debuginfo.

    +

    Barbara probably would have added direct instrumentation via the tracing crate, potentially even to tokio itself, rather than spend much time wrestling with perf.

    +

    Niklaus is unlikely to be as concerned about the 20% throughput hit; he probably would have been happy to get code that seems functionally equivalent to the original Java version.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_lost_the_world.html b/docs/vision/status_quo/alan_lost_the_world.html new file mode 100644 index 00000000..a76c26a9 --- /dev/null +++ b/docs/vision/status_quo/alan_lost_the_world.html @@ -0,0 +1,426 @@ + + + + + + Alan lost the world - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan lost the world!

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Alan heard about a project to reimplement a deprecated browser plugin using Rust and WASM. This old technology had the ability to load resources over HTTP; so it makes sense to try and implement that functionality using the Fetch API. Alan looks up the documentation of web_sys and realizes they need to...

    +
      +
    1. Call one of the fetch methods, which returns a Promise
    2. +
    3. Convert the Promise into a Rust thing called a Future
    4. +
    5. await the Future in an async function
    6. +
    7. Do whatever they want with the resulting data
    8. +
    +
    
    +#![allow(unused)]
    +fn main() {
    +use web_sys::{Request, window};
    +
    +fn make_request(src: &url) -> Request {
    +    // Pretend this contains all of the complicated code necessary to
    +    // initialize a Fetch API request from Rust
    +}
    +
    +async fn load_image(src: String) {
    +    let request = make_request(&url);
    +    window().unwrap().fetch_with_request(&request).await;
    +    log::error!("It worked");
    +}
    +}
    +
    +

    Alan adds calls to load_image where appropriate. They realize that nothing is happening, so they look through more documentation and find a thing called spawn_local. Once they pass the result of load_image into that function, they see their log message pop up in the console, and figure it's time to actually do something to that loaded image data.

    +

    At this point, Alan wants to put the downloaded image onto the screen, which in this project means putting it into a Node of the current World. A World is a bundle of global state that's passed around as things are loaded, rendered, and scripts are executed. It looks like this:

    +
    
    +#![allow(unused)]
    +
    +fn main() {
    +/// All of the player's global state.
    +pub struct World<'a> {
    +    /// A list of all display Nodes.
    +    nodes: &'a mut Vec<Node>,
    +
    +    /// The last known mouse position.
    +    mouse_pos &'a mut (u16, u16),
    +
    +    // ...
    +}
    +}
    +
    +

    In synchronous code, this was perfectly fine. Alan figures it'll be fine in async code, too. So Alan adds the world as a function parameter and everything else needed to parse an image and add it to our list of nodes:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn load_image(src: String, inside_of: usize, world: &mut World<'_>) {
    +    let request = make_request(&url);
    +    let data = window().unwrap().fetch_with_request(&request).await.unwrap().etc.etc.etc;
    +    let image = parse_png(data, context);
    +
    +    let new_node_index = world.nodes.len();
    +    if let Some(parent) = world.nodes.get(inside_of) {
    +        parent.set_child(new_node_index);
    +    }
    +    world.nodes.push(image.into());
    +}
    +}
    +
    +

    Bang! Suddenly, the project stops compiling, giving errors like...

    +
    error[E0597]: `world` does not live long enough
    +  --> src/motionscript/globals/loader.rs:21:43
    +
    +

    Hmm, okay, that's kind of odd. We can pass a World to a regular function just fine - why do we have a problem here? Alan glances over at loader.rs...

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn attach_image_from_net(world: &mut World<'_>, args: &[Value]) -> Result<Value, Error> {
    +    let this = args.get(0).coerce_to_object()?;
    +    let url = args.get(1).coerce_to_string()?;
    +
    +    spawn_local(load_image(url, this.as_node().ok_or("Not a node!")?, world))
    +}
    +}
    +
    +

    Hmm, the error is in that last line. spawn_local is a thing Alan had to put into everything that called load_image, otherwise his async code never actually did anything. But why is this a problem? Alan can borrow a World, or anything else for that matter, inside of async code; and it should get it's own lifetime like everything else, right?

    +

    Alan has a hunch that this spawn_local thing might be causing a problem, so Alan reads the documentation. The function signature seems particularly suspicious:

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub fn spawn_local<F>(future: F) 
    +where
    +    F: Future<Output = ()> + 'static
    +}
    +
    +

    So, spawn_local only works with futures that return nothing - so far, so good - and are 'static. Uh-oh. What does that last bit mean? Alan asks Barbara, who responds that it's the lifetime of the whole program. Yeah, but... the async function is part of the program, no? Why wouldn't it have the 'static lifetime? Does that mean all functions that borrow values aren't 'static, or just the async ones?

    +

    Barbara explains that when you borrow a value in a closure, the closure doesn't gain the lifetime of that borrow. Instead, the borrow comes with it's own lifetime, separate from the closure's. The only time a closure can have a non-'static lifetime is if one or more of its borrows is not provided by it's caller, like so:

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn benchmark_sort() -> usize {
    +    let mut num_times_called = 0;
    +    let test_values = vec![1,3,5,31,2,-13,10,16];
    +
    +    test_values.sort_by(|a, b| {
    +        a.cmp(b)
    +        num_times_called += 1;
    +    });
    +
    +    num_times_called
    +}
    +}
    +
    +

    The closure passed to sort_by has to copy or borrow anything not passed into it. In this case, that would be the num_times_called variable. Since we want to modify the variable, it has to be borrowed. Hence, the closure has the lifetime of that borrow, not the whole program, because it can't be called anytime - only when num_times_called is a valid thing to read or write.

    +

    Async functions, it turns out, act like closures that don't take parameters! They have to, because all Futures have to implement the same trait method poll:

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub trait Future {
    +    type Output;
    +
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>;
    +}
    +}
    +
    +

    When you call an async function, all of it's parameters are copied or borrowed into the Future that it returns. Since we need to borrow the World, the Future has the lifetime of &'a mut World, not of 'static.

    +

    Barbara suggests changing all of the async function's parameters to be owned types. Alan asks Grace, who architected this project. Grace recommends holding a reference to the Plugin that owns the World, and then borrowing it whenever you need the World. That ultimately looks like the following:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn load_image(src: String, inside_of: usize, player: Arc<Mutex<Player>>) {
    +    let request = make_request(&url);
    +    let data = window().unwrap().fetch_with_request(&request).await.unwrap().etc.etc.etc;
    +    let image = parse_png(data, context);
    +
    +    player.lock().unwrap().update(|world| {
    +        let new_node_index = world.nodes.len();
    +        if let Some(parent) = world.nodes.get(inside_of) {
    +            parent.set_child(new_node_index);
    +        }
    +        world.nodes.push(image.into());
    +    });
    +}
    +}
    +
    +

    It works, well enough that Alan is able to finish his changes and PR them into the project. However, Alan wonders if this could be syntactically cleaner, somehow. Right now, async and update code have to be separated - if we need to do something with a World, then await something else, that requires jumping in and out of this update thing. It's a good thing that we only really have to be async in these loaders, but it's also a shame that we practically can't mix async code and Worlds.

    +

    🤔 Frequently Asked Questions

    +
      +
    • What are the morals of the story? +
        +
      • Async functions capture all of their parameters for the entire duration of the function. This allows them to hold borrows of those parameters across await points. +
          +
        • When the parameter represents any kind of "global environment", such as the World in this story, it may be useful for that parameter not to be captured by the future but rather supplied anew after each await point.
        • +
        +
      • +
      • Non-'static Futures are of limited use to developers, as lifetimes are tied to the sync stack. The execution time of most asynchronous operations does not come with an associated lifetime that an executor could use. +
          +
        • It is possible to use borrowed futures with block_on style executors, as they necessarily extend all lifetimes to the end of the Future. This is because they turn asynchronous operations back into synchronous ones.
        • +
        • Most practical executors want to release the current stack, and thus all of it's associated lifetimes. They need 'static futures.
        • +
        +
      • +
      • Async programming introduces more complexity to Rust than it does, say, JavaScript. The complexity of async is sometimes explained in terms of 'color', where functions of one 'color' can only call those of another under certain conditions, and developers have to keep track of what is sync and what is async. Due to Rust's borrowing rules, we actually have three 'colors', not the two of other languages with async I/O: +
          +
        • Sync, or 'blue' in the original metaphor. This color of function can both own and borrow it's parameters. If made into the form of a closure, it may have a lifetime if it borrows something from the current stack.
        • +
        • Owned Async, or 'red' in the original metaphor. This color of function can only own parameters, by copying them into itself at call time.
        • +
        • Borrowed Async. If an async function borrows at least one parameter, it gains a lifetime, and must fully resolve itself before the lifetime of it's parameters expires.
        • +
        +
      • +
      +
    • +
    • What are the sources for this story? +
        +
      • This is personal experience. Specifically, I had to do almost exactly this dance in order to get fetch to work in Ruffle.
      • +
      • I have omitted a detail from this story: in Ruffle, we use a GC library (gc_arena) that imposes a special lifetime on all GC references. This is how the GC library upholds it's memory safety invariants, but it's also what forces us to pass around contexts, and once you have that, it's natural to start putting even non-GC data into it. It also means we can't hold anything from the GC in the Future as we cannot derive it's Collect trait on an anonymous type.
      • +
      +
    • +
    • Why did you choose Alan to tell this story? +
        +
      • Lifetimes on closures is already non-obvious to new Rust programmers and using them in the context of Futures is particularly unintuitive.
      • +
      +
    • +
    • How would this story have played out differently for the other characters? +
        +
      • Niklaus probably had a similar struggle as Alan.
      • +
      • Grace would have felt constrained by the async syntax preventing some kind of workaround for this problem.
      • +
      • Barbara already knew about Futures and 'static and carefully organizes their programs accordingly.
      • +
      +
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_needs_async_in_traits.html b/docs/vision/status_quo/alan_needs_async_in_traits.html new file mode 100644 index 00000000..5095b3dd --- /dev/null +++ b/docs/vision/status_quo/alan_needs_async_in_traits.html @@ -0,0 +1,348 @@ + + + + + + Alan needs async in traits - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan needs async in traits

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]!

    +

    The story

    +

    Alan is working on a project with Barbara which has already gotten off to a somewhat rocky start. He is working on abstracting away the HTTP implementation the library uses so that users can provide their own. He wants the user to implement an async trait called HttpClient which has one method perform(request: Request) -> Response. Alan tries to create the async trait:

    +
    
    +#![allow(unused)]
    +fn main() {
    +trait HttpClient {
    +    async fn perform(request: Request) -> Response;
    +}
    +}
    +
    +

    When Alan tries to compile this, he gets an error:

    +
     --> src/lib.rs:2:5
    +  |
    +2 |     async fn perform(request: Request) -> Response;
    +  |     -----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +  |     |
    +  |     `async` because of this
    +  |
    +  = note: `async` trait functions are not currently supported
    +  = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait
    +
    +

    Alan, who has been using Rust for a little while now, has learned to follow compiler error messages and adds async-trait to his Cargo.toml. Alan follows the README of async-trait and comes up with the following code:

    +
    
    +#![allow(unused)]
    +fn main() {
    +#[async_trait]
    +trait HttpClient {
    +    async fn perform(request: Request) -> Response;
    +}
    +}
    +
    +

    Alan's code now compiles, but he also finds that his compile times have gone from under a second to around 6s, at least for a clean build.

    +

    After Alan finishes adding the new trait, he shows his work off to Barbara and mentions he's happy with the work but is a little sad that compile times have worsened. Barbara, an experienced Rust developer, knows that using async-trait comes with some additional issues. In this particular case she is especially worried about tying their public API to a third-party dependency. Even though it is technically possible to implement traits annotated with async_trait without using async_trait, doing so in practice is very painful. For example async_trait:

    +
      +
    • handles lifetimes for you if the returned future is tied to the lifetime of some inputs.
    • +
    • boxes and pins the futures for you.
    • +
    +

    which the implementer will have to manually handle if they don't use async_trait. She decides to not worry Alan with this right now. Alan and Barbara are pretty happy with the results and go on to publish their crate which gets lots of users.

    +

    Later on, a potential user of the library wants to use their library in a no_std context where they will be providing a custom HTTP stack. Alan and Barbara have done a pretty good job of limiting the use of standard library features and think it might be possible to support this use case. However, they quickly run into a show stopper: async-trait boxes all of the futures returned from a async trait function. They report this to Alan through an issue.

    +

    Alan, feeling (over-) confident in his Rust skills, decides to try to see if he can implement async traits without using async-trait.

    +
    
    +#![allow(unused)]
    +fn main() {
    +trait HttpClient {
    +   type Response: Future<Output = Response>;
    +
    +   fn perform(request: Request) -> Self::Response; 
    +}
    +}
    +
    +

    Alan seems to have something working, but when he goes to update the examples of how to implement this trait in his crate's documentation, he realizes that he either needs to:

    +
      +
    • +

      use trait object:

      +
      
      +#![allow(unused)]
      +fn main() {
      +struct ClientImpl;
      +
      +impl HttpClient for ClientImpl {
      +    type Response = Pin<Box<dyn Future<Output = Response>>>;
      +
      +    fn perform(request: Request) -> Self::Response {
      +        Box::pin(async move {
      +            // Some async work here creating Reponse
      +        })
      +    }
      +}
      +}
      +
      +

      which wouldn't work for no_std.

      +
    • +
    • +

      implement Future trait manually, which isn't particulary easy/straight-forward for non-trivial cases, especially if it involves making other async calls (likely).

      +
    • +
    +

    After a lot of thinking and discussion, Alan and Barbara accept that they won't be able to support no_std users of their library and add mention of this in crate documentation.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • async-trait is awesome, but has some drawbacks +
        +
      • compile time increases
      • +
      • performance cost of boxing and dynamic dispatch
      • +
      • not a standard solution so when this comes to language, it might break things
      • +
      +
    • +
    • Trying to have a more efficient implementation than async-trait is likely not possible.
    • +
    +

    What are the sources for this story?

    + +

    Why did you choose Alan to tell this story?

    +

    We could have used Barbara here but she'd probably know some of the work-arounds (likely even the details on why they're needed) and wouldn't need help so it wouldn't make for a good story. Having said that, Barbara is involved in the story still so it's not a pure Alan story.

    +

    How would this story have played out differently for the other characters?

    +
      +
    • Barbara: See above.
    • +
    • Grace: Probably won't know the solution to these issues much like Alan, but might have an easier time understanding the why of the whole situation.
    • +
    • Niklaus: would be lost - traits are somewhat new themselves. This is just more complexity, and Niklaus might not even know where to go for help (outside of compiler errors).
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_picks_web_server.html b/docs/vision/status_quo/alan_picks_web_server.html new file mode 100644 index 00000000..df37fc29 --- /dev/null +++ b/docs/vision/status_quo/alan_picks_web_server.html @@ -0,0 +1,283 @@ + + + + + + Alan wants to migrate a web server to Rust - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan wants to migrate a web server to Rust

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    Is Rust ready for the web?

    +

    Alan has been following the arewewebyet site for quite some time. He is a Typescript full-stack developer and follows the project in order to know when it would be sensible to migrate the backend of a web application he's responsible for. Alan loves Rust and has used it for some tasks that didn't quite need async routines. Since arewewebyet is an official Rust language project, he trusts their reviews of several web frameworks, tools, libraries, etc.

    +

    Alan was thrilled during the 2020 Xmas holiday. It turns out that at that time Rust was declared to be web ready! Alan takes this is a sign that not only is Rust great for web servers, but also a confirmation that async features have matured and stabilised. For, how can a language be web ready and not fully support asynchronous tasks?

    +

    Alan's point of reference are the Golang and Javascript languages. They were both created for web servers and clients. They also support async/await natively. At the same time, Alan is not aware of the complexities that these languages are "hiding" from him.

    +

    Picking a web server is ok

    +

    Golang native http server is nice but, as a Typescript developer, Alan is also used to dealing with "Javascript fatigue". Javascript developers often use this term to refer to a fast-pace framework ecosystem, where every so often there is the "new" thing everybody else is migrating to. Similarly, Javascript engineers are used to having to pick from a myriad of options within the vast npm ecosystem. And so, the lack of a web sever in Rust's standard library didn't surprise him. The amount of options didn't overwhelm him either.

    +

    The arewewebyet site mentions four good web servers. Alan picks Tide because the interfaces and the emphasis on middleware reminds him of Nodejs' Express framework.

    +

    The first endpoint

    +

    Alan sets up all the boilerplate and is ready to write the first endpoint. He picks PUT /support-ticket because it barely has any logic in it. When a request arrives, the handler only makes a request to Zendesk to create a support ticket. The handler is stateless and has no middleware.

    +

    The arewewebyet site doesn't recommend a specific http client, so Alan searches for one in crates.io. He picks reqwest simply because it's the most popular.

    +

    Alan combines the knowledge he has from programming in synchronous Rust and asynchronous Javascript to come up with a few lines that should work. If the compiler is happy, then so is he!

    +

    First problem: incompatible runtimes

    +

    The first problem he runs into is very similar to the one described in the compiler trust story: thread 'main' panicked at 'there is no reactor running, must be called from the context of a Tokio 1.x runtime.

    +

    In short, Alan has problems because Tide is based on std-async and reqwest on the latest version of tokio. This is a real pain for Alan as he has now to change either the http client or the server so that they use the same runtime.

    +

    He decides to switch to Actix web.

    +

    Second problem: incompatible versions of the same runtime

    +

    Alan migrates to Actix web and again the compiler seems to be happy. To his surprise, the same problem happens again. The program panics with the message as before: there is no reactor running, must be called from the context of a Tokio 1.x runtime. He is utterly puzzled as Actix web is based on Tokio just like reqwest. Didn't he just fix problem number 1?

    +

    It turns out that the issue is that Alan's using v0.11.2 of reqwest, which uses tokio v1, and v3.3.2 of actix-web, which uses tokio v0.3.

    +

    The solution to this problem is then to dig into all the versions of reqwest until he finds one which uses the same version of tokio.

    +

    Can Alan sell the Rust migration to his boss?

    +

    This experience has made Alan think twice about whether Rust is indeed web ready. On the one hand, there are very good libraries for web servers, ORMs, parsers, session management, etc. On the other, Alan is fearful that in 2/3/6 months time he has to develop new features with libraries that already exist but turn out to be incompatible with the runtime chosen at the beginning of the project.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Rust's ecosystem has a lot of great components that may individually be ready for the web, but combining them is still a fraught proposition. In a typical web server project, dependencies that use async features form an intricate web which is hard to decipher for both new and seasoned Rust developers. Alan picked Tide and reqwest, only to realise later that they are not compatible. How many more situations like this will he face? Can Alan be confident that it won't happen again? New users especially are not accustomed to having to think about what "runtime" they are using, since there is usually not a choice in the matter.
    • +
    • The situation is so complex that it's not enough knowing that all dependencies use the same runtime. They all have to actually be compatible with the same runtime and version. Newer versions of reqwest are incompatible with the latest stable version of actix web (verified at the time of writing)
    • +
    • Developers that need a stable environment may be fearful of the complexity that comes with managing async dependencies in Rust. For example, if reqwest had a security or bug fix in one of the latest versions that's not backported to older ones, Alan would not be able to upgrade because actix web is holding him back. He has in fact to wait until ALL dependencies are using the same runtime to apply fixes and upgrades.
    • +
    +

    What are the sources for this story?

    +

    Personal experience of the author.

    +

    Why did you choose Alan to tell this story?

    +

    As a web developer in GC languages, Alan writes async code every day. A language without stable async features is not an option.

    +

    How would this story have played out differently for the other characters?

    +

    Learning what async means and what it entails in a codebase is usually hard enough. Niklaus would struggle to learn all that while at the same time dealing with the many gotchas that can happen when building a project with a lot of dependencies.

    +

    Barbara may be more tolerant with the setup since she probably knows the rationale behind keeping Rust's standard library lean and the need for external async runtimes.

    +

    How would this story have played out differently if Alan came from another GC'd language?

    +

    Like the trust story, it would be very close, since all other languages (that I know of) provide async runtimes out of the box and it's not something the programmer needs to concern themselves with.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_runs_into_stack_trouble.html b/docs/vision/status_quo/alan_runs_into_stack_trouble.html new file mode 100644 index 00000000..82a2b747 --- /dev/null +++ b/docs/vision/status_quo/alan_runs_into_stack_trouble.html @@ -0,0 +1,285 @@ + + + + + + Alan runs into stack trouble - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan runs into stack allocation trouble

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The problem

    +

    One day, as Alan is working on his async Rust project, he runs his application and hits an error:

    +
    $ .\target\debug\application.exe
    +thread 'main' has overflowed its stack
    +
    +

    Perplexed, Alan sees if anything with his application works by seeing if he can get output when the --help flag is passed, but he has no luck:

    +
    $ .\target\debug\application.exe --help
    +thread 'main' has overflowed its stack
    +
    +

    Searching for the solution

    +

    Having really only ever seen stack overflow issues caused by recursive functions, Alan desperately tries to find the source of the bug but searching through the codebase for recursive functions only to find none. Having learned that Rust favors stack allocation over heap allocation (a concept Alan didn't really need to worry about before), he started manually looking through his code, searching for structs that looked "too large"; he wasn't able to find any candidates.

    +

    Confused, Alan reached out to Grace for her advice. She suggested making the stack size larger. Although she wasn't a Windows expert, she remembers hearing that stack sizes on Windows might be smaller than on Linux. After much searching, Alan discovers an option do just that: RUSTFLAGS = "-C link-args=-Wl,-zstack-size=<size in bytes>".

    +

    While eventually Alan gets the program to run, the stack size must be set to 4GB before it does! This seems untenable, and Alan goes back to the drawing board.

    +

    Alan reaches out to Barbara for her expertise in Rust to see if she has something to suggest. Barbara recommends using RUSTFLAGS = "-Zprint-type-sizes to print some type sizes and see if anything jumps out. Barbara noted that if Alan does find a type that stands out, it's usually as easy as putting some boxes in that type to provide some indirection and not have everything be stack allocated. Alan never needs the nightly toolchain, but this option requires it so he installs it using rustup. After searching through types, one did stand out as being quite large. Ultimately, this was a red herring, and putting parts of it in Boxes did not help.

    +

    Finding the solution

    +

    After getting no where, Alan went home for the weekend defeated. On Monday, he decided to take another look. One piece of code, stuck out to him: the use of the select! macro from the futures crate. This macro allowed multiple futures to race against each other, returning the value of the first one to finish. This macro required the futures to be pinned which the docs had shown could be done by using pin_mut!. Alan didn't fully grasp what pin_mut! was actually doing when he wrote that code. The compiler had complained to him that the futures he was passing to select! needed to be pinned, and pin_mut! was what he found to make the compiler happy.

    +

    Looking back at the documents made it clear to Alan that this could potentially be the issue: pin_mut! pins futures to the stack. It was relatively clear that a possible solution would be to pin to the heap instead of the stack. Some more digging in the docs lead Alan to Box::pin which did just that. An extra heap allocation was of no consequence to him, so he gave it a try. Lo and behold, this fixed the issue!

    +

    While Alan knew enough about pinning to know how to satisfy the compiler, he didn't originally take the time to fully understand what the consequences were of using pin_mut! to pin his futures. Now he knows!

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • When coming from a background of GCed languages, taking the time to understand the allocation profile of a particular piece of code is not something Alan was used to doing.
    • +
    • It was hard to tell where in his code the stack was being exhausted. Alan had to rely on manually combing his code to find the culprit.
    • +
    • Pinning is relatively confusing, and although the code compiled, Alan didn't fully understand what he wrote and what consequences his decision to use pin_mut! would have.
    • +
    +

    What are the sources for this story?

    +

    This story is adapted from the experiences of the team working on the Krustlet project. You can read about this story in their own words here.

    +

    Why did you choose Alan to tell this story?

    +
      +
    • The programmers this story was based on have an experience mostly in Go, a GCed language.
    • +
    • The story is rooted in the explicit choice of using stack vs heap allocation, a choice that in GCed languages is not in the hands of the programmer.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • Grace would have likely had a similar hard time with this bug. While she's used to the tradeoffs of stack vs heap allocations, the analogy to the Pin API is not present in languages she's used to.
    • +
    • Barbara, as an expert in Rust, may have had the tools to understand that pin_mut is used for pinning to the stack while Box::pin is for pinning heap allocations.
    • +
    • This problem is somewhat subtle, so someone like Niklaus would probably have had a much harder time figuring this out (or even getting the code to compile in the first place).
    • +
    +

    Could Alan have used another API to achieve the same objectives?

    +

    Perhaps! Tokio's select! macro doesn't require explicit pinning of the futures it's provided, but it's unclear to this author whether it would have been smart enough to avoid pinning large futures to the stack. However, pinning is a part of the way one uses futures in Rust, so it's possible that such an issue would have arisen elsewhere.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html b/docs/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html new file mode 100644 index 00000000..23207651 --- /dev/null +++ b/docs/vision/status_quo/alan_started_trusting_the_rust_compiler_but_then_async.html @@ -0,0 +1,337 @@ + + + + + + Alan started trusting the Rust compiler, but then... async - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan started trusting the Rust compiler, but then... async

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    Trust the compiler

    +

    Alan has a lot of experience in C#, but in the meantime has created some successful projects in Rust. +He has dealt with his fair share of race conditions/thread safety issues during runtime in C#, but is now starting to trust that if his Rust code compiles, +he won't have those annoying runtime problems to deal with.

    +

    This allows him to try to squeeze his programs for as much performance as he wants, because the compiler will stop him when he tries things that could result in runtime problems. +After seeing the performance and the lack of runtime problems, he starts to trust the compiler more and more with each project finished.

    +

    He knows what he can do with external libraries, he does not need to fear concurrency issues if the library cannot be used from multiple threads, because the compiler would tell him.

    +

    His trust in the compiler solidifies further the more he codes in Rust.

    +

    The first async project

    +

    Alan now starts with his first async project. He sees that there is no async in the standard library, but after googling for "rust async file open", he finds 'async_std', a crate that provides some async versions of the standard library functions. +He has some code written that asynchronously interacts with some files:

    +
    use async_std::fs::File;
    +use async_std::prelude::*;
    +
    +fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt").await?;
    +    file.write_all(b"Hello, world!").await?;
    +    Ok(())
    +}
    +
    +

    But now the compiler complains that await is only allowed in async functions. He now notices that all the examples use #[async_std::main] +as an attribute on the main function in order to be able to turn it into an async main, so he does the same to get his code compiling:

    +
    use async_std::fs::File;
    +use async_std::prelude::*;
    +
    +#[async_std::main]
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt").await?;
    +    file.write_all(b"Hello, world!").await?;
    +
    +    Ok(())
    +}
    +
    +

    This aligns with what he knows from C#, where you also change the entry point of the program to be async, in order to use await. +Everything is great now, the compiler is happy, so no runtime problems, so Alan is happy.

    +

    The project is working like a charm.

    +

    Fractured futures, fractured trust

    +

    The project Alan is building is starting to grow, and he decides to add a new feature that needs to make some API calls. He starts using reqwest in order to help him achieve this task. +After a lot of refactoring to make the compiler accept the program again, Alan is satisfied that his refactoring is done. +His program now boils down to:

    +
    use async_std::fs::File;
    +use async_std::prelude::*;
    +
    +#[async_std::main]
    +async fn main() -> Result<(), Box<dyn std::error::Error>> {
    +    let mut file = File::create("a.txt").await?;
    +    file.write_all(b"Hello, world!").await?;
    +
    +    let body = reqwest::get("https://www.rust-lang.org")
    +        .await?
    +        .text()
    +        .await?;
    +    println!("{}", body);
    +
    +    Ok(())
    +}
    +
    +

    He runs his project but is suddenly greeted with a runtime error. He is quite surprised. "How is this even possible?", he thinks. "I don't have any out-of-bounds accesses, and I never use .unwrap or .expect." +At the top of the error message he sees: thread 'main' panicked at 'there is no reactor running, must be called from the context of a Tokio 1.x runtime'

    +

    He searches what "Tokio" is in Rust, and he finds that it also provides an attribute to put on main, namely [tokio::main], but what is the difference with [async_std::main]? His curiosity leads him to watch videos/read blogs/scour reddit,... on why there are multiple runtimes in Rust. This leads him into a rabbit hole and now he learns about Executors, Wakers, Pin,... He has a basic grasp of what they are, but does not have a good understanding of them or how they all fit together exactly. These are all things he had not need to know nor heed in C#. (Note: there is another story about troubles/confusion that might arise when learning all these things about async: Alan hates writing a Stream)

    +

    He does understand the current problems and why there is no one-size-fits-all executor (yet). Trying to get his async Rust code to work, he broadened his knowledge about what async code actually is, he gains another way to reason about asynchronous code, not only in Rust, but also more generally.

    +

    But now he realizes that there is a whole new area of runtime problems that he did not have to deal with in C#, but he does in Rust. +Can he even trust the Rust compiler anymore? What other kinds of runtime problems can occur in Rust that can't in C#? +If his projects keep increasing in complexity, will other new kinds of runtime problems keep popping up? Maybe it's better to stick with C#, since Alan +already knows all the runtime problems you can have over there.

    +

    The Spider-Man effect

    +

    Do you recall in Spider-Man, that after getting bitten by the radioactive spider, Peter first gets ill before he gains his powers? Well, imagine instead of being bitten by a radioactive spider, he was bitten by an async-rust spider...

    +

    In his work, Alan sees an async call to a C# wrapper around SQLite, his equivalent of a spider-sense (async-sense?) starts tingling. Now knowing from Rust the complexities that arise when trying to create asynchronicity, what kind of complex mechanisms are at play here to enable these async calls from C# that end up in the C/C++ of SQLite?

    +

    He quickly discovers that there are no complex mechanism at all! It's actually just a synchronous call all the way down, with just some extra overhead from wrapping it into an asynchronous function. There are no points where the async function will yield. He transforms all these asynchronous calls to their synchronous counterparts, and sees a slight improvement in performance. Alan is happy, product management is happy, customers are happy!

    +

    Over the next few months, he often takes a few seconds to reflect about why certain parts of the code are async, if they should be, or how other parts of the code might benefit from being async and if it's possible to make them async. He also uses what he learned from async Rust in his C# code reviews to find similar problems or general issues (With great power...). He even spots some lifetime bugs w.r.t. asynchronous code in C#, imagine that.

    +

    His team recognizes that Alan has a pretty good grasp about what async is really about, and he is unofficially crowned the "async guru" of the team.

    +

    Even though this spider-man might have gotten "ill" (his negative experience with async Rust), he has now become the superhero he was meant to be!

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Async I/O includes a new set of runtime errors and misbehaviors that the compiler can't help you find. These include cases like executing blocking operations +in an async context but also mixing runtime libraries (something users may not even realize is a factor).
    • +
    • Rust users get used to the compiler giving them error messages for runtime problems but also helping them to fix them. Pushing error messages to runtimes +feels surprising and erodes some of their confidence in Rust.
    • +
    • The "cliff" in learning about async is very steep -- at first everything seems simple and similar to other languages, then suddenly you are thrown into a lot of information. It's hard to know what's important and what is not. But, at the same time, dipping your toes into async Rust can broaden the understanding a programmer has of asynchronous coding, which can help them even in other languages than Rust.
    • +
    +

    What are the sources for this story?

    +

    Personal experience of the author.

    +

    Why did you choose Alan to tell this story?

    +

    With his experience in C#, Alan probably has experience with async code. Even though C# protects him from certain classes of errors, +he can still encounter other classes of errors, which the Rust compiler prevents.

    +

    How would this story have played out differently for the other characters?

    +

    For everyone except Barbara, I think these would play out pretty similarly, as this is a kind of problem unique to Rust. Since Barbara has a lot of Rust experience, +she would probably already be familiar with this aspect.

    +

    How would this story have played out differently if Alan came from another GC'd language?

    +

    It would be very close, since all other languages (that I know of) provide async runtimes out of the box and it's not something the programmer needs to concern themselves with.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_thinks_he_needs_async_locks.html b/docs/vision/status_quo/alan_thinks_he_needs_async_locks.html new file mode 100644 index 00000000..f3d26f8e --- /dev/null +++ b/docs/vision/status_quo/alan_thinks_he_needs_async_locks.html @@ -0,0 +1,345 @@ + + + + + + Alan thinks he needs async locks - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan thinks he needs async locks

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    One of Alan's first Rust related tasks in his job at YouBuy is writing an HTTP based service. This service is a simple internal proxy router that inspects an incoming HTTP request and picks the downstream service to call based on certain aspects of the HTTP request.

    +

    Alan decides that he'll simply use some shared state that request handlers can read from in order to decide how to proxy the request.

    +

    Alan, having read the Rust book and successfully completed the challenge in the last chapters, knows that shared state can be achieved in Rust with reference counting (using std::sync::Arc) and locks (using std::sync::Mutex). Alan starts by throwing his shared state (a std::collections::HashMap<String, url::Url>) into an Arc<Mutex<T>>.

    +

    Alan, smitten with how quickly he can write Rust code, ends up with some code that compiles that looks roughly like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +#[derive(Clone)]
    +struct Proxy {
    +   routes: Arc<Mutex<HashMap<String, String>>,
    +}
    +
    +impl Proxy {
    +  async fn handle(&self, key: String, request: Request) -> crate::Result<Response> {
    +      let routes = self.state.lock().unwrap();
    +      let route = routes.get(key).unwrap_or_else(crate::error::MissingRoute)?;
    +      Ok(self.client.perform_request(route, request).await?)
    +  }
    +}
    +}
    +
    +

    Alan is happy that his code seems to be compiling! The short but hard learning curve has been worth it. He's having fun now!

    +

    Unfortunately, Alan's happiness soon comes to end as he starts integrating his request handler into calls to tokio::spawn which he knows will allow him to manage multiple requests at a time. The error message is somewhat cryptic, but Alan is confident he'll be able to figure it out:

    +
    189 |     tokio::spawn(async {
    +    |     ^^^^^^^^^^^^ future created by async block is not `Send`
    +::: /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.5.0/src/task/spawn.rs:129:21
    +    |
    +129 |         T: Future + Send + 'static,
    +    |                     ---- required by this bound in `tokio::spawn`
    +
    +note: future is not `Send` as this value is used across an await
    +   --> src/handler.rs:787:9
    +      |
    +786   |         let routes = self.state.lock().unwrap();
    +      |             - has type `std::sync::MutexGuard<'_, HashMap<String, Url>>` which is not `Send`
    +787   |         Ok(self.client.perform_request(route, request).await?)
    +      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ await occurs here, with `routes` maybe used later
    +788   |     })
    +      |     - `routes` is later dropped here
    +
    +

    Alan stops and takes a deep breath. He tries his best to make sense of the error message. He sort of understands the issue the compiler is telling him. Apparently routes is not marked as Send, and because it is still alive over a call to await, it is making the future his handler returns not Send. And tokio's spawn function seems to require that the future it received be Send.

    +

    Alan reaches the boundaries of his knowledge of Rust, so he reaches out over chat to ask his co-worker Barbara for help. Not wanting to bother her, Alan provides the context he's already figured out for himself.

    +

    Barbara knows that mutex guards are not Send because sending mutex guards to different threads is not a good idea. She suggests looking into async locks which can be held across await points because they are Send. Alan looks into the tokio documentation for more info and is easily able to move the use of the standard library's mutex to tokio's mutex. It compiles!

    +

    Alan ships his code and it gets a lot of usage. After a while, Alan notices some potential performance issues. It seems his proxy handler does not have the throughput he would expect. Barbara, having newly joined his team, sits down with him to take a look at potential issues. Barbara is immediately worried by the fact that the lock is being held much longer than it needs to be. The lock only needs to be held while accessing the route and not during the entire duration of the downstream request.

    +

    She suggests to Alan to switch to not holding the lock across the I/O operations. Alan first tries to do this by explicitly cloning the url and dropping the lock before the proxy request is made:

    +
    
    +#![allow(unused)]
    +fn main() {
    +impl Proxy {
    +  async fn handle(&self, key: String, request: Request) -> crate::Result<Response> {
    +      let routes = self.state.lock().unwrap();
    +      let route = routes.get(key).unwrap_or_else(crate::error::MissingRoute)?.clone();
    +      drop(routes);
    +      Ok(self.client.perform_request(route, request).await?)
    +  }
    +}
    +}
    +
    +

    This compiles fine and works in testing! After shipping to production, they notice a large increase in throughput. It seems their change made a big difference. Alan is really excited about Rust, and wants to write more!

    +

    Alan continues his journey of learning even more about async Rust. After some enlightening talks at the latest RustConf, he decides to revisit the code that he and Barbara wrote together. He asks himself, is using an async lock the right thing to do? This lock should only be held for a very short amount of time. Yielding to the runtime is likely more expensive than just synchronously locking. But he remembers vaguely hearing that you should never use blocking code in async code as this will block the entire async executor from being able to make progress, so he doubts his intuition.

    +

    After chatting with Barbara, who encourages him to benchmark and measure, he decides to switch back to synchronous locks.

    +

    Unfortunately, switching back to synchronous locks brings back the old compiler error message about his future not being Send. Alan is confused as he's dropping the mutex guard before it ever crosses an await point.

    +

    Confused Alan goes to Barbara for advice. She is also confused, and it takes several minutes of exploration before she comes to a solution that works: wrapping the mutex access in a block and implicitly dropping the mutex.

    +
    
    +#![allow(unused)]
    +fn main() {
    +impl Proxy {
    +  async fn handle(&self, key: String, request: Request) -> crate::Result<Response> {
    +      let route = {
    +        let routes = self.state.lock().unwrap();
    +        routes.get(key).unwrap_or_else(crate::error::MissingRoute)?.clone()
    +      };
    +      Ok(self.client.perform_request(route, request).await?)
    +  }
    +}
    +}
    +
    +

    Barbara mentions she's unsure why explicitly dropping the mutex guard did not work, but they're both happy that the code compiles. In fact it seems to have improved the performance of the service when its under extreme load. Alan's intuition was right!

    +

    In the end, Barbara decides to write a blog post about how blocking in async code isn't always such a bad idea.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
    * Locks can be quite common in async code as many tasks might need to mutate some shared state.
    +* Error messages can be fairly good, but they still require a decent understanding of Rust (e.g., `Send`, `MutexGuard`, drop semantics) to fully understand what's going on.
    +* This can lead to needing to use certain patterns (like dropping mutex guards early) in order to get code working.
    +* The advice to never block in async code is not always true: if blocking is short enough, is it even blocking at all?
    +
    +

    What are the sources for this story?

    +
    * Chats with [Alice](https://github.com/Darksonn) and [Lucio](https://github.com/LucioFranco).
    +* Alice's [blog post](https://ryhl.io/blog/async-what-is-blocking/) on the subject has some good insights.
    +* The issue of conservative analysis of whether values are used across await points causing futures to be `!Send` is [known](https://rust-lang.github.io/async-book/07_workarounds/03_send_approximation.html), but it takes some digging to find out about this issue. A tracking issue for this can be [found here](https://github.com/rust-lang/rust/issues/57478).
    +
    +

    Why did you choose Alan to tell this story?

    +
    * While Barbara might be tripped up on some of the subtlties, an experienced Rust developer can usually tell how to avoid some of the issues of using locks in async code. Alan on the other hand, might be surprised when his code does not compile as the issue the `Send` error is protecting against (i.e., a mutex guard being moved to another thread) is not protected against in other languages.
    +
    +

    How would this story have played out differently for the other characters?

    +
    * Grace would have likely had a similar time to Alan. These problems are not necessarily issues you would run into in other languages in the same way.
    +* Niklaus may have been completely lost. This stuff requires a decent understanding of Rust and of async computational systems.
    +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_tries_a_socket_sink.html b/docs/vision/status_quo/alan_tries_a_socket_sink.html new file mode 100644 index 00000000..439347cc --- /dev/null +++ b/docs/vision/status_quo/alan_tries_a_socket_sink.html @@ -0,0 +1,372 @@ + + + + + + Alan tries using a socket Sink - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan tries using a socket Sink

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Alan is working on a project that uses async-std. He has worked a bit with tokio in the past and is more familiar with that, but he is interested to learn something how things work in async-std.

    +

    One of the goals is to switch from a WebSocket implementation using raw TCP sockets to one managed behind an HTTP server library, so both HTTP and WebSocket RPC calls can be forwarded to a transport-agnostic RPC server.

    +

    In this server implementation:

    +
      +
    • RPC call strings can be received over a WebSocket
    • +
    • The strings are decoded and sent to an RPC router that calls the methods specified in the RPC call
    • +
    • Some of the methods that are called can take some time to return a result, so they are spawned separately +
        +
      • RPC has built-in properties to organize call IDs and methods, so results can be sent in any order
      • +
      +
    • +
    • Since WebSockets are bidirectional streams (duplex sockets), the response is sent back through the same client socket
    • +
    +

    He finds the HTTP server tide and it seems fairly similar to warp, which he was using with tokio. He also finds the WebSocket middleware library tide-websockets that goes with it.

    +

    However, as he's working, Alan encounters a situation where the socket needs to be written to within an async thread, and the traits just aren't working. He wants to split the stream into a sender and receiver:

    +
    
    +#![allow(unused)]
    +fn main() {
    +use futures::{SinkExt, StreamExt};
    +use async_std::sync::{Arc, Mutex};
    +use log::{debug, info, warn};
    +
    +async fn rpc_ws_handler(ws_stream: WebSocketConnection) {
    +    let (ws_sender, mut ws_receiver) = ws_stream.split();
    +    let ws_sender = Arc::new(Mutex::new(ws_sender));
    +
    +    while let Some(msg) = ws_receiver.next().await {
    +        debug!("Received new WS RPC message: {:?}", msg);
    +
    +        let ws_sender = ws_sender.clone();
    +
    +        async_std::task::spawn(async move {
    +            let res = call_rpc(msg).await?;
    +
    +            match ws_sender.lock().await.send_string(res).await {
    +                Ok(_) => info!("New WS data sent."),
    +                Err(_) => warn!("WS connection closed."),
    +            };
    +        });
    +    }
    +}
    +}
    +
    +

    The split method splits the ws_stream into two separate halves:

    +
      +
    • a producer (ws_sender) that implements a Stream with the messages arriving on the websocket;
    • +
    • a consumer (ws_receiver) that implements Sink, which can be used to send responses.
    • +
    +

    This way, one task can pull items from the ws_sender and spawn out subtasks. Those subtasks share access to the ws_receiver and send messages there when they're done. Unfortunately, Alan finds that he can't use this pattern here, as the Sink trait wasn't implemented in the WebSockets middleware library he's using.

    +

    Alan also tries creating a sort of poller worker thread using an intermediary messaging channel, but he has trouble reasoning about the code and wasn't able to get it to compile:

    +
    
    +#![allow(unused)]
    +fn main() {
    +use async_std::channel;
    +use async_std::sync::{Arc, Mutex};
    +use log::{debug, info, warn};
    +
    +async fn rpc_ws_handler(ws_stream: WebSocketConnection) {
    +    let (ws_sender, mut ws_receiver) = channel::unbounded::<String>();
    +    let ws_receiver = Arc::new(ws_receiver);
    +
    +    let ws_stream = Arc::new(Mutex::new(ws_stream));
    +    let poller_ws_stream = ws_stream.clone();
    +
    +    async_std::task::spawn(async move {
    +        while let Some(msg) = ws_receiver.next().await {
    +            match poller_ws_stream.lock().await.send_string(msg).await {
    +                Ok(msg) => info!("New WS data sent. {:?}", msg),
    +                Err(msg) => warn!("WS connection closed. {:?}", msg),
    +            };
    +        }
    +    });
    +
    +    while let Some(msg) = ws_stream.lock().await.next().await {
    +        async_std::task::spawn(async move {
    +            let res = call_rpc(msg).await?;
    +            ws_sender.send(res);
    +        });
    +    }
    +}
    +}
    +
    +

    Alan wonders if he's thinking about it wrong, but the solution isn't as obvious as his earlier Sink approach. Looking around, he realizes a solution to his problems already exists-- as others have been in his shoes before-- within two other nearly-identical pull requests, but they were both closed by the project maintainers. He tries opening a third one with the same code, pointing to an example where it was actually found to be useful. To his joy, his original approach works with the code in the closed pull requests in his local copy! Alan's branch is able to compile for the first time.

    +

    However, almost immediately, his request is closed with a comment suggesting that he try to create an intermediate polling task instead, much as he was trying before. Alan is feeling frustrated. "I already tried that approach," he thinks, "and it doesn't work!"

    +

    As a result of his frustration, Alan calls out one developer of the project on social media. He knows this developer is opposed to the Sink traits. Alan's message is not well-received: the maintainer sends a short response and Alan feels dismissed. Alan later finds out he was blocked. A co-maintainer responds to the thread, defending and supporting the other maintainer's actions, and suggests that Alan "get over it". Alan is given a link to a blog post. The post provides a number of criticisms of Sink but, after reading it, Alan isn't sure what he should do instead.

    +

    Because of this heated exchange, Alan grows concerned for his own career, what these well-known community members might think or say about his to others, and his confidence in the community surrounding this language that he really enjoys using is somewhat shaken.

    +

    Despite this, Alan takes a walk, gathers his determination, and commits to maintaining his fork with the changes from the other pull requests that were shut down. He publishes his version to crates.io, vowing to be more welcoming to "misfit" pull requests like the one he needed.

    +

    A few weeks later, Alan's work at his project at work is merged with his new forked crate. It's a big deal, his first professional open source contribution to a Rust project! Still, he doesn't feel like he has a sense of closure with the community. Meanwhile, his friends say they want to try Rust, but they're worried about its async execution issues, and he doesn't know what else to say, other than to offer a sense of understanding. Maybe the situation will get better someday, he hopes.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • There are often many sources of opinion in the community regarding futures and async, but these opinions aren't always backed up with examples of how it should be better accomplished. Sometimes we just find a thing that works and would prefer to stick with it, but others argue that some traits make implementations unnecessarily complex, and choose to leave it out. Disagreements like these in the ecosystem can be harmful to the reputation of the project and the participants.
    • +
    • If there's a source of substantial disagreement, the community becomes even further fragmented, and this may cause additional confusion in newcomers.
    • +
    • Alan is used to fragmentation from the communities he comes from, so this isn't too discouraging, but what's difficult is that there's enough functionality overlap in async libraries that it's tempting to get them to interop with each other as-needed, and this can lead to architectural challenges resulting from a difference in design philosophies.
    • +
    • It's also unclear if Futures are core to the Rust asynchronous experience, much as Promises are in JavaScript, or if the situation is actually more complex.
    • +
    • The Sink trait is complex but it solves a real problem, and the workarounds required to solve problems without it can be unsatisfactory.
    • +
    • Disagreement about core abstractions like Sink can make interoperability between runtimes more difficult; it also makes it harder for people to reproduce patterns they are used to from one runtime to another.
    • +
    • It is all too easy for technical discussions like this to become heated; it's important for all participants to try and provide each other with the "benefit of the doubt".
    • +
    +

    What are the sources for this story?

    + +

    Why did you choose Alan to tell this story?

    +
      +
    • Alan is more representative of the original author's background in JS, TypeScript, and NodeJS.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • (I'm not sure.)
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_tries_to_debug_a_hang.html b/docs/vision/status_quo/alan_tries_to_debug_a_hang.html new file mode 100644 index 00000000..74ef7d2e --- /dev/null +++ b/docs/vision/status_quo/alan_tries_to_debug_a_hang.html @@ -0,0 +1,353 @@ + + + + + + Alan tries to debug a hang - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan tries to debug a hang

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Alan's startup has officially launched and YouBuy is live for the world to use. +The whole team is very excited especially as this will be their first use of Rust in production! +Normally, as a .NET shop, they would have written the entire application in C#, but because of the scalability and latency requirements on their inventory service, they decided to write a microservice in Rust utilizing the async features they've heard so much about.

    +

    The day's excitement soon turns into concern as reports begin coming into support of customers who can't checkout. +After a few cases, a pattern begins to emerge: when a customer tries to buy the last available item, the checkout process hangs forever.

    +

    Alan suspects there is an issue with the lock used in the inventory service to prevent multiple people from buying the last available item at the same time. +With this hunch, he builds the latest code and opens this local dev environment to conduct some tests. +Soon enough, Alan has a repro of the bug.

    +

    With the broken environment still running, he decides to use a debugger to see if he can confirm his theory. +In the past, Alan has used Visual Studio's debugger to diagnose a very similar issue in a C# application he wrote. +The debugger was able to show him all the async Tasks currently waiting, their call stacks and what resource they were waiting on.

    +

    Alan hasn't used a debugger with Rust before, usually a combination of the strict compiler and a bit of manual testing has been enough to fix all the bugs he's previously encountered. +He does a quick Google search to see what debugger he should use and decides to go with gdb because it is already installed on his system and sounds like it should work. +Alan also pulls up a blog post that has a helpful cheatsheet of gdb commands since he's not familiar with the debugger.

    +

    Alan restarts the inventory service under gdb and gets to work reproducing the issue. +He reproduces the issue a few times in the hope of making it easier to identify the cause of the problem. +Ready to pinpoint the issue, Alan presses Ctrl+C and then types bt to get a backtrace:

    +
    (gdb) bt +
    (gdb) bt
    +#0  0x00007ffff7d5e58a in epoll_wait (epfd=3, events=0x555555711340, maxevents=1024, timeout=49152)
    +    at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
    +#1  0x000055555564cf7d in mio::sys::unix::selector::epoll::Selector::select (self=0x7fffffffd008, events=0x7fffffffba40, 
    +    timeout=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/mio-0.7.11/src/sys/unix/selector/epoll.rs:68
    +#2  0x000055555564a82f in mio::poll::Poll::poll (self=0x7fffffffd008, events=0x7fffffffba40, timeout=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/mio-0.7.11/src/poll.rs:314
    +#3  0x000055555559ad96 in tokio::io::driver::Driver::turn (self=0x7fffffffce28, max_wait=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/io/driver/mod.rs:162
    +#4  0x000055555559b8da in <tokio::io::driver::Driver as tokio::park::Park>::park_timeout (self=0x7fffffffce28, duration=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/io/driver/mod.rs:238
    +#5  0x00005555555e9909 in <tokio::signal::unix::driver::Driver as tokio::park::Park>::park_timeout (self=0x7fffffffce28, 
    +    duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/signal/unix/driver.rs:156
    +#6  0x00005555555a9229 in <tokio::process::imp::driver::Driver as tokio::park::Park>::park_timeout (self=0x7fffffffce28, 
    +    duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/process/unix/driver.rs:84
    +#7  0x00005555555a898d in <tokio::park::either::Either<A,B> as tokio::park::Park>::park_timeout (self=0x7fffffffce20, 
    +    duration=...) at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/park/either.rs:37
    +#8  0x00005555555ce0b8 in tokio::time::driver::Driver<P>::park_internal (self=0x7fffffffcdf8, limit=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/time/driver/mod.rs:226
    +#9  0x00005555555cee60 in <tokio::time::driver::Driver<P> as tokio::park::Park>::park (self=0x7fffffffcdf8)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/time/driver/mod.rs:398
    +#10 0x00005555555a87bb in <tokio::park::either::Either<A,B> as tokio::park::Park>::park (self=0x7fffffffcdf0)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/park/either.rs:30
    +#11 0x000055555559ce47 in <tokio::runtime::driver::Driver as tokio::park::Park>::park (self=0x7fffffffcdf0)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/driver.rs:198
    +#12 0x000055555557a2f7 in tokio::runtime::basic_scheduler::Inner<P>::block_on::{{closure}} (scheduler=0x7fffffffcdb8, 
    +    context=0x7fffffffcaf0)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:224
    +#13 0x000055555557b1b4 in tokio::runtime::basic_scheduler::enter::{{closure}} ()
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:279
    +#14 0x000055555558174a in tokio::macros::scoped_tls::ScopedKey<T>::set (
    +    self=0x555555701af8 <tokio::runtime::basic_scheduler::CURRENT>, t=0x7fffffffcaf0, f=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/macros/scoped_tls.rs:61
    +#15 0x000055555557b0b6 in tokio::runtime::basic_scheduler::enter (scheduler=0x7fffffffcdb8, f=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:279
    +#16 0x0000555555579d3b in tokio::runtime::basic_scheduler::Inner<P>::block_on (self=0x7fffffffcdb8, future=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:185
    +#17 0x000055555557a755 in tokio::runtime::basic_scheduler::InnerGuard<P>::block_on (self=0x7fffffffcdb8, future=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:425
    +#18 0x000055555557aa9c in tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on (self=0x7fffffffd300, future=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/basic_scheduler.rs:145
    +#19 0x0000555555582094 in tokio::runtime::Runtime::block_on (self=0x7fffffffd2f8, future=...)
    +    at /home/alan/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.4.0/src/runtime/mod.rs:450
    +#20 0x000055555557c22f in inventory_service::main () at /home/alan/code/inventory_service/src/main.rs:4
    +
    +
    +

    Puzzled, the only line Alan even recognizes is the main entry point function for the service. +He knows that async tasks in Rust aren't run individually on their own threads which allows them to scale better and use fewer resources but surely there has to be a thread somewhere that's running his code? +Alan doesn't completely understand how async works in Rust but he's seen the Future::poll method so he assumes that there is a thread which constantly polls tasks to see if they are ready to wake up. +"Maybe I can find that thread and inspect its state?" he thinks and then consults the cheatsheet for the appropriate command to see the threads in the program. +info threads seems promising so he tries that:

    +
    (gdb) info threads +
    (gdb) info threads
    +  Id   Target Id                                          Frame 
    +* 1    Thread 0x7ffff7c3b5c0 (LWP 1048) "inventory_servi" 0x00007ffff7d5e58a in epoll_wait (epfd=3, events=0x555555711340, 
    +    maxevents=1024, timeout=49152) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
    +
    +
    +

    Alan is now even more confused: "Where are my tasks?" he thinks. +After looking through the cheatsheet and StackOverflow, he discovers there isn't a way to see which async tasks are waiting to be woken up in the debugger. +Taking a shot in the dark, Alan concludes that this thread must be thread which is polling his tasks since it is the only one in the program. +He googles "epoll_wait rust async tasks" but the results aren't very helpful and inspecting the stack frame doesn't yield him any clues as to where his tasks are so this seems to be a dead end.

    +

    After thinking a bit, Alan realizes that since the runtime must know what tasks are waiting to be woken up, perhaps he can have the service ask the async runtime for that list of tasks every 10 seconds and print them to stdout? +While crude, this would probably also help him diagnose the hang. +Alan gets to work and opens the runtime docs to figure out how to get that list of tasks. +After spending 30 minutes reading the docs, looking at StackOverflow questions and even posting on users.rust-lang.org, he discovers this simply isn't possible and he will have to add tracing to his application to figure out what's going on.

    +

    Disgruntled, Alan begins the arduous, boring task of instrumenting the application in the hope that the logs will be able to help him.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Developers, especially coming from an language that has a tightly integrated development environment, expect their debugger to help them particularly in situations where "println" debugging can't.
    • +
    • If the debugger can't help them, developers will often try to reach for a programmatic solution such as debug functions in their runtime that can be invoked at critical code paths.
    • +
    • Trying to debug an issue by adding logging and then triggering the issue is painful because of the long turn-around times when modifying code, compiling and then repro'ing the issue.
    • +
    +

    What are the sources for this story?

    +
      +
    • @erickt's comments in #76, similar comments I've heard from other developers.
    • +
    +

    Why did you choose Alan to tell this story?

    +
      +
    • Coming from a background in managed languages where the IDE, debugger and runtime are tightly integrated, Alan would be used to using those tools to diagnose his issue.
    • +
    • Alan has also been a bit insulated from the underlying OS and expects the debugger to understand the language and runtime even if the OS doesn't have similar concepts such as async tasks.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • Some of the characters with either a background in Rust or a background in systems programming might know that Rust's async doesn't always map to an underlying system feature and so they might expect that gdb or lldb is unable to help them.
    • +
    • Barbara, the experienced Rust dev, might also have used a tracing/instrumentation library from the beginning and have that to fall back on rather than having to do the work to add it now.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/alan_writes_a_web_framework.html b/docs/vision/status_quo/alan_writes_a_web_framework.html new file mode 100644 index 00000000..765a3fab --- /dev/null +++ b/docs/vision/status_quo/alan_writes_a_web_framework.html @@ -0,0 +1,458 @@ + + + + + + Alan writes a web framework - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Alan writes a web framework

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    YouBuy is written using an async web framework that predates the stabilization of async function syntax. When Alan joins the company, it is using async functions for its business logic, but can't use them for request handlers because the framework doesn't support it yet. It requires the handler's return value to be Box<dyn Future<...>>. Because the web framework predates async function syntax, it requires you to take ownership of the request context (State) and return it alongside your response in the success/error cases. This means that even with async syntax, an http route handler in this web framework looks something like this (from the Gotham Diesel example):

    +
    
    +#![allow(unused)]
    +fn main() {
    +// For reference, the framework defines these type aliases.
    +pub type HandlerResult = Result<(State, Response<Body>), (State, HandlerError)>;
    +pub type HandlerFuture = dyn Future<Output = HandlerResult> + Send;
    +
    +fn get_products_handler(state: State) -> Pin<Box<HandlerFuture>> {
    +    use crate::schema::products::dsl::*;
    +
    +    async move {
    +        let repo = Repo::borrow_from(&state);
    +        let result = repo.run(move |conn| products.load::<Product>(&conn)).await;
    +        match result {
    +            Ok(prods) => {
    +                let body = serde_json::to_string(&prods).expect("Failed to serialize prods.");
    +                let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body);
    +                Ok((state, res))
    +            }
    +            Err(e) => Err((state, e.into())),
    +        }
    +    }
    +    .boxed()
    +}
    +}
    +
    +

    and then it is registered like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +    router_builder.get("/").to(get_products_handler);
    +}
    +
    +

    The handler code is forced to drift to the right a lot, because of the async block, and the lack of ability to use ? forces the use of a match block, which drifts even further to the right. This goes against what he has learned from his days writing go.

    +

    Rather than switching YouBuy to a different web framework, Alan decides to contribute to the web framework himself. After a bit of a slog and a bit of where-clause-soup, he manages to make the web framework capable of using an async fn as an http request handler. He does this by extending the router builder with a closure that boxes up the impl Future from the async fn and then passes that closure on to .to().

    +
    
    +#![allow(unused)]
    +fn main() {
    +    fn to_async<H, Fut>(self, handler: H)
    +    where
    +        Self: Sized,
    +        H: (FnOnce(State) -> Fut) + RefUnwindSafe + Copy + Send + Sync + 'static,
    +        Fut: Future<Output = HandlerResult> + Send + 'static,
    +    {
    +        self.to(move |s: State| handler(s).boxed())
    +    }
    +}
    +
    +

    The handler registration then becomes:

    +
    
    +#![allow(unused)]
    +fn main() {
    +    router_builder.get("/").to_async(get_products_handler);
    +}
    +
    +

    This allows him to strip out the async blocks in his handlers and use async fn instead.

    +
    
    +#![allow(unused)]
    +fn main() {
    +// Type the library again, in case you've forgotten:
    +pub type HandlerResult = Result<(State, Response<Body>), (State, HandlerError)>;
    +
    +async fn get_products_handler(state: State) -> HandlerResult {
    +    use crate::schema::products::dsl::*;
    +
    +    let repo = Repo::borrow_from(&state);
    +    let result = repo.run(move |conn| products.load::<Product>(&conn)).await;
    +    match result {
    +        Ok(prods) => {
    +            let body = serde_json::to_string(&prods).expect("Failed to serialize prods.");
    +            let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body);
    +            Ok((state, res))
    +        }
    +        Err(e) => Err((state, e.into())),
    +    }
    +}
    +}
    +
    +

    It's still not fantastically ergonomic though. Because the handler takes ownership of State and returns it in tuples in the result, Alan can't use the ? operator inside his http request handlers. If he tries to use ? in a handler, like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn get_products_handler(state: State) -> HandlerResult {
    +    use crate::schema::products::dsl::*;
    +
    +    let repo = Repo::borrow_from(&state);
    +    let prods = repo
    +        .run(move |conn| products.load::<Product>(&conn))
    +        .await?;
    +    let body = serde_json::to_string(&prods).expect("Failed to serialize prods.");
    +    let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body);
    +    Ok((state, res))
    +}
    +}
    +
    +

    then he receives:

    +
    error[E0277]: `?` couldn't convert the error to `(gotham::state::State, HandlerError)`
    +  --> examples/diesel/src/main.rs:84:15
    +   |
    +84 |         .await?;
    +   |               ^ the trait `From<diesel::result::Error>` is not implemented for `(gotham::state::State, HandlerError)`
    +   |
    +   = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    +   = note: required by `std::convert::From::from`
    +
    +

    Alan knows that the answer is to make another wrapper function, so that the handler can take an &mut reference to State for the lifetime of the future, like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn get_products_handler(state: &mut State) -> Result<Response<Body>, HandlerError> {
    +    use crate::schema::products::dsl::*;
    +
    +    let repo = Repo::borrow_from(&state);
    +    let prods = repo
    +        .run(move |conn| products.load::<Product>(&conn))
    +        .await?;
    +    let body = serde_json::to_string(&prods).expect("Failed to serialize prods.");
    +    let res = create_response(&state, StatusCode::OK, mime::APPLICATION_JSON, body);
    +    Ok(res)
    +}
    +}
    +
    +

    and then register it with:

    +
    
    +#![allow(unused)]
    +fn main() {
    +    route.get("/").to_async_borrowing(get_products_handler);
    +}
    +
    +

    but Alan can't work out how to express the type signature for the .to_async_borrowing() helper function. He submits his .to_async() pull-request upstream as-is, but it nags on his mind that he has been defeated.

    +

    Shortly afterwards, someone raises a bug about ?, and a few other web framework contributors try to get it to work, but they also get stuck. When Alan tries it, the compiler diagnostics keep sending him around in circles . He can work out how to express the lifetimes for a function that returns a Box<dyn Future + 'a> but not an impl Future because of how where clauses are expressed. Alan longs to be able to say "this function takes an async function as a callback" (fn register_handler(handler: impl async Fn(state: &mut State) -> Result<Response, Error>)) and have Rust elide the lifetimes for him, like how they are elided for async functions.

    +

    A month later, one of the contributors finds a forum comment by Barbara explaining how to express what Alan is after (using higher-order lifetimes and a helper trait). They implement this and merge it. The final .to_async_borrowing() implementation ends up looking like this (also from Gotham):

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub trait AsyncHandlerFn<'a> {
    +    type Res: IntoResponse + 'static;
    +    type Fut: std::future::Future<Output = Result<Self::Res, HandlerError>> + Send + 'a;
    +    fn call(self, arg: &'a mut State) -> Self::Fut;
    +}
    +
    +impl<'a, Fut, R, F> AsyncHandlerFn<'a> for F
    +where
    +    F: FnOnce(&'a mut State) -> Fut,
    +    R: IntoResponse + 'static,
    +    Fut: std::future::Future<Output = Result<R, HandlerError>> + Send + 'a,
    +{
    +    type Res = R;
    +    type Fut = Fut;
    +    fn call(self, state: &'a mut State) -> Fut {
    +        self(state)
    +    }
    +}
    +
    +pub trait HandlerMarker {
    +    fn call_and_wrap(self, state: State) -> Pin<Box<HandlerFuture>>;
    +}
    +
    +impl<F, R> HandlerMarker for F
    +where
    +    R: IntoResponse + 'static,
    +    for<'a> F: AsyncHandlerFn<'a, Res = R> + Send + 'static,
    +{
    +    fn call_and_wrap(self, mut state: State) -> Pin<Box<HandlerFuture>> {
    +        async move {
    +            let fut = self.call(&mut state);
    +            let result = fut.await;
    +            match result {
    +                Ok(data) => {
    +                    let response = data.into_response(&state);
    +                    Ok((state, response))
    +                }
    +                Err(err) => Err((state, err)),
    +            }
    +        }
    +        .boxed()
    +    }
    +}
    +
    +...
    +    fn to_async_borrowing<F>(self, handler: F)
    +    where
    +        Self: Sized,
    +        F: HandlerMarker + Copy + Send + Sync + RefUnwindSafe + 'static,
    +    {
    +        self.to(move |state: State| handler.call_and_wrap(state))
    +    }
    +}
    +
    +

    Alan is still not sure whether it can be simplified.

    +

    Later on, other developers on the project attempt to extend this approach to work with closures, but they encounter limitations in rustc that seem to make it not work (rust-lang/rust#70263).

    +

    When Alan sees another open source project struggling with the same issue, he notices that Barbara has helped them out as well. Alan wonders how many people in the community would be able to write .to_async_borrowing() without help.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Callback-based APIs with async callbacks are a bit fiddly, because of the impl Future return type forcing you to write where-clause-soup, but not insurmountable.
    • +
    • Callback-based APIs with async callbacks that borrow their arguments are almost impossible to write without help.
    • +
    +

    What are the sources for this story?

    + +

    Why did you choose Alan/YouBuy to tell this story?

    +
      +
    • Callback-based apis are a super-common way to interact with web frameworks. I'm not sure how common they are in other fields.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • I suspect that even many Barbara-shaped developers would struggle with this problem.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/barbara_anguishes_over_http.html b/docs/vision/status_quo/barbara_anguishes_over_http.html new file mode 100644 index 00000000..2469910a --- /dev/null +++ b/docs/vision/status_quo/barbara_anguishes_over_http.html @@ -0,0 +1,268 @@ + + + + + + Barbara anguishes over HTTP - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Barbara Anguishes Over HTTP

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect people's experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara is starting a new project, working together with Alan. They want to write a Rust library and as part of it they will need to make a few HTTP calls to various web services. While HTTP is part of the responsibilities of the library it is by no means the only thing the library will need to do.

    +

    As they are pair programming, they get the part of the library where HTTP will be involved and Alan asks Barbara, "OK, how do I make an HTTP request?".

    +

    As an experienced async Rust developer Barbara has been dreading this question from the start of the project. She's tempted to ask "How long do you have?", but she quickly gathers herself and starts to outline the various considerations. She starts with a relatively simple question: "Should we use an HTTP library with a sync interface or an async interface?".

    +

    Alan, who comes from a JavaScript background, remembers the transition from callbacks to async/await in that language. He assumes Rust is merely making its transition to async/await, and it will eventually be the always preferred choice. He hesitates and asks Barbara: "Isn't async/await always better?". Barbara, who can think of many scenarios where a blocking, sync interface would likely be better, weighs whether going done the rabbit-hole of async vs sync is the right way to spend their time. She decides instead to try to directly get at the question of whether they should use async for this particular project. She knows that bridging sync and async can be difficult, and so there's another question they need to answer first: "Are we going to expose a sync or an async interface to the users of our library?".

    +

    Alan, still confused about when using a sync interface is the right choice, replies as confident as he can: "Everybody wants to use async these days. Let's do that!". He braces for Barbara's answer as he's not even sure what he said is actually true.

    +

    Barbara replies, "If we expose an async API then we need to decide which async HTTP implementation we will use". As she finishes saying this, Barbara feels slightly uneasy. She knows that it is possible to use a sync HTTP library and expose it through an async API, but she fears totally confusing Alan and so decides to not mention this fact.

    +

    Barbara looks over at Alan and sees a blank stare on his face. She repeats the question: "So, which async HTTP implementation should we use?". Alan responds with the only thing that comes to his mind: "which one is the best?" to which Barbara responds "Well, it depends on which async runtime you're using".

    +

    Alan, feeling utterly dejected and hoping that the considerations will soon end tries a new route out of this conversation: "Can we allow the user of the library to decide?".

    +

    Barbara thinks to herself, "Oh boy, we could provide a trait that abstracts over the HTTP request and response and allow the user to provide the implementation for whatever HTTP library they want... BUT, if we ever need any additional functionality that an async runtime needs to expose - like async locks or async timers - we might be forced to pick an actual runtime implementation on behalf of the user... Perhaps, we can put the most popular runtime implementations behind feature flags and let the user chose that way... BUT what if we want to allow plugging in of different runtimes?"

    +

    Alan, having watched Barbara stare off into the distance for what felt like a half-hour, feels bad for his colleague. All he can think to himself is how Rust is so much more complicated that C#.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • What is a very mundane and simple decision in many other languages, picking an HTTP library, requires users to contemplate many different considerations.
    • +
    • There is no practical way to choose an HTTP library that will serve most of the ecosystem. Sync/Async, competing runtimes, etc. - someone will always be left out.
    • +
    • HTTP is a small implementation detail of this library, but it is a HUGE decision that will ultimately be the biggest factor in who can adopt their library.
    • +
    +

    What are the sources for this story?

    +

    Based on the author's personal experience of taking newcomers to Rust through the decision making process of picking an HTTP implementation for a library.

    +

    Why did you choose Barbara to tell this story?

    +

    Barbara knows all the considerations and their consequences. A less experienced Rust developer might just make a choice even if that choice isn't the right one for them.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/barbara_bridges_sync_and_async.html b/docs/vision/status_quo/barbara_bridges_sync_and_async.html new file mode 100644 index 00000000..c1a9e64b --- /dev/null +++ b/docs/vision/status_quo/barbara_bridges_sync_and_async.html @@ -0,0 +1,515 @@ + + + + + + Barbara Barbara bridges sync and async in perf.rust-lang.org - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Barbara bridges sync and async in perf.rust-lang.org

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara is working on the code for perf.rust-lang.org and she wants to do a web request to load various intermediate results. She has heard that the reqwest crate is quite nice, so she decides to give it a try. She writes up an async function that does her web request:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn do_web_request(url: &Url) -> Data {
    +    ...
    +}
    +}
    +
    +

    She needs to apply this async function to a number of urls. She wants to use the iterator map function, like so:

    +
    async fn do_web_request(url: &Url) -> Data {...}
    +
    +fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    urls
    +        .iter()
    +        .map(|url| do_web_request(url))
    +        .collect()
    +}
    +
    +fn main() {
    +    /* do stuff */
    +    let data = aggregate();
    +    /* do more stuff */
    +}
    +
    +

    Of course, since do_web_request is an async fn, she gets a type error from the compiler:

    +
    error[E0277]: a value of type `Vec<Data>` cannot be built from an iterator over elements of type `impl Future`
    +  --> src/main.rs:11:14
    +   |
    +11 |             .collect();
    +   |              ^^^^^^^ value of type `Vec<Data>` cannot be built from `std::iter::Iterator<Item=impl Future>`
    +   |
    +   = help: the trait `FromIterator<impl Future>` is not implemented for `Vec<Data>`
    +
    +

    "Of course," she thinks, "I can't call an async function from a closure."

    +

    Introducing block_on

    +

    She decides that since she is not overly concerned about performance, so she decides she'll just use a call to block_on from the futures crate and execute the function synchronously:

    +
    async fn do_web_request(url: &Url) -> Data {...}
    +
    +fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    urls
    +        .iter()
    +        .map(|url| futures::executor::block_on(do_web_request(url)))
    +        .collect()
    +}
    +
    +fn main() {
    +    /* do stuff */
    +    let data = aggregate();
    +    /* do more stuff */
    +}
    +
    +

    The code compiles, and it seems to work.

    +

    Switching to async main

    +

    As Barbara works on perf.rust-lang.org, she realizes that she needs to do more and more async operations. She decides to convert her synchronous main function into an async main. She's using tokio, so she is able to do this very conveniently with the #[tokio::main] decorator:

    +
    #[tokio::main]
    +async fn main() {
    +    /* do stuff */
    +    let data = aggregate();
    +    /* do more stuff */
    +}
    +
    +

    Everything seems to work ok on her laptop, but when she pushes the code to production, it deadlocks immediately. "What's this?" she says. Confused, she runs the code on her laptop a few more times, but it seems to work fine. (There's a faq explaining what's going on. -ed.)

    +

    She decides to try debugging. She fires up a debugger but finds it is isn't really giving her useful information about what is stuck (she has basically the same problems that Alan has). She wishes she could get insight into tokio's state.

    +

    Frustrated, she starts reading the tokio docs more closely and she realizes that tokio runtimes offer their own block_on method. "Maybe using tokio's block_on will help?" she thinks, "Worth a try, anyway." She changes the aggregate function to use tokio's block_on:

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn block_on<O>(f: impl Future<Output = O>) -> O {
    +    let rt = tokio::runtime::Runtime::new().unwrap();
    +    rt.block_on(f)
    +}
    +
    +fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    urls
    +        .iter()
    +        .map(|url| block_on(do_web_request(url)))
    +        .collect()
    +}
    +}
    +
    +

    The good news is that the deadlock is gone. The bad news is that now she is getting a panic:

    +
    +

    thread 'main' panicked at 'Cannot start a runtime from within a runtime. This happens because a function (like block_on) attempted to block the current thread while the thread is being used to drive asynchronous tasks.'

    +
    +

    "Well," she thinks, "I could use the Handle API to get the current runtime instead of creating a new one? Maybe that's the problem."

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn aggregate(urls: &[&str]) -> Vec<String> {
    +    let handle = tokio::runtime::Handle::current();
    +    urls.iter()
    +        .map(|url| handle.block_on(do_web_request(url)))
    +        .collect()
    +}
    +}
    +
    +

    But this also seems to panic in the same way.

    +

    Trying out spawn_blocking

    +

    Reading more into this problem, she realizes she is supposed to be using spawn_blocking. She tries replacing block_on with tokio::task::spawn_blocking:

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    urls
    +        .iter()
    +        .map(|url| tokio::task::spawn_blocking(move || do_web_request(url)))
    +        .collect()
    +}
    +}
    +
    +

    but now she gets a type error again:

    +
    error[E0277]: a value of type `Vec<Data>` cannot be built from an iterator over elements of type `tokio::task::JoinHandle<impl futures::Future>`
    +  --> src/main.rs:22:14
    +   |
    +22 |             .collect();
    +   |              ^^^^^^^ value of type `Vec<Data>` cannot be built from `std::iter::Iterator<Item=tokio::task::JoinHandle<impl futures::Future>>`
    +   |
    +   = help: the trait `FromIterator<tokio::task::JoinHandle<impl futures::Future>>` is not implemented for `Vec<Data>`
    +
    +

    Of course! spawn_blocking, like map, just takes a regular closure, not an async closure; it's purpose is to embed some sync code within an async task, so a sync closure makes sense -- and moreover async closures aren't stable -- but it's all rather frustrating nonetheless. "Well," she thinks, "I can use spawn to get back into an async context!" So she adds a call to spawn inside the spawn_blocking closure:

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    urls
    +        .iter()
    +        .map(|url| tokio::task::spawn_blocking(move || {
    +            tokio::task::spawn(async move {
    +                do_web_request(url).await
    +            })
    +        }))
    +        .collect()
    +}
    +}
    +
    +

    But this isn't really helping, as spawn still yields a future. She's getting the same errors.

    +

    Trying out join_all

    +

    She remembers now that this whole drama started because she was converting her main function to be async. Maybe she doesn't have to bridge between sync and async? She starts digging around in the docs and finds futures::join_all. Using that, she can change aggregate to be an async function too:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    futures::join_all(
    +        urls
    +            .iter()
    +            .map(|url| do_web_request(url))
    +    ).await
    +}
    +}
    +
    +

    Things are working again now, so she is happy, although she notes that join_all has quadratic time complexity. That's not great.

    +

    Filtering

    +

    Later on, she would like to apply a filter to the aggregation operation. She realizes that if she wants to use the fetched data when doing the filtering, she has to filter the vector after the join has completed. She wants to write something like

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    futures::join_all(
    +        urls
    +            .iter()
    +            .map(|url| do_web_request(url))
    +            .filter(|data| test(data))
    +    ).await
    +}
    +}
    +
    +

    but she can't, because data is a future and not the Data itself. Instead she has to build the vector first and then post-process it:

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    let mut data: Vec<Data> = futures::join_all(
    +        urls
    +            .iter()
    +            .map(|url| do_web_request(url))
    +    ).await;
    +    data.retain(test);
    +    data
    +}
    +}
    +
    +

    This is annoying, but performance isn't critical, so it's ok.

    +

    And the cycle begins again

    +

    Later on, she wants to call aggregate from another binary. This one doesn't have an async main. This context is deep inside of an iterator chain and was previously entirely synchronous. She realizes it would be a lot of work to change all the intervening stack frames to be async fn, rewrite the iterators into streams, etc. She decides to just call block_on again, even though it make her nervous.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Some projects don't care about max performance and just want things to work once the program compiles. +
        +
      • They would probably be happy with sync but as the most popular libraries for web requests, databases, etc, offer async interfaces, they may still be using async code.
      • +
      +
    • +
    • There are contexts where you can't easily add an await. +
        +
      • For example, inside of an iterator chain.
      • +
      • Big block of existing code.
      • +
      +
    • +
    • Mixing sync and async code can cause deadlocks that are really painful to diagnose, particularly when you have an async-sync-async sandwich.
    • +
    +

    Why did you choose Barbara to tell this story?

    +
      +
    • Because Mark (who experienced most of it) is a very experienced Rust developer.
    • +
    • Because you could experience this story regardless of language background or being new to Rust.
    • +
    +

    How would this story have played out differently for the other characters?

    +

    I would expect it would work out fairly similarly, except that the type errors and things might well have been more challenging for people to figure out, assuming they aren't already familiar with Rust.

    +

    Why did Barbara only get deadlocks in production, and not on her laptop?

    +

    This is because the production instance she was using had only a single core, but her laptop is a multicore machine. The actual cause of the deadlocks is that block_on basically "takes over" the tokio worker thread, and hence the tokio scheduler cannot run. If that block_on is blocked on another future that will have to execute, then some other thread must take over of completing that future. On Barbara's multicore machine, there were more threads available, so the system did not deadlock. But on the production instance, there was only a single thread. Barbara could have encountered deadlocks on her local machine as well if she had enough instances of block_on running at once.

    +

    Could the runtime have prevented the deadlock?

    +

    One way to resolve this problem would be to have a runtime that creates more threads as needed. This is what was proposed in this blog post, for example.

    +

    Adapting the number of worker threads has downsides. It requires knowing the right threshold for creating new threads (which is fundamentally unknowable). The result is that the runtime will sometimes observe that some thread seems to be taking a long time and create new threads just before that thread was about to finish. These new threads generate overhead and lower the overall performance. It also requires work stealing and other techniques that can lead to work running on mulitple cores and having less locality. Systems tuned for maximal performance tend to prefer a single thread per core for this reason.

    +

    If some runtimes are adaptive, that may also lead to people writing libraries which block without caring. These libraries would then be a performance or deadlock hazard when used on a runtime that is not adaptive.

    +

    Is there any way to have kept aggregate as a synchronous function?

    +

    Yes, Barbara could have written something like this:

    +
    fn aggregate(urls: &[Url]) -> Vec<Data> {
    +    let handle = Handle::current();
    +
    +    urls.iter()
    +        .map(|url| handle.block_on(do_web_request(url)))
    +        .collect()
    +}
    +
    +#[tokio::main]
    +async fn main() {
    +    let data = task::spawn_blocking(move || aggregate(&[Url, Url]))
    +        .await
    +        .unwrap();
    +    println!("done");
    +}
    +
    +

    This aggregate function can only safely be invoked from inside a tokio spawn_blocking call, however, since Handle::current will only work in that context. She could also have used the original futures variant of block_on, in that case, and things would also work.

    +

    Why didn't Barbara just use the sync API for reqwest?

    +

    reqwest does offer a synchronous API, but it's not enabled by default, you have to use an optional feature. Further, not all crates offer synchronous APIs. Finally, Barbara has had some vague poor experience when using synchronous APIs, such as panics, and so she's learned the heuristic of "use the async API unless you're doing something really, really simple".

    +

    Regardless, the synchronous reqwest API is actually itself implemented using block_on: so Barbara would have ultimately hit the same issues. Further, not all crates offer synchronous APIs -- some offer only async APIs. In fact, these same issues are probably the sources of those panics that Barbara encountered in the past.

    +

    In general, though, embedded sync within async or vice versa works "ok", once you know the right tricks. Where things become challenging is when you have a "sandwich", with async-sync-async.

    +

    Do people mix spawn_blocking and spawn successfully in real code?

    +

    Yes! Here is some code from perf.rust-lang.org doing exactly that. The catch is that it winds up giving you a future in the end, which didn't work for Barbara because her code is embedded within an iterator (and hence she can't make things async "all the way down").

    +

    What are other ways people could experience similar problems mixing sync and async?

    +
      +
    • Using std::Mutex in async code.
    • +
    • Calling the blocking version of an asynchronous API. +
        +
      • For example, reqwest::blocking, the synchronous zbus and rumqtt APIs.
      • +
      • These are commonly implemented by using some variant of block_on internally.
      • +
      • Therefore they can lead to panics or deadlocks depending on what async runtime they are built from and used with.
      • +
      +
    • +
    +

    Why wouldn't Barbara just make everything async from the start?

    +

    There are times when converting synchronous code to async is difficult or even impossible. Here are some of the reasons:

    +
      +
    • Asynchronous functions cannot appear in trait impls.
    • +
    • Asynchronous functions cannot be called from APIs that take closures for callbacks, like Iterator::map in this example.
    • +
    • Sometimes the synchronous functions come from other crates and are not fully under their control.
    • +
    • It's just a lot of work!
    • +
    +

    How many variants of block_on are there?

    +
      +
    • the futures crate offers a runtime-independent block-on (which can lead to deadlocks, as in this story)
    • +
    • the tokio crate offers a block_on method (which will panic if used inside of another tokio runtime, as in this story)
    • +
    • the pollster crate exists just to offer block_on
    • +
    • the futures-lite crate offers a block_on
    • +
    • the aysnc-std crate offers block_on
    • +
    • the async-io crate offers block_on
    • +
    • ...there are probably more, but I think you get the point.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/barbara_builds_an_async_executor.html b/docs/vision/status_quo/barbara_builds_an_async_executor.html new file mode 100644 index 00000000..11818cb6 --- /dev/null +++ b/docs/vision/status_quo/barbara_builds_an_async_executor.html @@ -0,0 +1,400 @@ + + + + + + Barbara builds an async executor - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Barbara builds an async executor

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    Barbara wants to set priorities to the tasks spawned to the executor. However, she finds no existing async executor provides such a feature so she decided to build her own async executor.

    +

    First, Barbara found crossbeam-deque provides work-stealing deques of good quality. She decides to use it to build task schedulers. She plans for each working thread to have a loop which repeatedly gets a task from the deque and polls it.

    +

    But wait, what should we put into those queues to represent each "task"?

    +

    At first, Barbara thought it must contain the Future itself and the additional priority which was used by the scheduler. So she first wrote:

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub struct Task {
    +    future: Pin<Box<dyn Future<Output = ()> + Send + 'static>>,
    +    priority: u8
    +}
    +}
    +
    +

    And the working thread loop should run something like:

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub fn poll_task(task: Task) {
    +    let waker = todo!();
    +    let mut cx = Context::from_waker(&waker);
    +    task.future.as_mut().poll(&mut cx);
    +}
    +}
    +
    +

    "How do I create a waker?" Barbara asked herself. Quickly, she found the Wake trait. Seeing the wake method takes an Arc<Self>, she realized the task in the scheduler should be stored in an Arc. After some thought, she realizes it makes sense because both the deque in the scheduler and the waker may hold a reference to the task.

    +

    To implement Wake, the Task should contain the sender of the scheduler. She changed the code to something like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub struct Task {
    +    future: Pin<Box<dyn Future<Output = ()> + Send + 'static>>,
    +    scheduler: SchedulerSender,
    +    priority: u8,
    +}
    +
    +unsafe impl Sync for Task {}
    +
    +impl Wake for Task {
    +    fn wake(self: Arc<Self>) {
    +        self.scheduler.send(self.clone());
    +    }
    +}
    +
    +pub fn poll_task(task: Arc<Task>) {
    +    let waker = Waker::from(task.clone());
    +    let mut cx = Context::from_waker(&waker);
    +    task.future.as_mut().poll(&mut cx);
    +//  ^^^^^^^^^^^ cannot borrow as mutable
    +}
    +}
    +
    +

    The code still needed some change because the future in the Arc<Task> became immutable.

    +

    "Okay. I can guarantee Task is created from a Pin<Box<Future>>, and I think the same future won't be polled concurrently in two threads. So let me bypass the safety checks." Barbara changed the future to a raw pointer and confidently used some unsafe blocks to make it compile.

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub struct Task {
    +    future: *mut (dyn Future<Output = ()> + Send + 'static),
    +    ...
    +}
    +
    +unsafe impl Send for Task {}
    +unsafe impl Sync for Task {}
    +
    +pub fn poll_task(task: Arc<Task>) {
    +    ...
    +    unsafe {
    +        Pin::new_unchecked(&mut *task.future).poll(&mut cx);
    +    }
    +}
    +}
    +
    +

    Luckily, a colleague of Barbara noticed something wrong. The wake method could be called multiple times so multiple copies of the task could exist in the scheduler. The scheduler might not work correctly because of this. What's worse, a more severe problem was that multiple threads might get copies of the same task from the scheduler and cause a race in polling the future.

    +

    Barbara soon got a idea to solve it. She added a state field to the Task. By carefully maintaining the state of the task, she could guarantee there are no duplicate tasks in the scheduler and no race can happen when polling the future.

    +
    
    +#![allow(unused)]
    +fn main() {
    +const NOTIFIED: u64 = 1;
    +const IDLE: u64 = 2;
    +const POLLING: u64 = 3;
    +const COMPLETED: u64 = 4;
    +
    +pub struct Task {
    +    ...
    +    state: AtomicU64,
    +}
    +
    +impl Wake for Task {
    +    fn wake(self: Arc<Self>) {
    +        let mut state = self.state.load(Relaxed);
    +        loop {
    +            match state {
    +                // To prevent a task from appearing in the scheduler twice, only send the task
    +                // to the scheduler if the task is not notified nor being polling. 
    +                IDLE => match self
    +                    .state
    +                    .compare_exchange_weak(IDLE, NOTIFIED, AcqRel, Acquire)
    +                {
    +                    Ok(_) => self.scheduler.send(self.clone()),
    +                    Err(s) => state = s,
    +                },
    +                POLLING => match self
    +                    .state
    +                    .compare_exchange_weak(POLLING, NOTIFIED, AcqRel, Acquire)
    +                {
    +                    Ok(_) => break,
    +                    Err(s) => state = s,
    +                },
    +                _ => break,
    +            }
    +        }
    +    }
    +}
    +
    +pub fn poll_task(task: Arc<Task>) {
    +    let waker = Waker::from(task.clone());
    +    let mut cx = Context::from_waker(&waker);
    +    loop {
    +        // We needn't read the task state here because the waker prevents the task from
    +        // appearing in the scheduler twice. The state must be NOTIFIED now.
    +        task.state.store(POLLING, Release);
    +        if let Poll::Ready(()) = unsafe { Pin::new_unchecked(&mut *task.future).poll(&mut cx) } {
    +            task.state.store(COMPLETED, Release);
    +        }
    +        match task.state.compare_exchange(POLLING, IDLE, AcqRel, Acquire) {
    +            Ok(_) => break,
    +            Err(NOTIFIED) => continue,
    +            _ => unreachable!(),
    +        }
    +    }
    +}
    +}
    +
    +

    Barbara finished her initial implementation of the async executor. Despite there were a lot more possible optimizations, Barbara already felt it is a bit complex. She was also confused about why she needed to care so much about polling and waking while her initial requirement was just adding additional information to the task for customizing scheduling.

    +

    🤔 Frequently Asked Questions

    +

    Here are some standard FAQ to get you started. Feel free to add more!

    +

    What are the morals of the story?

    +
      +
    • It is difficult to customize any of the current async executors (to my knowledge). To have any bit of special requirement forces building an async executor from scratch.
    • +
    • It is also not easy to build an async executor. It needs quite some exploration and is error-prone. async-task is a good attempt to simplify the process but it could not satisfy all kinds of needs of customizing the executor (it does not give you the chance to extend the task itself).
    • +
    +

    What are the sources for this story?

    +
      +
    • The story was from my own experience about writing a new thread pool supporting futures: https://github.com/tikv/yatp.
    • +
    • People may feel strange about why we want to set priorities for tasks. Currently, the futures in the thread pool are like user-space threads. They are mostly CPU intensive. But I think people doing async I/O may have the same problem.
    • +
    +

    Why did you choose Barbara to tell this story?

    +
      +
    • At the time of the story, I had written Rust for years but I was new to the concepts for async/await like Pin and Waker.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • People with less experience in Rust may be less likely to build their own executor. If they try, I think the story is probably similar.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/barbara_carefully_dismisses_embedded_future.html b/docs/vision/status_quo/barbara_carefully_dismisses_embedded_future.html new file mode 100644 index 00000000..d62e1322 --- /dev/null +++ b/docs/vision/status_quo/barbara_carefully_dismisses_embedded_future.html @@ -0,0 +1,563 @@ + + + + + + Barbara carefully dismisses embedded Future - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Barbara carefully dismisses embedded Future

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara is contributing to an OS that supports +running multiple applications on a single microcontroller. These +microcontrollers have as little as 10's of kilobytes of RAM and 100's of +kilobytes of flash memory for code. Barbara is writing a library that is used by +multiple applications -- and is linked into each application -- so the library +is very resource constrained. The library should support asynchronous operation, +so that multiple APIs can be used in parallel within each (single-threaded) +application.

    +

    Barbara begins writing the library by trying to write a console interface, which +allows byte sequences to be printed to the system console. Here is an example +sequence of events for a console print:

    +
      +
    1. The interface gives the kernel a callback to call when the print finishes, +and gives the kernel the buffer to print.
    2. +
    3. The kernel prints the buffer in the background while the app is free to do +other things.
    4. +
    5. The print finishes.
    6. +
    7. The app tells the kernel it is ready for the callback to be invoked, and the +kernel invokes the callback.
    8. +
    +

    Barbara tries to implement the API using +core::future::Future +so that the library can be compatible with the async Rust ecosystem. The OS +kernel does not expose a Future-based interface, so Barbara has to implement +Future by hand rather than using async/await syntax. She starts with a +skeleton:

    +
    
    +#![allow(unused)]
    +fn main() {
    +/// Passes `buffer` to the kernel, and prints it to the console. Returns a
    +/// future that returns `buffer` when the print is complete. The caller must
    +/// call kernel_ready_for_callbacks() when it is ready for the future to return. 
    +fn print_buffer(buffer: &'static mut [u8]) -> PrintFuture {
    +    // TODO: Set the callback
    +    // TODO: Tell the kernel to print `buffer`
    +}
    +
    +struct PrintFuture;
    +
    +impl core::future::Future for PrintFuture {
    +    type Output = &'static mut [u8];
    +
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
    +        // TODO: Detect when the print is done, retrieve `buffer`, and return
    +        // it.
    +    }
    +}
    +}
    +
    +

    Note: All error handling is omitted to keep things understandable.

    +

    Barbara begins to implement print_buffer:

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn print_buffer(buffer: &'static mut [u8]) -> PrintFuture {
    +    kernel_set_print_callback(callback);
    +    kernel_start_print(buffer);
    +    PrintFuture {}
    +}
    +
    +// New! The callback the kernel calls.
    +extern fn callback() {
    +    // TODO: Wake up the currently-waiting PrintFuture.
    +}
    +}
    +
    +

    So far so good. Barbara then works on poll:

    +
    
    +#![allow(unused)]
    +fn main() {
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
    +        if kernel_is_print_done() {
    +            return Poll::Ready(kernel_get_buffer_back());
    +        }
    +        Poll::Pending
    +    }
    +}
    +
    +

    Of course, there's something missing here. How does the callback wake the +PrintFuture? She needs to store the +Waker +somewhere! Barbara puts the Waker in a global variable so the callback can +find it (this is fine because the app is single threaded and callbacks do NOT +interrupt execution the way Unix signals do):

    +
    
    +#![allow(unused)]
    +fn main() {
    +static mut PRINT_WAKER: Option<Waker> = None;
    +
    +extern fn callback() {
    +    if let Some(waker) = unsafe { PRINT_WAKER.as_ref() } {
    +        waker.wake_by_ref();
    +    }
    +}
    +}
    +
    +

    She then modifies poll to set PRINT_WAKER:

    +
    
    +#![allow(unused)]
    +fn main() {
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
    +        if kernel_is_print_done() {
    +            return Poll::Ready(kernel_get_buffer_back());
    +        }
    +        unsafe { PRINT_WAKER = Some(cx.waker()); }
    +        Poll::Pending
    +    }
    +}
    +
    +

    PRINT_WAKER is stored in .bss, which occupies space in RAM but not flash. It +is two words in size. It points to a +RawWakerVTable +that is provided by the executor. RawWakerVTable's design is a compromise that +supports environments both with and without alloc. In no-alloc environments, +drop and clone are generally no-ops, and wake/wake_by_ref seem like +duplicates. Looking at RawWakerVTable makes Barbara realize that even though +Future was designed to work in embedded contexts, it may have too much +overhead for her use case.

    +

    Barbara decides to do some benchmarking. She comes up with a sample application +-- an app that blinks a led and responds to button presses -- and implements it +twice. One implementation does not use Future at all, the other does. Both +implementations have two asynchronous interfaces: a timer interface and a GPIO +interface, as well as an application component that uses the interfaces +concurrently. In the Future-based app, the application component functions +like a future combinator, as it is a Future that is almost always waiting for +a timer or GPIO future to finish.

    +

    To drive the application future, Barbara implements an executor. The executor +functions like a background thread. Because alloc is not available, this +executor contains a single future. The executor has a spawn function that +accepts a future and starts running that future (overwriting the existing future +in the executor if one is already present). Once started, the executor runs +entirely in kernel callbacks.

    +

    Barbara identifies several factors that add branching and error handling code to +the executor:

    +
      +
    1. spawn should be a safe function, because it is called by high-level +application code. However, that means it can be called by the future it +contains. If handled naively, this would result in dropping the future while +it executes. Barbara adds runtime checks to identify this situation.
    2. +
    3. Waker is Sync, so on a multithreaded system, a future could give another +thread access to its Waker and the other thread could wake it up. This +could happen while the poll is executing, before poll returns +Poll::Pending. Therefore, Barbara concludes that if wake is called while +a future is being polled then the future should be re-polled, even if the +current poll returns Poll::Pending. This requires putting a retry loop +into the executor.
    4. +
    5. A kernel callback may call Waker::wake after its future returns +Poll::Ready. After poll returns Poll::Ready, the executor should not +poll the future again, so Barbara adds code to ignore those wakeups. This +duplicates the "ignore spurious wakeups" functionality that exists in the +future itself.
    6. +
    +

    Ultimately, this made the executor +logic +nontrivial, and it compiled into 96 bytes of code. The executor logic is +monomorphized for each future, which allows the compiler to make inlining +optimizations, but results in a significant amount of duplicate code. +Alternatively, it could be adapted to use function pointers or vtables to avoid +the code duplication, but then the compiler definitely cannot inline +Future::poll into the kernel callbacks.

    +

    Barbara publishes an +analysis +of the relative sizes of the two app implementations, finding a large percentage +increase in both code size and RAM usage (note: stack usage was not +investigated). Most of the code size increase is from the future +combinator code.

    +

    In the no-Future version of the app, a kernel callback causes the following:

    +
      +
    1. The kernel callback calls the application logic's event-handling function for +the specific event type.
    2. +
    3. The application handles the event.
    4. +
    +

    The call in step 1 is inlined, so the compiled kernel callback consists only of +the application's event-handling logic.

    +

    In the Future-based version of the app, a kernel callback causes the +following:

    +
      +
    1. The kernel callback updates some global state to indicate the event happened.
    2. +
    3. The kernel callback invokes Waker::wake.
    4. +
    5. Waker::wake calls poll on the application future.
    6. +
    7. The application future has to look at the state saved in step 1 to determine +what event happened.
    8. +
    9. The application future handles the event.
    10. +
    +

    LLVM is unable to devirtualize the call in step 2, so the optimizer is unable to +simplify the above steps. Steps 1-4 only exist in the future-based version of +the code, and add over 200 bytes of code (note: Barbara believes this could be +reduced to between 100 and 200 bytes at the expense of execution speed).

    +

    Barbara concludes that Future is not suitable for +highly-resource-constrained environments due to the amount of code and RAM +required to implement executors and combinators.

    +

    Barbara redesigns the library she is building to use a different +concept +for implementing async APIs in Rust that are much lighter weight. She has moved +on from Future and is refining her async +traits +instead. Here are some ways in which these APIs are lighter weight than a +Future implementation:

    +
      +
    1. After monomorphization, kernel callbacks directly call application code. This +allows the application code to be inlined into the kernel callback.
    2. +
    3. The callback invocation is more precise: these APIs don't make spurious +wakeups, so application code does not need to handle spurious wakeups.
    4. +
    5. The async traits lack an equivalent of Waker. Instead, all callbacks are +expected to be 'static (i.e. they modify global state) and passing pointers +around is replaced by static dispatch.
    6. +
    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • core::future::Future isn't suitable for every asynchronous API in Rust. +Future has a lot of capabilities, such as the ability to spawn +dynamically-allocated futures, that are unnecessary in embedded systems. +These capabilities have a cost, which is unavoidable without +backwards-incompatible changes to the trait.
    • +
    • We should look at embedded Rust's relationship with Future so we don't +fragment the embedded Rust ecosystem. Other embedded crates use Future +-- Future certainly has a lot of advantages over lighter-weight +alternatives, if you have the space to use it.
    • +
    +

    Why did you choose Barbara to tell this story?

    +
      +
    • This story is about someone who is an experienced systems programmer and +an experienced Rust developer. All the other characters have "new to Rust" +or "new to programming" as a key characteristic.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • Alan would have found the #![no_std] crate ecosystem lacking async +support. He would have moved forward with a Future-based implementation, +unaware of its impact on code size and RAM usage.
    • +
    • Grace would have handled the issue similarly to Barbara, but may not +have tried as hard to use Future. Barbara has been paying attention to +Rust long enough to know how significant the Future trait is in the Rust +community and ecosystem.
    • +
    • Niklaus would really have struggled. If he asked for help, he probably +would've gotten conflicting advice from the community.
    • +
    +

    Future has a lot of features that Barbara's traits don't have -- aren't those worth the cost?

    +
      +
    • Future has many additional features that are nice-to-have: +
        +
      1. Future works smoothly in a multithreaded environment. Futures can +be Send and/or Sync, and do not need to have interior mutability, +which avoids the need for internal locking. +
          +
        • Manipulating arbitrary Rust types without locking allows async fn +to be efficient.
        • +
        +
      2. +
      3. Futures can be spawned and dropped in a dynamic manner: an executor +that supports dynamic allocation can manage an arbitrary number of +futures at runtime, and futures may easily be dropped to stop their +execution. +
          +
        • Dropping a future will also drop futures it owns, conveniently +providing good cancellation semantics.
        • +
        • A future that creates other futures (e.g. an async fn that calls +other async fns) can be spawned with only a single memory +allocation, whereas callback-based approaches need to allocate for +each asynchronous component.
        • +
        +
      4. +
      5. Community and ecosystem support. This isn't a feature of Future per +se, but the Rust language has special support for Future +(async/await) and practically the entire async Rust ecosystem is +based on Future. The ability to use existing async crates is a very +strong reason to use Future over any alternative async abstraction.
      6. +
      +
    • +
    • However, the code size impact of Future is a deal-breaker, and no number +of nice-to-have features can outweigh a deal-breaker. Barbara's traits +have every feature she needs.
    • +
    • Using Future saves developer time relative to building your own async +abstractions. Developers can use the time they saved to minimize code size +elsewhere in the project. In some cases, this may result in a net decrease +in code size for the same total effort. However, code size reduction +efforts have diminishing returns, so projects that expect to optimize code +size regardless likely won't find the tradeoff beneficial.
    • +
    +

    Is the code size impact of Future fundamental, or can the design be tweaked in a way that eliminates the tradeoff?

    +
      +
    • Future isolates the code that determines a future should wake up (the +code that calls Waker::wake) from the code that executes the future (the +executor). The only information transferred via Waker::wake is "try +waking up now" -- any other information has to be stored somewhere. When +polled, a future has to run logic to identify how it can make progress -- +in many cases this requires answering "who woke me up?" -- and retrieve +the stored information. Most completion-driven async APIs allow +information about the event to be transferred directly to the code that +handles the event. According to Barbara's analysis, the code required to +determine what event happened was the majority of the size impact of +Future.
    • +
    +

    I thought Future was a zero-cost abstraction?

    +
      +
    • Aaron Turon described futures as zero-cost +abstractions. +In the linked post, he elaborated on what he meant by zero-cost +abstraction, and eliminating their impact on code size was not part of +that definition. Since then, the statement that future is a zero-cost +abstraction has been repeated many times, mostly without the context that +Aaron provided. Rust has many zero-cost abstractions, most of which do not +impact code size (assuming optimization is enabled), so it is easy for +developers to see "futures are zero-cost" and assume that makes them +lighter-weight than they are.
    • +
    +

    How does Barbara's code handle thread-safety? Is her executor unsound?

    +
      +
    • The library Barbara is writing only works in Tock OS' userspace +environment. This environment is single-threaded: the runtime does not +provide a way to spawn another thread, hardware interrupts do not execute +in userspace, and there are no interrupt-style callbacks like Unix +signals. All kernel callbacks are invoked synchronously, using a method +that is functionally equivalent to a function call.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/barbara_compares_some_cpp_code.html b/docs/vision/status_quo/barbara_compares_some_cpp_code.html new file mode 100644 index 00000000..86e2f3c4 --- /dev/null +++ b/docs/vision/status_quo/barbara_compares_some_cpp_code.html @@ -0,0 +1,374 @@ + + + + + + Barbara compares some C++ code - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Barbara compares some code (and has a performance problem)

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]!

    +

    The story

    +

    Barbara is recreating some code that has been written in other languages they have some familiarity with. These include C++, but +also GC'd languages like Python.

    +

    This code collates a large number of requests to network services, with each response containing a large amount of data. +To speed this up, Barbara uses buffer_unordered, and writes code like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +let mut queries = futures::stream::iter(...)
    +    .map(|query| async move {
    +        let d: Data = self.client.request(&query).await?;
    +        d
    +     })
    +     .buffer_unordered(32);
    +
    +use futures::stream::StreamExt;
    +let results = queries.collect::<Vec<Data>>().await;
    +}
    +
    +

    Barbara thinks this is similar in function to things she has seen using +Python's asyncio.wait, +as well as some code her coworkers have written using c++20's coroutines, +using this:

    +
    std::vector<folly::coro::Task<Data>> tasks;
    + for (const auto& query : queries) {
    +    tasks.push_back(
    +        folly::coro::co_invoke([this, &query]() -> folly::coro::Task<Data> {
    +              co_return co_await client_->co_request(query);
    +        }
    +    )
    +}
    +auto results = co_await folly:coro::collectAllWindowed(
    +      move(tasks), 32);
    +
    +

    However, the Rust code performs quite poorly compared to the other impls, +appearing to effectively complete the requests serially, despite on the surface +looking like effectively identical code.

    +

    While investigating, Barbara looks at top, and realises that her coworker's C++20 code sometimes results in her 16 core laptop using 1600% CPU; her Rust async code never exceeds 100% CPU usage. She spends time investigating her runtime setup, but Tokio is configured to use enough worker threads to keep all her CPU cores busy. This feels to her like a bug in buffer_unordered or tokio, needing more time to investigate.

    +

    Barbara goes deep into investigating this, spends time reading how buffer_unordered is +implemented, how its underlying FuturesUnordered is implemented, and even thinks about +how polling and the tokio runtime she is using works. She evens tries to figure out if the +upstream service is doing some sort of queueing.

    +

    Eventually Barbara starts reading more about c++20 coroutines, looking closer at the folly +implementation used above, noticing that is works primarily with tasks, which are not exactly +equivalent to rust Future's.

    +

    Then it strikes her! request is implemented something like this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +impl Client {
    +    async fn request(&self) -> Result<Data> {
    +        let bytes = self.inner.network_request().await?
    +        Ok(serialization_libary::from_bytes(&bytes)?)
    +   }
    +}
    +}
    +
    +

    The results from the network service are sometimes (but not always) VERY large, and the BufferedUnordered stream is contained within 1 tokio task. +The request future does non-trivial cpu work to deserialize the data. +This causes significant slowdowns in wall-time as the the process CAN BE bounded by the time it takes +the single thread running the tokio-task to deserialize all the data. +This problem hadn't shown up in test cases, where the results from the mocked network service are always small; many common uses of the network service only ever have small results, so it takes a specific production load to trigger this issue, or a large scale test.

    +

    The solution is to spawn tasks (note this requires 'static futures):

    +
    
    +#![allow(unused)]
    +fn main() {
    +let mut queries = futures::stream::iter(...)
    +    .map(|query| async move {
    +        let d: Data = tokio::spawn(
    +        self.client.request(&query)).await??;
    +        d
    +     })
    +     .buffer_unordered(32);
    +
    +use futures::stream::StreamExt;
    +let results = queries.collect::<Vec<Data>>().await;
    +}
    +
    +

    Barbara was able to figure this out by reading enough and trying things out, but had that not worked, it +would have probably required figuring out how to use perf or some similar tool.

    +

    Later on, Barbara gets surprised by this code again. It's now being used as part of a system that handles a very high number of requests per second, but sometimes the system stalls under load. She enlists Grace to help debug, and the two of them identify via perf that all the CPU cores are busy running serialization_libary::from_bytes. Barbara revisits this solution, and discovers tokio::task::block_in_place which she uses to wrap the calls to serialization_libary::from_bytes:

    +
    
    +#![allow(unused)]
    +fn main() {
    +impl Client {
    +    async fn request(&self) -> Result<Data> {
    +        let bytes = self.inner.network_request().await?
    +        Ok(tokio::task::block_in_place(move || serialization_libary::from_bytes(&bytes))?)
    +   }
    +}
    +}
    +
    +

    This resolves the problem as seen in production, but leads to Niklaus's code review suggesting the use of tokio::task::spawn_blocking inside request, instead of spawn inside buffer_unordered. This discussion is challenging, because the tradeoffs between spawn on a Future including block_in_place and spawn_blocking and then not spawning the containing Future are subtle and tricky to explain. Also, either block_in_place and spawn_blocking are heavyweight and Barbara would prefer to avoid them when the cost of serialization is low, which is usually a runtime-property of the system.

    +

    🤔 Frequently Asked Questions

    +

    Are any of these actually the correct solution?

    +
      +
    • Only in part. It may cause other kinds of contention or blocking on the runtime. As mentioned above, the deserialization work probably needs to be wrapped in something like block_in_place, so that other tasks are not starved on the runtime, or might want to use spawn_blocking. There are some important caveats/details that matter: +
        +
      • This is dependent on how the runtime works.
      • +
      • block_in_place + tokio::spawn might be better if the caller wants to control concurrency, as spawning is heavyweight when the deserialization work happens to be small. However, as mentioned above, this can be complex to reason about, and in some cases, may be as heavyweight as spawn_blocking
      • +
      • spawn_blocking, at least in some executors, cannot be cancelled, a departure from the prototypical cancellation story in async Rust.
      • +
      • "Dependently blocking work" in the context of async programming is a hard problem to solve generally. https://github.com/async-rs/async-std/pull/631 was an attempt but the details are making runtime's agnostic blocking are extremely complex.
      • +
      • The way this problem manifests may be subtle, and it may be specific production load that triggers it.
      • +
      • The outlined solutions have tradeoffs that each only make sense for certain kind of workloads. It may be better to expose the io aspect of the request and the deserialization aspect as separate APIs, but that complicates the library's usage, lays the burden of choosing the tradeoff on the callee (which may not be generally possible).
      • +
      +
    • +
    +

    What are the morals of the story?

    +
      +
    • Producing concurrent, performant code in Rust async is not always trivial. Debugging performance +issues can be difficult.
    • +
    • Rust's async model, particularly the blocking nature of polling, can be complex to reason about, +and in some cases is different from other languages choices in meaningful ways.
    • +
    • CPU-bound code can be easily hidden.
    • +
    +

    What are the sources for this story?

    +
      +
    • This is a issue I personally hit while writing code required for production.
    • +
    +

    Why did you choose Barbara to tell this story?

    +

    That's probably the person in the cast that I am most similar to, but Alan +and to some extent Grace make sense for the story as well.

    +

    How would this story have played out differently for the other characters?

    +
      +
    • Alan: May have taken longer to figure out.
    • +
    • Grace: Likely would have been as interested in the details of how polling works.
    • +
    • Niklaus: Depends on their experience.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/barbara_makes_their_first_steps_into_async.html b/docs/vision/status_quo/barbara_makes_their_first_steps_into_async.html new file mode 100644 index 00000000..ce7688f4 --- /dev/null +++ b/docs/vision/status_quo/barbara_makes_their_first_steps_into_async.html @@ -0,0 +1,297 @@ + + + + + + Barbara makes their first foray into async - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Barbara makes their first foray into async

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    Barbara's first big project in Rust: a journey marred by doubt

    +

    It's Barbara's last year at their university and for their master's thesis, they have chosen to create a distributed database. +They have chosen to use their favorite language, Rust, because Rust is a suitable language for low latency applications that they have found very pleasant to work in. +Their project presents quite a challenge since they have only written some small algorithms in Rust, and it's also their first foray into creating a big distributed system.

    +

    Deciding to use Async

    +

    Up until now, Barbara has followed the development of Async from afar by reading the occasional Boats blog post, and celebrating the release announcements with the rest of the happy community. +Due to never having worked with async in other languages, and not having had a project suitable for async experimentation, their understanding of async and its ecosystem remained superficial. +However, since they have heard that async is suitable for fast networked applications, they decide to try using async for their distributed database. +After all, a fast networked application is exactly what they are trying to make.

    +

    To further solidify the decision of using async, Barbara goes looking for some information and opinions on async in Rust. Doubts created by reading some tweets about how most people should be using threads instead of async for simplicity reasons are quickly washed away by helpful conversations on the Rust discord.

    +

    Learning about Async

    +

    Still enamored with the first edition of the Rust book, they decide to go looking for an updated version, hoping that it will teach them async in the same manner that it taught them so much about the language and design patterns for Rust. Disappointed, they find no mention of async in the book, aside from a note that it exists as a keyword.

    +

    Not to be deterred, they go looking further, and start looking for similarly great documentation about async. +After stumbling upon the async book, their disappointment is briefly replaced with relief as the async book does a good job at solidifying what they have already learned in various blog posts about async, why one would use it and even a bit about how it all works under the hood. +They skim over the parts that seem a bit too in-depth for now like pinning, as they're looking to quickly get their hands dirty. +Chapter 8: The Async Ecosystem teaches them what they already picked up on through blog posts and contentious tweets: the choice of the runtime has large implications on what libraries they can use.

    +

    The wrong time for big decisions

    +

    Barbara's dreams to quickly get their hands dirty with async Rust are shattered as they discover that they first need to make a big choice: what executor to use. Having had quite a bit of exposure to the conversations surrounding the incompatible ecosystems, Barbara is perhaps a bit more paranoid about making the wrong choice than the average newcomer. +This feels like a big decision to them, as it would influence the libraries they could use and switching to a different ecosystem would be all but impossible after a while. Since they would like to choose what libraries they use before having to choose an executor, Barbara feels like the decision-making is turned on its head.

    +

    Their paranoia about choosing the right ecosystem is eased after a few days of research, and some more conversations on the Rust subreddit, after which they discover that most of the RPC libraries they might want to use are situated within the most popular Tokio ecosystem anyways. Tokio also has a brief tutorial, which teaches them some basic concepts within Tokio and talks a bit more about async in general.

    +

    Woes of a newcomer to async

    +

    Being reasonably confident in their choice of ecosystem, Barbara starts building their distributed system. +After a while, they want to introduce another networking library of which the api isn't async. Luckily Barbara picked up on that blocking was not allowed in async (or at least not in any of the currently existing executors), through reading some blog posts about async. More reddit discussions point them towards spawn_blocking in Tokio, and even rayon. But they're none the wiser about how to apply these paradigms in a neat manner.

    +

    Previously the design patterns learned in other languages, combined with the patterns taught in the book, were usually sufficient to come to reasonably neat designs. +But neither their previous experience, nor the async book nor the Tokio tutorial were of much use when trying to neatly incorporate blocking code into their previously fully async project.

    +

    Confused ever after

    +

    To this day the lack of a blessed approach leaves Barbara unsure about the choices they've made so far and misconceptions they might still have, evermore wondering if the original tweets they read about how most people should just stick to threads were right all along.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • When entering Rust's async world without previous async experience, and no benchmarks for what good async design patters look like, getting started with async can be a bit overwhelming.
    • +
    • Other languages which only have a single ecosystem seem to have a much better story for beginners since there's no fear of lock in, or ecosystem fomo about making the wrong choices early on.
    • +
    • This lack of documentation on design patterns, and solid guidance about the async ecosystem for unopiniated newcomers is partially made up for by Rust's community which often provides educated opinions on the design and technical choices one should make. Because of this getting started in async favors those who know where to find answers about Rust: blogs, Discord, Reddit, etc.
    • +
    +

    What are the sources for their story?

    +

    This is based on the author's personal experience

    +

    What documentation did the character read during this story?

    +
      +
    • Various blog posts of withoutboats
    • +
    • A blog post which spurred a lot of discussion about blocking in async: https://async.rs/blog/stop-worrying-about-blocking-the-new-async-std-runtime/
    • +
    • A nice blog post about blocking in Tokio, which still doesn't have any nice design patterns: https://ryhl.io/blog/async-what-is-blocking/
    • +
    • An example of design patterns being discussed for sync Rust in the book: https://doc.rust-lang.org/book/ch17-03-oo-design-patterns.html#trade-offs-of-the-state-pattern
    • +
    • Perhaps I should've read a bit more of Niko's blogs and his async interviews.
    • +
    +

    Why did you choose Barbara to tell their story?

    +

    Like the author of this story, Barbara had previous experience with Rust. Knowing where to find the community also played a significant part in this story. This story could be construed as how Barbara got started with async while starting to maintain some async projects.

    +

    How would their story have played out differently for the other characters?

    +
      +
    • Characters with previous async experience would probably have had a better experience getting started with async in Rust since they might know what design patterns to apply to async code. +On the other hand, since Rust's async story is noticeably different from other languages, having async experience in other languages might even be harmful by requiring the user to unlearn certain habits. I don't know if this is actually the case since I don't have any experience with async in other languages.
    • +
    • Characters which are less in touch with Rust's community than Barbara might have had a much worse time, since just skimming over the documentation might leave some lost, and unaware of common pitfalls. On the other hand, not having learned a lot about async through blog posts and other materials, might compel someone to read the documentation more thoroughly.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/barbara_needs_async_helpers.html b/docs/vision/status_quo/barbara_needs_async_helpers.html new file mode 100644 index 00000000..dbb40fca --- /dev/null +++ b/docs/vision/status_quo/barbara_needs_async_helpers.html @@ -0,0 +1,422 @@ + + + + + + Barbara needs Async Helpers - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Barbara needs Async Helpers

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara, an experienced Rust user, is prototyping an async Rust service for work. To get things working quickly, she decides to prototype in tokio, since it is unclear which runtime her work will use.

    +

    She starts adding warp and tokio to her dependencies list. She notices that warp suggests using tokio with the full feature. She's a bit concerned about how this might affect the compile times and also that all of tokio is needed for her little project, but she pushes forward.

    +

    As she builds out functionality, she's pleased to see tokio provides a bunch of helpers like join! and async versions of the standard library types like channels and mutexes.

    +

    After completing one endpoint, she moves to a new one which requires streaming http responses to the client. Barbara quickly finds out from tokio docs, that it does not provide a stream type, and so she adds tokio-stream to her dependencies.

    +

    Moving on she tries to make some functions generic over the web framework underneath, so she tries to abstract off the functionality to a trait. So she writes an async function inside a trait, just like a normal function.

    +
    
    +#![allow(unused)]
    +fn main() {
    +trait Client {
    +    async fn get();
    +}
    +}
    +
    +

    Then she gets a helpful error message.

    +
    error[E0706]: functions in traits cannot be declared `async`
    + --> src/lib.rs:2:5
    +  |
    +2 |     async fn get();
    +  |     -----^^^^^^^^^^
    +  |     |
    +  |     `async` because of this
    +  |
    +  = note: `async` trait functions are not currently supported
    +  = note: consider using the `async-trait` crate: https://crates.io/crates/async-trait
    +
    +

    She then realizes that Rust doesn't support async functions in traits yet, so she adds async-trait to her dependencies.

    +

    Some of her functions are recursive, and she wanted them to be async functions, so she sprinkles some async/.await keywords in those functions.

    +
    
    +#![allow(unused)]
    +fn main() {
    +async fn sum(n: usize) -> usize {
    +    if n == 0 {
    +        0
    +    } else {
    +        n + sum(n - 1).await
    +    }
    +}
    +}
    +
    +

    Then she gets an error message.

    +
    error[E0733]: recursion in an `async fn` requires boxing
    + --> src/lib.rs:1:27
    +  |
    +1 | async fn sum(n: usize) -> usize {
    +  |                           ^^^^^ recursive `async fn`
    +  |
    +  = note: a recursive `async fn` must be rewritten to return a boxed `dyn Future`
    +
    +

    So to make these functions async she starts boxing her futures the hard way, fighting with the compiler. She knows that async keyword is sort of a sugar for impl Future so she tries the following at first.

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn sum(n: usize) -> Box<dyn Future<Output = usize>> {
    +    Box::new(async move {
    +        if n == 0 {
    +            0
    +        } else {
    +            n + sum(n - 1).await
    +        }
    +    })
    +}
    +}
    +
    +

    The compiler gives the following error.

    +
    error[E0277]: `dyn Future<Output = usize>` cannot be unpinned
    +  --> src/main.rs:11:17
    +   |
    +11 |             n + sum(n - 1).await
    +   |                 ^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `dyn Future<Output = usize>`
    +   |
    +   = note: required because of the requirements on the impl of `Future` for `Box<dyn Future<Output = usize>>`
    +   = note: required by `poll`
    +
    +

    She then reads about Unpin and Pin, and finally comes up with a solution.

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn sum(n: usize) -> Pin<Box<dyn Future<Output = usize>>> {
    +    Box::pin(async move {
    +        if n == 0 {
    +            0
    +        } else {
    +            n + sum(n - 1).await
    +        }
    +    })
    +}
    +}
    +
    +

    The code works!

    +

    She searches online for better methods and finds out the async-book. She reads about recursion and finds out a cleaner way using the futures crate.

    +
    
    +#![allow(unused)]
    +fn main() {
    +use futures::future::{BoxFuture, FutureExt};
    +
    +fn sum(n: usize) -> BoxFuture<'static, usize> {
    +    async move {
    +        if n == 0 {
    +            0
    +        } else {
    +            n + sum(n - 1).await
    +        }
    +    }.boxed()
    +}
    +}
    +
    +

    She also asks one of her peers for a code review asynchronously, and after awaiting their response, she learns about the async-recursion crate. Then she adds async-recursion to the dependencies. Now she can write the follwing, which seems reasonably clean:

    +
    
    +#![allow(unused)]
    +fn main() {
    +#[async_recursion]
    +async fn sum(n: usize) -> usize {
    +        if n == 0 {
    +            0
    +        } else {
    +            n + sum(n - 1).await
    +        }
    +}
    +}
    +
    +

    As she is working, she realizes that what she really needs is to write a Stream of data. She starts trying to write her Stream implementation and spends several hours banging her head against her desk in frustration (her challenges are pretty similar to what Alan experienced). Ultimately she's stuck trying to figure out why her &mut self.foo call is giving her errors:

    +
    error[E0277]: `R` cannot be unpinned
    +  --src/main.rs:52:26
    +   |
    +52 |                 Pin::new(&mut self.reader).poll_read(cx, buf)
    +   |                          ^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `R`
    +   |
    +   = note: required by `Pin::<P>::new`
    +help: consider further restricting this bound
    +   |
    +40 |     R: AsyncRead + Unpin,
    +   |                  ^^^^^^^
    +
    +

    Fortunately, that weekend, @fasterthanlime publishes a blog post covering the gory details of Pin. Reading that post, she learns about pin-project, which she adds as a dependency. She's able to get her code working, but it's kind of a mess. Feeling quite proud of herself, she shows it to a friend, and they suggest that maybe she ought to try the async-stream crate. Reading that, she realizes she can use this crate to simplify some of her streams, though not all of them fit.

    +

    "Finally!", Barbara says, breathing a sigh of relief. She is done with her prototype, and shows it off at work, but to her dismay, the team decides that they need to use a custom runtime for their use case. They're building an embedded system and it has relatively limited resources. Barbara thinks, "No problem, it should be easy enough to change runtimes, right?"

    +

    So now Barbara starts the journey of replacing tokio with a myriad of off the shelf and custom helpers. She can't use warp so now she has to find an alternative. She also has to find a new channel implementations and there are a few:

    +
      +
    • In futures
    • +
    • async-std has one, but it seems to be tied to another runtime so she can't use that.
    • +
    • smol has one that is independent.
    • +
    +

    This process of "figure out which alternative is an option" is repeated many times. She also tries to use the select! macro from futures but it requires more pinning and workarounds (not to mention a stack overflow or two).

    +

    But Barbara fights through all of it. In the end, she gets it to work, but she realizes that she has a ton of random dependencies and associated compilation time. She wonders if all that dependencies will have a negative effect on the binary size. She also had to rewrite some bits of functionality on her own.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Functionality is found either in "framework"-like crates (e.g., tokio) and spread around many different ecosystem crates.
    • +
    • It's sometimes difficult to discover where this functionality lives.
    • +
    • Additionally, the trouble of non runtime-agnostic libraries becomes very apparent.
    • +
    • Helpers and utilities might have analogues across the ecosystem, but they are different in subtle ways.
    • +
    • Some patterns are clean if you know the right utility crate and very painful otherwise.
    • +
    +

    What are the sources for this story?

    +

    Issue 105

    +

    What are helper functions/macros?

    +

    They are functions/macros that helps with certain basic pieces of functionality and features. Like to await on multiple futures concurrently (join! in tokio), or else race the futures and take the result of the one that finishes first.

    +

    Will there be a difference if lifetimes are involved in async recursion functions?

    +

    Lifetimes would make it a bit more difficult. Although for simple functions it shouldn't be much of a problem.

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn concat<'a>(string: &'a mut String, slice: &'a str) -> Pin<Box<dyn Future<Output = ()> + 'a>> {
    +    Box::pin(async move {
    +        if !slice.is_empty() {
    +            string.push_str(&slice[0..1]);
    +            concat(string, &slice[1..]).await;
    +        }
    +    })
    +}
    +}
    +
    +

    Why did you choose Barbara to tell this story?

    +

    This particular issue impacts all users of Rust even (and sometimes especially) experienced ones.

    +

    How would this story have played out differently for the other characters?

    +

    Other characters may not know all their options and hence might have fewer problems as a result.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/barbara_plays_with_async.html b/docs/vision/status_quo/barbara_plays_with_async.html new file mode 100644 index 00000000..b4537b33 --- /dev/null +++ b/docs/vision/status_quo/barbara_plays_with_async.html @@ -0,0 +1,594 @@ + + + + + + Barbara plays with async - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Barbara plays with async

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara has been following async rust for a long time, in eager anticipation +of writing some project using async. The last time she tried to do anything +with futures in rust was more than a year ago (before async functions), and +when you had to chain futures together with many calls to then +(often leading to inscrutable error messages hundreds of characters long). +This was not a pleasant experience for Barbara.

    +

    After watching the development of rust async/await (by following +discussions on /r/rust and the internals forums), she wants +to start to play around with writing async code. Before starting on any real +project, she starts with a "playground" where she can try to write some simple +async rust code to see how it feels and how it compares to how async code feels +in other languages she knows (like C# and JavaScript).

    +

    She starts by opening a blank project in VSCode with rust-analyzer. Because she's +been following the overall state of rust async, she knows that she needs a runtime, +and quickly decides to use tokio, because she knows its quite popular and well documented.

    +

    After looking the long length of the tokio tutorial, she decides to not read +most of it right now, and tries to dive right in to writing code. But she does +look at the "Hello Tokio" section that shows what feature flags are required by tokio:

    +
    [dependencies]
    +tokio = { version = "1", features = ["full"] }
    +
    +

    Poking around the tokio API docs in search of something to play with, she sees +a simple future that looks interesting: the sleep future +that will wait for a certain duration to elapse before resolving.

    +

    Borrowing again from the "Hello Tokio" tutorial to make sure she has the correct +spelling for the tokio macros, she writes up the following code:

    +
    #[tokio::main]
    +pub async fn main() {
    +    let mut rng = thread_rng();
    +    let t = Uniform::new(100, 5000);
    +
    +    let mut futures = Vec::new();
    +    for _ in 0..10 {
    +        let delay = rng.sample(t);
    +        futures.push(tokio::time::sleep(Duration::from_millis(delay)));
    +    }
    +    println!("Created 10 futures");
    +
    +    for f in futures {
    +        f.await;
    +    }
    +
    +    println!("Done waiting for all futures");
    +}
    +
    +

    This very first version she wrote compiled on the first try and had no errors +when running it. Barbara was pleased about this.

    +

    However, this example is pretty boring. The program just sits there for a few +seconds doing nothing, and giving no hints about what it's actually doing. +So for the next iteration, Barbara wants to have a message printed out +when each future is resolved. She tries this code at first:

    +
    
    +#![allow(unused)]
    +fn main() {
    +let mut futures = Vec::new();
    +for _ in 0..10 {
    +    let delay = rng.sample(t);
    +    futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| {
    +        println!("Done!");
    +    }));
    +}
    +println!("Created 10 futures");
    +}
    +
    +

    But the compiler gives this error:

    +
    error[E0277]: `()` is not a future
    +  --> src\main.rs:13:71
    +   |
    +13 |         futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| {
    +   |                                                                       ^^^^ `()` is not a future
    +   |
    +   = help: the trait `futures::Future` is not implemented for `()`
    +
    +

    Even though the error is pointing at the then function, Barbara pretty quickly +recognizes the problem -- her closure needs to return a future, but () is not +a future (though she wonders "why not?"). Looking at the tokio docs is not very +helpful. The Future trait isn't even defined in the tokio docs, so +she looks at the docs for the Future trait in the rust standard library docs +and she sees it only has 5 implementors; one of them is called Ready +which looks interesting. +Indeed, this struct is a future that will resolve instantly, which is what +she wants:

    +
    
    +#![allow(unused)]
    +fn main() {
    +for _ in 0..10 {
    +    let delay = rng.sample(t);
    +    futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| {
    +        println!("Done!");
    +        std::future::ready(())
    +    }));
    +}
    +}
    +
    +

    This compiles without error, but when Barbara goes to run the code, the output +surprises her a little bit: After waiting running the program, nothing happened +for about 4 seconds. Then the first "Done!" message was printed, followed very +quickly by the other 9 messages. Based on the code she wrote, she expected 10 +"Done!" messages to be printed to the console over the span of about 5 seconds, +with roughly a uniform distribution.

    +

    After running the program few more times, she always observes that while the +first view messages are printed after some delay, the last few messages are +always printed all at once.

    +

    Barbara has experience writing async code in JavaScript, and so she thinks for +a moment about how this toy code might have looked like if she was using JS:

    +
    async function main() {
    +    const futures = [];
    +    for (let idx = 0; idx < 10; idx++) {
    +        const delay = 100 + (Math.random() * 4900);
    +        const f = new Promise(() => {
    +            setTimeout(() => console.log("Done!"), delay)
    +        })
    +        futures.push(f);
    +    }
    +
    +    Promise.all(futures);
    +}
    +
    +

    After imagining this code, Barbara has an "ah-ha!" moment, and realizes the +problem is likely how she is waiting for the futures in her rust code. +In her rust code, she is waiting for the futures one-by-one, but in the +JavaScript code she is waiting for all of them simultaneously.

    +

    So Barbara looks for a way to wait for a Vec of futures. After a bunch of +searching in the tokio docs, she finds nothing. The closet thing she finds +is a join! macro, but this appears to only work on individually specified +futures, not a Vec of futures.

    +

    Disappointed, she then looks at the future module from the rust standard +library, but module is tiny and very +clearly doesn't have what she wants. Then Barbara has another "ah-ha!" moment +and remembers that there's a 3rd-party crate called "futures" +on crates.io that she's seen mentioned in some /r/rust posts. She checks the +docs and finds the join_all function which looks like what she wants:

    +
    
    +#![allow(unused)]
    +fn main() {
    +let mut futures = Vec::new();
    +for _ in 0..10 {
    +    let delay = rng.sample(t);
    +    futures.push(tokio::time::sleep(Duration::from_millis(delay)).then(|_| {
    +        println!("Done!");
    +        std::future::ready(())
    +    }));
    +}
    +println!("Created 10 futures");
    +
    +futures::future::join_all(futures).await;
    +println!("Done");
    +}
    +
    +

    It works exactly as expected now! After having written the code, Barbara begins +to remember an important detail about rust futures that she once read somewhere: +rust futures are lazy, and won't make progress unless you await them.

    +

    Happy with this success, Barbara continues to expand her toy program by making +a few small adjustments:

    +
    
    +#![allow(unused)]
    +fn main() {
    +for counter in 0..10 {
    +    let delay = rng.sample(t);
    +    let delay_future = tokio::time::sleep(Duration::from_millis(delay));
    +
    +    if counter < 9 {
    +        futures.push(delay_future.then(|_| {
    +            println!("Done!");
    +            std::future::ready(())
    +        }));
    +    } else {
    +        futures.push(delay_future.then(|_| {
    +            println!("Done with the last future!");
    +            std::future::ready(())
    +        }));
    +    }
    +}
    +}
    +
    +

    This fails to compile:

    +
    error[E0308]: mismatched types
    +
    +   = note: expected closure `[closure@src\main.rs:16:44: 19:14]`
    +              found closure `[closure@src\main.rs:21:44: 24:14]`
    +   = note: no two closures, even if identical, have the same type
    +   = help: consider boxing your closure and/or using it as a trait object
    +
    +

    This error doesn't actually surprise Barbara that much, as she is familiar with +the idea of having to box objects sometimes. She does +notice the "consider boxing your closure" error, but thinks that this is not +likely the correct solution. Instead, she thinks that she should box the +entire future.

    +

    She first adds explicit type annotations to the Vec:

    +
    
    +#![allow(unused)]
    +fn main() {
    +let mut futures: Vec<Box<dyn Future<Output=()>>> = Vec::new();
    +}
    +
    +

    She then notices that her IDE (VSCode + rust-analyzer) has a new error on +each call to push. The code assist on each error says Store this in the heap by calling 'Box::new'. She is exactly what she wants, and it happy that +rust-analyzer perfectly handled this case.

    +

    Now each future is boxed up, but there is one final error still, +this time on the call to join_all(futures).await:

    +
    error[E0277]: `dyn futures::Future<Output = ()>` cannot be unpinned
    +  --> src\main.rs:34:31
    +   |
    +34 |     futures::future::join_all(futures).await;
    +
    +

    Barbara has been around rust for long enough to know that there is a Box::pin +API, but she doesn't really understand what it does, nor does she have a good +intuition about what this API is for. But she is accustomed to just trying +things in rust to see if they work. And indeed, after changing Box::new to +Box::pin:

    +
    
    +#![allow(unused)]
    +fn main() {
    +futures.push(Box::pin(delay_future.then(|_| {
    +    println!("Done!");
    +    std::future::ready(())
    +})));
    +}
    +
    +

    and adjusting the type of the Vec:

    +
    
    +#![allow(unused)]
    +fn main() {
    +let mut futures: Vec<Pin<Box<dyn Future<Output=()>>>> = Vec::new();
    +}
    +
    +

    the code compiles and runs successfully.

    +

    But even though the run is working correctly, she wishes she had a better idea +why pinning is necessary here and feels a little uneasy having to use something +she doesn't yet understand well.

    +

    As one final task, Barbara wants to try to replace the chained call to then +with a async block. She remembers that these were a big deal in a recent +release of rust, and that they looked a lot nicer than a long chain of then +calls. She doesn't remember the exact syntax for this, but she read a blog +post about async rust a few weeks ago, and has a vague idea of how it looks.

    +

    She tries writing this:

    +
    
    +#![allow(unused)]
    +fn main() {
    +futures.push(Box::pin(async || {
    +    tokio::time::sleep(Duration::from_millis(delay)).await;
    +    println!("Done after {}ms", delay);
    +}));
    +}
    +
    +

    The compiler gives an error:

    +
    error[E0658]: async closures are unstable
    +  --> src\main.rs:14:31
    +   |
    +14 |         futures.push(Box::pin(async || {
    +   |                               ^^^^^
    +   |
    +   = note: see issue #62290 <https://github.com/rust-lang/rust/issues/62290> for more information
    +   = help: add `#![feature(async_closure)]` to the crate attributes to enable
    +   = help: to use an async block, remove the `||`: `async {`
    +
    +

    Barbara knows that async is stable and using this nightly feature isn't what +she wants. So the tries the suggestion made by the compiler and removes the || bars:

    +
    
    +#![allow(unused)]
    +fn main() {
    +futures.push(Box::pin(async {
    +    tokio::time::sleep(Duration::from_millis(delay)).await;
    +    println!("Done after {}ms", delay);
    +}));
    +}
    +
    +

    A new error this time:

    +
    error[E0597]: `delay` does not live long enough
    +15 | |             tokio::time::sleep(Duration::from_millis(delay)).await;
    +   | |                                                      ^^^^^ borrowed value does not live long enough
    +
    +

    This is an error that Barbara is very familiar with. If she was working with +a closure, she knows she can use a move-closure (since her delay type is Copy). +But she not using a closure (she just tried, but the compiler told her to switch +to an async block), but Barbara's experience with rust tells her that it's a very +consistent language. Maybe the same keyword used in move closures will work here? +She tries it:

    +
    
    +#![allow(unused)]
    +fn main() {
    +futures.push(Box::pin(async move {
    +    tokio::time::sleep(Duration::from_millis(delay)).await;
    +    println!("Done after {}ms", delay);
    +}));
    +}
    +
    +

    It works! Satisfied but still thinking about async rust, Barbara takes a break +to eat a cookie.

    +

    🤔 Frequently Asked Questions

    +

    Here are some standard FAQ to get you started. Feel free to add more!

    +

    Why did you choose Barbara to tell this story?

    +

    Barbara has years of rust experience that she brings to bear in her async learning experiences.

    +

    What are the morals of the story?

    +
      +
    • +

      Due to Barbara's long experience with rust, she knows most of the language +pretty well (except for things like async, and advanced concepts like pinned objects). +She generally trusts the rust compiler, and she's learned over the years that she +can learn how to use an unfamiliar library by reading the API docs. As long +as she can get the types to line up and the code to compile, things generally +work as she expects.

      +

      But this is not the case with rust async:

      +
        +
      • There can be new syntax to learn (e.g. async blocks)
      • +
      • It can be hard to find basic functionality (like futures::future::join_all)
      • +
      • It's not always clear how the ecosystem all fits together +(what functionality is part of tokio? What is part of the +standard library? What is part of other crates like the +futures crate?)
      • +
      • Sometimes it looks like there multiple ways to do something: +
          +
        • What's the difference between futures::future::Future and std::future::Future?
        • +
        • What's the difference between tokio::time::Instant and std::time::Instant?
        • +
        • What's the difference between std::future::ready and futures::future::ok?
        • +
        +
      • +
      +
    • +
    • +

      Barbara's has a lot to learn. Her usual methods of learning how to use +new crates doesn't really work when learning tokio and async. She wonders +if she actually should have read the long tokio tutorial before starting. +She realizes it will take her a while to build up the necessary foundation +of knowledge before she can be proficient in async rust.

      +
    • +
    • +

      There were several times where the compiler or the IDE gave helpful error +messages and Barbara appreciated these a lot.

      +
    • +
    +

    What are the sources for this story?

    +

    Personal experiences of the author

    +

    How would this story have played out differently for the other characters?

    +

    Other characters would likely have written all the same code as Barbara, +and probably would have run into the same problems. But other characters +might have needed quite a bit longer to get to the solution.

    +

    For example, it was Barbara's experience with move-closures that led her to try +adding the move keyword to the async block. And it was her general +"ambient knowledge" of things that allowed her to remember that things +like the futures crate exist. Other characters would have likely needed +to resort to an internet search or asking on a rust community.

    + + + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/barbara_tries_async_streams.html b/docs/vision/status_quo/barbara_tries_async_streams.html new file mode 100644 index 00000000..17b0f280 --- /dev/null +++ b/docs/vision/status_quo/barbara_tries_async_streams.html @@ -0,0 +1,278 @@ + + + + + + Barbara tries async streams - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Barbara tries async streams

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    Barbara has years of experience in Rust and was looking forward to using some of that experience with the brand-new async functionality. Async/await had been a dream of Rust for so long, and it was finally here!

    +

    As she began her next side project, she would quickly partner up with other experienced Rust developers. One of these Rust developers, who had more async experience than Barbara, suggested they use 'async streams' as the core abstraction for this project. Barbara trusted the experience of this other developer. Though she didn't yet understand how async streams worked, she was happy to go along with the decision and build her experience over time.

    +

    Month after month, the side project grew in scope and number of users. Potential contributors would try to contribute, but some would leave because they found the combination of concepts and the additional set of borrowchecker-friendly code patterns difficult to understand and master. Barbara was frustrated to lose potential contributors but kept going.

    +

    Users also began to discover performance bottlenecks as they pushed the system harder. Barbara, determined to help the users as best she could, pulled her thinking cap tight and started to probe the codebase.

    +

    In her investigations, she experimented with adding parallelism to the async stream. She knew that if she called .next() twice, that in theory she should have two separate futures. There were a few ways to run multiple futures in parallel, so this seemed like it might pan out to be a useful way of leveraging the existing architecture.

    +

    Unfortunately, to Barbara's chagrin, async streams do not support this kind of activity. Each .next() must be awaited so that the ownership system allowed her to get the next value in the stream. Effectively, this collapsed the model to being a synchronous iterator with a more modern scent. Barbara was frustrated and started to clarify her understanding of what asynchrony actually meant, looking through the implementations for these abstractions.

    +

    When she was satisfied, she took a step back and thought for a moment. If optional parallelism was a potential win and the core data processing system actually was going to run synchronously anyway -- despite using async/await extensively in the project -- perhaps it would make more sense to redesign the core abstraction.

    +

    With that, Barbara set off to experiment with a new engine for her project. The new engine focused on standard iterators and rayon instead of async streams. As a result, the code was much easier for new users, as iterators are well-understood and have good error messages. Just as importantly, the code was noticeably faster than its async counterpart. Barbara benchmarked a variety of cases to be sure, and always found that the new, simpler approach performed better than the async stream original.

    +

    To help those who followed after her, Barbara sat down to write out her experiences to share with the rest of the world. Perhaps future engineers might learn from the twists and turns her project took.

    +

    🤔 Frequently Asked Questions

    +

    Here are some standard FAQ to get you started. Feel free to add more!

    +

    What are the morals of the story?

    +
      +
    • Easy to get the wrong idea. The current state of documentation does not make the use cases clear, so it's easy to grab this as an abstraction because it's the closest that fits.
    • +
    • Async streams are just iterators. Async streams do not offer useful asynchrony in and of themselves. A possible help here might be renaming "async streams" to "async iterators" to help underscore their use case and help developers more quickly understand their limitations.
    • +
    • A single async stream can not be operated on in parallel. They open up asynchrony only during the .next() step and are unable to offer asynchrony between steps (eg by calling .next() twice and operating on the resulting Futures).
    • +
    +

    What are the sources for this story?

    + +

    Why did you choose Barbara to tell this story?

    +

    Barbara is an experienced engineer who may come to async streams and async/await in general with a partially-incorrect set of baseline understanding. It may take her time to understand and see more clearly where her model was wrong because there are things similar to other experiences she's had. For example, Rust futures differ from C++ futures and do not offer the same style of asynchrony. Terms like "streams" sound like they may have more internal functionality, and it would be easy for an experienced developer to trip up with the wrong starting assumption.

    +

    How would this story have played out differently for the other characters?

    +
      +
    • Alan may have come to a similar idea for an architecture, as async/await is popular in languages like JavaScript and C#. Once Alan attempted to use asynchrony between units of work, namely using async streams, this is where Alan may have failed. The amount of Rust one has to know to succeed here is quite high and includes understanding Arc, Pin, Streams, traits/adapters, the borrowchecker and dealing with different types of errors, and more.
    • +
    • Grace may have chosen a different core abstraction from the start. She has a good chance of thinking through how she'd like the data processing system to work. It's possible she would have found threads and channels a better fit. This would have had different trade-offs.
    • +
    • Niklaus may have also tried to go down the async stream path. The information available is mixed and hype around async/await is too strong. This makes it shine brighter than it should. Without experience with different systems languages to temper the direction, the most likely path would be to experiment with asynchrony and hope that "underneath the surface it does the right thing."
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/barbara_trims_a_stacktrace.html b/docs/vision/status_quo/barbara_trims_a_stacktrace.html new file mode 100644 index 00000000..c1095400 --- /dev/null +++ b/docs/vision/status_quo/barbara_trims_a_stacktrace.html @@ -0,0 +1,386 @@ + + + + + + Barbara trims a stacktrace - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Barbara trims a stacktrace

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara is triaging the reported bugs for her SLOW library. For each bug, she tries to quickly see if she can diagnose the basic area of code that is affected so she knows which people to ping to help fix it. She opens a bug report from a user complaining about a panic when too many connections arrive at the same time. The bug report includes a backtrace from the user's code, and it looks like this:

    +
    thread 'main' panicked at 'something bad happened here', src/main.rs:16:5
    +stack backtrace:
    +   0: std::panicking::begin_panic
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:519:12
    +   1: slow_rs::process_one::{{closure}}
    +             at ./src/main.rs:16:5
    +   2: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
    +   3: slow_rs::process_many::{{closure}}
    +             at ./src/main.rs:10:5
    +   4: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
    +   5: slow_rs::main::{{closure}}::{{closure}}
    +             at ./src/main.rs:4:9
    +   6: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
    +   7: slow_rs::main::{{closure}}
    +             at ./src/main.rs:3:5
    +   8: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
    +   9: tokio::park::thread::CachedParkThread::block_on::{{closure}}
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/park/thread.rs:263:54
    +  10: tokio::coop::with_budget::{{closure}}
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/coop.rs:106:9
    +  11: std::thread::local::LocalKey<T>::try_with
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:272:16
    +  12: std::thread::local::LocalKey<T>::with
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:248:9
    +  13: tokio::coop::with_budget
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/coop.rs:99:5
    +  14: tokio::coop::budget
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/coop.rs:76:5
    +  15: tokio::park::thread::CachedParkThread::block_on
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/park/thread.rs:263:31
    +  16: tokio::runtime::enter::Enter::block_on
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/runtime/enter.rs:151:13
    +  17: tokio::runtime::thread_pool::ThreadPool::block_on
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/runtime/thread_pool/mod.rs:71:9
    +  18: tokio::runtime::Runtime::block_on
    +             at /home/serg/.cargo/registry/src/github.amrom.workers.dev-1ecc6299db9ec823/tokio-1.3.0/src/runtime/mod.rs:452:43
    +  19: slow_rs::main
    +             at ./src/main.rs:1:1
    +  20: core::ops::function::FnOnce::call_once
    +             at /home/serg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5
    +note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
    +
    +

    Barbara finds the text overwhelming. She can't just browse it to figure out what code is affected. Instead, she pops up a new tab with gist.github.com copies the text into that handy text box and starts deleting stuff. To start, she deletes the first few lines until her code appears, then she deletes:

    +
      +
    • the extra lines from calls to poll that are introduced by the async fn machinery;
    • +
    • the bits of code that come from tokio that don't affect her;
    • +
    • the intermediate wrappers from the standard library pertaining to thread-local variables.
    • +
    +

    She's a bit confused by the ::{closure} lines on her symbols but she learned by now that this is normal for async fn. After some work, she has reduced her stack to this:

    +
    thread 'main' panicked at 'something bad happened here', src/main.rs:16:5
    +stack backtrace:
    +   1: slow_rs::process_one::{{closure}} at ./src/main.rs:16:5
    +   3: slow_rs::process_many::{{closure}} at ./src/main.rs:10:5
    +   5: slow_rs::main::{{closure}}::{{closure}} at ./src/main.rs:4:9
    +   7: slow_rs::main::{{closure}} at ./src/main.rs:3:5
    +  13: <tokio stuff> 
    +  19: slow_rs::main
    +note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
    +
    +

    Based on this, she is able to figure out who to ping about the problem. She pastes her reduced stack trace into the issue pings Alan, who is responsible that module. Alan thanks her for reducing the stack trace and mentions, "Oh, when I used to work in C#, this is what the stack traces always looked like. I miss those days."

    +

    Fin.

    +

    🤔 Frequently Asked Questions

    +

    Here are some standard FAQ to get you started. Feel free to add more!

    +

    What are the morals of the story?

    +
      +
    • Rust stack traces -- but async stack traces in particular -- reveal lots of implementation details to the user: +
        +
      • Bits of the runtime and intermediate libraries whose source code is likely not of interest to the user (but it might be);
      • +
      • Intermediate frames from the stdlib;
      • +
      • ::{closure} symbols on async functions and blocks (even though they don't appear to be closures to the user);
      • +
      • calls to poll.
      • +
      +
    • +
    +

    What are the sources for this story?

    +

    Sergey Galich reported this problem, among many others.

    +

    Why did you choose Barbara to tell this story?

    +

    She knows about the desugarings that give rise to symbols like ::{closure}, but she still finds them annoying to deal with in practice.

    +

    How would this story have played out differently for the other characters?

    +
      +
    • Other characters might have wasted a lot of time trying to read through the stack trace in place before editing it.
    • +
    • They might not have known how to trim down the stack trace to something that focused on their code, or it might have taken them much longer to do so.
    • +
    +

    How does this compare to other languages?

    +
      +
    • Rust's async model does have some advantages, because the complete stack trace is available unless there is an intermediate spawn.
    • +
    • Other languages have developed special tools to connect async functions to their callers, however, which gives them a nice experience. For example, Chrome has a UI for enabling stacktraces that cross await points.
    • +
    +

    Why doesn't Barbara view this in a debugger?

    +
      +
    • Because it came in an issue report (or, freqently, as a crash report or email).
    • +
    • But also, that isn't necessarily an improvement! Expand below if you would like to see what we mean.
    • +
    +
    +(click to see how a backtrace looks in lldb) +
    * thread #1, name = 'foo', stop reason = breakpoint 1.1
    +  * frame #0: 0x0000555555583d24 foo`foo::main::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h617d49d0841ffc0d((null)=closure-0 @ 0x00007fffffffae38, (null)=<unavailable>) at main.rs:11:13
    +    frame #1: 0x0000555555583d09 foo`_$LT$T$u20$as$u20$futures_util..fns..FnOnce1$LT$A$GT$$GT$::call_once::hc559b1f3f708a7b0(self=closure-0 @ 0x00007fffffffae68, arg=<unavailable>) at fns.rs:15:9
    +    frame #2: 0x000055555557f300 foo`_$LT$futures_util..future..future..map..Map$LT$Fut$C$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hebf5b295fcc0837f(self=(pointer = 0x0000555555700e00), cx=0x00007fffffffcf50) at map.rs:57:73
    +    frame #3: 0x00005555555836ac foo`_$LT$futures_util..future..future..Map$LT$Fut$C$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::h482f253651b968e6(self=Pin<&mut futures_util::future::future::Map<tokio::time::driver::sleep::Sleep, closure-0>> @ 0x00007fffffffb268, cx=0x00007fffffffcf50)
    +at lib.rs:102:13
    +    frame #4: 0x000055555557995a foo`_$LT$futures_util..future..future..flatten..Flatten$LT$Fut$C$$LT$Fut$u20$as$u20$core..future..future..Future$GT$..Output$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hd62d2a2417c0f2ea(self=(pointer = 0x0000555555700d80), cx=0x00007fffffffcf50) at flatten.rs:48:36
    +    frame #5: 0x00005555555834fc foo`_$LT$futures_util..future..future..Then$LT$Fut1$C$Fut2$C$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hf60f05f9e9d6f307(self=Pin<&mut futures_util::future::future::Then<tokio::time::driver::sleep::Sleep, core::future::ready::Ready<()>, closure-0>> @ 0x00007fffffffc148, cx=0x00007fffffffcf50) at lib.rs:102:13
    +    frame #6: 0x000055555558474a foo`_$LT$core..pin..Pin$LT$P$GT$$u20$as$u20$core..future..future..Future$GT$::poll::h4dad267b4f10535d(self=Pin<&mut core::pin::Pin<alloc::boxed::Box<Future, alloc::alloc::Global>>> @ 0x00007fffffffc188, cx=0x00007fffffffcf50) at future.rs:119:9
    +    frame #7: 0x000055555557a693 foo`_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll::hdb6db40c2b3f2f1b(self=(pointer = 0x00005555557011b0), cx=0x00007fffffffcf50) at maybe_done.rs:95:38
    +    frame #8: 0x0000555555581254 foo`_$LT$futures_util..future..join_all..JoinAll$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll::ha2472a9a54f0e504(self=Pin<&mut futures_util::future::join_all::JoinAll<core::pin::Pin<alloc::boxed::Box<Future, alloc::alloc::Global>>>> @ 0x00007fffffffc388, cx=0x00007fffffffcf50) at join_all.rs:101:16
    +    frame #9: 0x0000555555584095 foo`foo::main::_$u7b$$u7b$closure$u7d$$u7d$::h6459086fc041943f((null)=ResumeTy @ 0x00007fffffffcc40) at main.rs:17:5
    +    frame #10: 0x0000555555580eab foo`_$LT$core..future..from_generator..GenFuture$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$::poll::h272e2b5e808264a2(self=Pin<&mut core::future::from_generator::GenFuture<generator-0>> @ 0x00007fffffffccf8, cx=0x00007fffffffcf50) at mod.rs:80:19
    +    frame #11: 0x00005555555805a0 foo`tokio::park::thread::CachedParkThread::block_on::_$u7b$$u7b$closure$u7d$$u7d$::hbfc61d9f747eef7b at thread.rs:263:54
    +    frame #12: 0x00005555555795cc foo`tokio::coop::with_budget::_$u7b$$u7b$closure$u7d$$u7d$::ha229cfa0c1a2e13f(cell=0x00007ffff7c06712) at coop.rs:106:9
    +    frame #13: 0x00005555555773cc foo`std::thread::local::LocalKey$LT$T$GT$::try_with::h9a2f70c5c8e63288(self=0x00005555556e2a48, f=<unavailable>) at local.rs:272:16
    +    frame #14: 0x0000555555576ead foo`std::thread::local::LocalKey$LT$T$GT$::with::h12eeed0906b94d09(self=0x00005555556e2a48, f=<unavailable>) at local.rs:248:9
    +    frame #15: 0x000055555557fea6 foo`tokio::park::thread::CachedParkThread::block_on::h33b270af584419f1 [inlined] tokio::coop::with_budget::hcd477734d4970ed5(budget=(__0 = core::option::Option<u8> @ 0x00007fffffffd040), f=closure-0 @ 0x00007fffffffd048) at coop.rs:99:5
    +    frame #16: 0x000055555557fe73 foo`tokio::park::thread::CachedParkThread::block_on::h33b270af584419f1 [inlined] tokio::coop::budget::h410dced2a7df3ec8(f=closure-0 @ 0x00007fffffffd008) at coop.rs:76
    +    frame #17: 0x000055555557fe0c foo`tokio::park::thread::CachedParkThread::block_on::h33b270af584419f1(self=0x00007fffffffd078, f=<unavailable>) at thread.rs:263
    +    frame #18: 0x0000555555578f76 foo`tokio::runtime::enter::Enter::block_on::h4a9c2602e7b82840(self=0x00007fffffffd0f8, f=<unavailable>) at enter.rs:151:13
    +    frame #19: 0x000055555558482b foo`tokio::runtime::thread_pool::ThreadPool::block_on::h6b211ce19db8989d(self=0x00007fffffffd280, future=(__0 = foo::main::generator-0 @ 0x00007fffffffd200)) at mod.rs:71:9
    +    frame #20: 0x0000555555583324 foo`tokio::runtime::Runtime::block_on::h5f6badd2dffadf55(self=0x00007fffffffd278, future=(__0 = foo::main::generator-0 @ 0x00007fffffffd968)) at mod.rs:452:43
    +    frame #21: 0x0000555555579052 foo`foo::main::h3106d444f509ad81 at main.rs:5:1
    +    frame #22: 0x000055555557b69b foo`core::ops::function::FnOnce::call_once::hba86afc3f8197561((null)=(foo`foo::main::h3106d444f509ad81 at main.rs:6), (null)=<unavailable>) at function.rs:227:5
    +    frame #23: 0x0000555555580efe foo`std::sys_common::backtrace::__rust_begin_short_backtrace::h856d648367895391(f=(foo`foo::main::h3106d444f509ad81 at main.rs:6)) at backtrace.rs:125:18
    +    frame #24: 0x00005555555842f1 foo`std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::h24c58cd1e112136f at rt.rs:66:18
    +    frame #25: 0x0000555555670aca foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] core::ops::function::impls::_$LT$impl$u20$core..ops..function..FnOnce$LT$A$GT$$u20$for$u20$$RF$F$GT$::call_once::hbcc915e668c7ca11 at function.rs:259:13
    +    frame #26: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] std::panicking::try::do_call::h6b0f430d48122ddf at panicking.rs:379
    +    frame #27: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] std::panicking::try::h6ba420e2e21b5afa at panicking.rs:343
    +    frame #28: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 [inlined] std::panic::catch_unwind::h8366719d1f615eee at panic.rs:431
    +    frame #29: 0x0000555555670ac3 foo`std::rt::lang_start_internal::h965c28c9ce06ee73 at rt.rs:51
    +    frame #30: 0x00005555555842d0 foo`std::rt::lang_start::ha8694bc6fe5182cd(main=(foo`foo::main::h3106d444f509ad81 at main.rs:6), argc=1, argv=0x00007fffffffdc88) at rt.rs:65:5
    +    frame #31: 0x00005555555790ec foo`main + 28
    +    frame #32: 0x00007ffff7c2f09b libc.so.6`__libc_start_main(main=(foo`main), argc=1, argv=0x00007fffffffdc88, init=<unavailable>, fini=<unavailable>, rtld_fini=<unavailable>, stack_end=0x00007fffffffdc78) at libc-start.c:308:16
    +
    +
    +

    Doesn't Rust have backtrace trimming support?

    +

    Yes, this is the reduced backtrace. You don't even want to know what the full one looks like. Don't click it. Don't!

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/barbara_wants_async_insights.html b/docs/vision/status_quo/barbara_wants_async_insights.html new file mode 100644 index 00000000..06197322 --- /dev/null +++ b/docs/vision/status_quo/barbara_wants_async_insights.html @@ -0,0 +1,296 @@ + + + + + + Barbara wants async insights - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Barbara wants Async Insights

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Barbara has an initial prototype of a new service she wrote in sync Rust. She then decides, since the service is extremely I/O bound, to port it to async Rust and her benchmarks have led her to believe that performance is being left on the table.

    +

    She does this by sprinkling async/.await everywhere, picking an executor, and moving dependencies from sync to async.

    +

    Once she has the program compiling, she thinks "oh that was easy". She runs it for the first time and surprisingly she finds out that when hitting an endpoint, nothing happens.

    +

    Barbara, always prepared, has already added logging to her service and she checks the logs. As she expected, she sees here that the endpoint handler has been invoked but then... nothing. Barbara exclaims, "Oh no! This was not what I was expecting, but let's dig deeper."

    +

    She checks the code and sees that the endpoint spawns several tasks, but unfortunately those tasks don't have much logging in them.

    +

    Barbara knows that debugging with a traditional debugger is not very fruitful in async Rust. She does a deep dive into the source code and doesn't find anything. Then she adds much more logging, but to her dismay she finds that a particular task seems stuck, but she has no idea why.

    +

    She really wishes that there was a way to get more insight into why the task is stuck. These were the thoughts inside her head at that moment:

    +
      +
    • Is it waiting on I/O?
    • +
    • Is there a deadlock?
    • +
    • Did she miss some sync code that might still be there and messing with the executor?
    • +
    +

    For the I/O question she knows to use some tools on her operating system (lsof). This reveals some open sockets but she's not sure how to act on this.

    +

    She scans the code for any std lib imports that might be blocking, but doesn't find anything.

    +

    After hours of crawling through the code, she notices that her task is receiving a message from a bounded async channel. She changes this to be an unbounded channel and then things start working.

    +

    She wants to know why the code was not working, but unfortunately she has no way to gain insight into this issue. She fears that her task might use too much memory knowing that the channel is unbounded, but she can't really tell.

    +

    She thinks, "Anyhow it is working now, let's see if we got some performance gains." After thorough benchmarking she finds out that she didn't quite get the performance gain she was expecting. "Something is not working, as intended", she thinks.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • There are very few ways to get insights into running systems. Tracing is state of the art. console.log #ftw
    • +
    • Tracing is a static activity and there's no way to dynamically gain insights.
    • +
    • While it's possible to find solutions to these issues, often you don't have insight into if those solutions bring new problems.
    • +
    • Debugging process for non-trivial issues is almost guaranteed to be painful and expensive.
    • +
    +

    What are the sources for this story?

    +

    Issue 75

    +

    What are examples of the kinds of things a user might want to have insight into?

    +
      +
    • Custom Events - logging/tracing (Per task?)
    • +
    • Memory consumption per task.
    • +
    • I/O handles in waiting state per task.
    • +
    • Number of tasks and their states over time.
    • +
    • Wake and drop specific tasks.
    • +
    • Denoised stack traces and/or stack traces that are task aware.
    • +
    • Who spawned the task?
    • +
    • Worker threads that are blocked from progressing tasks forward.
    • +
    • Tasks that are not progressing.
    • +
    +

    Why did you choose Barbara to tell this story?

    +

    Barbara knows what she's doing, but still there is little way to get insights.

    +

    How would this story have played out differently for the other characters?

    +

    Depending on what languages he was using before, Alan would likely have had experience with a stronger tooling story:

    + + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/barbara_wants_to_use_ghostcell.html b/docs/vision/status_quo/barbara_wants_to_use_ghostcell.html new file mode 100644 index 00000000..e32ea664 --- /dev/null +++ b/docs/vision/status_quo/barbara_wants_to_use_ghostcell.html @@ -0,0 +1,593 @@ + + + + + + Barbara wants to use GhostCell-like cell borrowing - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Barbara wants to use GhostCell-like cell borrowing with futures

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the +brainstorming period. It is derived from real-life experiences of +actual Rust users and is meant to reflect some of the challenges that +Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to +the FAQ, feel free to open a PR making edits (but keep in mind that, +as they reflect peoples' experiences, status quo stories cannot be +wrong, only inaccurate). Alternatively, you may wish to add your own +status quo story!

    +

    The story

    +

    Barbara quite likes using statically-checked cell borrowing. "Cell" +in Rust terminology refers to types like Cell or RefCell that +enable interior mutability, i.e. modifying or mutably borrowing stuff +even if you've only got an immutable reference to it. +Statically-checked cell borrowing is a technique whereby one object +(an "owner") acts as a gatekeeper for borrow-access to a set of other +objects ("cells"). So if you have mutable borrow access to the owner, +you can temporarily transfer that mutable borrow access to a cell in +order to modify it. This is all checked at compile-time, hence +"statically-checked".

    +

    In comparison RefCell does borrow-checking, but it is checked at +runtime and it will panic if you make a coding mistake. The advantage +of statically-checked borrowing is that it cannot panic at runtime, +i.e. all your borrowing bugs show up at compile time. The history +goes way back, and the technique has been reinvented at least 2-3 +times as far as Barbara is aware. This is implemented in various +forms in GhostCell and +qcell.

    +

    Barbara would like to use statically-checked cell borrowing within +futures, but there is no way to get the owner borrow through the +Future::poll call, i.e. there is no argument or object that the +runtime could save the borrow in. Mostly this does not cause a +problem, because there are other ways for a runtime to share data, +e.g. data can be incorporated into the future when it is created. +However in this specific case, for the specific technique of +statically-checked cell borrows, we need an active borrow to the owner +to be passed down the call stack through all the poll calls.

    +

    So Barbara is forced to use RefCell instead and be very careful not +to cause panics. This seems like a step back. It feels dangerous to +use RefCell and to have to manually verify that her cell borrows are +panic-free.

    +

    There are good habits that you can adopt to offset the dangers, of +course. If you are very careful to make sure that you call no other +method or function which might in turn call code which might attempt +to get another borrow on the same cell, then the RefCell::borrow_mut +panics can be avoided. However this is easy to overlook, and it is +easy to fail to anticipate what indirect calls will be made by a given +call, and of course this may change later on due to maintenance and +new features. A borrow may stay active longer than expected, so calls +which appear safe might actually panic. Sometimes it's necessary to +manually drop the borrow to be sure. In addition you'll never know +what indirect calls might be made until all the possible code-paths +have been explored, either through testing or through running in +production.

    +

    So Barbara prefers to avoid all these problems, and use +statically-checked cell borrowing where possible.

    +

    Example 1: Accessing an object shared outside the runtime

    +

    In this minimized example of code to interface a stream to code +outside of the async/await system, the buffer has to be accessible +from both the stream and the outside code, so it is handled as a +Rc<RefCell<StreamBuffer<T>>>.

    +
    
    +#![allow(unused)]
    +fn main() {
    +pub struct StreamPipe<T> {
    +    buf: Rc<RefCell<StreamBuffer<T>>>,
    +    req_more: Rc<dyn Fn()>,
    +}
    +
    +impl<T> Stream for StreamPipe<T> {
    +    type Item = T;
    +
    +    fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<Option<T>> {
    +        let mut buf = self.buf.borrow_mut();
    +        if let Some(item) = buf.value.take() {
    +            return Poll::Ready(Some(item));
    +        }
    +        if buf.end {
    +            return Poll::Ready(None);
    +        }
    +        (self.req_more)();  // Callback to request more data
    +        Poll::Pending
    +    }
    +}
    +}
    +
    +

    Probably req_more() has to schedule some background operation, but +if it doesn't and attempts to modify the shared buf immediately then +we get a panic, because buf is still borrowed. The real life code +could be a lot more complicated, and the required combination of +conditions might be harder to hit in testing.

    +

    With statically-checked borrowing, the borrow would be something like +let mut buf = self.buf.rw(cx);, and the req_more call would either +have to take the cx as an argument (forcing the previous borrow to +end) or would not take cx, meaning that it would always have to +defer the access to the buffer to other code, because without the cx +there is no possible way to access the buffer.

    +

    Example 2: Shared monitoring data

    +

    In this example, the app keeps tallies of various things in a +Monitor structure. This might be data in/out, number of errors +detected, maybe a hashmap of current links, etc. Since it is accessed +from various components, it is kept behind an Rc<RefCell<_>>.

    +
    // Dependency: futures-lite = "1.11.3"
    +use std::cell::RefCell;
    +use std::rc::Rc;
    +
    +fn main() {
    +    let monitor0 = Rc::new(RefCell::new(Monitor { count: 0 }));
    +    let monitor1 = monitor0.clone();
    +
    +    let fut0 = async move {
    +        let mut borrow = monitor0.borrow_mut();
    +        borrow.count += 1;
    +    };
    +
    +    let fut1 = async move {
    +        let mut borrow = monitor1.borrow_mut();
    +        borrow.count += 1;
    +        fut0.await;
    +    };
    +
    +    futures_lite::future::block_on(fut1);
    +}
    +
    +struct Monitor {
    +    count: usize,
    +}
    +
    +

    The problem is that this panics with a borrowing error because the +borrow is still active when the fut0.await executes and attempts +another borrow. The solution is to remember to drop the borrow before +awaiting.

    +

    In this example code the bug is obvious, but in real life maybe fut0 +only borrows in rare situations, e.g. when an error is detected. Or +maybe the future that borrows is several calls away down the +callstack.

    +

    With statically-checked borrowing, there is a slight problem in that +currently there is no way to access the poll context from async {} +code. But if there was then the borrow would be something like let mut borrow = monitor1.rw(cx);, and since the fut0.await implicitly +requires the cx in order to poll, the borrow would be forced to end +at that point.

    +

    Further investigation by Barbara

    +

    The mechanism

    +

    Barbara understands that statically-checked cell borrows work by +having an owner held by the runtime, and various instances of a cell +held by things running on top of the runtime (these cells would +typically be behind Rc references). A mutable borrow on the owner +is passed down the stack, which enables safe borrows on all the cells, +since a mutable borrow on a cell is enabled by temporarily holding +onto the mutable borrow of the owner, which is all checked at +compile-time.

    +

    So the mutable owner borrow needs to be passed through the poll +call, and Barbara realizes that this would require support from the +standard library.

    +

    Right now a &mut Context<'_> is passed to poll, and so within +Context would be the ideal place to hold a borrow on the cell owner. +However as far as Barbara can see there are difficulties with all the +current implementations:

    +
      +
    • +

      GhostCell (or qcell::LCell) may be the best available solution, +because it doesn't have any restrictions on how many runtimes might +be running or how they might be nested. But Rust insists that the +lifetimes <'id> on methods and types are explicit, so it seems +like that would force a change to the signature of poll, which +would break the ecosystem.

      +

      Here Barbara experiments with a working example of a modified Future +trait and a future implementation that makes use of LCell:

      +
    • +
    +
    // Requires dependency: qcell = "0.4"
    +use qcell::{LCell, LCellOwner};
    +use std::pin::Pin;
    +use std::rc::Rc;
    +use std::task::Poll;
    +
    +struct Context<'id, 'a> {
    +    cell_owner: &'a mut LCellOwner<'id>,
    +}
    +
    +struct AsyncCell<'id, T>(LCell<'id, T>);
    +impl<'id, T> AsyncCell<'id, T> {
    +    pub fn new(value: T) -> Self {
    +        Self(LCell::new(value))
    +    }
    +    pub fn rw<'a, 'b: 'a>(&'a self, cx: &'a mut Context<'id, 'b>) -> &'a mut T {
    +        cx.cell_owner.rw(&self.0)
    +    }
    +}
    +
    +trait Future<'id> {
    +    type Output;
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context<'id, '_>) -> Poll<Self::Output>;
    +}
    +
    +struct MyFuture<'id> {
    +    count: Rc<AsyncCell<'id, usize>>,
    +}
    +impl<'id> Future<'id> for MyFuture<'id> {
    +    type Output = ();
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context<'id, '_>) -> Poll<Self::Output> {
    +        *self.count.rw(cx) += 1;
    +        Poll::Ready(())
    +    }
    +}
    +
    +fn main() {
    +    LCellOwner::scope(|mut owner| {
    +        let mut cx = Context { cell_owner: &mut owner };
    +        let count = Rc::new(AsyncCell::new(0_usize));
    +        let mut fut = Box::pin(MyFuture { count: count.clone() });
    +        let _ = fut.as_mut().poll(&mut cx);
    +        assert_eq!(1, *count.rw(&mut cx));
    +    });
    +}
    +
    +
      +
    • +

      The other qcell types (QCell, TCell and TLCell) have various +restrictions or overheads which might make them unsuitable as a +general-purpose solution in the standard library. However they do +have the positive feature of not requiring any change in the +signature of poll. It looks like they could be added to Context +without breaking anything.

      +

      Here Barbara tries using TLCell, and finds that the signature of +poll doesn't need to change:

      +
    • +
    +
    // Requires dependency: qcell = "0.4"
    +use qcell::{TLCell, TLCellOwner};
    +use std::pin::Pin;
    +use std::rc::Rc;
    +use std::task::Poll;
    +
    +struct AsyncMarker;
    +struct Context<'a> {
    +    cell_owner: &'a mut TLCellOwner<AsyncMarker>,
    +}
    +
    +struct AsyncCell<T>(TLCell<AsyncMarker, T>);
    +impl<T> AsyncCell<T> {
    +    pub fn new(value: T) -> Self {
    +        Self(TLCell::new(value))
    +    }
    +    pub fn rw<'a, 'b: 'a>(&'a self, cx: &'a mut Context<'b>) -> &'a mut T {
    +        cx.cell_owner.rw(&self.0)
    +    }
    +}
    +
    +trait Future {
    +    type Output;
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>;
    +}
    +
    +struct MyFuture {
    +    count: Rc<AsyncCell<usize>>,
    +}
    +impl Future for MyFuture {
    +    type Output = ();
    +    fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
    +        *self.count.rw(cx) += 1;
    +        Poll::Ready(())
    +    }
    +}
    +
    +fn main() {
    +    let mut owner = TLCellOwner::new();
    +    let mut cx = Context { cell_owner: &mut owner };
    +    let count = Rc::new(AsyncCell::new(0_usize));
    +    let mut fut = Box::pin(MyFuture { count: count.clone() });
    +    let _ = fut.as_mut().poll(&mut cx);
    +    assert_eq!(1, *count.rw(&mut cx));
    +}
    +
    +

    (For comparison, TCell only allows one owner per marker type in +the whole process. QCell allows many owners, but requires a +runtime check to make sure you're using the right owner to access a +cell. TLCell allows only one owner per thread per marker type, +but also lets cells migrate between threads and be borrowed locally, +which the others don't -- see qcell +docs.)

    +

    So the choice is GhostCell/LCell and lifetimes everywhere, or various +other cell types that may be too restrictive.

    +

    Right now Barbara thinks that none of these solutions is likely to be +acceptable for the standard library. However still it is a desirable +feature, so maybe someone can think of a way around the problems. Or +maybe someone has a different perspective on what would be acceptable.

    +

    Proof of concept

    +

    The Stakker runtime makes use of +qcell-based statically-checked cell borrowing. It uses this to get +zero-cost access to actors, guaranteeing at compile time that no actor +can access any other actor's state. It also uses it to allow +inter-actor shared +state to be +accessed safely and zero-cost, without RefCell.

    +

    (For example within a Stakker actor, you can access the contents of a +Share<T> via the actor context cx as follows: share.rw(cx), +which blocks borrowing or accessing cx until that borrow on share +has been released. Share<T> is effectively a Rc<ShareCell<T> and +cx has access to an active borrow on the ShareCellOwner, just as +in the long examples above.)

    +

    Stakker doesn't use GhostCell (LCell) because of the need for <'id> +annotations on methods and types. Instead it uses the other three +cell types according to how many Stakker instances will be run, either +one Stakker instance only, one per thread, or multiple per thread. +This is selected by cargo features.

    +

    Switching implementations like this doesn't seem like an option for +the standard library.

    +

    Way forward

    +

    Barbara wonders whether there is any way this can be made to work. +For example, could the compiler derive all those <'id> annotations +automatically for GhostCell/LCell?

    +

    Or for multi-threaded runtimes, would +qcell::TLCell be acceptable? +This allows a single cell-owner in every thread. So it would not +allow nested runtimes of the same type. However it does allow borrows +to happen at the same time independently in different threads, and it +also allows the migration of cells between threads, which is safe +because that kind of cell isn't Sync.

    +

    Or is there some other form of cell-borrowing that could be devised +that would work better for this?

    +

    The interface between cells and Context should be straightforward +once a particular cell type is demonstrated to be workable with the +poll interface and futures ecosystem. For example copying the API +style of Stakker:

    +
    let rc = Rc::new(AsyncCell::new(1_u32));
    +*rc.rw(cx) = 2;
    +
    +

    So logically you obtain read-write access to a cell by naming the +authority by which you claim access, in this case the poll context. +In this case it really is naming rather than accessing since the +checks are done at compile time and the address that cx represents +doesn't actually get passed anywhere or evaluated, once inlining and +optimisation is complete.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +

    The main problem is that Barbara has got used to a safer environment +and it feels dangerous to go back to RefCell and have to manually +verify that her cell borrows are panic-free.

    +

    What are the sources for this story?

    +

    The author of Stakker is trying to interface it to async/await and +futures.

    +

    Why did you choose Barbara to tell this story?

    +

    Barbara has enough Rust knowledge to understand the benefits that +GhostCell/qcell-like borrowing might bring.

    +

    How would this story have played out differently for the other characters?

    +

    The other characters perhaps wouldn't have heard of statically-checked +cell borrows so would be unaware of the possibility of making things +safer.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/grace_deploys_her_service.html b/docs/vision/status_quo/grace_deploys_her_service.html new file mode 100644 index 00000000..5fdc792e --- /dev/null +++ b/docs/vision/status_quo/grace_deploys_her_service.html @@ -0,0 +1,279 @@ + + + + + + Grace deploys her service and hits obstacles - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Grace deploys her service and hits obstacles

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    When examining her service metrics, Grace notices tail latencies in the P99 that exceed their target. She identifies GC in the routing layer as the culprit. Grace follows industry trends and is already aware of Rust and its ecosystem at a high level. She decides to investigate rewriting the routing service in Rust.

    +

    To meet throughput requirements, Grace has already decided to use a thread-per-core model and minimize cross-thread communication. She explores available ecosystem options and finds no option that gets her exactly what she is looking for out of the box. However, she can use Tokio with minimal configuration to achieve her architecture.

    +

    A few months of frantic hacking follow.

    +

    montage of cats typing

    +

    Soon enough, she and her team have a proof of concept working. They run some local stress tests and notice that 5% of requests hang and fail to respond. The client eventually times out. She cannot reproduce this problem when running one-off requests locally. It only shows up when sending above 200 requests-per-second.

    +

    She realizes that she doesn't have any tooling to give her insight into what's going on. She starts to add lots of logging, attempting to tie log entries to specific connections. Using an operating system tool, she can identify the socket addresses for the hung connections, so she also includes the socket addresses in each log message. She then filters the logs to find entries associated with hung connections. Of course, the logs only tell her what the connection managed to do successfully; they don't tell her why it stopped -- so she keeps going back to add more logging until she can narrow down the exact call that hangs.

    +

    Eventually, she identifies that the last log message is right before authenticating the request. An existing C library performs authentication, integrated with the routing service using a custom future implementation. She eventually finds a bug in the implementation that resulted in occasional lost wake-ups.

    +

    She fixes the bug. The service is now working as expected and meeting Grace's performance goals.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • When coming from a background of network engineering, users will bring their own design choices around architecture. + +
    • +
    • There is a lack of debugging tools for async.
    • +
    • Writing futures by hand is error prone.
    • +
    +

    What are the sources for this story?

    +

    This is based on the experiences of helping a tokio user to diagnose a bug in their code.

    +

    Why did you choose Grace to tell this story?

    +
      +
    • The actual user who experienced this problem fit the profile of Grace.
    • +
    • The story is focused on the experience of people aiming to use workflows they are familiar with from C in a Rust setting.
    • +
    +

    How would this story have played out differently for the other characters?

    +

    Alan or Niklaus may well have had a much harder time diagnosing the problem due to not having as much of a background in systems programming. For example, they may not have known about the system tool that allowed them to find the list of dangling connections.

    +

    Could Grace have used another runtime to achieve the same objectives?

    +
      +
    • Maybe! But in this instance the people this story is based on were using tokio, so that's the one we wrote into the story.
    • +
    • (If folks want to expand this answer with details of how to achieve similar goals on other runtimes that would be welcome!)
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/grace_tries_new_libraries.html b/docs/vision/status_quo/grace_tries_new_libraries.html new file mode 100644 index 00000000..2e7a25a4 --- /dev/null +++ b/docs/vision/status_quo/grace_tries_new_libraries.html @@ -0,0 +1,343 @@ + + + + + + Grace tries new libraries - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Grace tries new libraries

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    When Grace searched crates.io for a library, she found an interesting library that she wants to use. The code examples use a map/reduce style. As Grace is more familiar with C and C++, as a first step she wants to convert them from this style to using loops.

    +
    Controller::new(root_kind_api, ListParams::default())
    +    .owns(child_kind_api, ListParams::default())
    +    .run(reconcile, error_policy, context)
    +    .for_each(|res| async move {
    +        match res {
    +            Ok(o) => info!("reconciled {:?}", o),
    +            Err(e) => warn!("reconcile failed: {}", Report::from(e)),
    +        }
    +    })
    +    .await;
    +
    +

    (Example code from taken from https://github.com/clux/kube-rs)

    +

    So she takes the naive approach to just convert that as follows:

    +
    let controller = Controller::new(root_kind_api, ListParams::default())
    +    .owns(child_kind_api, ListParams::default())
    +    .run(reconcile, error_policy, context);
    +
    +while let Ok(o) = controller.try_next().await {
    +    info!("reconciled {:?}", o),
    +}
    +
    +

    when she compiles her source code she ends up with wall of error messages like the following:

    +
    $ cargo run
    +   Compiling kube-rs-test v0.1.0 (/home/project-gec/src/kube-rs-test)
    +error[E0277]: `from_generator::GenFuture<[static generator@watcher<Secret>::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api<Secret>, &'r kube::Api<Secret>, ListParams, &'s ListParams, watcher::State<Secret>, impl futures::Future, ()}]>` cannot be unpinned
    +  --> src/main.rs:23:41
    +   |
    +23 |     while let Ok(o) = controller.try_next().await {
    +   |                                  ^^^^^^^^ within `futures_util::unfold_state::_::__Origin<'_, (kube::Api<Secret>, ListParams, watcher::State<Secret>), impl futures::Future>`, the trait `Unpin` is not implemented for `from_generator::GenFuture<[static generator@watcher<Secret>::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api<Secret>, &'r kube::Api<Secret>, ListParams, &'s ListParams, watcher::State<Secret>, impl futures::Future, ()}]>`
    +   |
    +   = note: required because it appears within the type `impl futures::Future`
    +   = note: required because it appears within the type `futures_util::unfold_state::_::__Origin<'_, (kube::Api<Secret>, ListParams, watcher::State<Secret>), impl futures::Future>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures_util::unfold_state::UnfoldState<(kube::Api<Secret>, ListParams, watcher::State<Secret>), impl futures::Future>`
    +   = note: required because it appears within the type `futures::stream::unfold::_::__Origin<'_, (kube::Api<Secret>, ListParams, watcher::State<Secret>), [closure@watcher<Secret>::{closure#0}], impl futures::Future>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Unfold<(kube::Api<Secret>, ListParams, watcher::State<Secret>), [closure@watcher<Secret>::{closure#0}], impl futures::Future>`
    +   = note: required because it appears within the type `impl std::marker::Send+futures::Stream`
    +   = note: required because it appears within the type `futures::stream::try_stream::into_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::IntoStream<impl std::marker::Send+futures::Stream>`
    +   = note: required because it appears within the type `futures::stream::stream::map::_::__Origin<'_, futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectFn<futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Map<futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectFn<futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>>`
    +   = note: required because it appears within the type `futures::stream::stream::_::__Origin<'_, futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Inspect<futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>`
    +   = note: required because it appears within the type `futures::stream::try_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream, [closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::InspectOk<impl std::marker::Send+futures::Stream, [closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>`
    +   = note: required because it appears within the type `impl futures::Stream`
    +
    +error[E0277]: `from_generator::GenFuture<[static generator@watcher<Secret>::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api<Secret>, &'r kube::Api<Secret>, ListParams, &'s ListParams, watcher::State<Secret>, impl futures::Future, ()}]>` cannot be unpinned
    +  --> src/main.rs:23:27
    +   |
    +23 |     while let Ok(o) = controller.try_next().await {
    +   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^ within `futures_util::unfold_state::_::__Origin<'_, (kube::Api<Secret>, ListParams, watcher::State<Secret>), impl futures::Future>`, the trait `Unpin` is not implemented for `from_generator::GenFuture<[static generator@watcher<Secret>::{closure#0}::{closure#0} for<'r, 's, 't0, 't1> {ResumeTy, kube::Api<Secret>, &'r kube::Api<Secret>, ListParams, &'s ListParams, watcher::State<Secret>, impl futures::Future, ()}]>`
    +   |
    +   = note: required because it appears within the type `impl futures::Future`
    +   = note: required because it appears within the type `futures_util::unfold_state::_::__Origin<'_, (kube::Api<Secret>, ListParams, watcher::State<Secret>), impl futures::Future>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures_util::unfold_state::UnfoldState<(kube::Api<Secret>, ListParams, watcher::State<Secret>), impl futures::Future>`
    +   = note: required because it appears within the type `futures::stream::unfold::_::__Origin<'_, (kube::Api<Secret>, ListParams, watcher::State<Secret>), [closure@watcher<Secret>::{closure#0}], impl futures::Future>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Unfold<(kube::Api<Secret>, ListParams, watcher::State<Secret>), [closure@watcher<Secret>::{closure#0}], impl futures::Future>`
    +   = note: required because it appears within the type `impl std::marker::Send+futures::Stream`
    +   = note: required because it appears within the type `futures::stream::try_stream::into_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::IntoStream<impl std::marker::Send+futures::Stream>`
    +   = note: required because it appears within the type `futures::stream::stream::map::_::__Origin<'_, futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectFn<futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Map<futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectFn<futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>>`
    +   = note: required because it appears within the type `futures::stream::stream::_::__Origin<'_, futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::Inspect<futures::stream::IntoStream<impl std::marker::Send+futures::Stream>, futures_util::fns::InspectOkFn<[closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>>`
    +   = note: required because it appears within the type `futures::stream::try_stream::_::__Origin<'_, impl std::marker::Send+futures::Stream, [closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>`
    +   = note: required because of the requirements on the impl of `Unpin` for `futures::stream::InspectOk<impl std::marker::Send+futures::Stream, [closure@reflector<Secret, impl std::marker::Send+futures::Stream>::{closure#0}]>`
    +   = note: required because it appears within the type `impl futures::Stream`
    +   = note: required because of the requirements on the impl of `futures::Future` for `TryNext<'_, impl futures::Stream>`
    +   = note: required by `futures::Future::poll`
    +
    +error: aborting due to 2 previous errors
    +
    +For more information about this error, try `rustc --explain E0277`.
    +error: could not compile `kube-rs-test`
    +
    +To learn more, run the command again with --verbose.
    +
    +

    From her background she has an understanding what could go wrong. So she remembered, that she could box the values to solve the issue with calling .boxed() on the controller. But on the other hand she could see no reason why this while loop should fail when the original .for_each() example just works as expected.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Working with async can give huge errors from fairly common place transforms, and requires knowing some "not entirely obvious" workarounds.
    • +
    +

    What are the sources for this story?

    +
      +
    • Personal experience.
    • +
    +

    Why did you choose Grace to tell this story?

    +
      +
    • Reflects the background of the author.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • Ultimately the only way to know how to solve this problem is to have seen it before and learned how to solve it. The compiler doesn't help and the result is not obvious.
    • +
    • So it probably doesn't matter that much which character is used, except that Barbara may be more likely to have seen how to solve it.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/grace_waits_for_gdb_next.html b/docs/vision/status_quo/grace_waits_for_gdb_next.html new file mode 100644 index 00000000..a655ecea --- /dev/null +++ b/docs/vision/status_quo/grace_waits_for_gdb_next.html @@ -0,0 +1,304 @@ + + + + + + Grace waits for gdb next - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Status quo: Grace waits for gdb next

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Grace wants to walk through the behavior of a toy program.

    +

    She first fires up cargo run --verbose to remind herself what the path to the target binary is. Part of the resulting Cargo output is:

    +
         Running `target/debug/toy`
    +
    +

    From that, Grace tries running gdb on the printed path.

    +
        gdb target/debug/toy
    +
    +

    and then

    +
    (gdb) start
    +
    +

    to start the program and set a breakpoint on the main function.

    +

    Grace hits Ctrl-x a and gets a TUI mode view that includes this:

    +
    │   52          }                                                                                                                                                                                                                    │
    +│   53                                                                                                                                                                                                                               │
    +│   54          #[tokio::main]                                                                                                                                                                                                       │
    +│B+>55          pub(crate) async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {                                                                                                                                   │
    +│   56              println!("Hello, world!");                                                                                                                                                                                       │
    +│   57              let record = Box::new(Mutex::new(Record::new()));                                                                                                                                                                │
    +│   58              let record = &*Box::leak(record);                                                                                                                                                                                │
    +│   59                                                                                                                                                                                                                              
    +
    +

    Excitedly Grace types next to continue to the next line of the function.

    +

    And waits. And the program does not stop anywhere.

    +

    ...

    +

    Eventually Grace remembers that #[tokio::main] injects a different main function that isn't the one that she wrote as an async fn, and so the next operation in gdb isn't going to set a breakpoint within Grace's async fn main.

    +

    So Grace restarts the debugger, and then asks for a breakpoint on the first line of her function:

    +
    (gdb) start
    +(gdb) break 56
    +(gdb) continue
    +
    +

    And now it stops on the line that she expected:

    +
    │   53                                                                                                                                                                                                                               │
    +│   54          #[tokio::main]                                                                                                                                                                                                       │
    +│   55          pub(crate) async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {                                                                                                                                   │
    +│B+>56              println!("Hello, world!");                                                                                                                                                                                       │
    +│   57              let record = Box::new(Mutex::new(Record::new()));                                                                                                                                                                │
    +│   58              let record = &*Box::leak(record);                                                                                                                                                                                │
    +│   59                                                                                                                                                                                                                               │
    +│   60              let (tx, mut rx) = channel(100);                                                                                                                                                                                 │
    +
    +

    Grace is now able to use next to walk through the main function. She does notice that the calls to tokio::spawn are skipped over by next, but that's not as much of a surprise to her, since those are indeed function calls that are taking async blocks. She sets breakpoints on the first line of each async block so that the debugger will stop when control reaches them as she steps through the code.

    +

    🤔 Frequently Asked Questions

    +

    Here are some standard FAQ to get you started. Feel free to add more!

    +

    What are the morals of the story?

    +
      +
    • A common usage pattern: hitting next to go to what seems like the next statement, breaks down due to implementation details of #[tokio::main] and async fn.
    • +
    • This is one example of where next breaks, in terms of what a user is likely to want. The other common scenario where the behavior of next is non-ideal is higher-order functions, like option.and_then(|t| { ... }, where someone stepping through the code probably wants next to set +a temporary breakpoint in the ... of the closure.
    • +
    +

    What are the sources for this story?

    +

    Personal experience. I haven't acquired the muscle memory to stop using next, even though it breaks down in such cases.

    +

    Why did you choose Grace to tell this story?

    +

    I needed someone who, like me, would actually be tempted to use gdb even when println debugging is so popular.

    +

    How would this story have played out differently for the other characters?

    +
    * Alan might have used whatever debugger is offered by his IDE, which might have the same problem (via a toolbar button that has the same semantics as `next`); but many people using IDE's to debugger just naturally set breakpoints by hand on the lines in their IDE editor, and thus will not run into this.
    +* Most characters would probably have abandoned using gdb much sooner. E.g. Grace may have started out by adding `println` or `tracing` instrumention to the code, rather than trying to open it up in a debugger.
    +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/grace_wants_to_integrate_c_api.html b/docs/vision/status_quo/grace_wants_to_integrate_c_api.html new file mode 100644 index 00000000..c1822663 --- /dev/null +++ b/docs/vision/status_quo/grace_wants_to_integrate_c_api.html @@ -0,0 +1,422 @@ + + + + + + Grace wants to integrate a C-API - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Grace wants to integrate a C-API

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life +experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    The story

    +

    Grace is integrating a camera into an embedded project. Grace has done similar projects before in the past, and has +even used this particular hardware before. Fortunately, the camera manufacturer provides a library in C to interface +with the driver.

    +

    Grace knows that Rust provides strong memory safety guarantees, and the library provided by the manufacturer sports an +API that is easy to misuse. In particular, ownership concerns are tricky and Grace and her team have often complained in +the past that making memory mistakes is very easy and one has to be extremely careful to manage lifetimes. Therefore, +for this project, Grace opts to start with Rust as many of the pitfalls of the manufacturer's library can be +automatically caught by embedding the lifetimes into a lightweight wrapper over code bridged into Rust with bindgen.

    +

    Grace's team manages to write a thin Rust wrapper over the manufacturer's library with little complication. This library +fortunately offers two interfaces for grabbing frames from the camera: a blocking interface that waits for the next +frame, and a non-blocking interface that polls to check if there are any frames currently available and waiting. Grace +is tempted to write a callback-based architecture by relying on the blocking interface that waits; however, early the +next morning the customer comes back and informs her that they are scaling up the system, and that there will now be 5 +cameras instead of 1.

    +

    She knows from experience that she cannot rely on having 5 threads blocking just for getting camera frames, because the +embedded system she is deploying to only has 2 cores total! Her team would be introducing a lot of overhead into the +system with the continuous context switching of every thread. Some folks were unsure of Rust's asynchronous +capabilities, and with the requirements changing there were some that argued maybe they should stick to the tried and +true in pure C. However, Grace eventually convinced them that the benefits of memory safety were still applicable, and +that a lot of bugs that have taken weeks to diagnose in the past have already been completely wiped out. The team +decided to stick with Rust, and dig deeper into implementing this project in async Rust.

    +

    Fortunately, Grace notices the similarities between the polling interface in the underlying C library and the Poll +type returned by Rust's Future trait. "Surely," she thinks, "I can asynchronously interleave polls to each camera over +a single thread, and process frames as they become available!" Such a thing would be quite difficult in C while +guaranteeing memory safety was maintained. However, Grace's team has already dodged that bullet thanks to writing a thin +wrapper in Rust that manages these tricky lifetimes!

    +

    The first problem: polls and wake-ups

    +

    Grace sets out to start writing the pipeline to get frames from the cameras. She realizes that while the polling call +that the manufacturer provided in their library is similar in nature to a future, it doesn't quite encompass everything. +In C, one might have to set some kind of heartbeat timer for polling. Grace explains to her team that this heartbeat is +similar to how the Waker object works in a Future's Context type, in that it is how often the execution +environment should re-try the future if the call to poll returns Poll::Pending.

    +

    A member of Grace's team asks her how she was able to understand all this. After all, Grace had been writing Rust about +as long as the rest of her team. The main difference was that she had many more years of systems programming under C and +C++ under her belt than they had. Grace responded that for the most part she had just read the documentation for the +Future trait, and that she had intuited how async-await de-sugars itself into a regular function that returns a future +of some kind. The de-sugaring process was, after all, very similar to how lambda objects in C++ were de-sugared as well. +She leaves her teammate with an +article she once found online that +explained the process in a lot more detail for a problem much harder than they were trying to solve.

    +

    Something Grace and her team learn to love immediately about Rust is that writing the Future here does not require her +team to write their own execution environment. In fact, the future can be entirely written independently of the +execution environment. She quickly writes an async method to represent the polling process:

    +
    
    +#![allow(unused)]
    +fn main() {
    +/// Gets the next frame from the camera, waiting `retry_after` time until polling again if it fails.
    +///
    +/// Returns Some(frame) if a frame is found, or None if the camera is disconnected or goes down before a frame is
    +/// available.
    +async fn next_frame(camera: &Camera, retry_after: Duration) -> Option<Frame> {
    +    while camera.is_available() {
    +        if let Some(frame) = camera.poll() {
    +            return Some(frame);
    +        } else {
    +            task::sleep_for(retry_after).await;
    +        }
    +    }
    +
    +    None
    +}
    +}
    +
    +

    The underlying C API doesn't provide any hooks that can be used to wake the Waker object on this future up, so Grace +and her team decide that it is probably best if they just choose a sufficiently balanced retry_after period in which +to try again. It does feel somewhat unsatisfying, as calling sleep_for feels about as hacky as calling +std::this_thread::sleep_for in C++. However, there is no way to directly interoperate with the waker without having a +separate thread of execution wake it up, and the underlying C library doesn't have any interface offering a notification +for when that should be. In the end, this is the same kind of code that they would write in C, just without having to +implement a custom execution loop themselves, so the team decides it is not a total loss.

    +

    The second problem: doing this many times

    +

    Doing this a single time is fine, but an end goal of the project is to be able to stream frames from the camera for +unspecified lengths of time. Grace spends some time searching, and realizes that what she actually wants is a Stream +of some kind. Stream objects are the asynchronous equivalent of iterators, and her team wants to eventually write +something akin to:

    +
    
    +#![allow(unused)]
    +fn main() {
    +let frame_stream = stream_from_camera(camera, Duration::from_millis(5));
    +
    +while let Some(frame) = frame_stream.next().await {
    +    // process frames
    +}
    +
    +println!("Frame stream closed.");
    +}
    +
    +

    She scours existing crates, in particular looking for one way to transform the above future into a stream that can be +executed many times. The only available option to transform a future into a series of futures is stream::unfold, +which seems to do exactly what Grace is looking for. Grace begins by adding a small intermediate type, and then plugging +in the remaining holes:

    +
    
    +#![allow(unused)]
    +fn main() {
    +struct StreamState {
    +    camera: Camera,
    +    retry_after: Duration,
    +}
    +
    +fn stream_from_camera(camera: Camera, retry_after: Duration) -> Unfold<Frame, ??, ??> {
    +    let initial_state = StreamState { camera, retry_after };
    +
    +    stream::unfold(initial_state, |state| async move {
    +        let frame = next_frame(&state.camera, state.retry_after).await
    +        (frame, state)
    +    })
    +}
    +}
    +
    +

    This looks like it mostly hits the mark, but Grace is left with a couple of questions for how to get the remainder of +this building:

    +
      +
    1. What is the type that fills in the third template parameter in the return? It should be the type of the future that +is returned by the async closure passed into stream::unfold, but we don't know the type of a closure!
    2. +
    3. What is the type that fills in the second template parameter of the closure in the return?
    4. +
    +

    Grace spends a lot of time trying to figure out how she might find those types! She asks Barbara what the idiomatic +way to get around this in Rust would be. Barbara explains again how closures don't have concrete types, and that the +only way to do this will be to use the impl keyword.

    +
    
    +#![allow(unused)]
    +fn main() {
    +fn stream_from_camera(camera: Camera, retry_after: Duration) -> impl Stream<Item = Frame> {
    +    // same as before
    +}
    +}
    +
    +

    While Grace was was on the correct path and now her team is able to write the code they want to, she realizes that +sometimes writing the types out explicitly can be very hard. She reflects on what it would have taken to write the type +of an equivalent function pointer in C, and slightly laments that Rust cannot express such as clearly.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • Rust was the correct choice for the team across the board thanks to its memory safety and ownership. The +underlying C library was just too complex for any single programmer to be able to maintain in their head all at +once while also trying to accomplish other tasks.
    • +
    • Evolving requirements meant that the team would have had to either start over in plain C, giving up a lot of the +safety they would gain from switching to Rust, or exploring async code in a more rigorous way.
    • +
    • The async code is actually much simpler than writing the entire execution loop in C themselves. However, the +assumption that you would write the entire execution loop is baked into the underlying library which Grace's team +cannot rewrite entirely from scratch. Integrating Rust async code with other languages which might have different +mental models can sometimes lead to unidiomatic or unsatisfying code, even if the intent of the code in Rust is +clear.
    • +
    • Grace eventually discovered that the problem was best modeled as a stream, rather than as a single future. +However, converting a future into a stream was not necessarily something that was obvious for someone with a C/C++ +background.
    • +
    • Closures and related types can be very hard to write in Rust, and if you are used to being very explicit with your +types, tricks such as the impl trick above for Streams aren't immediately obvious at first glance.
    • +
    +

    What are the sources for this story?

    +

    My own personal experience trying to incorporate the Intel RealSense library into Rust.

    +

    Why did you choose Grace to tell this story?

    +
      +
    • I am a C++ programmer who has written many event / callback based systems for streaming from custom camera +hardware. I mirror Grace in that I am used to using other systems languages, and even rely on libraries in those +languages as I've moved to Rust. I did not want to give up the memory and lifetime benefits of Rust because of +evolving runtime requirements.
    • +
    • In particular, C and C++ do not encourage async-style code, and often involve threads heavily. However, some +contexts cannot make effective use of threads. In such cases, C and C++ programmers are often oriented towards +writing custom execution loops and writing a lot of logic to do so. Grace discovered the benefit of not having to +choose an executor upfront, because the async primitives let her express most of the logic without relying on a +particular executor's behaviour.
    • +
    +

    How would this story have played out differently for the other characters?

    +
      +
    • Alan would have struggled with understanding the embedded context of the problem, where GC'd languages don't see +much use.
    • +
    • Niklaus and Barbara may not have approached the problem with the same assimilation biases from C and C++ as +Grace. Some of the revelations in the story such as discovering that Grace's team didn't have to write their own +execution loop were unexpected benefits when starting down the path of using Rust!
    • +
    +

    Could Grace have used another runtime to achieve the same objectives?

    +

    Grace can use any runtime, which was an unexpected benefit of her work!

    +

    How did Grace know to use Unfold as the return type in the first place?

    +

    She saw it in the rustdoc for stream::unfold.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/niklaus_simulates_hydrodynamics.html b/docs/vision/status_quo/niklaus_simulates_hydrodynamics.html new file mode 100644 index 00000000..624e0562 --- /dev/null +++ b/docs/vision/status_quo/niklaus_simulates_hydrodynamics.html @@ -0,0 +1,297 @@ + + + + + + Niklaus builds a hydrodynamics simulator - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Niklaus Builds a Hydrodynamics Simulator

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Problem

    +

    Niklaus is a professor of physics at the University of Rustville. He needed to build a tool to solve hydrodynamics simulations; there is a common method for this that subdivides a region into a grid and computes the solution for each grid patch. All the patches in a grid for a point in time are independent and can be computed in parallel, but they are dependent on neighboring patches in the previously computed frame in time. This is a well known computational model and the patterns for basic parallelization are well established.

    +

    Niklaus wanted to write a performant tool to compute the solutions to the simulations of his research. He chose Rust because he needed high performance but he also wanted something that could be maintained by his students, who are not professional programmers. Rust's safety guarantees giver him confidence that his results are not going to be corrupted by data races or other programming errors. After implementing the core mathematical formulas, Niklaus began implementing the parallelization architecture.

    +

    His first attempt to was to emulate a common CFD design pattern: using message passing to communicate between processes that are each assigned a specific patch in the grid. So he assign one thread to each patch and used messages to communicate solution state to dependent patches. With one thread per patch this usually meant that there were 5-10x more threads than CPU cores.

    +

    This solution worked, but Niklaus had two problems with it. First, it gave him no control over CPU usage so the solution would greedily use all available CPU resources. Second, using messages to communicate solution values between patches did not scale when his team added a new feature (tracer particles) the additional messages caused by this change created so much overhead that parallel processing was no faster than serial. So, Niklaus decided to find a better solution.

    +

    Solution Path

    +

    To address the first problem: Niklaus' new design decoupled the work that needed to be done (solving physics equations for each patch in the grid) from the workers (threads), this would allow him to set the number of threads and not use all the CPU resources. So, he began looking for a tool in Rust that would meet this design pattern. When he read about async and how it allowed the user to define units of work and send those to an executor which would manage the execution of those tasks across a set of workers, he thought he'd found exactly what he needed. He also thought that the .await semantics would give a much better way of coordinating dependencies between patches. Further reading indicated that tokio was the runtime of choice for async in the community and, so, he began building a new CFD solver with async and tokio.

    +

    After making some progress, Niklaus ran into his firts problem. Niklaus had been under a false impression about what async executors do. He had assumed that a multi-threaded executor could automatically move the execution of an async block to a worker thread. When this turned out to wrong, he went to Stackoverflow and learned that async tasks must be explicitly spawned into a thread pool if they are to be executed on a worker thread. This meant that the algorithm to be parallelized became strongly coupled to both the spawner and the executor. Code that used to cleanly express a physics algorithm now had interspersed references to the task spawner, not only making it harder to understand, but also making it impossible to try different execution strategies, since with Tokio the spawner and executor are the same object (the Tokio runtime). Niklaus felt that a better design for data parallelism would enable better separation of concerns: a group of interdependent compute tasks, and a strategy to execute them in parallel.

    +

    Niklaus second problem came as he tried to fully replace the message passing from the first design: sharing data between tasks. He used the async API to coordinate computation of patches so that a patch would only go to a worker when all its dependencies had completed. But he also needed to account for the solution data which was passed in the messages. He setup a shared data structure to track the solutions for each patch now that messages would not be passing that data. Learning how to properly use shared data with async was a new challenge. The initial design:

    +
    
    +#![allow(unused)]
    +fn main() {
    +    let mut stage_primitive_and_scalar = |index: BlockIndex, state: BlockState<C>, hydro: H, geometry: GridGeometry| {
    +        let stage = async move {
    +            let p = state.try_to_primitive(&hydro, &geometry)?;
    +            let s = state.scalar_mass / &geometry.cell_volumes / p.map(P::lorentz_factor);
    +            Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) )
    +        };
    +        stage_map.insert(index, runtime.spawn(stage).map(|f| f.unwrap()).shared());
    +    };
    +}
    +
    +

    lacked performance because he needed to clone the value for every task. So, Niklaus switched over to using Arc to keep a thread safe RC to the shared data. But this change introduced a lot of .map and .unwrap function calls, making the code much harder to read. He realized that managing the dependency graph was not intuitive when using async for concurrency.

    +

    As the program matured, a new problem arose: a steep learning curve with error handling. The initial version of his design used panic!s to fail the program if an error was encountered, but the stack traces were almost unreadable. He asked his teammate Grace to migrate over to using the Result idiom for error handling and Grace found a major inconvenience. The Rust type inference inconsistently breaks when propagating Result in async blocks. Grace frequently found that she had to specify the type of the error when creating a result value:

    +
    
    +#![allow(unused)]
    +fn main() {
    +Ok::<_, HydroError>( ( p.to_shared(), s.to_shared() ) )  
    +}
    +
    +

    And she could not figure out why she had to add the ::<_, HydroError> to some of the Result values.

    +

    Finally, once Niklaus' team began using the new async design for their simulations, they noticed an important issue that impacted productivity: compilation time had now increased to between 30 and 60 seconds. The nature of their work requires frequent changes to code and recompilation and 30-60 seconds is long enough to have a noticeable impact on their quality of life. What he and his team want is for compilation to be 2 to 3 seconds. Niklaus believes that the use of async is a major contributor to the long compilation times.

    +

    This new solution works, but Niklaus is not satisfied with how complex his code became after the move to async and that compilation time is now 30-60 seconds. The state sharing adding a large amount of cruft with Arc and async is not well suited for using a dependency graph to schedule tasks so implementing this solution created a key component of his program that was difficult to understand and pervasive. Ultimately, his conclusion was that async is not appropriate for parallelizing computational tasks. He will be trying a new design based upon Rayon in the next version of her application.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +
      +
    • async looks to be the wrong choice for parallelizing compute bound/computational work
    • +
    • There is a lack of guidance to help people solving such problems get started on the right foot
    • +
    • Quality of Life issues (compilation time, type inference on Result) can create a drag on users ability to focus on their domain problem
    • +
    +

    What are the sources for this story?

    +

    This story is based on the experience of building the kilonova hydrodynamics simulation solver.

    +

    Why did you choose Niklaus and Grace to tell this story?

    +

    I chose Niklaus as the primary character in this story because this work was driven by someone who only uses programming for a small part of their work. Grace was chosen as a supporting character because of that persons experience with C/C++ programming and to avoid repeating characters.

    +

    How would this story have played out differently for the other characters?

    +
      +
    • Alan: there's a good chance he would have already had experience working with either async workflows in another language or doing parallelization of compute bound tasks; and so would already know from experience that async was not the right place to start.
    • +
    • Grace: likewise, might already have experience with problems like this and would know what to look for when searching for tools.
    • +
    • Barbara: the experience would likely be fairly similar, since the actual subject of this story is quite familiar with Rust by now
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/niklaus_wants_to_share_knowledge.html b/docs/vision/status_quo/niklaus_wants_to_share_knowledge.html new file mode 100644 index 00000000..f329c5fe --- /dev/null +++ b/docs/vision/status_quo/niklaus_wants_to_share_knowledge.html @@ -0,0 +1,267 @@ + + + + + + Niklaus wants to share knowledge - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Niklaus Wants to Share Knowledge

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Niklaus, who sometimes goes by the pen name "Starol Klichols", has authored some long-form documentation about Rust that people have found helpful. One could even go so far as to call this documentation a "book".

    +

    Niklaus has typically minimized the use of crates in documentation like this as much as possible. Niklaus has limited time to dedicate to keeping the documentation up to date, and given the speed at which the ecosystem sometimes evolves, it's hard to keep up when crates are involved. Also, Niklaus would like to avoid limiting the readership of the documentation to the users of a particular crate only, and would like to avoid any accusations of favoritism.

    +

    But Niklaus would really really like to document async to avoid disappointing people like Barbara!

    +

    Niklaus was excited about the RFC proposing that block_on be added to the stdlib, because it seemed like that would solve Niklaus' problems. Niklaus would really like to include async in a big update to the documentation. No pressure.

    +

    🤔 Frequently Asked Questions

    +

    What are the morals of the story?

    +

    Writing documentation to go with the language/stdlib for something that is half in the language/stdlib and half in the ecosystem is hard. +This is related to Barbara's story about wanting to get started without needing to pick an executor. +There are topics of async that apply no matter what executor you pick, but it's hard to explain those topics without picking an executor to demonstrate with. +We all have too much work to do and not enough time.

    +

    What are the sources for this story?

    + +

    Why did you choose Niklaus to tell this story?

    +

    Niko said I couldn't add new characters.

    +

    How would this story have played out differently for the other characters?

    +

    I happen to know that the next version of Programming Rust, whose authors might be described as different characters, includes async and uses async-std. So it's possible to just pick an executor and add async to the book, but I don't wanna.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/status_quo/template.html b/docs/vision/status_quo/template.html new file mode 100644 index 00000000..83254c55 --- /dev/null +++ b/docs/vision/status_quo/template.html @@ -0,0 +1,265 @@ + + + + + + Template - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    😱 Status quo stories: Template

    +

    This is a template for adding new "status quo" stories. To propose a new status quo PR, do the following:

    +
      +
    • Create a new file in the status_quo directory named something like Alan_tries_to_foo.md or Grace_does_bar.md, and start from the raw source from this template. You can replace all the italicized stuff. :)
    • +
    • Do not add a link to your story to the SUMMARY.md file; we'll do it after merging, otherwise there will be too many conflicts.
    • +
    +

    For more detailed instructions, see the How To Vision: Status Quo page!

    +

    If you're looking for ideas of what to write about, take a look at the open issues. You can also open an issue of your own to throw out an idea for others.

    +

    🚧 Warning: Draft status 🚧

    +

    This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today.

    +

    If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories cannot be wrong, only inaccurate). Alternatively, you may wish to add your own status quo story!

    +

    The story

    +

    Write your story here! Feel free to add subsections, citations, links, code examples, whatever you think is best.

    +

    🤔 Frequently Asked Questions

    +

    Here are some standard FAQ to get you started. Feel free to add more!

    +

    What are the morals of the story?

    +

    Talk about the major takeaways-- what do you see as the biggest problems.

    +

    What are the sources for this story?

    +

    Talk about what the story is based on, ideally with links to blog posts, tweets, or other evidence.

    +

    Why did you choose NAME to tell this story?

    +

    Talk about the character you used for the story and why.

    +

    How would this story have played out differently for the other characters?

    +

    In some cases, there are problems that only occur for people from specific backgrounds, or which play out differently. This question can be used to highlight that.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/vision/tenets.html b/docs/vision/tenets.html new file mode 100644 index 00000000..10b172f3 --- /dev/null +++ b/docs/vision/tenets.html @@ -0,0 +1,266 @@ + + + + + + ✏️ Design tenets for async - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    ✏️ Design tenets for async

    + + +
    StatusOwner
    ⚠️ Draft ⚠️nikomatsakis
    +

    Draft status. These tenets are a first draft. nikomatsakis plans to incorporate feedback and revise them before they are finalized.

    +

    The design tenets describe the key principles that drive our work on async. Hopefully, we are able to achieve and honor all of them all of the time. Sometimes, though, they come into conflict, and we have to pick -- in that case, we prefer the tenet earlier in the list.

    +
      +
    1. Minimal overhead. Rust Async I/O performance should compare favourably with any other language. In the extreme case, it should be possible to use async/await without any required allocation, although this is unlikely to be a common case in production systems.
    2. +
    3. Easy to get started, but able to do anything you want. We should make it simple to write Async I/O code and get things that work reasonably well, but it should be possible for people to obtain fine-grained control as needed.
    4. +
    5. Async is like sync, but with blocking points clearly identified. At the highest level, writing a simple program using asynchronous I/O in Rust should be analogous to writing one that uses synchronous I/O, except that one adds async in front of function declarations and adds .await after each call. We should aim for analogous design between synchronous and asynchronous equivalents. Similarly, streams should be like asynchronous iterators. One should be able to use the same sort of combinators with streams and to iterate over them in analogous ways.
    6. +
    7. No one true runtime. We need to be able to hook into existing runtimes in different environments, from embedded environments to runtimes like node.js. Specialized systems need specialized runtimes.
    8. +
    9. Library ecosystem is key. We want to have a strong ecosystem of async crates, utilities, and frameworks. This will require mechanisms to write libraries/utilities/frameworks that are generic and interoperable across runtimes.
    10. +
    +

    Stress tests

    +

    "Stress tests" are important use cases that tend to "stretch" the design. When we are contemplating changes, it's important to look over the stress tests and make sure that they all still work:

    +
      +
    • Single-threaded executors: Some systems tie each task to a single thread; such tasks should be able to access data that is not Send or Sync, and the executor for those tasks should be able to be fully optimized to avoid atomic accesses, etc.
    • +
    • Multi-threaded executors: Many systems migrate tasks between threads transparently, and that should be supported as well, though tasks will be required to be Send.
    • +
    • "Bring your own runtime": The Rust language itself should not require that you start threads, use epoll, or do any other particular thing.
    • +
    • Zero allocation, single task: Embedded systems might want to be able to have a single task that is polled to completion and which does no allocation whatsoever.
    • +
    • Multiple runtimes in one process: Sometimes people have to combine systems, each of which come with their own event loop. We should avoid assuming there is one global event loop in the system.
    • +
    • Non-Rust based runtimes: Sometimes people want to integrate into event loops from other, non-Rust-based systems.
    • +
    • WebAssembly in the browser: We want to integrate with WebAssembly.
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/welcome.html b/docs/welcome.html new file mode 100644 index 00000000..a8e68cfe --- /dev/null +++ b/docs/welcome.html @@ -0,0 +1,256 @@ + + + + + + 👋🏽 Welcome - wg-async-foundations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    👋🏽 Welcome

    +

    Welcome to the wg-async-foundations website!

    +

    Leads

    +

    The leads of this working group are @tmandry and @nikomatsakis. Both of them can be found on Zulip.

    +

    Getting involved

    +

    There is a weekly triage meeting that takes place in our Zulip stream. Feel free to stop by then (or any time!) to introduce yourself.

    +

    If you're interested in fixing bugs, though, there is no need to wait for the meeting! Take a look at the instructions here.

    +

    What is the goal of this working group?

    +

    This working group is focused around implementation/design of the “foundations” for Async I/O. This means that we are focused on designing and implementing extensions to the language, standard library, and other "core" bits of support offered by the Rust organization. We do not directly work on external projects like tokio, async-std, smol, embassy and so forth, although we definitely discuss ideas and coordinate with them where appropriate.

    +

    Zulip

    +

    We hold discussions on the #wg-async-foundations stream in Zulip

    +

    License

    +

    Licensed under either of

    +
      +
    • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
    • +
    • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
    • +
    +

    at your option.

    +

    Contribution

    +

    Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in this crate by you, as defined in the Apache-2.0 license, shall +be dual licensed as above, without any additional terms or conditions.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4c0a47ad114c9b8efc36dee43596162fb5bf08b6 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sat, 24 Apr 2021 06:36:15 -0400 Subject: [PATCH 161/347] explain what makes this story different --- .../status_quo/barbara_gets_burned_by_select.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/barbara_gets_burned_by_select.md b/src/vision/status_quo/barbara_gets_burned_by_select.md index 9f03c370..c44e2f5f 100644 --- a/src/vision/status_quo/barbara_gets_burned_by_select.md +++ b/src/vision/status_quo/barbara_gets_burned_by_select.md @@ -51,7 +51,7 @@ Barbara has a hard time figuring out the best way to fix this problem. * Cancellation doesn't always cancel the entire task; particularly with `select!`, it sometimes cancels just a small piece of a given task. * This is in tension with Rust's original design, which was meant to tear down an entire thread or task at once, precisely because of the challenge of writing exception-safe code. -* Writing "cancellation safe" code is very challenging. +* Cancellation in Async Rust therefore can require fine-grained recovery. ### **What are the sources for this story?** @@ -59,12 +59,20 @@ This was based on [tomaka's blog post](https://tomaka.medium.com/a-look-back-at- ### **Why did you choose Barbara to tell this story?** -tomaka is a veteran Rust user. +The problem described here could strike anyone, including veteran Rust users. It's a subtle interaction that is independent of source language. Also, the original person who reported it, tomaka, is a veteran Rust user. ### **How would this story have played out differently for the other characters?** They would likely have a hard time diagnosing the problem. It really depends on how well they have come to understand the semantics of cancellation. This is fairly independent from programming language background; knowing non-async Rust doesn't help in particular, as this concept is specific to async code. +### What is different between this story and other cancellation stories? + +There is already a story, ["Alan builds a cache"] that covers some of the challenges around cancellation. It is quite plausible that those stories could be combined, but the focus of this story is different. The key moral of this story is that certain combinators, notably `select!`, can cause small pieces of a single task to be torn down and canceled. This cancellation can occur for any reason -- it is not always associated with (for example) clients timing out or closing sockets. It might be (as in this story) the result of clients *sending* data! + +This is one key point that makes cancellation in async Rust rather different than panics in sync Rust. Panics in sync Rust generally occur for bugs, to start, and they are typically not meant to be recovered from except at a coarse-grained level. In contrast, as this story shows, cancellation can require fine-grained recovery and for non-bug events. + + +["Alan builds a cache"]: alan_builds_a_cache.md [character]: ../characters.md [status quo stories]: ./status_quo.md [Alan]: ../characters/alan.md From 6f4edacdfadb0123731e48bf4dd6eb99e075aa68 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sat, 24 Apr 2021 17:30:19 -0400 Subject: [PATCH 162/347] turn the futures-unordered footgun into a status quo story --- .../barbara_battles_with_futures_unordered.md | 167 ++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 src/vision/status_quo/barbara_battles_with_futures_unordered.md diff --git a/src/vision/status_quo/barbara_battles_with_futures_unordered.md b/src/vision/status_quo/barbara_battles_with_futures_unordered.md new file mode 100644 index 00000000..a4f46650 --- /dev/null +++ b/src/vision/status_quo/barbara_battles_with_futures_unordered.md @@ -0,0 +1,167 @@ +# 😱 Status quo stories: Barbara battles buffered items + +[How To Vision: Status Quo]: ../how_to_vision/status_quo.md +[the raw source from this template]: https://raw.githubusercontent.com/rust-lang/wg-async-foundations/master/src/vision/status_quo/template.md +[`status_quo`]: https://github.com/rust-lang/wg-async-foundations/tree/master/src/vision/status_quo +[`SUMMARY.md`]: https://github.com/rust-lang/wg-async-foundations/blob/master/src/SUMMARY.md +[open issues]: https://github.com/rust-lang/wg-async-foundations/issues?q=is%3Aopen+is%3Aissue+label%3Astatus-quo-story-ideas +[open an issue of your own]: https://github.com/rust-lang/wg-async-foundations/issues/new?assignees=&labels=good+first+issue%2C+help+wanted%2C+status-quo-story-ideas&template=-status-quo--story-issue.md&title= + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +### Mysterious timeouts + +Barbara is working on her [YouBuy] server and is puzzling over a strange bug report. She is encountering users reporting that their browser connection is timing out when they connect to [YouBuy]. Based on the logs, she can see that they are timing out in the `do_select` function: + +```rust +async fn do_select(database: &Database, query: Query) -> Result> { + let conn = database.get_conn().await?; + conn.select_query(query).await +} +``` + +Some of the time, there is some kind of massive delay in between the `get_conn` method opening a connection and the call to `select_query`. But why? She has metrics that show that the CPU is largely idle, so it's not like the cores are all occupied. + +She looks at the caller of `do_select`, which is a function `do_work`: + +```rust +async fn do_work(database: &Database) { + let work = do_select(database, FIND_WORK_QUERY)?; + stream::iter( + work + .into_iter() + .map(|item| do_select(database, work_from_item(item)).await) + .buffered(5) + .for_each(|work_item| process_work_item(database, work_item)).await; +} + +async fn process_work_item(...) { } +``` + +The `do_work` function is invoking `do_select` as part of a stream; it is buferring up a certain number of `do_select` instances and, for each one, invoking `process_work_item`. Everything seems to be in order, and she can see that calls to `process_work_item` are completing in the logs. + +Following a hunch, she adds more logging in and around the `process_work_item` function and waits a few days to accumulate new logs. She notices that shortly after each time out, there is always a log of a `process_work_item` call that takes at least 20 seconds. These calls are not related to the connections that time out, they are for other connections, but they always appear afterwards in time. + +### Barbara thought she understood how async worked + +Barbara thought she understood futures fairly well. She thought of `async fn` as basically "like a synchronous function with more advanced control flow". She knew that Rust's futures were lazy -- that they didn't start executing until they were awaited -- and she knew that could compose them using utilities like [`join`](https://docs.rs/futures/0.3.14/futures/future/fn.join.html), [`FuturesUnordered`], or the [`buffered`](https://docs.rs/futures/0.3.14/futures/stream/trait.StreamExt.html#method.buffered) method (as in this example). + +[`FuturesUnordered`]: https://docs.rs/futures/0.3.14/futures/stream/struct.FuturesUnordered.html + +Barbara also knows that every future winds up associated with a task, and that if you have multiple futures on the same task (in this case, the futures in the stream, for example) then they would run concurrently, but not in parallel. Based on this, she thinks perhaps that `process_work_item` is a CPU hog that takes too long to complete, and so she needs to add a call to `spawn_blocking`. But when she looks more closely, she realizes that `process_work_item` is an async function, and those 20 seconds that it spends executing are mostly spent waiting on I/O. Huh, that's confusing, because the task ought to be able to execute other futures in that case -- so why are her connections stalling out without making progress? + +### Barbara goes deep into how poll works + +She goes to read the Rust async book and tries to think about the model, but she can't quite see the problem. Then she asks on the rust-lang Discord and someone explains to her what is going on. Finally, after reading over what they wrote a few times, and reading some chapters in the async book, she sees the problem. + +It turns out that, to Rust, a task is kind of a black box with a "poll" function. When the executor thinks a task can make progress, it calls poll. The task itself then delegates this call to poll down to all the other futures that are composed together. In the case of her buffered stream of connections, the stream gets woken up and it would then delegate down the various buffered items in its list. + +When it executes `Stream::for_each`, the task is doing something like this: + +```rust +while let Some(work_item) = stream.next().await { + process_work_item(database, work_item).await; +} +``` + +The task can only "wait" on one "await" at a time. It will execute that await until it completes and only then move on to the rest of the function. When the task is blocked on the first `await`, it will process all the futures that are part of the stream, and hence the various buffered connections all make progress. + +But once a work item is produced, the task will block on the *second* `await` -- the one that resulted from `process_work_item`. This means that, until `process_work_item` completes, control will *never return to the first `await`*. As a result, none of the futures in the stream will make progress, even if they could do so! + +### The fix + +Once Barbara understands the problem, she considers the fix. The most obvious fix is to spawn out tasks that will process each work item, like so: + +```rust +async fn do_work(database: &Database) { + let work = do_select(database, FIND_WORK_QUERY)?; + stream::iter( + work + .into_iter() + .map(|item| do_select(database, work_from_item(item)).await) + .buffered(5) + .for_each(|work_item| task::spawn(async move { + process_work_item(database, work_item).await + })).await; +} +``` + +Spawning a task completes immediately, so the task will quickly move back to blocking on the stream and allowing other connections to make progress. Unfortunately, this change results in a compilation error: + +``` +error[E0759]: `database` has an anonymous lifetime `'_` but it needs to satisfy a `'static` lifetime requirement + --> src/main.rs:8:18 + | +8 | async fn do_work(database: &Database) { + | ^^^^^^^^ --------- this data with an anonymous lifetime `'_`... + | | + | ...is captured here... + | .for_each(|work_item| task::spawn(async move { + | ----------- ...and is required to live as long as `'static` here +``` + +"Ah, right," she says, "spawned tasks can't use borrowed data. I wish I had [rayon] or the scoped threads from [crossbeam]." (What Barbara doesn't realize is that spawning wouldn't actually have fixed her problem anyway: the `for_each` combinator would have awaited the resulting `JoinHandle` and hence it would have blocked... but she could have tweaked her program to fix that if she had gotten that far.) + +"Let me see," Barbara thinks. "What else could I do?" She has the idea that she doesn't have to process the work items immediately. She could buffer up the work into a [`FuturesUnordered`] and process it after everything is ready: + +```rust +async fn do_work(database: &Database) { + let work = do_select(database, FIND_WORK_QUERY)?; + let mut results = FuturesUnordered::new(); + stream::iter( + work + .into_iter() + .map(|item| do_select(database, work_from_item(item)).await) + .buffered(5) + .for_each(|work_item| { + results.push(process_work_item(database, work_item)); + futures::future::ready(()) + })).await; + + while let Some(_) = results.next().await { } +} +``` + +This isn't maximally efficient -- it's introducing an arbitrary phasing into her work -- but at least it doesn't cause timeouts. Going forward, she tries to remember never to do a m"nested `await`" like this. Buffering up work into a `FuturesUnordered` becomes a pattern she finds herself using throughout the codebase. + +## 🤔 Frequently Asked Questions + +### **What are the morals of the story?** + +* Rust's future model is a 'leaky abstraction' that works quite differently from futures in other languages. It is prone to some subtle bugs that require a relatively deep understanding of its inner works to understand and fix. +* "Nested awaits" -- where the task blocks on an inner await while there remains other futures that are still awaiting results -- are easy to do but can cause a lot of trouble. +* Lack of scoped futures makes it hard to spawn items into separate tasks for independent processing sometimes. + +### **What are the sources for this story?** + +This is based on the bug report [Footgun with Future Unordered](https://github.com/rust-lang/futures-rs/issues/2387) but the solution that Barbara came up with is something that was relayed by [farnz](https://github.com/farnz) vision doc writing session. [farnz] mentioned at the time that this pattern was frequently used in their codebase to work around this sort of hazard. + +### **Why did you choose Barbara to tell this story?** + +To illustrate that knowing Rust -- and even having a decent handle on async Rust's basic model -- is not enough to make it clear what is going on in this particular case. + +### **How would this story have played out differently for the other characters?** + +Woe be unto them! Identifying and fixing this bug required a lot of fluency with Rust and the async model. Alan in particular was probably relying on his understanding of async-await from other languages, which works very differently. In those languages, every async function is enqueued automatically for independent execution, so hazards like this do not arise (though this comes at a performance cost). + +### Besides timeouts for clients, what else could go wrong? + +The original bug report mentioned the possibility of deadlock: + +> When using an async friendly semaphore (like Tokio provides), you can deadlock yourself by having the tasks that are waiting in the `FuturesUnordered` owning all the semaphores, while having an item in a `.for_each()` block after `buffer_unordered()` requiring a semaphore. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade +[YouBuy]: ../projects/YouBuy.md \ No newline at end of file From e56049e87b2181b262d0b4d261aa1c6a4d1dd67f Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sat, 24 Apr 2021 17:32:28 -0400 Subject: [PATCH 163/347] credit farnz --- .../status_quo/barbara_battles_with_futures_unordered.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_battles_with_futures_unordered.md b/src/vision/status_quo/barbara_battles_with_futures_unordered.md index a4f46650..98841328 100644 --- a/src/vision/status_quo/barbara_battles_with_futures_unordered.md +++ b/src/vision/status_quo/barbara_battles_with_futures_unordered.md @@ -164,4 +164,5 @@ The original bug report mentioned the possibility of deadlock: [Barbara]: ../characters/barbara.md [htvsq]: ../how_to_vision/status_quo.md [cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade -[YouBuy]: ../projects/YouBuy.md \ No newline at end of file +[YouBuy]: ../projects/YouBuy.md +[farnz]: https://github.com/farnz \ No newline at end of file From 144f83b0ffb5bd7f8e2699d8c0c6e31f1e77ab63 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sat, 24 Apr 2021 17:35:39 -0400 Subject: [PATCH 164/347] fix parens --- .../status_quo/barbara_battles_with_futures_unordered.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/vision/status_quo/barbara_battles_with_futures_unordered.md b/src/vision/status_quo/barbara_battles_with_futures_unordered.md index 98841328..2f905335 100644 --- a/src/vision/status_quo/barbara_battles_with_futures_unordered.md +++ b/src/vision/status_quo/barbara_battles_with_futures_unordered.md @@ -38,7 +38,8 @@ async fn do_work(database: &Database) { .into_iter() .map(|item| do_select(database, work_from_item(item)).await) .buffered(5) - .for_each(|work_item| process_work_item(database, work_item)).await; + .for_each(|work_item| process_work_item(database, work_item)) + ).await; } async fn process_work_item(...) { } @@ -88,7 +89,8 @@ async fn do_work(database: &Database) { .buffered(5) .for_each(|work_item| task::spawn(async move { process_work_item(database, work_item).await - })).await; + }) + ).await; } ``` @@ -122,7 +124,8 @@ async fn do_work(database: &Database) { .for_each(|work_item| { results.push(process_work_item(database, work_item)); futures::future::ready(()) - })).await; + }) + ).await; while let Some(_) = results.next().await { } } From 4b8049963e8b25506b5a45c1cdb94aa48d14aef7 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 25 Apr 2021 06:18:49 -0400 Subject: [PATCH 165/347] Update src/vision/status_quo/barbara_battles_with_futures_unordered.md Co-authored-by: Alice Ryhl --- .../status_quo/barbara_battles_with_futures_unordered.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/barbara_battles_with_futures_unordered.md b/src/vision/status_quo/barbara_battles_with_futures_unordered.md index 2f905335..9ef9baa1 100644 --- a/src/vision/status_quo/barbara_battles_with_futures_unordered.md +++ b/src/vision/status_quo/barbara_battles_with_futures_unordered.md @@ -51,7 +51,7 @@ Following a hunch, she adds more logging in and around the `process_work_item` f ### Barbara thought she understood how async worked -Barbara thought she understood futures fairly well. She thought of `async fn` as basically "like a synchronous function with more advanced control flow". She knew that Rust's futures were lazy -- that they didn't start executing until they were awaited -- and she knew that could compose them using utilities like [`join`](https://docs.rs/futures/0.3.14/futures/future/fn.join.html), [`FuturesUnordered`], or the [`buffered`](https://docs.rs/futures/0.3.14/futures/stream/trait.StreamExt.html#method.buffered) method (as in this example). +Barbara thought she understood futures fairly well. She thought of `async fn` as basically "like a synchronous function with more advanced control flow". She knew that Rust's futures were lazy -- that they didn't start executing until they were awaited -- and she knew that could compose them using utilities like [`join`](https://docs.rs/futures/0.3/futures/future/fn.join.html), [`FuturesUnordered`], or the [`buffered`](https://docs.rs/futures/0.3/futures/stream/trait.StreamExt.html#method.buffered) method (as in this example). [`FuturesUnordered`]: https://docs.rs/futures/0.3.14/futures/stream/struct.FuturesUnordered.html @@ -168,4 +168,4 @@ The original bug report mentioned the possibility of deadlock: [htvsq]: ../how_to_vision/status_quo.md [cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade [YouBuy]: ../projects/YouBuy.md -[farnz]: https://github.com/farnz \ No newline at end of file +[farnz]: https://github.com/farnz From f1eba7537257c829c7f0c7136923e190daed2c00 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 25 Apr 2021 06:59:12 -0400 Subject: [PATCH 166/347] rename, add examples --- ...md => barbara_battles_buffered_streams.md} | 99 ++++++++++++++----- 1 file changed, 72 insertions(+), 27 deletions(-) rename src/vision/status_quo/{barbara_battles_with_futures_unordered.md => barbara_battles_buffered_streams.md} (79%) diff --git a/src/vision/status_quo/barbara_battles_with_futures_unordered.md b/src/vision/status_quo/barbara_battles_buffered_streams.md similarity index 79% rename from src/vision/status_quo/barbara_battles_with_futures_unordered.md rename to src/vision/status_quo/barbara_battles_buffered_streams.md index 9ef9baa1..3ec21b5d 100644 --- a/src/vision/status_quo/barbara_battles_with_futures_unordered.md +++ b/src/vision/status_quo/barbara_battles_buffered_streams.md @@ -1,4 +1,4 @@ -# 😱 Status quo stories: Barbara battles buffered items +# 😱 Status quo stories: Barbara battles buffered streams [How To Vision: Status Quo]: ../how_to_vision/status_quo.md [the raw source from this template]: https://raw.githubusercontent.com/rust-lang/wg-async-foundations/master/src/vision/status_quo/template.md @@ -33,13 +33,11 @@ She looks at the caller of `do_select`, which is a function `do_work`: ```rust async fn do_work(database: &Database) { let work = do_select(database, FIND_WORK_QUERY)?; - stream::iter( - work - .into_iter() - .map(|item| do_select(database, work_from_item(item)).await) - .buffered(5) - .for_each(|work_item| process_work_item(database, work_item)) - ).await; + stream::iter(work.into_iter()) + .map(|item| do_select(database, work_from_item(item))) + .buffered(5) + .for_each(|work_item| process_work_item(database, work_item)) + .await; } async fn process_work_item(...) { } @@ -82,15 +80,13 @@ Once Barbara understands the problem, she considers the fix. The most obvious fi ```rust async fn do_work(database: &Database) { let work = do_select(database, FIND_WORK_QUERY)?; - stream::iter( - work - .into_iter() - .map(|item| do_select(database, work_from_item(item)).await) - .buffered(5) - .for_each(|work_item| task::spawn(async move { - process_work_item(database, work_item).await - }) - ).await; + stream::iter(work.into_iter()) + .map(|item| do_select(database, work_from_item(item))) + .buffered(5) + .for_each(|work_item| task::spawn(async move { + process_work_item(database, work_item).await + }) + .await; } ``` @@ -116,16 +112,14 @@ error[E0759]: `database` has an anonymous lifetime `'_` but it needs to satisfy async fn do_work(database: &Database) { let work = do_select(database, FIND_WORK_QUERY)?; let mut results = FuturesUnordered::new(); - stream::iter( - work - .into_iter() - .map(|item| do_select(database, work_from_item(item)).await) - .buffered(5) - .for_each(|work_item| { - results.push(process_work_item(database, work_item)); - futures::future::ready(()) - }) - ).await; + stream::iter(work.into_iter()) + .map(|item| do_select(database, work_from_item(item))) + .buffered(5) + .for_each(|work_item| { + results.push(process_work_item(database, work_item)); + futures::future::ready(()) + }) + .await; while let Some(_) = results.next().await { } } @@ -159,6 +153,57 @@ The original bug report mentioned the possibility of deadlock: > When using an async friendly semaphore (like Tokio provides), you can deadlock yourself by having the tasks that are waiting in the `FuturesUnordered` owning all the semaphores, while having an item in a `.for_each()` block after `buffer_unordered()` requiring a semaphore. +### Is there any way for Barbara to both produce and process work items simultaneously? + +Yes, in this case, she could've. For example, she might have written + +```rust +async fn do_work(database: &Database) { + let work = do_select(database, FIND_WORK_QUERY).await?; + + stream::iter(work) + .map(|item| async move { + let work_item = do_select(database, work_from_item(item)).await; + process_work_item(database, work_item).await; + }) + .buffered(5) + .for_each(|()| std::future::ready(())) + .await; +} +``` + +This would mean however that limit the number of work items being processed to 5. This may be what she wanted, but perhaps not. It may also be that similar problems come up in scenarios where Barbara can't so easily alter the call to `do_select` to "append" a call to `process_work_item` (for example, maybe she is in some function that takes a [`FuturesUnordered`] or `Stream` as argument). + +### Is there any way for Barbara to both produce and process work items simultaneously, without the buffering and so forth? + +Yes, she might use a loop with a `select!`. This would ensure that she is processing *both* the stream that produces work items and the [`FuturesUnordered`] that consumes them: + +```rust +async fn do_work(database: &Database) { + let work = do_select(database, FIND_WORK_QUERY).await?; + + let selects = stream::iter(work) + .map(|item| do_select(database, work_from_item(item))) + .buffered(5) + .fuse(); + tokio::pin!(selects); + + let mut results = FuturesUnordered::new(); + + loop { + tokio::select! { + Some(work_item) = selects.next() => { + results.push(process_work_item(database, work_item)); + }, + Some(()) = results.next() => { /* do nothing */ }, + else => break, + } + } +} +``` + +Note that doing so is producing code that looks quite a bit different than where she started, though. :( + [character]: ../characters.md [status quo stories]: ./status_quo.md [Alan]: ../characters/alan.md From 4f5b524e2fec91c288f334175ee05238c614c5e6 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 25 Apr 2021 08:15:42 -0400 Subject: [PATCH 167/347] Update src/vision/status_quo/barbara_battles_buffered_streams.md Co-authored-by: Alice Ryhl --- src/vision/status_quo/barbara_battles_buffered_streams.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_battles_buffered_streams.md b/src/vision/status_quo/barbara_battles_buffered_streams.md index 3ec21b5d..159c181b 100644 --- a/src/vision/status_quo/barbara_battles_buffered_streams.md +++ b/src/vision/status_quo/barbara_battles_buffered_streams.md @@ -33,7 +33,7 @@ She looks at the caller of `do_select`, which is a function `do_work`: ```rust async fn do_work(database: &Database) { let work = do_select(database, FIND_WORK_QUERY)?; - stream::iter(work.into_iter()) + stream::iter(work) .map(|item| do_select(database, work_from_item(item))) .buffered(5) .for_each(|work_item| process_work_item(database, work_item)) From 15685d3d97c92bcadf3e714cb1f10be567bd6b12 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sun, 25 Apr 2021 08:17:52 -0400 Subject: [PATCH 168/347] iter_iter is not needed --- src/vision/status_quo/barbara_battles_buffered_streams.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/barbara_battles_buffered_streams.md b/src/vision/status_quo/barbara_battles_buffered_streams.md index 159c181b..6c4c2d3f 100644 --- a/src/vision/status_quo/barbara_battles_buffered_streams.md +++ b/src/vision/status_quo/barbara_battles_buffered_streams.md @@ -80,7 +80,7 @@ Once Barbara understands the problem, she considers the fix. The most obvious fi ```rust async fn do_work(database: &Database) { let work = do_select(database, FIND_WORK_QUERY)?; - stream::iter(work.into_iter()) + stream::iter(work) .map(|item| do_select(database, work_from_item(item))) .buffered(5) .for_each(|work_item| task::spawn(async move { @@ -112,7 +112,7 @@ error[E0759]: `database` has an anonymous lifetime `'_` but it needs to satisfy async fn do_work(database: &Database) { let work = do_select(database, FIND_WORK_QUERY)?; let mut results = FuturesUnordered::new(); - stream::iter(work.into_iter()) + stream::iter(work) .map(|item| do_select(database, work_from_item(item))) .buffered(5) .for_each(|work_item| { From 680a0d0ef47dbff4e0e19db58987e5151d1f315a Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 26 Apr 2021 14:56:03 -0400 Subject: [PATCH 169/347] extend to 2021-05-14 --- src/vision/how_to_vision.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/vision/how_to_vision.md b/src/vision/how_to_vision.md index bec83eb3..2d3c6b0d 100644 --- a/src/vision/how_to_vision.md +++ b/src/vision/how_to_vision.md @@ -4,10 +4,10 @@ | When | What | | --- | --- | -| ✅ **Now** till 2021-04-30 | Improve the [sample projects][hvp] | -| ✅ **Now** till 2021-04-30 | Propose new ["status quo" stories][hvsq] or [comment] on existing PRs | -| ✅ **Now** till 2021-04-30 | Propose new ["shiny future" stories][hvsf] or [comment] on existing PRs | -| 🛑 Starting 2021-04-30 | Vote for the [awards] on the status quo and shiny future stories! | +| ✅ **Now** till 2021-05-14 | Improve the [sample projects][hvp] | +| ✅ **Now** till 2021-05-14 | Propose new ["status quo" stories][hvsq] or [comment] on existing PRs | +| ✅ **Now** till 2021-05-14 | Propose new ["shiny future" stories][hvsf] or [comment] on existing PRs | +| 🛑 Starting 2021-05-14 | Vote for the [awards] on the status quo and shiny future stories! | ## The big picture @@ -19,7 +19,7 @@ Once the brainstorming period is complete, the working group leads will begin wo ### Brainstorming -The brainstorming period runs until 2021-04-30: +The brainstorming period runs until 2021-05-14: * Folks open "status quo" and "shiny future" story PRs against the [wg-async-foundations repo][repo]. * [Templates and instructions for status quo stories can be found here.][hvsq] From 8fdcde44cb3b8e8c2c5a4378cebfbb0140033fbb Mon Sep 17 00:00:00 2001 From: Sean McArthur Date: Mon, 26 Apr 2021 14:37:17 -0700 Subject: [PATCH 170/347] shiny future: Barbara enjoys an async sandwich --- .../barbara_enjoys_an_async_sandwich.md | 160 ++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 src/vision/shiny_future/barbara_enjoys_an_async_sandwich.md diff --git a/src/vision/shiny_future/barbara_enjoys_an_async_sandwich.md b/src/vision/shiny_future/barbara_enjoys_an_async_sandwich.md new file mode 100644 index 00000000..81f9be10 --- /dev/null +++ b/src/vision/shiny_future/barbara_enjoys_an_async_sandwich.md @@ -0,0 +1,160 @@ +# ✨ Shiny future stories: Barbara enjoys her async-sync-async sandwich :sandwich: + +:::warning +Alternative titles: +- Barbara enjoys her async-sync-async sandwich :sandwich: +- Barbara recursively blocks +- Barbara blocks and blocks and blocks +::: + + +## 🚧 Warning: Draft status 🚧 + +This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories [cannot be wrong]. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to [add your own shiny vision story][htvsq]! + +## The story + +Barbara wants to customize a permissions lookup when accepting requests. The library defines a `trait PermitRequest`, to allow the user to define their own rules. Nice! + +```rust +trait PermitRequest {} +``` + +She starts small, to get her feet wet. + +```rust +struct Always; + +impl PermitRequest for Always { + fn permit(&self, _: &Request) -> bool { + true + } +} +``` + +All requests are permitted! Simple, but now to actually to implement the permissions logic. + +One of the basic rules Barbara has is to check the request for the existence of a header, but the function is written as `async`, since Barbara figured it might need to be eventually. + +```rust +async fn req_has_header(req: &Request) -> bool { + req.headers().contains_key("open-sesame") +} +``` + +When Barbara goes to implement the `PermitRequest` trait, she realizes a problem: the trait did not think permissions would require an async lookup, so its method is not `async`. Barbara tries the easiest thing first, hoping that she can just block on the future. + +```rust +struct HasHeader; + +impl PermitRequest for HasHeader { + fn permit(&self, req: &Request) -> bool { + task::block_on(req_has_header(req)) + } +} +``` + +When Barbara goes to run the code, it works! Even though she was already running an async runtime at the top level, trying to block on *this* task didn't panic or deadlock. This is because the runtime optimistically hoped the future would be available without needing to go to sleep, and so when it found the currently running runtime, it re-used it to run the future. + +The compiler *does* emit a warning, thanks to a blocking lint (link to shiny future when written). It let Barbara know this could have performance problems, but she accepts the trade offs and just slaps a `#[allow(async_blocking)]` attribute in there. + + +Barbara, now energized that things are looking good, writes up the other permission strategy for her application. It needs to fetch some configuration from another server based on a request header, and to keep it snappy, she limits it with a timeout. + +```rust +struct FetchConfig; + +impl PermitRequest for FetchConfig { + fn permit(&self, req: &Request) -> bool { + let token = req.headers().get("authorization"); + + #[allow(async_blocking)] + task::block_on(async { + select! { + resp = fetch::get(CONFIG_SERVER).param("token", token) => { + resp.status() == 200 + }, + _ = time::sleep(2.seconds()) => { + false + } + } + }) + } +} +``` + +This time, there's no compiler warning, since Barbara was ready for that. And running the code, it works as expected. The runtime was able to reuse the IO and timer drivers, and not need to disrupt other tasks. + +However, the runtime chose to emit a runtime log at the warning level, informing her that while it was able to make the code work, it *could* have degraded behavior if the same parent async code were waiting on this and another async block, such as via `join!`. In the first case, since the async code was ready immediately, no actual harm could have happened. But this time, since it had to block the task waiting on a timer and IO, the log was emitted. + +Thanks to the runtime warning, Barbara does some checking that the surround code won't be affected, and once sure, is satisfied that it was easier than she thought to make an async-sync-async sandwich. + + +## 🤔 Frequently Asked Questions + +### What status quo stories are you retelling? + +While this story isn't an exact re-telling of an existing status quo, it covers the morals of a couple: + +- [Barbara bridges sync and async](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/barbara_bridges_sync_and_async.html) +- [A comment about async in `ResolveServerCerts`](https://github.com/rust-lang/wg-async-foundations/pull/164#issuecomment-824028298) + +### What are the key attributes of this shiny future? + +- `block_on` tries to be forgiving and optimistic of nested usage. + - It does a best effort to "just work". +- But at the same time, it provides information to the user that it might not always work out. + - A compiletime lint warns about the problem in general. + - This prods a user to *try* to use `.await` instead of `block_on` if they can. + - A runtime log warns when the usage could have reacted badly with other code. + - This gives the user some more information if a specific combination degrades their application. + +### What is the "most shiny" about this future? + +It significantly increases the areas where `block_on` "just works", which should improve *productivity*. + +### What are some of the potential pitfalls about this future? + +- While this shiny future tries to be more forgiving when nesting `block_on`, the author couldn't think of a way to completely remove the potential dangers therein. +- By making it *easier* to nest `block_on`, it might increase the times a user writes code that degrades in performance. + - Some runtimes would purposefully panic early to try to encourage uses to pick a different design that wouldn't degrade. + - However, by keeping the warnings, hopefully users can evaluate the risks themselves. + +*Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Are any of them negatively impacted? Are there specific application areas that are impacted negatively? You might find the sample [projects] helpful in this regard, or perhaps looking at the goals of each [character].* + +### Did anything surprise you when writing this story? Did the story go any place unexpected? + +No. + +### What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written? + +A variation would be an even more optimistic future, where we are able to come up with a technique to completely remove all possible bad behaviors with nested `block_on`. The author wasn't able to think of how, and it seems like the result would be similar to just being able to `.await` in every context, possibly implicitly. + +### What are some of the things we'll have to figure out to realize this future? What projects besides Rust itself are involved, if any? (Optional) + +- A runtime would need to be modified to be able to lookup through a thread-local or similar whether a runtime instance is already running. +- A runtime would need some sort of `block_in_place` mechanism. +- We could make a heuristic to guess when `block_in_place` would be dangerous. + - If the runtime knows the task's waker has been cloned since the last time it was woken, then *probably* the task is doing something like `join!` or `select!`. + - Then we could emit a warning like "nested block_on may cause problems when used in combination with `join!` or `select!`" + - The heuristic wouldn't work if the nested block_on were part of the *first* call of a `join!`/`select!`. + - Maybe a warning regardless is a good idea. + - Or a lint, that a user can `#[allow(nested_block_on)]`, at their own peril. +- This story uses a generic `task::block_on`, to not name any specific runtime. It doesn't specifically assume that this could work cross-runtimes, but maybe a shinier future would assume it could? +- This story referes to a lint in a proposed different shiny future, which is not yet written. + + + +[character]: ../characters.md +[comment]: ./comment.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[projects]: ../projects.md +[htvsq]: ../how_to_vision/shiny_future.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade + From 6e612ad1c93d928ea6a06085fef199815735b8b8 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 27 Apr 2021 04:18:42 -0400 Subject: [PATCH 171/347] Apply suggestions from code review Co-authored-by: Simon Farnsworth Co-authored-by: Ryan Levick --- .../barbara_battles_buffered_streams.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/vision/status_quo/barbara_battles_buffered_streams.md b/src/vision/status_quo/barbara_battles_buffered_streams.md index 6c4c2d3f..d6c73f00 100644 --- a/src/vision/status_quo/barbara_battles_buffered_streams.md +++ b/src/vision/status_quo/barbara_battles_buffered_streams.md @@ -25,7 +25,7 @@ async fn do_select(database: &Database, query: Query) -> Result> { conn.select_query(query).await } ``` - +This is surprising, because `do_select` doesn't do much - it does a database query to claim a work item from a queue, but isn't expected to handle a lot of data or hit extreme slowdown on the database side. Some of the time, there is some kind of massive delay in between the `get_conn` method opening a connection and the call to `select_query`. But why? She has metrics that show that the CPU is largely idle, so it's not like the cores are all occupied. She looks at the caller of `do_select`, which is a function `do_work`: @@ -43,10 +43,12 @@ async fn do_work(database: &Database) { async fn process_work_item(...) { } ``` -The `do_work` function is invoking `do_select` as part of a stream; it is buferring up a certain number of `do_select` instances and, for each one, invoking `process_work_item`. Everything seems to be in order, and she can see that calls to `process_work_item` are completing in the logs. +The `do_work` function is invoking `do_select` as part of a stream; it is buffering up a certain number of `do_select` instances and, for each one, invoking `process_work_item`. Everything seems to be in order, and she can see that calls to `process_work_item` are completing in the logs. Following a hunch, she adds more logging in and around the `process_work_item` function and waits a few days to accumulate new logs. She notices that shortly after each time out, there is always a log of a `process_work_item` call that takes at least 20 seconds. These calls are not related to the connections that time out, they are for other connections, but they always appear afterwards in time. +`process_work_item` is expected to be slow sometimes because it can end up handling large items, so this is not immediately surprising to Barbara. She is, however, surprised by the correlation - surely the executor ensures that `process_work_item` can't stop `do_select` from doing its job? + ### Barbara thought she understood how async worked Barbara thought she understood futures fairly well. She thought of `async fn` as basically "like a synchronous function with more advanced control flow". She knew that Rust's futures were lazy -- that they didn't start executing until they were awaited -- and she knew that could compose them using utilities like [`join`](https://docs.rs/futures/0.3/futures/future/fn.join.html), [`FuturesUnordered`], or the [`buffered`](https://docs.rs/futures/0.3/futures/stream/trait.StreamExt.html#method.buffered) method (as in this example). @@ -57,7 +59,7 @@ Barbara also knows that every future winds up associated with a task, and that i ### Barbara goes deep into how poll works -She goes to read the Rust async book and tries to think about the model, but she can't quite see the problem. Then she asks on the rust-lang Discord and someone explains to her what is going on. Finally, after reading over what they wrote a few times, and reading some chapters in the async book, she sees the problem. +She goes to read the Rust async book and tries to think about the model, but she can't quite see the problem. Then she asks on the rust-lang Discord and someone explains to her what is going on, with the catchphrase "remember, `async` is about waiting in parallel, not working in parallel". Finally, after reading over what they wrote a few times, and reading some chapters in the async book, she sees the problem. It turns out that, to Rust, a task is kind of a black box with a "poll" function. When the executor thinks a task can make progress, it calls poll. The task itself then delegates this call to poll down to all the other futures that are composed together. In the case of her buffered stream of connections, the stream gets woken up and it would then delegate down the various buffered items in its list. @@ -100,11 +102,10 @@ error[E0759]: `database` has an anonymous lifetime `'_` but it needs to satisfy | ^^^^^^^^ --------- this data with an anonymous lifetime `'_`... | | | ...is captured here... - | .for_each(|work_item| task::spawn(async move { - | ----------- ...and is required to live as long as `'static` here -``` + | .map(|item| task::spawn(do_select(database, work_from_item(item)))) + | ----------- ...and is required to live as long as `'static` here -"Ah, right," she says, "spawned tasks can't use borrowed data. I wish I had [rayon] or the scoped threads from [crossbeam]." (What Barbara doesn't realize is that spawning wouldn't actually have fixed her problem anyway: the `for_each` combinator would have awaited the resulting `JoinHandle` and hence it would have blocked... but she could have tweaked her program to fix that if she had gotten that far.) +"Ah, right," she says, "spawned tasks can't use borrowed data. I wish I had [rayon] or the scoped threads from [crossbeam]." "Let me see," Barbara thinks. "What else could I do?" She has the idea that she doesn't have to process the work items immediately. She could buffer up the work into a [`FuturesUnordered`] and process it after everything is ready: @@ -125,7 +126,7 @@ async fn do_work(database: &Database) { } ``` -This isn't maximally efficient -- it's introducing an arbitrary phasing into her work -- but at least it doesn't cause timeouts. Going forward, she tries to remember never to do a m"nested `await`" like this. Buffering up work into a `FuturesUnordered` becomes a pattern she finds herself using throughout the codebase. +This isn't maximally efficient -- it's introducing an arbitrary phasing into her work -- but at least it doesn't cause timeouts. Going forward, she tries to remember never to do a "nested `await`" like this. Buffering up work into a `FuturesUnordered` becomes a pattern she finds herself using throughout the codebase. ## 🤔 Frequently Asked Questions From 5a617bda00e161a3b6a35c13454f68781953d169 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 29 Apr 2021 17:24:25 -0400 Subject: [PATCH 172/347] link to issues --- src/vision/status_quo.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/vision/status_quo.md b/src/vision/status_quo.md index 06ed217a..59dcd241 100644 --- a/src/vision/status_quo.md +++ b/src/vision/status_quo.md @@ -51,11 +51,11 @@ The problems begin from the very first moment a user starts to try out async Rus * 🚧 Need a story about multiple runtimes working together * There is a lack of common, standardized abstractions, which means that often there are multiple attempts to establish common traits and different libraries will employ a distinct subset. * [`Sink` is not implemented by async-std websockets](status_quo/alan_tries_a_socket_sink.md) - * 🚧 No standardized lower-level traits for read, write, iterators in an async setting - * 🚧 Lack of widely used higher-level abstractions (like those tower aims to provide) - * 🚧 Tokio doesn't support the futures `Stream` trait because of stability concerns + * 🚧 [No standardized lower-level traits for read, write, iterators in an async setting](https://github.com/rust-lang/wg-async-foundations/issues/177) + * 🚧 [Lack of widely used higher-level abstractions (like those tower aims to provide)](https://github.com/rust-lang/wg-async-foundations/issues/178) + * 🚧 [Tokio doesn't support the futures `Stream` trait because of stability concerns](https://github.com/rust-lang/wg-async-foundations/issues/179) * Some of the problems are due to the design of Rust itself. The coherence rules in particular. - * 🚧 Write about how coherence makes it impossible to establish + * 🚧 [Write about how coherence makes it nearly impossible to establish standard traits outside of libstd.](https://github.com/rust-lang/wg-async-foundations/issues/180) @@ -68,6 +68,7 @@ Writing async programs turns out to have all kinds of subtle tradeoffs. Rust aim * Mixing sync and async code is tricky and it's not always obvious how to do it -- something it's not even clear what is "sync" (how long does a loop have to run before you can consider it blocking?) * [Barbara bridges sync and async](status_quo/barbara_bridges_sync_and_async.md) * [Barbara compares some C++ code](status_quo/barbara_compares_some_cpp_code.md) + * [Alan thinks he needs async locks](status_quo/alan_thinks_he_needs_async_locks.md) -- "locks are ok if they don't take too long" * There are often many options for doing things like writing futures or other core concepts; which libraries or patterns are best? * [Barbara needs async helpers](status_quo/barbara_needs_async_helpers.md) * [Grace wants to integrate c api](status_quo/grace_wants_to_integrate_c_api.html#the-second-problem-doing-this-many-times) @@ -81,6 +82,7 @@ Writing async programs turns out to have all kinds of subtle tradeoffs. Rust aim * [Barbara bridges sync and async](status_quo/barbara_bridges_sync_and_async.md) * Sometimes async may not even be the right solution * [Niklaus builds a hydrodynamic simulator](status_quo/niklaus_simulates_hydrodynamics.md) + * 🚧 [Avoiding async entirely](https://github.com/rust-lang/wg-async-foundations/issues/58) @@ -103,7 +105,7 @@ Writing async programs turns out to have all kinds of subtle tradeoffs. Rust aim * [Grace wants to integrate a C API](status_quo/grace_wants_to_integrate_c_api.html#the-second-problem-doing-this-many-times) * When you stray from the happy path, the complexity cliff is very steep * Working with Pin is really hard, but necessary in various scenarios - * 🚧 Need a story about implementing async-read, async-write + * 🚧 [Need a story about implementing async-read, async-write](https://github.com/rust-lang/wg-async-foundations/issues/181) * [Alan hates writing a stream](status_quo/alan_hates_writing_a_stream.md) * It's easy to forget to invoke a waker * [Alan hates writing a stream](status_quo/alan_hates_writing_a_stream.html#-frequently-asked-questions) @@ -160,8 +162,8 @@ Writing async programs turns out to have all kinds of subtle tradeoffs. Rust aim * Embedded environments can have pretty stringent requirements; Future was designed to be minimal, but perhaps not minimal enough * [Barbara carefully discusses embedded future](status_quo/barbara_carefully_dismisses_embedded_future.md) * Evolving specs for C and C++ require careful thought to integrate with async Rust's polling model - * 🚧 Convert [these notes on C++](https://hackmd.io/DnArulWbTKSx1_8mijsRuQ) into a status quo story - * 🚧 Write about the challenges of io-uring integration + * 🚧 [Wrapping C++ APIs in Rust Futures](https://github.com/rust-lang/wg-async-foundations/issues/67) + * 🚧 [Write about the challenges of io-uring integration](https://github.com/rust-lang/wg-async-foundations/issues/182) * Advanced new techniques like [Ghostcell](status_quo/barbara_wants_to_use_ghostcell.md) may not fit into the traits as designed From 51482a219949cfea44ca5b844e2e56c2ea9402db Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 29 Apr 2021 17:48:01 -0400 Subject: [PATCH 173/347] fix a few more links --- src/vision/status_quo.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vision/status_quo.md b/src/vision/status_quo.md index 59dcd241..8818edf7 100644 --- a/src/vision/status_quo.md +++ b/src/vision/status_quo.md @@ -45,15 +45,17 @@ The problems begin from the very first moment a user starts to try out async Rus * [Barbara anguishes over http](status_quo/barbara_anguishes_over_http.md) * basic helpers and utility crates are hard to find, and there are many choices, often with subtle differences between them * [Barbara needs async helpers](status_quo/barbara_needs_async_helpers.md) -* Furthermore, the async ecosystem is fractured. Choosing one library may entail choosing a specific runtime. Sometimes you may wind up with multiple runtimes running at once. +* Furthermore, the async ecosystem is fractured. Choosing one library may entail choosing a specific runtime. Sometimes you may wind up with multiple runtimes running at once. But sometimes you want that! * [Alan started trusting the rust compiler but then async](status_quo/alan_started_trusting_the_rust_compiler_but_then_async.md) * [Barbara needs async helpers](status_quo/barbara_needs_async_helpers.md) - * 🚧 Need a story about multiple runtimes working together +* Of course, sometimes you *want* multiple runtimes running together + * [Alan has an external event loop and wants to use futures/streams](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_has_an_event_loop.html) + * 🚧 [Need more stories about multiple runtimes working together](https://github.com/rust-lang/wg-async-foundations/issues/183) * There is a lack of common, standardized abstractions, which means that often there are multiple attempts to establish common traits and different libraries will employ a distinct subset. * [`Sink` is not implemented by async-std websockets](status_quo/alan_tries_a_socket_sink.md) * 🚧 [No standardized lower-level traits for read, write, iterators in an async setting](https://github.com/rust-lang/wg-async-foundations/issues/177) * 🚧 [Lack of widely used higher-level abstractions (like those tower aims to provide)](https://github.com/rust-lang/wg-async-foundations/issues/178) - * 🚧 [Tokio doesn't support the futures `Stream` trait because of stability concerns](https://github.com/rust-lang/wg-async-foundations/issues/179) + * 🚧 [Tokio has `Stream` support in tokio-stream for stability concerns](https://github.com/rust-lang/wg-async-foundations/issues/179) * Some of the problems are due to the design of Rust itself. The coherence rules in particular. * 🚧 [Write about how coherence makes it nearly impossible to establish standard traits outside of libstd.](https://github.com/rust-lang/wg-async-foundations/issues/180) From 1500329551f9158a612236d3903cb24933405181 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 29 Apr 2021 18:50:20 -0400 Subject: [PATCH 174/347] fix the example --- .../status_quo/barbara_battles_buffered_streams.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/vision/status_quo/barbara_battles_buffered_streams.md b/src/vision/status_quo/barbara_battles_buffered_streams.md index d6c73f00..0260b106 100644 --- a/src/vision/status_quo/barbara_battles_buffered_streams.md +++ b/src/vision/status_quo/barbara_battles_buffered_streams.md @@ -77,22 +77,20 @@ But once a work item is produced, the task will block on the *second* `await` -- ### The fix -Once Barbara understands the problem, she considers the fix. The most obvious fix is to spawn out tasks that will process each work item, like so: +Once Barbara understands the problem, she considers the fix. The most obvious fix is to spawn out tasks for the `do_select` calls, like so: ```rust async fn do_work(database: &Database) { let work = do_select(database, FIND_WORK_QUERY)?; stream::iter(work) - .map(|item| do_select(database, work_from_item(item))) + .map(|item| task::spawn(do_select(database, work_from_item(item)))) .buffered(5) - .for_each(|work_item| task::spawn(async move { - process_work_item(database, work_item).await - }) + .for_each(|work_item| process_work_item(database, work_item)) .await; } ``` -Spawning a task completes immediately, so the task will quickly move back to blocking on the stream and allowing other connections to make progress. Unfortunately, this change results in a compilation error: +Spawning a task will allow the runtime to keep moving those tasks along independently of the `do_work` task. Unfortunately, this change results in a compilation error: ``` error[E0759]: `database` has an anonymous lifetime `'_` but it needs to satisfy a `'static` lifetime requirement @@ -104,6 +102,7 @@ error[E0759]: `database` has an anonymous lifetime `'_` but it needs to satisfy | ...is captured here... | .map(|item| task::spawn(do_select(database, work_from_item(item)))) | ----------- ...and is required to live as long as `'static` here +``` "Ah, right," she says, "spawned tasks can't use borrowed data. I wish I had [rayon] or the scoped threads from [crossbeam]." @@ -126,7 +125,7 @@ async fn do_work(database: &Database) { } ``` -This isn't maximally efficient -- it's introducing an arbitrary phasing into her work -- but at least it doesn't cause timeouts. Going forward, she tries to remember never to do a "nested `await`" like this. Buffering up work into a `FuturesUnordered` becomes a pattern she finds herself using throughout the codebase. +This changes the behavior of her program quite a bit though. The original goal was to have at most 5 `do_select` calls occuring concurrently with exactly one `process_work_item`, but now she has all of the `process_work_item` calls executing at once. Nonetheless, the hack solves her immediate problem. Buffering up work into a `FuturesUnordered` becomes a kind of "fallback" for those cases where can't readily insert a `task::spawn`. ## 🤔 Frequently Asked Questions From d63a92fca362f8a6fbf6a0923d0d86b09d7bf151 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 29 Apr 2021 19:02:06 -0400 Subject: [PATCH 175/347] add more details --- src/vision/status_quo/barbara_battles_buffered_streams.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vision/status_quo/barbara_battles_buffered_streams.md b/src/vision/status_quo/barbara_battles_buffered_streams.md index 0260b106..871519fd 100644 --- a/src/vision/status_quo/barbara_battles_buffered_streams.md +++ b/src/vision/status_quo/barbara_battles_buffered_streams.md @@ -172,7 +172,7 @@ async fn do_work(database: &Database) { } ``` -This would mean however that limit the number of work items being processed to 5. This may be what she wanted, but perhaps not. It may also be that similar problems come up in scenarios where Barbara can't so easily alter the call to `do_select` to "append" a call to `process_work_item` (for example, maybe she is in some function that takes a [`FuturesUnordered`] or `Stream` as argument). +This would however mean that she would have 5 calls to `process_work_item` executing at once. In the actual case that inspired this story, `process_work_item` can take as much as 10 GB of RAM, so having multiple concurrent calls is a problem. ### Is there any way for Barbara to both produce and process work items simultaneously, without the buffering and so forth? @@ -202,7 +202,7 @@ async fn do_work(database: &Database) { } ``` -Note that doing so is producing code that looks quite a bit different than where she started, though. :( +Note that doing so is producing code that looks quite a bit different than where she started, though. :( This also behaves very differently. There can be a queue of tens of thousands of items that `do_select` grabs from, and this code will potentially pull far too many items out of the queue, which then would have to be requeued on shutdown. The intent of the `buffered(5)` call was to grab 5 work items from the queue at most, so that other hosts could pull out work items and share the load when there's a spike. [character]: ../characters.md [status quo stories]: ./status_quo.md @@ -214,3 +214,5 @@ Note that doing so is producing code that looks quite a bit different than where [cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade [YouBuy]: ../projects/YouBuy.md [farnz]: https://github.com/farnz + + From 5529bd66513e0ea12ac203f87979e005d6b2af43 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 29 Apr 2021 19:24:31 -0400 Subject: [PATCH 176/347] reconcile recent merges and SUMMARY.md --- src/SUMMARY.md | 5 ++++- src/vision/status_quo.md | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index d58298e9..a60f8c15 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -38,10 +38,12 @@ - [Alan tries to debug a hang](./vision/status_quo/alan_tries_to_debug_a_hang.md) - [Alan writes a web framework](./vision/status_quo/alan_writes_a_web_framework.md) - [Barbara anguishes over HTTP](./vision/status_quo/barbara_anguishes_over_http.md) - - [Barbara Barbara bridges sync and async in `perf.rust-lang.org`](./vision/status_quo/barbara_bridges_sync_and_async.md) + - [Barbara battles buffered streams](./vision/status_quo/barbara_battles_buffered_streams.md) + - [Barbara bridges sync and async in `perf.rust-lang.org`](./vision/status_quo/barbara_bridges_sync_and_async.md) - [Barbara builds an async executor](./vision/status_quo/barbara_builds_an_async_executor.md) - [Barbara carefully dismisses embedded `Future`](./vision/status_quo/barbara_carefully_dismisses_embedded_future.md) - [Barbara compares some C++ code](./vision/status_quo/barbara_compares_some_cpp_code.md) + - [Barbara gets burned by select](./vision/status_quo/barbara_gets_burned_by_select.md) - [Barbara makes their first foray into async](./vision/status_quo/barbara_makes_their_first_steps_into_async.md) - [Barbara needs Async Helpers](./vision/status_quo/barbara_needs_async_helpers.md) - [Barbara plays with async](./vision/status_quo/barbara_plays_with_async.md) @@ -59,6 +61,7 @@ - [Template](./vision/shiny_future/template.md) - [Alan switches runtimes](./vision/shiny_future/alan_switches_runtimes.md) - [Alan's trust in the compiler is rewarded](./vision/shiny_future/alans_trust_in_the_compiler_is_rewarded.md) + - [Barbara enjoys an async sandwich](./vision/shiny_future/barbara_enjoys_an_async_sandwich.md) - [Barbara makes a wish](./vision/shiny_future/barbara_makes_a_wish.md) - [📅 Roadmap for 2021](./vision/roadmap.md) - [🔍 Triage meetings](./triage.md) diff --git a/src/vision/status_quo.md b/src/vision/status_quo.md index 8818edf7..8a8605d9 100644 --- a/src/vision/status_quo.md +++ b/src/vision/status_quo.md @@ -134,7 +134,7 @@ Writing async programs turns out to have all kinds of subtle tradeoffs. Rust aim * Dropping is synchronous but sometimes wants to do asynchronous things and block for them to complete * [Alan finds dropping database handles is hard](status_quo/alan_finds_database_drops_hard.md) * Nested awaits mean that outer awaits cannot make progress - * [Footgun with futures unordered](https://github.com/rust-lang/wg-async-foundations/issues/131) + * [Barbara battles buffered streams](status_quo/barbara_battles_buffered_streams.md) * Async functions let you build up large futures that execute without allocation, which is great, but can be its own cost * [Alan iteratively regresses](status_quo/alan_iteratively_regresses.md) * [Alan runs into stack allocation trouble](status_quo/alan_runs_into_stack_trouble.md) From c04cad6307d546ee28e8d671c35b35fc08658888 Mon Sep 17 00:00:00 2001 From: Yoshua Wuyts Date: Fri, 30 Apr 2021 12:01:54 +0200 Subject: [PATCH 177/347] Update alan_tries_a_socket_sink.md This adds an additional source to the "Alan tries the kitchen sink" story, sharing coverage of how sinks are playing out in C++, which has partially informed the omission of the Sink from the http-rs ecosystem. Thanks! --- src/vision/status_quo/alan_tries_a_socket_sink.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vision/status_quo/alan_tries_a_socket_sink.md b/src/vision/status_quo/alan_tries_a_socket_sink.md index ff349eff..bae90044 100644 --- a/src/vision/status_quo/alan_tries_a_socket_sink.md +++ b/src/vision/status_quo/alan_tries_a_socket_sink.md @@ -122,6 +122,7 @@ A few weeks later, Alan's work at his project at work is merged with his new for * * * +* [[C++] Throwing Out The Kitchen Sink](https://thephd.github.io/output-ranges) ### **Why did you choose [Alan](../characters/alan.md) to tell this story?** * Alan is more representative of the original author's background in JS, TypeScript, and NodeJS. ### **How would this story have played out differently for the other characters?** From cfdba576b4b67ec734590c5707201b66dc7980c5 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sat, 1 May 2021 05:37:54 -0400 Subject: [PATCH 178/347] make get_contributors load data from git config --- get_contributors.sh | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/get_contributors.sh b/get_contributors.sh index bd6f9909..85a6b2ad 100755 --- a/get_contributors.sh +++ b/get_contributors.sh @@ -15,13 +15,27 @@ set -euo pipefail # Check if there are `username` and `token` arguments if [ $# -eq 0 ] then + user="$(git config github.user)" + token="$(git config github.oauth-token)" +elif [ $# -eq 2 ] +then + user="$1" + token="$2" +else + user="" + token="" +fi + +if [ "$user" == "" -o "$token" == "" ] +then + echo "github token required. The token is normally loaded from" + echo "git config (github.user, github.oauth-token), but you can" + echo "also use as follows:" + echo "" echo "Usage: $0 " exit 1 fi -user="$1" -token="$2" - # Check if a command is available, otherwise exit. function check_bin() { if ! command -v $1 &> /dev/null From e7d3a5f323ef56f3ec682c83fd5ba23aaefdec97 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Sat, 1 May 2021 05:53:09 -0400 Subject: [PATCH 179/347] add more acknowledgements --- src/acknowledgments.md | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/acknowledgments.md b/src/acknowledgments.md index c4ade171..554bc55a 100644 --- a/src/acknowledgments.md +++ b/src/acknowledgments.md @@ -6,7 +6,22 @@ Thanks to everyone who helped forming the future of Rust async. Thanks to everyone who helped writing Stories by participating in one of the Async Rust writing sessions. -* todo +* [Darksonn](https://github.com/Darksonn) +* [doc-jones](https://github.com/doc-jones) +* [echorior](https://github.com/echorior) +* [emmanuelantony2000](https://github.com/emmanuelantony2000) +* [eminence](https://github.com/eminence) +* [farnz](https://github.com/farnz) +* [jzrake](https://github.com/jzrake) +* [pcwalton](https://github.com/pcwalton) +* [pickfire](https://github.com/pickfire) +* [pnkfelix](https://github.com/pnkfelix) +* [nikomatsakis](https://github.com/nikomatsakis) +* [rylev](https://github.com/rylev) +* [Trvr_B](https://twitter.com/Trvr_B) +* [yoshuawuyts](https://github.com/yoshuawuyts) +* [wesleywiser](https://github.com/wesleywiser) +* [zeenix](https://github.com/zeenix) ## 💬 Discussing about stories @@ -15,7 +30,7 @@ Thanks to everyone who discussed about stories, shiny future and new features. * [Ar37-rs](https://github.com/Ar37-rs) * [broccolihighkicks](https://github.com/broccolihighkicks) * [cortopy](https://github.com/cortopy) -* [eminence](https://github.com/eminence) +* [Darksonn](https://github.com/Darksonn) * [evan-brass](https://github.com/evan-brass) * [farnz](https://github.com/farnz) * [FreddieGilbraith](https://github.com/FreddieGilbraith) @@ -23,23 +38,21 @@ Thanks to everyone who discussed about stories, shiny future and new features. * [guswynn](https://github.com/guswynn) * [jbr](https://github.com/jbr) * [jlkiri](https://github.com/jlkiri) -* [jonathandturner](https://github.com/jonathandturner) -* [jzrake](https://github.com/jzrake) +* [jonhoo](https://github.com/jonhoo) * [laurieontech](https://github.com/laurieontech) * [LucioFranco](https://github.com/LucioFranco) * [nikomatsakis](https://github.com/nikomatsakis) * [o0Ignition0o](https://github.com/o0Ignition0o) * [pickfire](https://github.com/pickfire) -* [pnkfelix](https://github.com/pnkfelix) -* [rgreinho](https://github.com/rgreinho) * [rhmoller](https://github.com/rhmoller) * [rylev](https://github.com/rylev) -* [sticnarf](https://github.com/sticnarf) +* [seanmonstar](https://github.com/seanmonstar) * [Stupremee](https://github.com/Stupremee) +* [taiki-e](https://github.com/taiki-e) +* [tmandry](https://github.com/tmandry) * [uazu](https://github.com/uazu) * [urhein](https://github.com/urhein) * [vladinator1000](https://github.com/vladinator1000) -* [wesleywiser](https://github.com/wesleywiser) * [wraithan](https://github.com/wraithan) * [y21](https://github.com/y21) * [yoshuawuyts](https://github.com/yoshuawuyts) @@ -79,3 +92,4 @@ Thanks to everyone who opened a Pull Request and wrote a story, shiny future or * [ThatGeoGuy](https://github.com/ThatGeoGuy) * [tmandry](https://github.com/tmandry) * [wesleywiser](https://github.com/wesleywiser) + From b64a9d8f7906b807af9ac48847fd3f1fe5388eb2 Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Sat, 1 May 2021 10:11:25 -0400 Subject: [PATCH 180/347] Rough draft of the story for async tracing --- .../barbara_wants_async_tracing.md | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/vision/shiny_future/barbara_wants_async_tracing.md diff --git a/src/vision/shiny_future/barbara_wants_async_tracing.md b/src/vision/shiny_future/barbara_wants_async_tracing.md new file mode 100644 index 00000000..edb7f457 --- /dev/null +++ b/src/vision/shiny_future/barbara_wants_async_tracing.md @@ -0,0 +1,39 @@ +Story for Async WG: Async Tracing + +The problem: +When you have a complex network of async tasks it can be difficult to debug issues or investigate behavior because it’s hard to reason through the path of execution just by reading the code. Adding async tracing helps solve this by letting you trace an event through the network and see which async tasks the event executed and when and in what order. + +Character: +This is something an experienced Rust developer will deal with. They know enough to be working with async and be building complex async networks. And they now need tools to help them debug issues that arise in those systems. They probably already build things like this, but providing tracing out of the box would save them time and effort. + +I believe this would be Barbara: the experienced Rust developer + +Story: +Barbara has written a multistage async workflow to solve problem X + +A bug is found where for specific inputs the output is wrong. Barbara wants to confirm exactly what sequence of steps events follow so that she can quickly prove that all the correct async steps are being take and in the right order. + +So she writes a wrapper that includes a tracing ID so at each async step she can output a log message with the trace ID and then use the log file to see what the sequence of events is. + +What Barbara would like is to have this feature be built in, perhaps with a compile time flag. That would create the trace wrapper and record trace data for her to view and analyze. + +FAQ: +1. What status quo stories does this pull? +2. Key attributes of this story +- Provide a protocol for linking events across async expressions +- Provide an output that allows a user to construct a graph showing the path of execution of an async expression +3. What is most shiny about this future? +- Providing a whole new way of debugging Rust programs and giving a way to view the actual execution of code in a human readable form +4. What are some potential pitfalls? +- Figuring out how to propagate a trace ID in a way that’s compatible with any use of async could be difficult +- It could have some performance impact +- We could output too much data for a person to be able to use it +5. Anything surprising when writing this story? +No. +6. Fun Variations +7. What are some things that we’ll have to figure out? +- Weave a trace ID through the execution of async workflows. +- Collecting entry and exit events for async expressions and linking them together in a graph +- How to store the traces +- How to identify each async expression so that a user knows what step in the trace refers to +- How to show this information to the user \ No newline at end of file From 0bcf9dded2349c16fd71813b9bf6c59530d320e4 Mon Sep 17 00:00:00 2001 From: Simon Farnsworth Date: Sat, 1 May 2021 15:46:43 +0100 Subject: [PATCH 181/347] Shiny future: Performance analysis tools --- .../barbara_appreciates_performance_tools.md | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/vision/shiny_future/barbara_appreciates_performance_tools.md diff --git a/src/vision/shiny_future/barbara_appreciates_performance_tools.md b/src/vision/shiny_future/barbara_appreciates_performance_tools.md new file mode 100644 index 00000000..c21b54ad --- /dev/null +++ b/src/vision/shiny_future/barbara_appreciates_performance_tools.md @@ -0,0 +1,85 @@ +# ✨ Shiny future stories: Barbara appreciates great performance analysis tools + +[How To Vision: Shiny Future]: ../how_to_vision/shiny_future.md +[the raw source from this template]: https://raw.githubusercontent.com/rust-lang/wg-async-foundations/master/src/vision/shiny_future/template.md +[`shiny_future`]: https://github.com/rust-lang/wg-async-foundations/tree/master/src/vision/shiny_future +[`SUMMARY.md`]: https://github.com/rust-lang/wg-async-foundations/blob/master/src/SUMMARY.md + +## 🚧 Warning: Draft status 🚧 + +This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories [cannot be wrong]. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to [add your own shiny vision story][htvsq]! + +## The story + +[Barbara] has built an initial system prototype in sync Rust. She notes that it's completely I/O bound, and benchmarking shows that most of her CPU consumption is thread switch overheads. She decides to rewrite it in async Rust, using an executor that she believes will fix her bottlenecks. + +She sprinkles `async/.await` in all the right places, switches her sync dependencies to async libraries, and gets the code compiling. When she runs it, she discovers that the service no longer responds when she sends a request to the endpoint. Her logging shows her that the endpoint handler has been invoked, many tasks have been spawned, but that something isn't working as she expected. + +Fortunately, there are great tracing tools available for async Rust. Barbara turns on tracing, and immediately gets interesting information in her trace viewer. She can see all the tasks she has spawned, the lines of code where a `.await` returns control to the executor, and delays between a `Waker` being invoked and the corresponding `.await` resuming execution. + +With this information in hand, she finds a decompression path that is unexpectedly CPU-bound, because she can see a stack trace for the task that is running and blocking a woken up future from getting invoked again. The memory use of this future tells her that the compressed blobs are larger than she thought, but inspecting shows that this is reasonable. She thus puts the decompression onto its own blocking task, which doesn't fix things, but makes it clear that there is a deadlock passing data between two bounded channels; the trace shows the `Waker` for a `rx.next().await` being invoked, but the corresponding `.await` never runs. Looking into the code, she notes that the task is waiting on a `tx.send().await` call, and that the channel it is trying to send to is full. + +She refactors her code to resolve this issue, and then re-checks traces. This time, the endpoint behaves as expected, but she's not seeing the wall clock time she expects; the trace shows that she's waiting on a network call to another service (also written in async Rust), and it's taking about 10x longer to reply than she would expect. She looks into the tracing libraries, and finds two useful features: + +1. She can annotate code with extra information that appears on the traces. +2. Every point in the code has access to a unique ID that can be passed to external services to let her correlate traces. + +Barbara adds annotations that let her know how many bytes she's sending to the external service; it's not unreasonable, so she's still confused. A bit of work with the service owner, and she can now get traces from the external service that have IDs she sends with a request in them. The tooling combines traces nicely, so that she can now trace across the network into the external service, and she realises that it's going down a slow code path because she set the wrong request parameters. + +With the extra insights from the external service's trace, she's able to fix up her code to run perfectly, and she gets the desired wins from async Rust. Plus, she's got a good arsenal of tooling to use when next she sees an unidentified problem. + +## 🤔 Frequently Asked Questions + +### What status quo story or stories are you retelling? + +* [Barbara compares some C++ code (and has a performance problem)](../status_quo/barbara_compares_some_cpp_code.md) +* [Barbara wants Async Insights](../status_quo/barbara_wants_async_insights.md) + +### **What is [Alan] most excited about in this future? Is he disappointed by anything?** + +Alan is excited about how easy it is to find out when his projects don't work as expected. He's happy + +### **What is [Grace] most excited about in this future? Is she disappointed by anything?** + +Grace is happy because the performance tools give her all the low level insights she wants into her code, and shows her what's going on "behind the scenes" in the executor. As a C++ developer, she is also excited when she sees that Rust developers who see an issue with her services can give her useful information about exactly what they see her C++ doing - which she can correlate with her existing C++ performance tools via the unique ID. + +### **What is [Niklaus] most excited about in this future? Is he disappointed by anything?** + +Niklaus is content. The tooling tells him what he needs to know, and allows him to add interesting information to places where he'd otherwise be stuck trying to extract it via `println!()`. He's not entirely sure how to use some of the detailed information, but he can ignore it easily. + +### **What is [Barbara] most excited about in this future? Is she disappointed by anything?** + +Barbara is impressed at how easy it is to spot problems and handle them; she is especially impressed when the tooling is able to combine traces from two services and show her their interactions in a useful fashion as-if they were one process. She kinda wishes that the compiler would spot more of the mistakes she made - the decompression path should be something the compiler should get right for her - but at least the tooling made the problems easy to find. + +### **What [projects] benefit the most from this future?** + +All the projects benefit; there's a useful amount of tracing "for free", and places where you can add your own data as needed. + +### **Are there any [projects] that are hindered by this future?** + +[MonsterMesh] needs to be able to remove a lot of the tracing because the CPU and memory overhead is too high in release builds. + +[MonsterMesh]: ../projects/MonsterMesh.md + +### **What are the incremental steps towards realizing this shiny future?** + +The [tracing] crate has a starting point for a useful API; combined with [tracing-futures], we have a prototype. + +Next steps are to make integrating that with executors trivial (minimal code change), and to add in extra information to [tracing-futures] so that we can output the best possible traces. In parallel to that, we'll want to work on tooling to display, combine, and filter traces so that we can always extract just what we need from any given trace. + +[tracing]: https://crates.io/crates/tracing +[tracing-futures]: https://crates.io/crates/tracing-futures + +### **Does realizing this future require cooperation between many projects?** + +Yes. We need an agreed API for tracing that all async projects use - both to add tracing information, and to consume it in a useful form. + +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[projects]: ../projects.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From 5449e3340a2f907c483551478b3bc533615a7858 Mon Sep 17 00:00:00 2001 From: Simon Farnsworth Date: Sun, 2 May 2021 13:42:58 +0100 Subject: [PATCH 182/347] Add ABBA deadlock language --- .../shiny_future/barbara_appreciates_performance_tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/shiny_future/barbara_appreciates_performance_tools.md b/src/vision/shiny_future/barbara_appreciates_performance_tools.md index c21b54ad..0b9b71a2 100644 --- a/src/vision/shiny_future/barbara_appreciates_performance_tools.md +++ b/src/vision/shiny_future/barbara_appreciates_performance_tools.md @@ -19,7 +19,7 @@ She sprinkles `async/.await` in all the right places, switches her sync dependen Fortunately, there are great tracing tools available for async Rust. Barbara turns on tracing, and immediately gets interesting information in her trace viewer. She can see all the tasks she has spawned, the lines of code where a `.await` returns control to the executor, and delays between a `Waker` being invoked and the corresponding `.await` resuming execution. -With this information in hand, she finds a decompression path that is unexpectedly CPU-bound, because she can see a stack trace for the task that is running and blocking a woken up future from getting invoked again. The memory use of this future tells her that the compressed blobs are larger than she thought, but inspecting shows that this is reasonable. She thus puts the decompression onto its own blocking task, which doesn't fix things, but makes it clear that there is a deadlock passing data between two bounded channels; the trace shows the `Waker` for a `rx.next().await` being invoked, but the corresponding `.await` never runs. Looking into the code, she notes that the task is waiting on a `tx.send().await` call, and that the channel it is trying to send to is full. +With this information in hand, she finds a decompression path that is unexpectedly CPU-bound, because she can see a stack trace for the task that is running and blocking a woken up future from getting invoked again. The memory use of this future tells her that the compressed blobs are larger than she thought, but inspecting shows that this is reasonable. She thus puts the decompression onto its own blocking task, which doesn't fix things, but makes it clear that there is a deadlock passing data between two bounded channels; the trace shows the `Waker` for a `rx.next().await` being invoked, but the corresponding `.await` never runs. Looking into the code, she notes that the task is waiting on a `tx.send().await` call, and that the channel it is trying to send to is full. When Barbara reads this code, she identifies a classic AB-BA deadlock; the task that would consume items from the channel this task is waiting on is itself waiting on a transmit to the queue that this task will drain. She refactors her code to resolve this issue, and then re-checks traces. This time, the endpoint behaves as expected, but she's not seeing the wall clock time she expects; the trace shows that she's waiting on a network call to another service (also written in async Rust), and it's taking about 10x longer to reply than she would expect. She looks into the tracing libraries, and finds two useful features: From 248f1107e1fcc8e6155370c6beefdbed7ec87c3a Mon Sep 17 00:00:00 2001 From: Simon Farnsworth Date: Sun, 2 May 2021 13:43:57 +0100 Subject: [PATCH 183/347] Give Niklaus a better reason to be happy --- .../shiny_future/barbara_appreciates_performance_tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/shiny_future/barbara_appreciates_performance_tools.md b/src/vision/shiny_future/barbara_appreciates_performance_tools.md index 0b9b71a2..babd9a27 100644 --- a/src/vision/shiny_future/barbara_appreciates_performance_tools.md +++ b/src/vision/shiny_future/barbara_appreciates_performance_tools.md @@ -47,7 +47,7 @@ Grace is happy because the performance tools give her all the low level insights ### **What is [Niklaus] most excited about in this future? Is he disappointed by anything?** -Niklaus is content. The tooling tells him what he needs to know, and allows him to add interesting information to places where he'd otherwise be stuck trying to extract it via `println!()`. He's not entirely sure how to use some of the detailed information, but he can ignore it easily. +Niklaus is content. The tooling tells him what he needs to know, and allows him to add interesting information to places where he'd otherwise be stuck trying to extract it via `println!()`. He's not entirely sure how to use some of the detailed information, but he can ignore it easily because the tools let him filter down to just the information he added to the traces - getting timestamps and task identifiers "for free" is just gravy to Niklaus. ### **What is [Barbara] most excited about in this future? Is she disappointed by anything?** From febdd923d8ba592718df32676528b795d39df261 Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Tue, 4 May 2021 07:29:50 -0400 Subject: [PATCH 184/347] Updated to better fit the shiny future template --- .../barbara_wants_async_tracing.md | 63 ++++++++++++++++--- 1 file changed, 53 insertions(+), 10 deletions(-) diff --git a/src/vision/shiny_future/barbara_wants_async_tracing.md b/src/vision/shiny_future/barbara_wants_async_tracing.md index edb7f457..12c7bb9a 100644 --- a/src/vision/shiny_future/barbara_wants_async_tracing.md +++ b/src/vision/shiny_future/barbara_wants_async_tracing.md @@ -1,4 +1,11 @@ -Story for Async WG: Async Tracing + +## 🚧 Warning: Draft status 🚧 + +This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories [cannot be wrong]. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to [add your own shiny vision story][htvsq]! + +## The story The problem: When you have a complex network of async tasks it can be difficult to debug issues or investigate behavior because it’s hard to reason through the path of execution just by reading the code. Adding async tracing helps solve this by letting you trace an event through the network and see which async tasks the event executed and when and in what order. @@ -17,23 +24,59 @@ So she writes a wrapper that includes a tracing ID so at each async step she can What Barbara would like is to have this feature be built in, perhaps with a compile time flag. That would create the trace wrapper and record trace data for her to view and analyze. -FAQ: -1. What status quo stories does this pull? -2. Key attributes of this story +## 🤔 Frequently Asked Questions + +*NB: These are generic FAQs. Feel free to customize them to your story or to add more.* + +### What status quo stories are you retelling? + +*Link to status quo stories if they exist. If not, that's ok, we'll help find them.* + +### What are the key attributes of this shiny future? + - Provide a protocol for linking events across async expressions - Provide an output that allows a user to construct a graph showing the path of execution of an async expression -3. What is most shiny about this future? + +### What is the "most shiny" about this future? + +*Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Which benefit the most relative to today?* + - Providing a whole new way of debugging Rust programs and giving a way to view the actual execution of code in a human readable form -4. What are some potential pitfalls? +### What are some of the potential pitfalls about this future? + +*Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Are any of them negatively impacted? Are there specific application areas that are impacted negatively? You might find the sample [projects] helpful in this regard, or perhaps looking at the goals of each [character].* + - Figuring out how to propagate a trace ID in a way that’s compatible with any use of async could be difficult - It could have some performance impact - We could output too much data for a person to be able to use it -5. Anything surprising when writing this story? +### Did anything surprise you when writing this story? Did the story go any place unexpected? + +*The act of writing shiny future stories can uncover things we didn't expect to find. Did you have any new and exciting ideas as you were writing? Realize some complications that you didn't foresee?* + No. -6. Fun Variations -7. What are some things that we’ll have to figure out? + +### What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written? + +*Often when writing stories, we think about various possibilities. Sketch out some of the turning points here -- maybe someone will want to turn them into a full story! Alternatively, if this is a variation on an existing story, link back to it here.* + +### What are some of the things we'll have to figure out to realize this future? What projects besides Rust itself are involved, if any? (Optional) + +*Often the 'shiny future' stories involve technical problems that we don't really know how to solve yet. If you see such problems, list them here!* + - Weave a trace ID through the execution of async workflows. - Collecting entry and exit events for async expressions and linking them together in a graph - How to store the traces - How to identify each async expression so that a user knows what step in the trace refers to -- How to show this information to the user \ No newline at end of file +- How to show this information to the user + + +[character]: ../characters.md +[comment]: ./comment.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[projects]: ../projects.md +[htvsq]: ../how_to_vision/shiny_future.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From b7bcfc18536e52a59a79954c1a450415c0da490e Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Tue, 4 May 2021 07:34:53 -0400 Subject: [PATCH 185/347] Added details to the FAQ section --- src/vision/shiny_future/barbara_wants_async_tracing.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/vision/shiny_future/barbara_wants_async_tracing.md b/src/vision/shiny_future/barbara_wants_async_tracing.md index 12c7bb9a..3d1347da 100644 --- a/src/vision/shiny_future/barbara_wants_async_tracing.md +++ b/src/vision/shiny_future/barbara_wants_async_tracing.md @@ -34,14 +34,16 @@ What Barbara would like is to have this feature be built in, perhaps with a comp ### What are the key attributes of this shiny future? -- Provide a protocol for linking events across async expressions -- Provide an output that allows a user to construct a graph showing the path of execution of an async expression +- Provide a protocol for linking events across async expressions. +- Provide an output that allows a user to understand the path of execution of a program through a network of async expressions. ### What is the "most shiny" about this future? *Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Which benefit the most relative to today?* -- Providing a whole new way of debugging Rust programs and giving a way to view the actual execution of code in a human readable form +- This will benefit the productivity of a developer. Providing a whole new way of debugging Rust programs and giving a way to view the actual execution of code in a human readable form can make it significantly faster to debug programs. This also saves time for a developer from having to write a tracer themselves. +- This can also help with correctness. When working with asynchronous code it can be difficult; having a built-in means to trace a flow of execution makes it much easier to verify that specific inputs are following the correct paths in the correct order. + ### What are some of the potential pitfalls about this future? *Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Are any of them negatively impacted? Are there specific application areas that are impacted negatively? You might find the sample [projects] helpful in this regard, or perhaps looking at the goals of each [character].* @@ -49,6 +51,7 @@ What Barbara would like is to have this feature be built in, perhaps with a comp - Figuring out how to propagate a trace ID in a way that’s compatible with any use of async could be difficult - It could have some performance impact - We could output too much data for a person to be able to use it + ### Did anything surprise you when writing this story? Did the story go any place unexpected? *The act of writing shiny future stories can uncover things we didn't expect to find. Did you have any new and exciting ideas as you were writing? Realize some complications that you didn't foresee?* From 29d40529c92a7cad46c7541f60c3fbf83ba84b3d Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Tue, 4 May 2021 08:02:54 -0400 Subject: [PATCH 186/347] Added some notes about how to finish the story --- src/vision/shiny_future/barbara_wants_async_tracing.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/vision/shiny_future/barbara_wants_async_tracing.md b/src/vision/shiny_future/barbara_wants_async_tracing.md index 3d1347da..9e528805 100644 --- a/src/vision/shiny_future/barbara_wants_async_tracing.md +++ b/src/vision/shiny_future/barbara_wants_async_tracing.md @@ -16,14 +16,22 @@ This is something an experienced Rust developer will deal with. They know enoug I believe this would be Barbara: the experienced Rust developer Story: -Barbara has written a multistage async workflow to solve problem X +Barbara has written a multistage async workflow to solve X + +TODO: Come up with a problem to solve. A bug is found where for specific inputs the output is wrong. Barbara wants to confirm exactly what sequence of steps events follow so that she can quickly prove that all the correct async steps are being take and in the right order. +TODO: Invent a bug and show some example code. + So she writes a wrapper that includes a tracing ID so at each async step she can output a log message with the trace ID and then use the log file to see what the sequence of events is. +TODO: Show what such a wrapper might look like (Reach out to Alice Rhyl?) + What Barbara would like is to have this feature be built in, perhaps with a compile time flag. That would create the trace wrapper and record trace data for her to view and analyze. +TODO: Show the possible compile time flag and possible output. + ## 🤔 Frequently Asked Questions *NB: These are generic FAQs. Feel free to customize them to your story or to add more.* From f813befdbaa780234fc587ba92f6f62d4453d4fc Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Tue, 4 May 2021 08:08:25 -0400 Subject: [PATCH 187/347] Cleaning up text --- src/vision/shiny_future/barbara_wants_async_tracing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vision/shiny_future/barbara_wants_async_tracing.md b/src/vision/shiny_future/barbara_wants_async_tracing.md index 9e528805..1ede42af 100644 --- a/src/vision/shiny_future/barbara_wants_async_tracing.md +++ b/src/vision/shiny_future/barbara_wants_async_tracing.md @@ -10,10 +10,10 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee The problem: When you have a complex network of async tasks it can be difficult to debug issues or investigate behavior because it’s hard to reason through the path of execution just by reading the code. Adding async tracing helps solve this by letting you trace an event through the network and see which async tasks the event executed and when and in what order. -Character: +Character is Barbara: This is something an experienced Rust developer will deal with. They know enough to be working with async and be building complex async networks. And they now need tools to help them debug issues that arise in those systems. They probably already build things like this, but providing tracing out of the box would save them time and effort. -I believe this would be Barbara: the experienced Rust developer +This is Barbara: the experienced Rust developer. Story: Barbara has written a multistage async workflow to solve X From 791a1c502349046f2c1a4cd60b5e19e877ce3a53 Mon Sep 17 00:00:00 2001 From: Ivan Tham Date: Thu, 6 May 2021 00:44:25 +0800 Subject: [PATCH 188/347] Status quo barbara tries unix socket Fix #190 --- src/vision/status_quo.md | 1 + .../status_quo/barbara_tries_unix_socket.md | 314 ++++++++++++++++++ 2 files changed, 315 insertions(+) create mode 100644 src/vision/status_quo/barbara_tries_unix_socket.md diff --git a/src/vision/status_quo.md b/src/vision/status_quo.md index 8a8605d9..7c5c7f09 100644 --- a/src/vision/status_quo.md +++ b/src/vision/status_quo.md @@ -147,6 +147,7 @@ Writing async programs turns out to have all kinds of subtle tradeoffs. Rust aim * The state of the executor can be very opaque: what tasks exist? why are they blocked? * [Alan tries to debug a hang](status_quo/alan_tries_to_debug_a_hang.md) + * [Barbara tries unix socket](status_quo/barbara_tries_unix_socket.md) * [Barbara wants async insights](status_quo/barbara_wants_async_insights.md) * [Grace deploys her service](status_quo/grace_deploys_her_service.md) * Stacktraces are full of gobbly gook and hard to read. diff --git a/src/vision/status_quo/barbara_tries_unix_socket.md b/src/vision/status_quo/barbara_tries_unix_socket.md new file mode 100644 index 00000000..cd1a9f3a --- /dev/null +++ b/src/vision/status_quo/barbara_tries_unix_socket.md @@ -0,0 +1,314 @@ +# 😱 Status quo stories: Template + +*This is a template for adding new "status quo" stories. To propose a new status quo PR, do the following:* + +* *Create a new file in the [`status_quo`] directory named something like `Alan_tries_to_foo.md` or `Grace_does_bar.md`, and start from [the raw source from this template]. You can replace all the italicized stuff. :)* +* *Do not add a link to your story to the [`SUMMARY.md`] file; we'll do it after merging, otherwise there will be too many conflicts.* + +*For more detailed instructions, see the [How To Vision: Status Quo] page!* + +*If you're looking for ideas of what to write about, take a look at the [open issues]. You can also [open an issue of your own] to throw out an idea for others.* + +[How To Vision: Status Quo]: ../how_to_vision/status_quo.md +[the raw source from this template]: https://raw.githubusercontent.com/rust-lang/wg-async-foundations/master/src/vision/status_quo/template.md +[`status_quo`]: https://github.com/rust-lang/wg-async-foundations/tree/master/src/vision/status_quo +[`SUMMARY.md`]: https://github.com/rust-lang/wg-async-foundations/blob/master/src/SUMMARY.md +[open issues]: https://github.com/rust-lang/wg-async-foundations/issues?q=is%3Aopen+is%3Aissue+label%3Astatus-quo-story-ideas +[open an issue of your own]: https://github.com/rust-lang/wg-async-foundations/issues/new?assignees=&labels=good+first+issue%2C+help+wanted%2C+status-quo-story-ideas&template=-status-quo--story-issue.md&title= + + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +Content of `Cargo.toml` for reproducibility: + +```toml +futures = "0.3.14" +hyper = { version = "0.14.7", features = ["full"] } +pretty_env_logger = "0.4.0" +reqwest = "0.11.3" +tokio = { version = "1.5.0", features = ["macros", "rt-multi-thread"] } +``` + +There is a HTTP server in hyper which Barbara have to query. + +```rust +use hyper::server::conn::Http; +use hyper::service::service_fn; +use hyper::{Body, Request, Response}; +use std::convert::Infallible; +use tokio::net::TcpListener; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let listener = TcpListener::bind("127.0.0.1:3000").await?; + + loop { + let (stream, _) = listener.accept().await?; + + tokio::spawn(async move { + let _ = Http::new() + .serve_connection(stream, service_fn(serve)) + .await; + }); + } +} + +async fn serve(_req: Request) -> Result, Infallible> { + let res = Response::builder() + .header("content-type", "text/plain; charset=utf-8") + .body(Body::from("Hello World!")) + .unwrap(); + Ok(res) +} + +``` + +## Nice simple query with high-level reqwest + +Barbara do HTTP GET request using TCP socket with reqwest and it works fine, everything is easy. + +```rust +#[tokio::main] +async fn main() -> Result<(), Box> { + let res = reqwest::get("http://127.0.0.1:3000").await?; + println!("{}", res.text().await?); + Ok(()) +} +``` + +## Unix sockets for performance + +One day, Barbara heard that using unix socket can provide a better performance by using unix socket when both the server and client is on the same machine, so Barbara decided to try it out. + +Barbara starts porting the server code to use unix socket, it was a no brainer for Barbara at least. Barbara changed `TcpListener::bind("127.0.0.1:3000").await?` to `UnixListener::bind("/tmp/socket")?` and it works like a charm. + +Barbara search through reqwest doc and github issues to see how to use unix socket for reqwest. Barbara found https://github.com/seanmonstar/reqwest/issues/39#issuecomment-778716774 saying reqwest does not support unix socket but hyper does with an example, which is a lower-level library. Since reqwest is so easy and porting hyper server to use unix socket is easy, Barbara thinks low-level hyper library should be easy too. + +## The screen stares at Barbara + +Barbara wrote some code according to the comments Barbara saw and read some docs like what is `handshake` to roughly know what it does. Barbara compile and it shows a warning, the `connection` variable is not used: +``` +warning: unused variable: `connection` + --> src/main.rs:9:30 + | +9 | let (mut request_sender, connection) = conn::handshake(stream).await?; + | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_connection` + | + = note: `#[warn(unused_variables)]` on by default +``` + +Barbara then runs the program. Barbara was stares at the screen and the screen stares at her. Barbara waited and ... it was stuck. So Barbara decides to look at the logs and run it again with `env RUST_LOG=trace cargo r`, and it was indeed stuck, but not sure where. +``` + TRACE mio::poll > registering event source with poller: token=Token(0), interests=READABLE | WRITABLE +``` + +Barbara try adding `println!` all over the code but it was still stuck, so Barbara try asking for help. Thanks to the welcoming Rust community, Barbara got help quickly in this case. It seemed like Barbara missed the `connection` which is a culprit and it was in the parent module of the docs Barbara read. + +Barbara added the missing piece to `.await` for the `connection`, all the while Barbara thought it will work if it was `.await`-ed but in this case having required to await something else to work is a surprise. + +```rust + tokio::spawn(async move { + if let Err(e) = connection.await { + eprintln!("error: {}", e); + } + }) + + let request = ... +``` + +Barbara run the code and it works now, yay! Barbara want to try to reuse the connection to send subsequent HTTP request. Barbara duplicates the last block and it runs. + +## Mysterious second request + +Some time later, Barbara was told that the program did not work on second request. Barbara tried it but it works. To double confirm, when Barbara tried it again it did not work. Rather than getting stuck, this time there is a error message, which is somewhat better but Barbara did not understand. + +The second request is so mysterious, it is like the second request playing hide and seek with Barbara. Sometimes it works and sometimes it does not work. + +```rust + TRACE mio::poll > registering event source with poller: token=Token(0), interests=READABLE | WRITABLE +Some(Ok(b"Hello World!")) + TRACE want > signal: Want + TRACE mio::poll > deregistering event source from poller + TRACE want > signal: Closed +Error: hyper::Error(Canceled, "connection was not ready") +``` + +As a typical method of solving asynchronous issue. Barbara add prints to every await boundaries in the source code to understand what is going on. + +```rust +use hyper::{body::HttpBody, client::conn, Body, Request}; +use tokio::net::UnixStream; + +#[tokio::main] +async fn main() -> Result<(), Box> { + pretty_env_logger::init(); + let stream = UnixStream::connect("/tmp/socket").await?; + + let (mut request_sender, connection) = conn::handshake(stream).await?; + println!("connected"); + + tokio::spawn(async move { + if let Err(e) = connection.await { + println!("closed"); + eprintln!("error: {}", e); + } + println!("closed"); + }); + + let request = Request::get("/").body(Body::empty())?; + let mut response = request_sender.send_request(request).await?; + println!("{:?}", response.body_mut().data().await); + + let request = Request::get("/").body(Body::empty())?; + println!("sending 2"); + let mut response = request_sender.send_request(request).await?; + println!("sent 2"); + println!("{:?}", response.body_mut().data().await); + + Ok(()) +} +``` + +The logs are now more detailed. Barbara can see that the connection was closed but why? Barbara had no idea and Barbara had to seek help again. +``` + TRACE mio::poll > registering event source with poller: token=Token(0), interests=READABLE | WRITABLE +connected +Some(Ok(b"Hello World!")) +sending 2 + TRACE want > signal: Want + TRACE mio::poll > deregistering event source from poller + TRACE want > signal: Closed +closed +Error: hyper::Error(Canceled, "connection was not ready") +``` + +This time as well, Barbara was lucky enough to get a quick reply from the welcoming Rust community. Other users said there is a trick for these kind of cases, which is a tracing stream. + +```rust +use std::pin::Pin; +use std::task::{Context, Poll}; +use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; + +pub struct TracingStream { + pub inner: S, +} + +impl AsyncRead for TracingStream { + fn poll_read( + mut self: Pin<&mut Self>, + cx: &mut Context<'_>, + buf: &mut ReadBuf<'_>, + ) -> Poll> { + let poll_result = Pin::new(&mut self.inner).poll_read(cx, buf); + for line in String::from_utf8_lossy(buf.filled()).into_owned().lines() { + println!("> {}", line); + } + poll_result + } +} + +impl AsyncWrite for TracingStream { + fn poll_flush( + mut self: Pin<&mut Self>, + cx: &mut Context<'_>, + ) -> Poll> { + Pin::new(&mut self.inner).poll_flush(cx) + } + + fn poll_shutdown( + mut self: Pin<&mut Self>, + cx: &mut Context<'_>, + ) -> Poll> { + Pin::new(&mut self.inner).poll_shutdown(cx) + } + + fn poll_write( + mut self: Pin<&mut Self>, + cx: &mut Context<'_>, + buf: &[u8], + ) -> Poll> { + let poll_result = Pin::new(&mut self.inner).poll_write(cx, buf); + for line in String::from_utf8_lossy(buf).into_owned().lines() { + println!("< {}", line); + } + poll_result + } +} +``` + +Barbara happily copy pasted the code and wrap the `stream` within `TracingStream`. Running it with logs gives (same thing, in some cases it works, in some cases it did not work): +``` + TRACE mio::poll > registering event source with poller: token=Token(0), interests=READABLE | WRITABLE +connected +< GET / HTTP/1.1 +< +> HTTP/1.1 200 OK +> content-type: text/plain; charset=utf-8 +> content-length: 12 +> date: Tue, 04 May 2021 17:02:49 GMT +> +> Hello World! +Some(Ok(b"Hello World!")) +sending 2 + TRACE want > signal: Want + TRACE want > signal: Want + TRACE mio::poll > deregistering event source from poller + TRACE want > signal: Closed +closed +Error: hyper::Error(Canceled, "connection was not ready") +``` + +Barbara thought this probably only affects a unix socket but nope, even swapping it back with TCP socket does not work either. Now, not just Barbara was confused, even the other developers who offered help was confused now. + +## The single magical line + +After some time, a developer found a solution, just a single line. Barbara added the line and it works like a charm but it still feels like magic. + +```rust +use futures::future; + + // this new line below was added for second request + future::poll_fn(|cx| request_sender.poll_ready(cx)).await?; + let request = Request::get("/").body(Body::empty())?; + println!("sending 2"); + let mut response = request_sender.send_request(request).await?; + println!("sent 2"); + println!("{:?}", response.body_mut().data().await); +``` + +Barbara still have no idea why it needs to be done this way. But at least it works now. + +## 🤔 Frequently Asked Questions + +*Here are some standard FAQ to get you started. Feel free to add more!* + +### **What are the morals of the story?** + +Barbara is not able to see the problem right away. Usually missing an `await` is an issue but in this case, not awaiting on another variable or not polling for ready when using a low-level library may the program incorrect, it is also hard to debug and figure out what is the correct solution. + +### **What are the sources for this story?** + +pickfire was experimenting with HTTP client over unix socket and faced this issue as he though it is easy, still a lot thanks to Programatik for helping out with a quick and helpful response. + +### **Why did you choose *Barbara* to tell this story?** + +Barbara have some experience with synchronous and high-level asynchronous rust libraries but not with low-level asynchronous libraries. + +### **How would this story have played out differently for the other characters?** + +Most likely everyone could have faced the same issue unless they are lucky. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From a109db290e99bcc9c1705e477694c2301ec7f658 Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Wed, 5 May 2021 20:53:16 -0400 Subject: [PATCH 189/347] Added a problem to solve that could benefit from tracing --- .../shiny_future/barbara_wants_async_tracing.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/vision/shiny_future/barbara_wants_async_tracing.md b/src/vision/shiny_future/barbara_wants_async_tracing.md index 1ede42af..d8177c90 100644 --- a/src/vision/shiny_future/barbara_wants_async_tracing.md +++ b/src/vision/shiny_future/barbara_wants_async_tracing.md @@ -18,19 +18,13 @@ This is Barbara: the experienced Rust developer. Story: Barbara has written a multistage async workflow to solve X -TODO: Come up with a problem to solve. +Barbara is seeing slow performance in one of her services. This service happens to make extensive use of asynchronous workflows and builds a rather complex graph of possible execution paths. Unfortunately, this means that it's hard to intuit what could be causing the slowdown. Perhaps a slow API call or some performance issue in the runtime. What Barbara wants is to be able to see the full path of execution the slow events are taking through her service and be able to see the timing through events. She can add log statements to each task, but how will she be able to link all the log statements to the events which they are associated with? -A bug is found where for specific inputs the output is wrong. Barbara wants to confirm exactly what sequence of steps events follow so that she can quickly prove that all the correct async steps are being take and in the right order. +To solve this problem, Barbara needs to be able to trace events through her service and link log entries to specific events. So, Barbara sets about creating a simple tracing wrapper around the events. This tracing wrapper is designed to provide a way to associate every event in the system with events that they cause and to associate events with the logs she writes. To this end, she tracks a `message id` UUID that gets attached to the start of every asynchronous workflow and which is propagated consistently to any child events that get triggered. She then updates her code to capture the `message id` and insert into her logs. -TODO: Invent a bug and show some example code. +Now Barbara is able to run some tests and find a message which demonstrated the performance issue she was investigating and isolate the logs for that message. With this she is able to get the time spent in each subsection of code and compare this to the trace of a message with expected behavior. Now it's obvious that there's one step in the workflow which periodically runs slower than normal and it is the only part of execution path with this issue. Looking at additional traces, Barbara realizes that the issue effects several events all around the same time and is able to deduce that the issue is most likely due to a shared resource performing poorly. -So she writes a wrapper that includes a tracing ID so at each async step she can output a log message with the trace ID and then use the log file to see what the sequence of events is. - -TODO: Show what such a wrapper might look like (Reach out to Alice Rhyl?) - -What Barbara would like is to have this feature be built in, perhaps with a compile time flag. That would create the trace wrapper and record trace data for her to view and analyze. - -TODO: Show the possible compile time flag and possible output. +Barbara is grateful to have found the issue but wishes this tooling and been provided out of the box. Understanding the behavior of a complex async service is difficult: both investigating performance and business logic require a lot of tedious work to reason through the paths an event may travel. Making tracing an essential tool that provides that information immediately. Her dream would be to have a compile time flag, e.g. `cargo build --tracing`, which would instrument her async code with the tracing wrapper and allow her to record tracing data when she runs her application. Even better if there are a set of supplied tools for viewing and analyzing the output data. ## 🤔 Frequently Asked Questions From 461d01ca093d6e632127b4fa7bf1ef67b6d4683a Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Thu, 6 May 2021 19:11:44 -0400 Subject: [PATCH 190/347] Filled out the FAQ. --- .../shiny_future/barbara_wants_async_tracing.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/vision/shiny_future/barbara_wants_async_tracing.md b/src/vision/shiny_future/barbara_wants_async_tracing.md index d8177c90..e9c30d79 100644 --- a/src/vision/shiny_future/barbara_wants_async_tracing.md +++ b/src/vision/shiny_future/barbara_wants_async_tracing.md @@ -33,6 +33,9 @@ Barbara is grateful to have found the issue but wishes this tooling and been pro ### What status quo stories are you retelling? *Link to status quo stories if they exist. If not, that's ok, we'll help find them.* +[Alan Builds A Cache](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_builds_a_cache.html) +[Alan Iteratively Regresses Performance](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_iteratively_regresses.html) +[Alan Traies To Debug A Hang](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_tries_to_debug_a_hang.html) ### What are the key attributes of this shiny future? @@ -51,8 +54,8 @@ Barbara is grateful to have found the issue but wishes this tooling and been pro *Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Are any of them negatively impacted? Are there specific application areas that are impacted negatively? You might find the sample [projects] helpful in this regard, or perhaps looking at the goals of each [character].* - Figuring out how to propagate a trace ID in a way that’s compatible with any use of async could be difficult -- It could have some performance impact -- We could output too much data for a person to be able to use it +- Recording trace data will have some impact on performance. +- We could output too much data for a person to be able to use it. ### Did anything surprise you when writing this story? Did the story go any place unexpected? @@ -62,17 +65,18 @@ No. ### What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written? -*Often when writing stories, we think about various possibilities. Sketch out some of the turning points here -- maybe someone will want to turn them into a full story! Alternatively, if this is a variation on an existing story, link back to it here.* +Another variation of this story is tracking down functional bugs: where the program is not always executing the expected code paths. An example of this is from the status quo story [Alan Builds A Cache](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_builds_a_cache.html). In this type of story, a developer uses tracing to see execution flow of an event as it is fully processed by the application. This can the be used to make sure that every expected or required action is completed and done in the correct order; and if actions were missed, be able to determine why. ### What are some of the things we'll have to figure out to realize this future? What projects besides Rust itself are involved, if any? (Optional) *Often the 'shiny future' stories involve technical problems that we don't really know how to solve yet. If you see such problems, list them here!* -- Weave a trace ID through the execution of async workflows. +- There will need to be some form of protocol for how to trace data as they move through a graph of async expressions. Perhaps by weaving a trace ID through the execution of async workflows. We will also have to provide a way "inject" or "wrap" this protocol around the users data in a way that can be automatically done as a compile time option (or is always done behind the scenes). +- A protocol or standard for recording this information and decorating logs or metrics with this data would need to be provided. - Collecting entry and exit events for async expressions and linking them together in a graph - How to store the traces -- How to identify each async expression so that a user knows what step in the trace refers to -- How to show this information to the user +- How to identify each async expression so that a user knows what step in the trace refers to. +- How to show this information to the user. [character]: ../characters.md From 87e3be2940808645ff43511338c14fba2da2c6be Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Thu, 6 May 2021 19:17:47 -0400 Subject: [PATCH 191/347] Polish story a bit --- src/vision/shiny_future/barbara_wants_async_tracing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/shiny_future/barbara_wants_async_tracing.md b/src/vision/shiny_future/barbara_wants_async_tracing.md index e9c30d79..702ac344 100644 --- a/src/vision/shiny_future/barbara_wants_async_tracing.md +++ b/src/vision/shiny_future/barbara_wants_async_tracing.md @@ -20,7 +20,7 @@ Barbara has written a multistage async workflow to solve X Barbara is seeing slow performance in one of her services. This service happens to make extensive use of asynchronous workflows and builds a rather complex graph of possible execution paths. Unfortunately, this means that it's hard to intuit what could be causing the slowdown. Perhaps a slow API call or some performance issue in the runtime. What Barbara wants is to be able to see the full path of execution the slow events are taking through her service and be able to see the timing through events. She can add log statements to each task, but how will she be able to link all the log statements to the events which they are associated with? -To solve this problem, Barbara needs to be able to trace events through her service and link log entries to specific events. So, Barbara sets about creating a simple tracing wrapper around the events. This tracing wrapper is designed to provide a way to associate every event in the system with events that they cause and to associate events with the logs she writes. To this end, she tracks a `message id` UUID that gets attached to the start of every asynchronous workflow and which is propagated consistently to any child events that get triggered. She then updates her code to capture the `message id` and insert into her logs. +To solve this problem, Barbara wants to see what path the slow events are travelling through her service and how much time they spend in each async expression. She decides that the best way to get this information is by having a way to track an event as it moves through her service: from when it first arrives and through every async expression it executes. So, Barbara sets about creating a simple tracing wrapper around the events. This tracing wrapper tags an event with an ID when it first arrives in the service and propagates this ID through every step of execution and through any child events that are created. For this, she tracks a `message id` UUID that gets attached to the start of every asynchronous workflow and which is propagated consistently to any child events that get triggered. With all of her messages now tagged with an ID, she decorates her log events with `message id` of the current event so can now correlate log entries with specific messages. Now Barbara is able to run some tests and find a message which demonstrated the performance issue she was investigating and isolate the logs for that message. With this she is able to get the time spent in each subsection of code and compare this to the trace of a message with expected behavior. Now it's obvious that there's one step in the workflow which periodically runs slower than normal and it is the only part of execution path with this issue. Looking at additional traces, Barbara realizes that the issue effects several events all around the same time and is able to deduce that the issue is most likely due to a shared resource performing poorly. From d926e2d4f157b22d59896c5474795c41c90ca3ce Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Thu, 6 May 2021 20:20:40 -0400 Subject: [PATCH 192/347] add "life of an aws engineer" status quo story --- src/SUMMARY.md | 14 ++ src/vision/status_quo/aws_engineer.md | 57 +++++++ .../aws_engineer/borrow_check_errors.md | 62 ++++++++ .../aws_engineer/coming_from_java.md | 9 ++ .../debugging_performance_problems.md | 10 ++ .../status_quo/aws_engineer/ecosystem.md | 11 ++ .../aws_engineer/encountering_pin.md | 12 ++ .../aws_engineer/failure_to_parallelize.md | 144 ++++++++++++++++++ .../figuring_out_the_best_option.md | 3 + .../aws_engineer/getting_ready_to_deploy.md | 7 + .../aws_engineer/getting_started_with_rust.md | 23 +++ .../aws_engineer/juggling_error_handling.md | 134 ++++++++++++++++ .../missed_waker_leads_to_lost_performance.md | 12 ++ .../aws_engineer/solving_a_deadlock.md | 90 +++++++++++ .../aws_engineer/testing_the_service.md | 25 +++ .../status_quo/aws_engineer/using_jni.md | 9 ++ .../aws_engineer/using_the_debugger.md | 7 + .../writing_a_java_based_service.md | 16 ++ 18 files changed, 645 insertions(+) create mode 100644 src/vision/status_quo/aws_engineer.md create mode 100644 src/vision/status_quo/aws_engineer/borrow_check_errors.md create mode 100644 src/vision/status_quo/aws_engineer/coming_from_java.md create mode 100644 src/vision/status_quo/aws_engineer/debugging_performance_problems.md create mode 100644 src/vision/status_quo/aws_engineer/ecosystem.md create mode 100644 src/vision/status_quo/aws_engineer/encountering_pin.md create mode 100644 src/vision/status_quo/aws_engineer/failure_to_parallelize.md create mode 100644 src/vision/status_quo/aws_engineer/figuring_out_the_best_option.md create mode 100644 src/vision/status_quo/aws_engineer/getting_ready_to_deploy.md create mode 100644 src/vision/status_quo/aws_engineer/getting_started_with_rust.md create mode 100644 src/vision/status_quo/aws_engineer/juggling_error_handling.md create mode 100644 src/vision/status_quo/aws_engineer/missed_waker_leads_to_lost_performance.md create mode 100644 src/vision/status_quo/aws_engineer/solving_a_deadlock.md create mode 100644 src/vision/status_quo/aws_engineer/testing_the_service.md create mode 100644 src/vision/status_quo/aws_engineer/using_jni.md create mode 100644 src/vision/status_quo/aws_engineer/using_the_debugger.md create mode 100644 src/vision/status_quo/aws_engineer/writing_a_java_based_service.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index a60f8c15..2e1fca4f 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -57,6 +57,20 @@ - [Grace wants to integrate a C-API](./vision/status_quo/grace_wants_to_integrate_c_api.md) - [Niklaus builds a hydrodynamics simulator](./vision/status_quo/niklaus_simulates_hydrodynamics.md) - [Niklaus wants to share knowledge](./vision/status_quo/niklaus_wants_to_share_knowledge.md) + - [The AWS service engineer](./vision/status_quo/aws_engineer.md) + - [Writing a Java-based service at AWS](./vision/status_quo/aws_engineer/writing_a_java_based_service.md) + - [Getting started with Rust](./vision/status_quo/aws_engineer/getting_started_with_rust.md) + - [Coming from Java](./vision/status_quo/aws_engineer/coming_from_java.md) + - [Exploring the ecosystem](./vision/status_quo/aws_engineer/ecosystem.md) + - [Juggling error handling](./vision/status_quo/aws_engineer/juggling_error_handling.md) + - [Failure to parallelize](./vision/status_quo/aws_engineer/failure_to_parallelize.md) + - [Borrow check errors](./vision/status_quo/aws_engineer/borrow_check_errors.md) + - [Encoutering pin](./vision/status_quo/aws_engineer/encountering_pin.md) + - [Figuring out the best option](./vision/status_quo/aws_engineer/figuring_out_the_best_option.md) + - [Testing his service](./vision/status_quo/aws_engineer/testing_the_service.md) + - [Missed Waker leads to lost performance](./vision/status_quo/aws_engineer/missed_waker_leads_to_lost_performance.md) + - [Debugging performance problems](./vision/status_quo/aws_engineer/debugging_performance_problems.md) + - [Using JNI](./vision/status_quo/aws_engineer/using_jni.md) - [✨ Shiny future](./vision/shiny_future.md) - [Template](./vision/shiny_future/template.md) - [Alan switches runtimes](./vision/shiny_future/alan_switches_runtimes.md) diff --git a/src/vision/status_quo/aws_engineer.md b/src/vision/status_quo/aws_engineer.md new file mode 100644 index 00000000..e9be3354 --- /dev/null +++ b/src/vision/status_quo/aws_engineer.md @@ -0,0 +1,57 @@ +# 😱 Status quo stories: Status quo of an AWS engineer + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +This tells the story of Alan, an engineer who works at AWS. + +* [Writing a Java-based service at AWS](aws_engineer/writing_a_java_based_service.md): Alan is accustomed to using many convenient tools for writing Java-based services. +* [Getting started with Rust](aws_engineer/getting_started_with_rust.md): Alan gets tapped to help spin up a new project on a tight timeline. He hasn't used Rust before, so he starts trying to setup an environment and learn the basics. +* [Coming from Java](aws_engineer/coming_from_java.md): Alan finds that some of the patterns he's accustomed to from Java don't translate well to Rust. +* [Exploring the ecosystem](aws_engineer/ecosystem.md): The Rust ecosystem has a lot of useful crates, but they're hard to find. "I don't so much find them as stumble upon them by accident." +* At first, Rust feels quite ergonomic to Alan. The async-await system seems pretty slick. But as he gets more comfortable with Rust, he starts to encounter situations where he can't quite figure out how to get things setup the way he wants, and he has to settle for suboptimal setups: + * [Juggling error handling](aws_engineer/juggling_error_handling.md): Alan tries to use `?` to process errors in a stream. + * [Failure to parallelize](aws_engineer/failure_to_parallelize.md): Alan can't figure out how to parallelize a loop. + * [Borrow check errors](aws_engineer/borrow_check_errors.md): Alan tries to write code that fills a buffer and returns references into it to the caller, only to learn that Rust's borrow checker makes that pattern difficult. +* [Encoutering pin](aws_engineer/encountering_pin.md): Wrapping streams, `AsyncRead` implementations, and other types requires using `Pin` and it is challenging. +* [Figuring out the best option](aws_engineer/figuring_out_the_best_option.md): Alan often encounteres cases where he doesn't know what is the best way to implement something. He finds he has to implement it both ways to tell, and sometimes even then he can't be sure. +* [Testing his service](aws_engineer/testing_the_service.md): Alan invents patterns for Dependency Injection in order to write tests. +* [Missed Waker leads to lost performance](aws_engineer/missed_waker_leads_to_lost_performance.md): Alan finds his service his not as fast as the reference server; the problem is ultimately due to a missed `Waker`, which was causing his streams to wake up much later than it should've. +* [Debugging performance problems](aws_engineer/debugging_performance_problems.md): Alan finds more performance problems and tries to figure out their cause using tooling like `perf`. It's hard. +* [Using JNI](aws_engineer/using_jni.md): Alan uses JNI to access services that are only available using Java libraries. + +## 🤔 Frequently Asked Questions + +### **What are the morals of the story?** + +* Building services in Rust can yield really strong results, but a lot of hurdles remain: + * 'If it compiles, it works' is not true: there are lots of subtle variations. + * Debugging correctness and performance problems is hard, and the tooling is not what folks are used to. + * Few established patterns to things like DI. + * The ecosystem has a lot of interesting things in it, but it's hard to navigate. + +### **What are the sources for this story?** + +This story is compiled from discussions with service engineers in various AWS teams. + +### **Why did you choose Alan to tell this story?** + +Because Java is a very widely used language at AWS. + +### **How would this story have played out differently for the other characters?** + +Most parts of it remain the same; the main things that were specific to Java are some of the patterns Alan expected to use. Similarly, few things are specific to AWS apart from some details of the setup. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade diff --git a/src/vision/status_quo/aws_engineer/borrow_check_errors.md b/src/vision/status_quo/aws_engineer/borrow_check_errors.md new file mode 100644 index 00000000..74a57831 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/borrow_check_errors.md @@ -0,0 +1,62 @@ +# Status quo of an AWS engineer: Borrow check errors + +Alan has more or less gotten the hang of the borrow checker, but sometimes it still surprises him. One day, he is working on a piece of code in DistriData. There are a set of connections: + +```rust= +struct Connection { + buffer: Vec, +} +``` + +and each `Connection` has the ability to iterate through various requests. These requests return subslices of the data in the connection: + +```rust= +struct Request<'a> { + headers: Vec<&'a u8>, +} +``` + +He writes a routine to get the next request from the connection. It begins by reading data into the internal buffer and then parsing from that buffer and returning the request ([playground](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=6d8f2e7349e25677b25c527964842de8)): + +```rust= +impl Connection { + pub async fn read_next(&mut self) -> Request<'_> { + loop { + self.read_into_buffer(); + + // can't borrow self.buffer, even though we only hang on to it in the + // return branch + match Request::try_parse(&self.buffer) { + Some(r) => return r, + None => continue, + } + } + } + + async fn read_into_buffer(&mut self) { + self.buffer.push(1u8); + } +} +``` + +This code, however, doesn't build. He gets the following error: + +``` +error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable + --> src/lib.rs:15:12 + | +13 | pub async fn read_next(&mut self) -> Request<'_> { + | - let's call the lifetime of this reference `'1` +14 | loop { +15 | self.read_into_buffer().await; + | ^^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here +... +19 | match Request::try_parse(&self.buffer) { + | ------------ immutable borrow occurs here +20 | Some(r) => return r, + | - returning this value requires that `self.buffer` is borrowed for `'1` +``` + +This is confusing. He can see that there is a mutable borrow occuring, and an immutable one, but it seems like they occur at disjoint periods of time. Why is the compiler complaining? + +After asking on `#rust` in the AWS Slack, he learns that this is a pattern that Rust's borrow checker just can't support. It gets confused when you return data from functions and winds up producing errors that aren't necessary. Apparently there's some [research project named after a Hamlet play](https://github.com/rust-lang/polonius/) that might help, but that isn't going to help him now. The slack channel points him at the [ouroboros](https://github.com/joshua-maros/ouroboros) project and he eventually uses it to work around the problem ([playground](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=59b2cb72529e58c13ab00eee1e9c0435)). diff --git a/src/vision/status_quo/aws_engineer/coming_from_java.md b/src/vision/status_quo/aws_engineer/coming_from_java.md new file mode 100644 index 00000000..109d7cf4 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/coming_from_java.md @@ -0,0 +1,9 @@ +# Status quo of an AWS engineer: Coming from Java + +At first, Alan is trying to write Rust code as if it were Java. He's accustomed to avoiding direct dependencies between types and instead modeling everything with an `interface`, so at first he creates a lot of Rust traits. He quickly learns that `dyn Trait` can be kind of painful to use. + +He also learns that Rust doesn't really permit you to add references willy nilly. It was pretty common in Java to have a class that was threaded everywhere with all kinds of references to various parts of the system. This pattern often leads to borrow check errors in Rust. + +He gets surprised by parallelism. He wants a concurrent hash map but can't find one in the standard library. There are a lot of crates on crates.io but it's not clear which would be best. He decides to use a mutex-protected lock. + +He is surprised because futures in Java correspond to things executed in parallel, but in Rust they don't. It takes him some time to get used to this. Eventually he learns that a Rust future is more akin to a java *callable*. \ No newline at end of file diff --git a/src/vision/status_quo/aws_engineer/debugging_performance_problems.md b/src/vision/status_quo/aws_engineer/debugging_performance_problems.md new file mode 100644 index 00000000..42bb7903 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/debugging_performance_problems.md @@ -0,0 +1,10 @@ +# Status quo of an AWS engineer: Debugging overall performance loss + +Alan's service is working better and better, but performance is still lagging from where he hoped it would be. It seems to be about 20% slower than the Java version! After [calling in Barbara to help him diagnose the problem](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_iteratively_regresses.html), Alan identifies one culprit: Some of the types in Alan's system are really large! The system seems to spend a surprising amount of time just copying bytes. Barbara helped Alan diagnose this by showing him some hidden rustc flags, tinkering with his perf setup, and a few other tricks. + +There is still a performance gap, though, and Alan's not sure where it could be coming from. There are a few candidates: + +* Perhaps they are not using tokio's scheduler optimally. +* Perhaps the memory allocation costs introduced by the `#[async_trait]` are starting to add up. + +Alan tinkers with jemalloc and finds that it does improve performance, so that's interesting, but he'd like to have a better understanding of *why*. \ No newline at end of file diff --git a/src/vision/status_quo/aws_engineer/ecosystem.md b/src/vision/status_quo/aws_engineer/ecosystem.md new file mode 100644 index 00000000..f8b800d7 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/ecosystem.md @@ -0,0 +1,11 @@ +# Status quo of an AWS engineer: Exploring the ecosystem + +Alan finds that cargo is a super powerful tool, but he finds it very hard to find crates to use. He doesn't really feel he discovers crates so much as "falls upon" them by chance. For example, he happened to see a stray mention of `cargo bloat` in the internals form, and that turned out to be exactly what he needed. He finds the `async-trait` crate in a similar way. He's happy these tools exist, but he wishes he had more assurance of finding them; he wonders what useful things are out there that he *doesn't* know about. + +In some cases, there are a lot of choices and it's really hard to tell which is best. Alan spent some time evaluating crates that do md5 hashing, for example, and found tons of choices. He does some quick performance testing and finds huge differences: openssl seems to be the fastest, so he takes that, but he is worried he may have missed some crates. + +He had decided to use tokio because it was the thing that everyone else is using. But he gradually learns that there are more runtimes out there. Sometimes, when he adds a crate, he finds that it is bringing in a new set of dependencies that don't seem necessary. + +He also gets confused by the vast array of options. `tokio` seems to have an `AsyncRead` trait, for example, but so does `futures` -- which one should he use? + +He's heard of other runtimes and he might like to be able to try them out, but it would be too much work. Occasionally he winds up with multiple versions of the same crate, which can lead either to compilation or runtime errors. For example, when rusoto upgraded to a new version of tokio, this spilled over into confusing huge error messages from the rusoto builder owing to subtle trait and type mismatches. Fortunately the recent tokio 1.0 release promises to solve some of those problems. diff --git a/src/vision/status_quo/aws_engineer/encountering_pin.md b/src/vision/status_quo/aws_engineer/encountering_pin.md new file mode 100644 index 00000000..440aeed4 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/encountering_pin.md @@ -0,0 +1,12 @@ +# Status quo of an AWS engineer: Encountering pin + +As Alan is building the server, he encounters a case where he wants to extend a stream of data to track some additional metrics. The stream implements [`AsyncRead`]. He thinks, "Ah, I'll just make a wrapper type that can extend any `AsyncRead`." He opens up the rustdoc, though, and realizes that this may be a bit tricky. "What is this `self: Pin<&mut Self>`?" notation, he thinks. He had vaguely heard of `Pin` when skimming the docs for futures and things but it was never something he had to work with directly before. + +[`AsyncRead`]: https://docs.rs/tokio/1.5.0/tokio/io/trait.AsyncRead.html + +Alan's experiences here are well documented in [Alan hates writing a Stream](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_hates_writing_a_stream.html). Suffice to say that, at long last, he does it to work, but he does not feel he really understands what is going on. Talking with his coworkers on slack he notes, "Mostly I just add `Pin` and whatever else the compiler asks for until it works; then I pray it doesn’t crash." :crossed_fingers: + +*References:* + +* [Alan hates writing a Stream](../alan_hates_writing_a_stream.html) +* ["Pin and suffering", by faster-than-lime](https://fasterthanli.me/articles/pin-and-suffering) diff --git a/src/vision/status_quo/aws_engineer/failure_to_parallelize.md b/src/vision/status_quo/aws_engineer/failure_to_parallelize.md new file mode 100644 index 00000000..623b84b1 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/failure_to_parallelize.md @@ -0,0 +1,144 @@ +# Status quo of an AWS engineer: Failure to parallelize + +As Alan reads the loop he just built, he realizes that he ought to be able to process each shared independently. He decides to try spawning the tasks in parallel. He starts by trying to create a stream that spawns out tasks: + +```rust= +// Send each chunk from each shared to each host: +while let Some(chunks) = shards.next().await { + tokio::spawn(async move { + let chunk_futures = chunks + .into_iter() + .zip(&mut host_senders) + .map(|(chunk, sender)| sender.send_data(chunk)); + + join_all(chunk_futures) + .await + .into_iter() + .collect::, _>>()?; + }) +} +``` + +But this is giving him errors about the `?` operator again: + +``` +error[E0277]: the `?` operator can only be used in an async block that returns `Result` or `Option` (or another type that implements `Try`) + --> src/lib.rs:21:13 + | +15 | tokio::spawn(async move { + | _________________________________- +16 | | let chunk_futures = chunks +17 | | .into_iter() +18 | | .zip(&mut host_senders) +... | +21 | /| join_all(chunk_futures) +22 | || .await +23 | || .into_iter() +24 | || .collect::, _>>()?; + | ||________________________________________________^ cannot use the `?` operator in an async block that returns `()` +25 | | }); + | |_________- this function should return `Result` or `Option` to accept `?` + | + = help: the trait `Try` is not implemented for `()` + = note: required by `from_error` +``` + +Annoyed, he decides to convert those to `unwrap` calls temporarily (which will just abort the process on error) just to see if he can get something working: + +```rust= + while let Some(chunks) = shards.next().await { + tokio::spawn(async move { + let chunk_futures = chunks + .into_iter() + .zip(&mut host_senders) + .map(|(chunk, sender)| sender.send_data(chunk)); + + join_all(chunk_futures) + .await + .into_iter() + .collect::, _>>() + .unwrap(); + }); + } +``` + +But now he gets this error ([playground](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fd22ae9a8a7ec68cb73b2a10ecd702f4)): + +``` +error[E0382]: use of moved value: `host_senders` + --> src/lib.rs:15:33 + | +12 | let mut host_senders: Vec = vec![]; + | ---------------- move occurs because `host_senders` has type `Vec`, which does not implement the `Copy` trait +... +15 | tokio::spawn(async move { + | _________________________________^ +16 | | let chunk_futures = chunks +17 | | .into_iter() +18 | | .zip(&mut host_senders) + | | ------------ use occurs due to use in generator +... | +24 | | .collect::, _>>().unwrap(); +25 | | }); + | |_________^ value moved here, in previous iteration of loop +``` + +He removes the `move` keyword from `async move`, but then he sees: + +``` +error[E0373]: async block may outlive the current function, but it borrows `host_senders`, which is owned by the current function + --> src/lib.rs:15:28 + | +15 | tokio::spawn(async { + | ____________________________^ +16 | | let chunk_futures = chunks +17 | | .into_iter() +18 | | .zip(&mut host_senders) + | | ------------ `host_senders` is borrowed here +... | +24 | | .collect::, _>>().unwrap(); +25 | | }); + | |_________^ may outlive borrowed value `host_senders` + | + = note: async blocks are not executed immediately and must either take a reference or ownership of outside variables they use +help: to force the async block to take ownership of `host_senders` (and any other referenced variables), use the `move` keyword + | +15 | tokio::spawn(async move { +16 | let chunk_futures = chunks +17 | .into_iter() +18 | .zip(&mut host_senders) +19 | .map(|(chunk, sender)| sender.send_data(chunk)); +20 | + ... + +error[E0499]: cannot borrow `host_senders` as mutable more than once at a time + --> src/lib.rs:15:28 + | +15 | tokio::spawn(async { + | ______________________-_____^ + | |______________________| + | || +16 | || let chunk_futures = chunks +17 | || .into_iter() +18 | || .zip(&mut host_senders) + | || ------------ borrows occur due to use of `host_senders` in generator +... || +24 | || .collect::, _>>().unwrap(); +25 | || }); + | || ^ + | ||_________| + | |__________`host_senders` was mutably borrowed here in the previous iteration of the loop + | argument requires that `host_senders` is borrowed for `'static` +``` + +At this point, he gives up and leaves a `// TODO` comment: + +```rust= +// TODO: This loop should be able to execute in parallel, +// but I can't figure out how to make it work. -Alan +while let Some(chunks) = shards.next().await { + ... +} +``` + +*Editorial comment:* In this case, the channel to which he is sending the data can only receive data from a single sender at a time (it has an `&mut self`). Rust is potentially saving Alan from a nasty data race here. He could have used a mutex around the senders, but he would still hit issues trying to spawn parallel threads because he lacks an API that lets him borrow from the stack. diff --git a/src/vision/status_quo/aws_engineer/figuring_out_the_best_option.md b/src/vision/status_quo/aws_engineer/figuring_out_the_best_option.md new file mode 100644 index 00000000..80db02c1 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/figuring_out_the_best_option.md @@ -0,0 +1,3 @@ +# Status quo of an AWS engineer: Figuring out the best option + +Sometimes after working on `AsyncRead`, Alan stumbles over the `async-trait` crate. This crate offers a macro that will let him add `async fn` to traits. He's excited about this because it seems like it would allow him to rewrite some of the custom `AsyncRead` impls in a cleaner way. The only problem is that he can't really judge what the implications are going to be -- will it be faster? Slower? It's hard to tell until it's done. He feels like this comes up a lot in Rust: he is forced to make a choice and see it all the way through to the end before he can decide whether he likes it (or if it will work at all: sometimes he encounters a compiler error part of the way through that he just can't figure out how to resolve). It's particularly frustrating in Async Rust where [there seem to be so many options to choose from](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/barbara_needs_async_helpers.html). diff --git a/src/vision/status_quo/aws_engineer/getting_ready_to_deploy.md b/src/vision/status_quo/aws_engineer/getting_ready_to_deploy.md new file mode 100644 index 00000000..4b6f0214 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/getting_ready_to_deploy.md @@ -0,0 +1,7 @@ +# Status quo of an AWS engineer: Getting ready to deploy the service + +The next morning, Alan is talking to his team. The service is more-or-less working, although there is room to improve performance. It's time to talk about the Operational Readiness Review (ORR). Before any service can be put into production at AWS, it needs to pass an ORR. This is a stringent process where experienced senior engineers grill the team about all kinds of things that could go wrong and how they would handle them. These plans are gathered into a document that can be consulted should the need arise. + +Alan has been through a few ORRs in his time at AWS. They're always stressful, but they're usually not that big a deal. A lot of the worst cases are handled automatically by the Java frameworks that Alan is accustomed to working with: for example, they have connection timeouts, or facilities for logging particular kinds of events. For the stuff that is not automatic, there are known "best practices" that can help. + +For Rust, there are a lot of unknowns. The standard servers don't exist, and Alan's team has had to roll their own. There aren't nearly as many tools for performance monitoring or other sorts of improvements. Alan's team is treading new ground by deploying a Rust-based service, and they know they have to budget extra time to manage that. \ No newline at end of file diff --git a/src/vision/status_quo/aws_engineer/getting_started_with_rust.md b/src/vision/status_quo/aws_engineer/getting_started_with_rust.md new file mode 100644 index 00000000..edcd6178 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/getting_started_with_rust.md @@ -0,0 +1,23 @@ +# Status quo of an AWS engineer: Getting started with Rust + +For his latest project, Alan is working on a new service, [DistriData]. Like many AWS services, they are trying to move on a tight deadline. + +The plan is to implement the new service in Rust. The service that they are rewriting was implemented in Java, but it was having difficulty with high tail latencies and other performance hiccups, and they would like to reduce resource usage by adopting Rust. + +This service is being implemented in Rust. The start is a bit different than what he is used to. There's not much infrastructure. They still define their service interface using the same modeling language, but there is no tooling to generate a server from it. + +[DistriData]: https://rust-lang.github.io/wg-async-foundations/vision/projects/DistriData.html + +## IDE setup + +Of course, the very first thing Alan does it to tweak his IDE setup. He's happy to learn that IntelliJ has support for Rust, since he is accustomed to the keybindings and it has great integration with Brazil, AWS's internal build system. + +Still, as he plays around with Rust code, he realizes that the support is not nearly at the level of Java. Autocomplete often gets confused. For example, when there are two traits with the same name but coming from different crates, Intellij often picks the wrong one. It also has trouble with macros, which are very common in async code. Some of Alan's colleagues switch to VSCode, which is sometimes better but has many of the same problems; Alan decides to stick with IntelliJ. + +## Building the first server + +Alan asks around the company to learn more about how Async Rust works and he is told to start with the tokio tutorial and the Rust book. He also joins the company slack channel, where he can ask questions. The tokio tutorial is helpful and he is feeling relatively confident. + +## Missing types during Code review + +One problem Alan finds has to do with AWS's internal tooling (although it would be the same in most places). When browsing Rust code in the IDE, there are lots of tips to help in understanding, such as tooltips showing the types of variables and the like. In code reviews, though, there is only the plain text. Rust's type inference is super useful and make the code compact, but it can be hard to tell what's going on when you just read the plain source. diff --git a/src/vision/status_quo/aws_engineer/juggling_error_handling.md b/src/vision/status_quo/aws_engineer/juggling_error_handling.md new file mode 100644 index 00000000..c24270ca --- /dev/null +++ b/src/vision/status_quo/aws_engineer/juggling_error_handling.md @@ -0,0 +1,134 @@ +# Status quo of an AWS engineer: Juggling error handling + +For example, one day Alan is writing a loop. In this particular part of [DistriData], the data is broken into "shards" and each shard has a number of "chunks". He is connected to various backend storage hosts via HTTP, and he needs to send each chunk out to all of them. He starts by writing some code that uses [`hyper::body::channel`](https://docs.rs/hyper/0.14.7/hyper/body/struct.Body.html#method.channel) to generate a pair of a channel where data can be sent and a resulting HTTP body. He then creates a future for each of those HTTP bodies that will send it to the appropriate host once it is complete. He wants those sends to be executing in the background as the data arrives on the channel, so he creates a [`FuturesUnordered`](https://docs.rs/futures/0.3.14/futures/stream/struct.FuturesOrdered.html) to host them: + +```rust +let mut host_senders: Vec = vec![]; +let mut host_futures = FuturesUnordered::new(); +for host in hosts { + let (sender, body) = hyper::body::Body::channel(); + host_senders.push(sender); + host_futures.push(create_future_to_send_request(body)); +} +``` + +Next, he wants to iterate through each of the shards. For each shard, he will send each chunk to each of the hosts: + +```rust +let mut shards = /* generate a stream of Shards */; +while let Some(chunks) = shards.next().await { + let chunk_futures = chunks + .into_iter() + .zip(&mut host_senders) + .map(|(chunk, sender)| sender.send_data(chunk)?); + + futures::join_all(chunk_futures).await; +} +``` + +The last line is giving him a bit of trouble. Each of the requests to send the futures could fail, and he would like to propagate that failure. He's used to writing `?` to propagate an error, but when he puts `?` in `sender.send_data` he gets an error: + +``` +error[E0277]: the `?` operator can only be applied to values that implement `Try` + --> src/lib.rs:18:40 + | +18 | .map(|(chunk, sender)| sender.send_data(chunk)?); + | ^^^^^^^^^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `impl futures::Future` + | + = help: the trait `Try` is not implemented for `impl futures::Future` + = note: required by `into_result` +``` + +"Right," Alan thinks, "I need to await the future." He tries to move the `?` to the result of `join_all`: + +```rust +let mut shards = /* generate a stream of Shards */; +while let Some(chunks) = shards.next().await { + let chunk_futures = chunks + .into_iter() + .zip(&mut host_senders) + .map(|(chunk, sender)| sender.send_data(chunk)); + + futures::join_all(chunk_futures).await?; +} +``` + +But now he sees: + +``` +error[E0277]: the `?` operator can only be applied to values that implement `Try` + --> src/lib.rs:20:9 + | +20 | join_all(chunk_futures).await?; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `Vec>` + | + = help: the trait `Try` is not implemented for `Vec>` + = note: required by `into_result` +``` + +"Ah," he says, "of course, I have a vector of potential errors, not a single error." He remembers seeing a trick for dealing with this in his Rust training. Pulling up the slides, he finds the example. It takes him a little bit to get the type annotations just right, but he finally lands on: + +```rust= +while let Some(chunks) = shards.next().await { + let chunk_futures = chunks + .into_iter() + .zip(&mut host_senders) + .map(|(chunk, sender)| sender.send_data(chunk)); + + join_all(chunk_futures) + .await + .into_iter() + .collect::, _>>()?; +} +``` + +[playground](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=aa16c1901a13603df7cd050ecc47e61e) + +The loop now works: it sends each chunk from each shard to each host, and propagates errors in a reasonable way. The last step is to write for those writes to complete. To do this, he has until all the data has actually been sent, keeping in mind that there could be errors in these sends too. He writes a quick loop to iterate over the stream of sending futures `host_futures` that he created earlier: + +```rust= +loop { + match host_futures.next().await { + Some(Ok(response)) => handle_response(response)?, + Some(Err(e)) => return Err(e)?, + None => return Ok(()), + } +} +``` + +It takes him a few tries to get this loop right too. The `Some(Err(e))` case in particular is a bit finnicky. He tried to just `return Err(e)` but it gave him an error, because the of `e` didn't match the more generic `Box` type that his function returns. He remembered that the `?` operator performs some interconversion, though, and that you can do `Err(e)?` to workaround this particular problem. + +He surveys the final function he has built, feeling a sense of satisfaction that he got it to work. Still, he can't help but think that this was an awful lot of work just to propagate errors. Plus, he knows from experience that the errors in Rust are often less useful for finding problems than the ones he used to get in Java. Rust errors don't capture backtraces, for example. He tried to add some code to capture backtraces at one point but it seemed really slow, taking 20ms or so to snag a backtrace, and he knew that would be a problem in production. + +```rust= +// Prepare the outgoing HTTP requests to each host: +let mut host_senders: Vec = vec![]; +let mut host_futures = FuturesUnordered::new(); +for host in hosts { + let (sender, body) = hyper::body::Body::channel(); + host_senders.push(sender); + host_futures.push(create_future_to_send_request(body)); +} + +// Send each chunk from each shared to each host: +while let Some(chunks) = shards.next().await { + let chunk_futures = chunks + .into_iter() + .zip(&mut host_senders) + .map(|(chunk, sender)| sender.send_data(chunk)); + + join_all(chunk_futures) + .await + .into_iter() + .collect::, _>>()?; +} + +// Wait for all HTTP requests to complete, aborting on error: +loop { + match host_futures.next().await { + Some(Ok(response)) => handle_response(response)?, + Some(Err(e)) => return Err(e)?, + None => return Ok(()), + } +} +``` \ No newline at end of file diff --git a/src/vision/status_quo/aws_engineer/missed_waker_leads_to_lost_performance.md b/src/vision/status_quo/aws_engineer/missed_waker_leads_to_lost_performance.md new file mode 100644 index 00000000..ae827409 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/missed_waker_leads_to_lost_performance.md @@ -0,0 +1,12 @@ +# Status quo of an AWS engineer: Missed `Waker` leads to lost performance + +Once the server is working, Alan starts to benchmark it. He is not really sure what to expect, but he is hoping to see an improvement in performance relative to the baseline service they were using before. To his surprise, it seems to be running slower! + +Digging into the problem a bit, he wishes -- not for the first time -- that he had better tools to understand what was happening. This time he doesn't even bother trying to fire up the debugger. He just starts looking at his metrics. He's accumulated a pretty decent set of metrics by now, and he can often get a picture of the state of the runtime from them. + +After a few days of poking at the problem, Alan notices something odd. It seems like there is often a fairly large delay between the completion of a particular event and the execution of the code that is meant to respond to that event. Looking more closely, he realizes that the code for handling that event fails to trigger the `Waker` associated with the future, and hence the future never wakes up. + +As it happens, this problem was hidden from him because that particular future was combined with a number of others. Eventually, the other futures get signalled, and hence the event does get handled -- but less promptly than it should be. He fixes the problem and performance is restored. + +"I'm glad I had a baseline to compare this against!", he thinks. "I doubt I would have noticed this problem otherwise." + diff --git a/src/vision/status_quo/aws_engineer/solving_a_deadlock.md b/src/vision/status_quo/aws_engineer/solving_a_deadlock.md new file mode 100644 index 00000000..0f8ef7f7 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/solving_a_deadlock.md @@ -0,0 +1,90 @@ +# Status quo of an AWS engineer: Solving a deadlock + +Alan logs into work the next morning to see a message in Slack: + +> Alan, I've noticed that the code to replicate the shards across the hosts is sometimes leading to a deadlock. Any idea what's going on? + +This is the same code that Alan tried to parallelize earlier. He pulls up the function, but everything *seems* correct! It's not obvious what the problem could be. + +```rust= +// Prepare the outgoing HTTP requests to each host: +let mut host_senders: Vec = vec![]; +let mut host_futures = FuturesUnordered::new(); +for host in hosts { + let (sender, body) = hyper::body::Body::channel(); + host_senders.push(sender); + host_futures.push(create_future_to_send_request(body)); +} + +// Send each chunk from each shared to each host: +while let Some(chunks) = shards.next().await { + let chunk_futures = chunks + .into_iter() + .zip(&mut host_senders) + .map(|(chunk, sender)| sender.send_data(chunk)); + + join_all(chunk_futures) + .await + .into_iter() + .collect::, _>>()?; +} + +// Wait for all HTTP requests to complete, aborting on error: +loop { + match host_futures.next().await { + Some(Ok(response)) => handle_response(response)?, + Some(Err(e)) => return Err(e).map_err(box_err)?, + None => return Ok(()), + } +} +``` + +He tries to reproduce the deadlock. He is able to reproduce the problem readily enough, but only with larger requests. He had always used small tests before. He connects to the process with the debugger but he can't really make heads or tails of what tasks seem to be stuck (see [Alan tries to debug a hang](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_tries_to_debug_a_hang.html) or [Barbara wants async insights](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/barbara_wants_async_insights.html)). He resorts to sprinkling logging everywhere. + +At long last, he starts to see a pattern emerging. From the logs, he sees the data from each chunk is being sent to the hyper channel, but it never seems to be sent over the HTTP connection to the backend hosts. He is pretty confused by this -- he thought that the futures he pushed into `host_futures` should be taking care of sending the request body out over the internet. He goes to talk to Barbara -- [who, as it happens, has been through this very problem in the past](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/barbara_battles_buffered_streams.html) -- and she explains to him what is wrong. + +"When you push those futures into `FuturesUnordered`", she says, "they will only make progress when you are actually awaiting on the stream. With the way the loop is setup now, the actual sending of data won't start until that third loop. Presumably your deadlock is because the second loop is blocked, waiting for some of the data to be sent." + +"Huh. That's...weird. How can I fix it?", asks Alan. + +"You need to spawn a separate task," says Barbara. "Something like this should work." She modifies the code to spawn a task that is performing the third loop. That task is spawned before the second loop starts: + +```rust= +// Prepare the outgoing HTTP requests to each host: +let mut host_senders: Vec = vec![]; +let mut host_futures = FuturesUnordered::new(); +for host in hosts { + let (sender, body) = hyper::body::Body::channel(); + host_senders.push(sender); + host_futures.push(create_future_to_send_request(body)); +} + +// Make sure this runs in parallel with the loop below! +let send_future = tokio::spawn(async move { + // Wait for all HTTP requests to complete, aborting on error: + loop { + match host_futures.next().await { + Some(Ok(response)) => handle_response(response)?, + Some(Err(e)) => break Err(e)?, + None => break Ok(()), + } + } +}); + +// Send each chunk from each shared to each host: +while let Some(chunks) = shards.next().await { + let chunk_futures = chunks + .into_iter() + .zip(&mut host_senders) + .map(|(chunk, sender)| sender.send_data(chunk)); + + join_all(chunk_futures) + .await + .into_iter() + .collect::, _>>()?; +} + +send_future.await +``` + +"Oof", says Alan, "I'll try to remember that!" diff --git a/src/vision/status_quo/aws_engineer/testing_the_service.md b/src/vision/status_quo/aws_engineer/testing_the_service.md new file mode 100644 index 00000000..f78139f7 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/testing_the_service.md @@ -0,0 +1,25 @@ +# Status quo of an AWS engineer: Testing the service + +At first, Alan is content to test by hand. But once the server is starting to really work, he realizes he needs to do unit testing. He wants to do something like [Mockito] in Rust, so he starts searching the internet to find out what the options are. To his surprise, he learns that there doesn't seem to be any comparable framework in Rust. + +One option he considers is making all of his functions generic. For example, he could create a trait to model, for example, the network, so that he can insert artificial pauses and other problems during testing: + +```rust +trait Network { + ... +} +``` + +Writing such a trait is fairly complicated, but even if he wrote it, he would have to make all of his structs and functions generic: + +```rust +struct MyService { + ... +} +``` + +Alan starts threading these parameters through the code and quickly gets overwhelmed. + +He decides instead to test his real code without any mocking. He and his team start building a load-testing framework, they call it "simworld". They need to be able to inject network errors, control timing, and force other unusual situations. + +Building simworld takes a lot of time, but it is very useful, and they start to gain some confidence in their code. \ No newline at end of file diff --git a/src/vision/status_quo/aws_engineer/using_jni.md b/src/vision/status_quo/aws_engineer/using_jni.md new file mode 100644 index 00000000..278876ff --- /dev/null +++ b/src/vision/status_quo/aws_engineer/using_jni.md @@ -0,0 +1,9 @@ +# Status quo of an AWS engineer: Using JNI + +One other problem that Alan's team has encountered is that some of the standard libraries they would use at AWS are only available in Java. After some tinkering, Alan's team decides to stand-up a java server as part of their project. The idea is that the server can accept the connections and then use JNI to invoke the Rust code; having the Rust code in process means it can communicate directly with the underlying file descriptor and avoid copies. + +They stand up the Java side fairly quickly and then spend a bit of time experimenting with different ways to handle the "handoff" to Rust code. The first problem is keeping the tokio runtime alive. Their first attempt to connect using JNI was causing the runtime to get torn down. But they figure out that they can store the Runtime in a static variable. + +Next, they find having Rust code access Java objects is quite expensive; it's cheaper to pass bytebuffers at the boundary using protobuf. They try a few options for serialization and deserialization to find which works best. + +Overall, the integration with the JNI works fairly smoothly for them, but they wish there had been some documented pattern to have just shown them the best way to set things up, rather than them having to discover it. \ No newline at end of file diff --git a/src/vision/status_quo/aws_engineer/using_the_debugger.md b/src/vision/status_quo/aws_engineer/using_the_debugger.md new file mode 100644 index 00000000..38334d0e --- /dev/null +++ b/src/vision/status_quo/aws_engineer/using_the_debugger.md @@ -0,0 +1,7 @@ +# Status quo of an AWS engineer: Using the debugger + +Even though the code is starting to work, they soon uncover a test that is not behaving as it ought to. Alan decides to try loading the Rust code into the debugger. He quickly realizes that the debugger is showing him the raw threads that are used to implement his service, and not the tasks and things that the service uses at a logical level, but that's not a problem for what he's doing right now. He sets a breakpoint on a particular line of code that corresponds to the place where things seem to be going wrong. + +At first, the debugger seems to be working great, but Alan soon realizes that the experiences is a far cry from what he is used to with Intellij and Java code. Stepping through the code is unpredictable; it's not always obvious what function the will be stepping into. More than once Alan is confronted with a screen full of assembly. "No thank you," he thinks, and just avoids stepping into that function in the future. He finds that he often cannot print the values of variables ('variable optimized out', says the debugger) or execute code dynamically. Sometimes he is able to print them but instead of seeing something useful, he gets a bunch of random pointer values. + +Alan gives up on the debugger. He starts to thread printfs and logging statements throughout his code. The [`tracing`] crate is pretty useful. Eventually, he is able to find and fix the problem and get his test case passing. \ No newline at end of file diff --git a/src/vision/status_quo/aws_engineer/writing_a_java_based_service.md b/src/vision/status_quo/aws_engineer/writing_a_java_based_service.md new file mode 100644 index 00000000..da59d421 --- /dev/null +++ b/src/vision/status_quo/aws_engineer/writing_a_java_based_service.md @@ -0,0 +1,16 @@ +# Status quo of an AWS engineer: Writing a Java-based service + +Alan has been working at AWS for the last six years. He's accustomed to a fairly standard workflow for launching Java-based services: + +* Write a description of the service APIs using a modeling language like [Smithy](https://awslabs.github.io/smithy/). +* Submit the description to a webpage, which gives a standard service implementation based on [netty](https://netty.io/). Each of the API calls in the modeling language has a function with a `/* TODO */` comment to fill in. +* As Alan works with his team to fill in each of those items, he makes use of a number of standard conventions: + * Mocking with projects like [mockito] to allow for unit testing of specific components. +* Alan uses a variety of nice tools: + * Advanced IDEs like IntelliJ, which offer him suggestions as he works. + * Full-featured, if standard, debuggers; he can run arbitrary code, mutate state, step into and out of functions with ease. + * Tools for introspecting the VM state to get heap usage information and other profiling data. + * Performance monitoring frameworks +* As Alan is preparing to launch his service, he has to conduct an Operational Readiness Review (ORR): + * This consists of a series of detailed questions covering all kinds of nasty scenarios that have arisen in deployments past. For each one, he has to explain how his service will handle it. + * For most of them, the standard framework has pre-generated code that covers it, or he is able to use standard patterns. \ No newline at end of file From a9aa064f7fd4e9e316ab70f540b2aefa95e0eaae Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Fri, 7 May 2021 08:08:08 -0400 Subject: [PATCH 193/347] Apply suggestions from code review Co-authored-by: Andrew Chin --- .../status_quo/aws_engineer/figuring_out_the_best_option.md | 2 +- src/vision/status_quo/aws_engineer/testing_the_service.md | 4 ++-- .../status_quo/aws_engineer/writing_a_java_based_service.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/vision/status_quo/aws_engineer/figuring_out_the_best_option.md b/src/vision/status_quo/aws_engineer/figuring_out_the_best_option.md index 80db02c1..5981e027 100644 --- a/src/vision/status_quo/aws_engineer/figuring_out_the_best_option.md +++ b/src/vision/status_quo/aws_engineer/figuring_out_the_best_option.md @@ -1,3 +1,3 @@ # Status quo of an AWS engineer: Figuring out the best option -Sometimes after working on `AsyncRead`, Alan stumbles over the `async-trait` crate. This crate offers a macro that will let him add `async fn` to traits. He's excited about this because it seems like it would allow him to rewrite some of the custom `AsyncRead` impls in a cleaner way. The only problem is that he can't really judge what the implications are going to be -- will it be faster? Slower? It's hard to tell until it's done. He feels like this comes up a lot in Rust: he is forced to make a choice and see it all the way through to the end before he can decide whether he likes it (or if it will work at all: sometimes he encounters a compiler error part of the way through that he just can't figure out how to resolve). It's particularly frustrating in Async Rust where [there seem to be so many options to choose from](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/barbara_needs_async_helpers.html). +Sometime after working on `AsyncRead`, Alan stumbles over the `async-trait` crate. This crate offers a macro that will let him add `async fn` to traits. He's excited about this because it seems like it would allow him to rewrite some of the custom `AsyncRead` impls in a cleaner way. The only problem is that he can't really judge what the implications are going to be -- will it be faster? Slower? It's hard to tell until it's done. He feels like this comes up a lot in Rust: he is forced to make a choice and see it all the way through to the end before he can decide whether he likes it (or if it will work at all: sometimes he encounters a compiler error part of the way through that he just can't figure out how to resolve). It's particularly frustrating in Async Rust where [there seem to be so many options to choose from](https://rust-lang.github.io/wg-async-foundations/vision/status_quo/barbara_needs_async_helpers.html). diff --git a/src/vision/status_quo/aws_engineer/testing_the_service.md b/src/vision/status_quo/aws_engineer/testing_the_service.md index f78139f7..f6b122e4 100644 --- a/src/vision/status_quo/aws_engineer/testing_the_service.md +++ b/src/vision/status_quo/aws_engineer/testing_the_service.md @@ -1,6 +1,6 @@ # Status quo of an AWS engineer: Testing the service -At first, Alan is content to test by hand. But once the server is starting to really work, he realizes he needs to do unit testing. He wants to do something like [Mockito] in Rust, so he starts searching the internet to find out what the options are. To his surprise, he learns that there doesn't seem to be any comparable framework in Rust. +At first, Alan is content to test by hand. But once the server is starting to really work, he realizes he needs to do unit testing. He wants to do something like [Mockito](https://site.mockito.org/) in Rust, so he starts searching the internet to find out what the options are. To his surprise, he learns that there doesn't seem to be any comparable framework in Rust. One option he considers is making all of his functions generic. For example, he could create a trait to model, for example, the network, so that he can insert artificial pauses and other problems during testing: @@ -22,4 +22,4 @@ Alan starts threading these parameters through the code and quickly gets overwhe He decides instead to test his real code without any mocking. He and his team start building a load-testing framework, they call it "simworld". They need to be able to inject network errors, control timing, and force other unusual situations. -Building simworld takes a lot of time, but it is very useful, and they start to gain some confidence in their code. \ No newline at end of file +Building simworld takes a lot of time, but it is very useful, and they start to gain some confidence in their code. diff --git a/src/vision/status_quo/aws_engineer/writing_a_java_based_service.md b/src/vision/status_quo/aws_engineer/writing_a_java_based_service.md index da59d421..9791b5b1 100644 --- a/src/vision/status_quo/aws_engineer/writing_a_java_based_service.md +++ b/src/vision/status_quo/aws_engineer/writing_a_java_based_service.md @@ -5,7 +5,7 @@ Alan has been working at AWS for the last six years. He's accustomed to a fairly * Write a description of the service APIs using a modeling language like [Smithy](https://awslabs.github.io/smithy/). * Submit the description to a webpage, which gives a standard service implementation based on [netty](https://netty.io/). Each of the API calls in the modeling language has a function with a `/* TODO */` comment to fill in. * As Alan works with his team to fill in each of those items, he makes use of a number of standard conventions: - * Mocking with projects like [mockito] to allow for unit testing of specific components. + * Mocking with projects like [mockito](https://site.mockito.org/) to allow for unit testing of specific components. * Alan uses a variety of nice tools: * Advanced IDEs like IntelliJ, which offer him suggestions as he works. * Full-featured, if standard, debuggers; he can run arbitrary code, mutate state, step into and out of functions with ease. @@ -13,4 +13,4 @@ Alan has been working at AWS for the last six years. He's accustomed to a fairly * Performance monitoring frameworks * As Alan is preparing to launch his service, he has to conduct an Operational Readiness Review (ORR): * This consists of a series of detailed questions covering all kinds of nasty scenarios that have arisen in deployments past. For each one, he has to explain how his service will handle it. - * For most of them, the standard framework has pre-generated code that covers it, or he is able to use standard patterns. \ No newline at end of file + * For most of them, the standard framework has pre-generated code that covers it, or he is able to use standard patterns. From c866e489882cc3a39153aea03e74ca67cff28a73 Mon Sep 17 00:00:00 2001 From: Jack Moffitt Date: Fri, 7 May 2021 10:16:46 -0500 Subject: [PATCH 194/347] Initial draft of C++ Facebook engineer using Rust --- .../grace_writes_a_new_fb_service.md | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/vision/status_quo/grace_writes_a_new_fb_service.md diff --git a/src/vision/status_quo/grace_writes_a_new_fb_service.md b/src/vision/status_quo/grace_writes_a_new_fb_service.md new file mode 100644 index 00000000..2eb92891 --- /dev/null +++ b/src/vision/status_quo/grace_writes_a_new_fb_service.md @@ -0,0 +1,72 @@ +# 😱 Status quo stories: Template + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +This tells the story of Grace, an engineer working at Facebook on C++ +services. + +* Grace writes C++ services at Facebook, built upon many libraries and support + infrastructure +* Grace's last project had several bad bugs related to memory safety, and she + is motivated to give Rust a shot on a new service she's writing +* First, she must determine if there are Rust bindings to the other FB + services her new service will depend on +* She determines that she'll need to write a binding to the FooDB service + using cxx +* She also determines that several crates she'll need from crates.io aren't + vendored in the FB monorepo, so she'll need to get them and their + dependencies imported. She'll need to address any version conflicts and + special build rules since FB uses Buck and not Cargo to build all code +* While developing her service, Grace discovers that IDE features she's used + to in VS Code don't always work for Rust code +* Grace writes up the performance and safety benefits of her new service after + it's first month of deployment. Despite the tooling issues, the end result + is a success + +## 🤔 Frequently Asked Questions + +*Here are some standard FAQ to get you started. Feel free to add more!* + +### **What are the morals of the story?** + +* Building successful Rust services in a company that has lots of existing + tooling and infrastructure can be difficult, as Grace must do extra work + when new ground is tread + * Big companies like Facebook have large monorepos and custom build systems + and the standard Rust tooling may not be useable in that environment + * Facebook has a large team making developer's lives easier, but it is + focused around the most common workflows, and Grace must work a little + harder for now as Rust support is in its early days + * Integrating with existing C++ code is quite important as Grace cannot + rewrite existing services + +### **What are the sources for this story?** + +This story is compiled from internal discussions with Facebook engineers and +from internal reports of successful Rust projects. + +### **Why did you choose Grace to tell this story?** + +Both Alan or Grace could be appropriate, but I chose Grace in order to focus +on tooling and C++ service integration issues. + +### **How would this story have played out differently for the other characters?** + +Had I chosen Alan, a Python programmer at Facebook, there is probably a lot +more learning curve with Rust's async mechanics. Python programmers using +async don't necessarily have analogs for things like `Pin` for example. + +[character]: ../characters.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From b9e164addf37306ff17bf35508f656e17bdd40b9 Mon Sep 17 00:00:00 2001 From: Zeeshan Ali Date: Thu, 29 Apr 2021 21:41:50 +0200 Subject: [PATCH 195/347] status quo: Barbara writes a runtime-agnostic library This is a story from the async vision story session of April 16, 2021. Co-authored-by: Ryan Levick --- .../barbara_writes_a_runtime_agnostic_lib.md | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 src/vision/status_quo/barbara_writes_a_runtime_agnostic_lib.md diff --git a/src/vision/status_quo/barbara_writes_a_runtime_agnostic_lib.md b/src/vision/status_quo/barbara_writes_a_runtime_agnostic_lib.md new file mode 100644 index 00000000..a7a0e602 --- /dev/null +++ b/src/vision/status_quo/barbara_writes_a_runtime_agnostic_lib.md @@ -0,0 +1,127 @@ +# 😱 Status quo stories: Barbara writes a runtime-agnostic library + + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from +real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async +Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR +making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories +[cannot be wrong], only inaccurate). Alternatively, you may wish to +[add your own status quo story][htvsq]! + +## The story + +Barbara and Alan work at AmoolgeSoft, where many teams are switching from Java to Rust. These teams +have many different use cases and various adoption stories. Some teams are happy users of tokio, +others happy users of async-std, and others still are using custom runtimes for highly specialized +use cases. + +Barbara is tasked with writing a library for a custom protocol, SLOW (only in use at AmoogleSoft) +and enlists the help of Alan in doing so. Alan is already aware that [not all libraries in Rust work +with all runtimes][nalirwwar]. Alan and Barbara start by writing a parser which works on +`std::io::Read` and get their tests working with `String`s. After this they contemplate the question +of how to accept a TCP connection. + +### Incompatible `AsyncRead` traits + +Alan asks Barbara what is the async equivalent is of `std::io::Read`, and Barbara sighs and says +that there isn't one. Barbara brings up tokio's and the [futures crate]'s versions of `AsyncRead`. +Barbara decides not to talk about `AsyncBufRead` for now. + +Barbara and Alan decide to use the future's `AsyncRead` for no other reason other than it is +runtime-agnostic. Barbara tells Alan not to worry as they can translate between the two. With +[some](ahwas) [effort](bnah) they convert their parser to using `AsyncRead`. + +Alan, excited about the progress they've made, starts working on hooking this up to actual TCP +streams. Alan looks at async-std and tokio and notices their interfaces for TCP are quite different. +Alan waits for Barbara to save the day. + +Barbara helps abstract over TCP listener and TCP stream (**TODO:** code example). One big hurdle is +that tokio uses `AsyncRead` from their own crate and not the one from `futures` crate. + +### Task spawning + +After getting the TCP handling part working, they now want to spawn tasks for handling each incoming +TCP connection. Again, to their disappointment, they find that there's no runtime-agnostic way to do +that. + +Unsure on how to do this, they do some searching and find the [`agnostik`] crate. They reject it +because this only supports N number of runtimes and their custom runtime is not one of them. +However it gives them the idea to provide a trait for specifying how to spawn tasks on the runtime. +Barbara points out that this has disadvantage of [working against orphan rules] meaning that either +they have to implement the trait for all known runtimes (defeating the purpose of the exercise) or +force the user to use new types. + +They punt on this question by implementing the trait for each of the known runtimes. They're +disappointed that this means their library actually isn't runtime agnostic. + +### The need for timers + +To make things further complicated, they also are in need for a timer API. They could abstract +runtime-specific timer APIs in their existing trait they use for spawning, but they find a +runtime-agnostic library. It works but is pretty heavy in that it spawns an OS thread (from a pool) +every time they want to sleep. They become sadder. + +### Channels + +They need channels as well but after long searches and discussions on help channels, they learn of +a few runtime-agnostic implementations: `async-channel`, `futures-channel`, and trimmed down ( +through feature flags) `async-std`/`tokio`. They pick one and it seems to work well. They become +less sadder. + +### First release + +They get things working but it was a difficult journey to get to the first release. Some of their +users find the APIs harder to use than their runtime-specific libs. + +## 🤔 Frequently Asked Questions + +*Here are some standard FAQ to get you started. Feel free to add more!* + +### **Why did you choose Barbara to tell this story?** +[Barbara] has years of rust experience that she brings to bear in her async learning experiences. + +### **What are the morals of the story?** + +* People have to roll their own implementations which can lead to often subtle differences between + runtimes (For example TCPListeners in `async-std` and `tokio`). +* Orphan rules and no standard traits guarantee that a truly agnostic library is not possible. +* Takes way more time than writing synchronous protocols. +* It's a hard goal to achieve. +* Leads to poorer APIs sometimes (both in ease of use and **performance**). +* More API design considerations need to go into making an generic async library than a generic sync library. + +### **What are the sources for this story?** +Personal experiences of the author from adding async API in [`zbus`] crate, except for `AsyncRead`, +which is based on common knowledge in async Rust community. + +### **How would this story have played out differently for the other characters?** +Alan, Grace, and Niklaus would be overwhelmed and will likely want to give up. + +### What are other related stories? + +**TODO:** + +### What are the downside of using runtime agnostic crates? + +Some things can be implemented very efficiently in a runtime-agnostic way but even then you can't +integrate deeply into the runtime. For example, see tokio’s pre-emption strategy, which relies on +deep integration with the runtime. + +### What other runtime utilities are generally needed? +* [async-locks][async-locks-story] + +[status quo stories]: ./status_quo.md +[Barbara]: ../characters/barbara.md +[htvsq]: ../how_to_vision/status_quo.md +[ahwas]: https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_hates_writing_a_stream.html +[bnah]: https://rust-lang.github.io/wg-async-foundations/vision/status_quo/barbara_needs_async_helpers.html +[working against orphan rules]: https://github.com/rust-lang/wg-async-foundations/issues/180 +[futures crate]: https://crates.io/crates/futures +[nalirwwar]: https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_picks_web_server.html#first-problem-incompatible-runtimes +[`agnostik`]: https://crates.io/crates/agnostik +[`zbus`]: https://crates.io/crates/zbus/2.0.0-beta.3 +[async-locks-story]: https://rust-lang.github.io/wg-async-foundations/vision/status_quo/alan_thinks_he_needs_async_locks.html From bc3edac0627d0b4c0b60aee2ea127bd67bdf9ae6 Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Sat, 8 May 2021 13:01:16 -0400 Subject: [PATCH 196/347] Story for Barbara writing a library that needs buffered IO --- .../shiny_future/barbara_wants_async_rw.md | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/vision/shiny_future/barbara_wants_async_rw.md diff --git a/src/vision/shiny_future/barbara_wants_async_rw.md b/src/vision/shiny_future/barbara_wants_async_rw.md new file mode 100644 index 00000000..b6d0e599 --- /dev/null +++ b/src/vision/shiny_future/barbara_wants_async_rw.md @@ -0,0 +1,83 @@ +# ✨ Barbara Wants Async Read Write + +## 🚧 Warning: Draft status 🚧 + +This is a draft "shiny future" story submitted as part of the brainstorming period. It is derived from what actual Rust users wish async Rust should be, and is meant to deal with some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as peoples needs and desires for async Rust may differ greatly, shiny future stories [cannot be wrong]. At worst they are only useful for a small set of people or their problems might be better solved with alternative solutions). Alternatively, you may wish to [add your own shiny vision story][htvsq]! + +## The story + +Character: Barbara. + +Barbara is creating a `sans-io` network protocol library. To make her library as useable as possible, she wants her design to be runtime agnostic [Link to this story]: so, she decides that her library will run on generic `AsyncRead`/`AsyncWrite` types. Everything goes as planned and before long she's shipped the first version of her library. + +As she monitors the performance of her library she becomes less and less satisified. She firmly believes that the library is under-performing and she can make it signficantly better. Being a tried and tested Linux developer, Barbara goes right to `strace` to gain information about how her library interacts with the OS. And immediately her suspicions are confirmed: there are a *lot* of read/write syscalls being made. + +She discusses what she found with her friend Grace and decides that the next step is to use buffered IO in order to reduce the total number of syscalls being made. And she is confident that this will greatly improve the performance of her library. + +Unfortunately, Barbara finds that there is no generic buffered equivalents to the `AsyncRead` and `AsyncWrite` her first version was based on. For a buffered `AsyncRead`, she finds an inconsistent ecosystem: there's a `AsyncBufRead` defined in the `futures` crate but only some runtimes implement it, and `tokio` has a completely different `AsyncBufRead` trait. Barbara decides to use the `AsyncBufRead` from `futures` and provide compatibility mechanisms for users of `tokio` which will allow them to the completely different buffered read primitive in `tokio` to her library. + +But, it's even worse for a buffered `AsyncWrite`: with buffered read done, Barbara moves to buffered write and finds out, to her chagrin, that there is no single buffered async writer. Every runtime provides there own, inconsistent, types. And there are no traits for abstraction. Barbara is exhausted; with no provided abstractions for this primitive Barbara will have to write her own abstractions that can unify across all the runtimes. There are so many hurdles to overcome in order to do this, such as the orphan rule, that Barbara feels there is no reasonable path forward [Link Agnostic Runtime story again]. + +## 🤔 Frequently Asked Questions + +*NB: These are generic FAQs. Feel free to customize them to your story or to add more.* + +### What status quo stories are you retelling? + +*Link to status quo stories if they exist. If not, that's ok, we'll help find them.* + +### What are the key attributes of this shiny future? + +- Just like AsyncRead/AsyncWrite there are no standard traits for buffered I/O + + - This is made worse by the fact that there isn’t even ecosystem traits for buffered writes. + +- There are no standard (or even present in futures-io) concrete types for async buffered I/O. + + - Each major runtime has their own async BufReader, BufWriter types. + +- All the issues with creating runtime agnostic libraries are very present here. (TODO: link with runtime agnostic lib story) +std::io doesn’t have a BufWrite trait for sync I/O. + + - It’s less of an issue than in async Rust because of the existence of the standardized std::io::BufWriter. + + + +### What is the "most shiny" about this future? + +*Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Which benefit the most relative to today?* +This benefits productivity and correctness the most. The problem is not performance, in particular, as each runtime provides buffered IO solutions. The problem is that they are inconsistent and not compatible. This means that writing code that is compatible with any async runtime becomes both: much more difficult and much more likely to be wrong when runtimes change. + +### What are some of the potential pitfalls about this future? + +*Thing about Rust's core "value propositions": performance, safety and correctness, productivity. Are any of them negatively impacted? Are there specific application areas that are impacted negatively? You might find the sample [projects] helpful in this regard, or perhaps looking at the goals of each [character].* +- Having a design which makes it difficult for existing runtimes to make their buffered IO types compatible or to migrate their runtimes over to the new designs. + +### Did anything surprise you when writing this story? Did the story go any place unexpected? + +*The act of writing shiny future stories can uncover things we didn't expect to find. Did you have any new and exciting ideas as you were writing? Realize some complications that you didn't foresee?* +The most surprising thing is that there is a buffered read type in `futures` but no buffered *write* type in `futures`. I would expect both or neither. + +### What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written? + +*Often when writing stories, we think about various possibilities. Sketch out some of the turning points here -- maybe someone will want to turn them into a full story! Alternatively, if this is a variation on an existing story, link back to it here.* +No variations. + +### What are some of the things we'll have to figure out to realize this future? What projects besides Rust itself are involved, if any? (Optional) + +*Often the 'shiny future' stories involve technical problems that we don't really know how to solve yet. If you see such problems, list them here!* + + + +[character]: ../characters.md +[comment]: ./comment.md +[status quo stories]: ./status_quo.md +[Alan]: ../characters/alan.md +[Grace]: ../characters/grace.md +[Niklaus]: ../characters/niklaus.md +[Barbara]: ../characters/barbara.md +[projects]: ../projects.md +[htvsq]: ../how_to_vision/shiny_future.md +[cannot be wrong]: ../how_to_vision/comment.md#comment-to-understand-or-improve-not-to-negate-or-dissuade From 1614b56a614a6ca139f10034e30b8795b777c30b Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Sat, 8 May 2021 13:15:34 -0400 Subject: [PATCH 197/347] clean up --- src/vision/shiny_future/barbara_wants_async_rw.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vision/shiny_future/barbara_wants_async_rw.md b/src/vision/shiny_future/barbara_wants_async_rw.md index b6d0e599..b64b66f2 100644 --- a/src/vision/shiny_future/barbara_wants_async_rw.md +++ b/src/vision/shiny_future/barbara_wants_async_rw.md @@ -10,7 +10,7 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee Character: Barbara. -Barbara is creating a `sans-io` network protocol library. To make her library as useable as possible, she wants her design to be runtime agnostic [Link to this story]: so, she decides that her library will run on generic `AsyncRead`/`AsyncWrite` types. Everything goes as planned and before long she's shipped the first version of her library. +Barbara is creating a `sans-io` network protocol library. To make her library as useable as possible, she wants her design to be runtime agnostic: so, she decides that her library will run on generic `AsyncRead`/`AsyncWrite` types. Everything goes as planned and before long she's shipped the first version of her library. As she monitors the performance of her library she becomes less and less satisified. She firmly believes that the library is under-performing and she can make it signficantly better. Being a tried and tested Linux developer, Barbara goes right to `strace` to gain information about how her library interacts with the OS. And immediately her suspicions are confirmed: there are a *lot* of read/write syscalls being made. @@ -18,7 +18,7 @@ She discusses what she found with her friend Grace and decides that the next ste Unfortunately, Barbara finds that there is no generic buffered equivalents to the `AsyncRead` and `AsyncWrite` her first version was based on. For a buffered `AsyncRead`, she finds an inconsistent ecosystem: there's a `AsyncBufRead` defined in the `futures` crate but only some runtimes implement it, and `tokio` has a completely different `AsyncBufRead` trait. Barbara decides to use the `AsyncBufRead` from `futures` and provide compatibility mechanisms for users of `tokio` which will allow them to the completely different buffered read primitive in `tokio` to her library. -But, it's even worse for a buffered `AsyncWrite`: with buffered read done, Barbara moves to buffered write and finds out, to her chagrin, that there is no single buffered async writer. Every runtime provides there own, inconsistent, types. And there are no traits for abstraction. Barbara is exhausted; with no provided abstractions for this primitive Barbara will have to write her own abstractions that can unify across all the runtimes. There are so many hurdles to overcome in order to do this, such as the orphan rule, that Barbara feels there is no reasonable path forward [Link Agnostic Runtime story again]. +But, it's even worse for a buffered `AsyncWrite`: with buffered read done, Barbara moves to buffered write and finds out, to her chagrin, that there is no single buffered async writer. Every runtime provides there own, inconsistent, types. And there are no traits for abstraction. Barbara is exhausted; with no provided abstractions for this primitive Barbara will have to write her own abstractions that can unify across all the runtimes. There are so many hurdles to overcome in order to do this, such as the orphan rule, that Barbara feels there is no reasonable path forward. ## 🤔 Frequently Asked Questions From 995ac32cf093b6a195ffa5fb007c81170916f642 Mon Sep 17 00:00:00 2001 From: Ivan Tham Date: Sun, 9 May 2021 23:54:41 +0800 Subject: [PATCH 198/347] Update status quo title barbara tries unix socket Co-authored-by: Andrew Chin --- src/vision/status_quo/barbara_tries_unix_socket.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/barbara_tries_unix_socket.md b/src/vision/status_quo/barbara_tries_unix_socket.md index cd1a9f3a..3332e1f7 100644 --- a/src/vision/status_quo/barbara_tries_unix_socket.md +++ b/src/vision/status_quo/barbara_tries_unix_socket.md @@ -1,4 +1,4 @@ -# 😱 Status quo stories: Template +# 😱 Status quo stories: Barbara tries Unix socket *This is a template for adding new "status quo" stories. To propose a new status quo PR, do the following:* From c6aed66e0ffa9712ceb252dd49a914efa7840d58 Mon Sep 17 00:00:00 2001 From: Ivan Tham Date: Mon, 10 May 2021 00:11:14 +0800 Subject: [PATCH 199/347] Barbara tries unix socket update vision --- .../status_quo/barbara_tries_unix_socket.md | 51 ++++++++++++------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/src/vision/status_quo/barbara_tries_unix_socket.md b/src/vision/status_quo/barbara_tries_unix_socket.md index 3332e1f7..04e86e49 100644 --- a/src/vision/status_quo/barbara_tries_unix_socket.md +++ b/src/vision/status_quo/barbara_tries_unix_socket.md @@ -1,22 +1,5 @@ # 😱 Status quo stories: Barbara tries Unix socket -*This is a template for adding new "status quo" stories. To propose a new status quo PR, do the following:* - -* *Create a new file in the [`status_quo`] directory named something like `Alan_tries_to_foo.md` or `Grace_does_bar.md`, and start from [the raw source from this template]. You can replace all the italicized stuff. :)* -* *Do not add a link to your story to the [`SUMMARY.md`] file; we'll do it after merging, otherwise there will be too many conflicts.* - -*For more detailed instructions, see the [How To Vision: Status Quo] page!* - -*If you're looking for ideas of what to write about, take a look at the [open issues]. You can also [open an issue of your own] to throw out an idea for others.* - -[How To Vision: Status Quo]: ../how_to_vision/status_quo.md -[the raw source from this template]: https://raw.githubusercontent.com/rust-lang/wg-async-foundations/master/src/vision/status_quo/template.md -[`status_quo`]: https://github.com/rust-lang/wg-async-foundations/tree/master/src/vision/status_quo -[`SUMMARY.md`]: https://github.com/rust-lang/wg-async-foundations/blob/master/src/SUMMARY.md -[open issues]: https://github.com/rust-lang/wg-async-foundations/issues?q=is%3Aopen+is%3Aissue+label%3Astatus-quo-story-ideas -[open an issue of your own]: https://github.com/rust-lang/wg-async-foundations/issues/new?assignees=&labels=good+first+issue%2C+help+wanted%2C+status-quo-story-ideas&template=-status-quo--story-issue.md&title= - - ## 🚧 Warning: Draft status 🚧 This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. @@ -27,6 +10,9 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee Content of `Cargo.toml` for reproducibility: +
    + Cargo.toml + ```toml futures = "0.3.14" hyper = { version = "0.14.7", features = ["full"] } @@ -34,9 +20,13 @@ pretty_env_logger = "0.4.0" reqwest = "0.11.3" tokio = { version = "1.5.0", features = ["macros", "rt-multi-thread"] } ``` +
    There is a HTTP server in hyper which Barbara have to query. +
    + Server code + ```rust use hyper::server::conn::Http; use hyper::service::service_fn; @@ -66,8 +56,8 @@ async fn serve(_req: Request) -> Result, Infallible> { .unwrap(); Ok(res) } - ``` +
    ## Nice simple query with high-level reqwest @@ -92,6 +82,29 @@ Barbara search through reqwest doc and github issues to see how to use unix sock ## The screen stares at Barbara +```rust +use hyper::{body::HttpBody, client::conn, Body, Request}; +use tokio::net::UnixStream; + +#[tokio::main] +async fn main() -> Result<(), Box> { + pretty_env_logger::init(); + let stream = UnixStream::connect("/tmp/socket").await?; + + let (mut request_sender, connection) = conn::handshake(stream).await?; + + let request = Request::get("/").body(Body::empty())?; + let mut response = request_sender.send_request(request).await?; + println!("{:?}", response.body_mut().data().await); + + let request = Request::get("/").body(Body::empty())?; + let mut response = request_sender.send_request(request).await?; + println!("{:?}", response.body_mut().data().await); + + Ok(()) +} +``` + Barbara wrote some code according to the comments Barbara saw and read some docs like what is `handshake` to roughly know what it does. Barbara compile and it shows a warning, the `connection` variable is not used: ``` warning: unused variable: `connection` @@ -113,6 +126,8 @@ Barbara try adding `println!` all over the code but it was still stuck, so Barba Barbara added the missing piece to `.await` for the `connection`, all the while Barbara thought it will work if it was `.await`-ed but in this case having required to await something else to work is a surprise. ```rust + let (mut request_sender, connection) = conn::handshake(stream).await?; + tokio::spawn(async move { if let Err(e) = connection.await { eprintln!("error: {}", e); From c30b87b09fdd58e5b963d3dd2099da4b0a1cc6b9 Mon Sep 17 00:00:00 2001 From: Christopher Bunn Date: Sun, 9 May 2021 17:37:57 -0700 Subject: [PATCH 200/347] status quo: Alan tries processing some files --- .../alan_tries_processing_some_files.md | 279 ++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100644 src/vision/status_quo/alan_tries_processing_some_files.md diff --git a/src/vision/status_quo/alan_tries_processing_some_files.md b/src/vision/status_quo/alan_tries_processing_some_files.md new file mode 100644 index 00000000..e742c065 --- /dev/null +++ b/src/vision/status_quo/alan_tries_processing_some_files.md @@ -0,0 +1,279 @@ +# 😱 Status quo stories: Alan tries processing some files + +## 🚧 Warning: Draft status 🚧 + +This is a draft "status quo" story submitted as part of the brainstorming period. It is derived from real-life experiences of actual Rust users and is meant to reflect some of the challenges that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the FAQ, feel free to open a PR making edits (but keep in mind that, as they reflect peoples' experiences, status quo stories [cannot be wrong], only inaccurate). Alternatively, you may wish to [add your own status quo story][htvsq]! + +## The story + +Alan is new to Rust. He wants to build a program that recurses over all the files in a directory (and its subdirectories), reads each file, and produces some fingerprint of the file. + +Since so much blocking I/O is involved, he chooses async in order to process many files concurrently. + +### Recursion +Alan starts by writing a recursive function that can call some operation on each regular file in a directory and recurse on each subdirectory. +```rust +async fn process_directory<'a, F, P, T>(path: PathBuf, processor: &'a P) -> Vec +where + P: Fn(DirEntry) -> F, + F: Future, +{ + ReadDirStream::new(read_dir(path).await.unwrap()) + .filter_map(|x| async { + let dir_entry = x.unwrap(); + let ft = dir_entry.file_type().await.unwrap(); + if ft.is_file() { + Some(vec![processor(dir_entry)]) + } else if ft.is_dir() { + Some(process_directory(dir_entry.path(), processor).await) + } else { + None + } + }) + .collect::>>() + .await + .into_iter() + .flatten() + .collect() +} +``` + +The first paper cut comes when the compiler complains: +``` +error[E0733]: recursion in an `async fn` requires boxing + --> src/main.rs:23:77 + | +23 | async fn process_directory<'a, F, P, T>(path: PathBuf, processor: &'a P) -> Vec + | ^^^^^^ recursive `async fn` + | + = note: a recursive `async fn` must be rewritten to return a boxed `dyn Future` + +... +For more information about an error, try `rustc --explain E0733`. +``` + +From the explainer, Alan learns that he cannot use the `async` sugaring, and needs to use a Boxed Pin in his function signature: +``` +fn process_directory<'a, F, P, T>( + path: PathBuf, + processor: &'static P, +) -> Pin>>> +``` + +New to Rust, Alan still doesn't really understand what `Pin` does, so he reads [the docs](https://doc.rust-lang.org/std/pin/index.html), sees that it marks which objects are *"guaranteed not to move"*, and wonders why the compiler couldn't determine this automatically since he read so much about how the borrow checker can already detect _moves_ versus borrows. + +He's also not entirely sure why the returned `Future` needs to be `Boxed`. The suggested explainer helps a bit: +``` +The `Box<...>` ensures that the result is of known size, and the pin is +required to keep it in the same place in memory. +``` +But Alan figures that the size of `Future` should be determined by the type `T`. It's not like he's implementing a custom struct that is `Future`; he's returning a `Vec` inside the standard `async move {}`. Alan wishes there was a way to express "*Hey I'm returning a Future created by `async move`, whose `Output` attribute has a known size, so the resulting Future should have a known size too!*" + +But Alan does what the compiler tells him to do and adds some extra stuff to his function, which now looks like: + +```rust +fn process_directory<'a, F, P, T>( + path: PathBuf, + processor: &'static P, +) -> Pin> + 'a>> +where + P: Fn(DirEntry) -> F, + F: Future, +{ + Box::pin(async move { + ReadDirStream::new(read_dir(path).await.unwrap()) + .filter_map(|x| async { + let dir_entry = x.unwrap(); + let ft = dir_entry.file_type().await.unwrap(); + if ft.is_file() { + Some(vec![processor(dir_entry)]) + } else if ft.is_dir() { + Some(process_directory(dir_entry.path(), processor).await) + } else { + None + } + }) + .collect::>>() + .await + .into_iter() + .flatten() + .collect() + }) +} +``` + +### Rate Limiting +Alan knows that `process_directory` may be called on directories with many thousands of files or subdirectories, and is wary of exhausting file descriptor limits. Since he can't find much documentation about how to keep the number of async tasks in check - Tokio's docs suggest we can [spawn millions of tasks](https://tokio.rs/tokio/tutorial/spawning), but don't offer advice on how to manage tasks with expensive side effects - he decides he needs to build a simple rate limiter. + +Alan's rate limiter will wrap some `Future`, acquire a semaphore, and then await the Future, returning the same type `T`: +```rust +async fn rate_limit(fut: F, sem: &Semaphore) -> T +where + F: Future, +{ + let _permit = sem.acquire().await; + fut.await +} +``` + +Since the `async fn foo() -> T` syntax desugars to `fn foo() -> Future`, and since `fut.await` returns `T`, Alan assumes that the above is equivalent to: +```rust +fn rate_limit(fut: F, sem: &Semaphore) -> F +where + F: Future, +{ + ... +} +``` + +So he plugs this new `rate_limit` logic into `process_directory`: + +```rust +use futures::future::join_all; +use futures::stream::StreamExt; +use futures::Future; +use std::path::PathBuf; +use std::pin::Pin; +use tokio::fs::{read_dir, DirEntry}; +use tokio::sync::Semaphore; +use tokio_stream::wrappers::ReadDirStream; + +async fn rate_limit(fut: F, sem: &Semaphore) -> T +where + F: Future, +{ + let _permit = sem.acquire().await; + fut.await +} + +fn process_directory<'a, F, P, T>( + path: PathBuf, + processor: &'a P, + sem: &'static Semaphore, +) -> Pin> + 'a>> +where + P: Fn(DirEntry) -> F, + F: Future, +{ + Box::pin(async move { + ReadDirStream::new(read_dir(path).await.unwrap()) + .filter_map(|x| async { + let dir_entry = x.unwrap(); + let ft = dir_entry.file_type().await.unwrap(); + if ft.is_file() { + Some(vec![rate_limit(processor(dir_entry), sem)]) + } else if ft.is_dir() { + Some(process_directory(dir_entry.path(), processor, sem).await) + } else { + None + } + }) + .collect::>>() + .await + .into_iter() + .flatten() + .collect() + }) +} + +async fn expensive(de: DirEntry) -> usize { + // assume this function spawns a task that does heavy I/O on the file + de.file_name().len() +} + +#[tokio::main(flavor = "current_thread")] +async fn main() { + let sem = Semaphore::new(10); + let path = PathBuf::from("/tmp/foo"); + let results = join_all(process_directory(path, &expensive, &sem).await); + dbg!(results.await); +} +``` + +And is met with a new complaint from the compiler: +``` +error[E0308]: `if` and `else` have incompatible types + --> src/main.rs:34:24 + | +18 | fn process_directory<'a, F, P, T>( + | - this type parameter +... +32 | / if ft.is_file() { +33 | | Some(vec![rate_limit(processor(dir_entry), sem)]) + | | ------------------------------------------------- expected because of this +34 | | } else if ft.is_dir() { + | |________________________^ +35 | || Some(process_directory(dir_entry.path(), processor, sem).await) +36 | || } else { +37 | || None +38 | || } + | || ^ + | ||_________________| + | |__________________`if` and `else` have incompatible types + | expected opaque type, found type parameter `F` + | + = note: expected type `Option>` + found enum `Option>` + = help: type parameters must be constrained to match other types + = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters +``` + +Alan is confused. In line 33, `rate_limit` returns `Future`, so why is this an opaque `Future`? So far as he can tell, the `Option` returned on line 33 is the same type as the `Option>` where `F: Future` returned on line 35. + +So he strips the problem down to only a few lines of code, and still he cannot figure out why the compiler complains: +```rust +use futures::{future::pending, Future}; + +async fn passthru(fut: F) -> T +where + F: Future, +{ + fut.await +} + +fn main() { + let func = pending::; + match true { + true => passthru(func()), + false => func(), + }; +} +``` + +To which the compiler nevertheless replies: +``` +error[E0308]: `match` arms have incompatible types + --> src/main.rs:14:18 + | +12 | / match true { +13 | | true => passthru(func()), + | | ---------------- this is found to be of type `impl futures::Future` +14 | | false => func(), + | | ^^^^^^ expected opaque type, found struct `futures::future::Pending` +15 | | }; + | |_____- `match` arms have incompatible types + | + = note: expected type `impl futures::Future` + found struct `futures::future::Pending` +``` + +## 🤔 Frequently Asked Questions + +### **What are the morals of the story?** +- The manual desugaring required for `async` recursion erases some of the "magic" of `async`. +- Some programmers may never implement custom types that are `Future`, instead using standard constructs like `async` blocks to produce them. In these cases, the programmer might assume the returned `Future`s should have concrete types with known sizes, which would allow them to work directly with the returned types rather than have to deal with the complexities of trait objects, `Box`-ing, and opaque type comparisons. +- `Pin` documentation focuses on data that can or cannot "move" in memory. To someone new to Rust, it might be easy to confuse this concept with "move" semantics in the context of ownership. + +### **What are the sources for this story?** +I describe my own experience while working on my first Rust project. + +### **Why did you choose *NAME* to tell this story?** +I chose Alan to tell this story because I envision him comping from Python. I mostly work in `asyncio` Python by day, which means my exposure to async is shaped by what I'd expect from a language without traits, and one where heap wrangling and memory addressing is abstracted away. + +### **How would this story have played out differently for the other characters?** +I'm not sure, but I'd assume: +- **Grace** would not get tripped up on the need for `Box::pin` +- **Niklaus** might share the confusion expressed above +- **Barbara** might wish we could use `async` sugaring in recursive functions. From e6dc346841c09e62ba2aad1ae34ab99140331428 Mon Sep 17 00:00:00 2001 From: Zeeshan Ali Date: Mon, 10 May 2021 15:29:37 +0200 Subject: [PATCH 201/347] SUMMARY: Add "Barbara writes a runtime-agnostic library" status-quo --- src/SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index a60f8c15..27f254f7 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -51,6 +51,7 @@ - [Barbara trims a stacktrace](./vision/status_quo/barbara_trims_a_stacktrace.md) - [Barbara wants async insights](./vision/status_quo/barbara_wants_async_insights.md) - [Barbara wants to use GhostCell-like cell borrowing](./vision/status_quo/barbara_wants_to_use_ghostcell.md) + - [Barbara writes a runtime-agnostic library](./vision/status_quo/barbara_writes_a_runtime_agnostic_lib.md) - [Grace deploys her service and hits obstacles](./vision/status_quo/grace_deploys_her_service.md) - [Grace tries new libraries](./vision/status_quo/grace_tries_new_libraries.md) - [Grace waits for gdb next](./vision/status_quo/grace_waits_for_gdb_next.md) From ca11185a409da3f38114475738dcad3026e46e13 Mon Sep 17 00:00:00 2001 From: Ivan Tham Date: Tue, 11 May 2021 01:39:51 +0800 Subject: [PATCH 202/347] Tweak wording in barbara tries unix socket status quo Co-authored-by: Niko Matsakis --- src/vision/status_quo/barbara_tries_unix_socket.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/vision/status_quo/barbara_tries_unix_socket.md b/src/vision/status_quo/barbara_tries_unix_socket.md index 04e86e49..ab5fda7f 100644 --- a/src/vision/status_quo/barbara_tries_unix_socket.md +++ b/src/vision/status_quo/barbara_tries_unix_socket.md @@ -116,14 +116,14 @@ warning: unused variable: `connection` = note: `#[warn(unused_variables)]` on by default ``` -Barbara then runs the program. Barbara was stares at the screen and the screen stares at her. Barbara waited and ... it was stuck. So Barbara decides to look at the logs and run it again with `env RUST_LOG=trace cargo r`, and it was indeed stuck, but not sure where. +Barbara then runs the program. Barbara stares at the screen and the screen stares at her. Barbara waited and ... it was stuck. So Barbara decides to look at the logs and run it again with `env RUST_LOG=trace cargo r`, and it was indeed stuck, but not sure where. ``` TRACE mio::poll > registering event source with poller: token=Token(0), interests=READABLE | WRITABLE ``` Barbara try adding `println!` all over the code but it was still stuck, so Barbara try asking for help. Thanks to the welcoming Rust community, Barbara got help quickly in this case. It seemed like Barbara missed the `connection` which is a culprit and it was in the parent module of the docs Barbara read. -Barbara added the missing piece to `.await` for the `connection`, all the while Barbara thought it will work if it was `.await`-ed but in this case having required to await something else to work is a surprise. +Barbara added the missing piece to `.await` for the `connection`, all the while Barbara thought it will work if it was `.await`-ed but in this case having required to await something else to work is a surprise. Someone suggests to Barbara that she follow the example in the docs to insert a `tokio::spawn`, so she winds up with: ```rust let (mut request_sender, connection) = conn::handshake(stream).await?; @@ -301,12 +301,14 @@ Barbara still have no idea why it needs to be done this way. But at least it wor ## 🤔 Frequently Asked Questions -*Here are some standard FAQ to get you started. Feel free to add more!* - ### **What are the morals of the story?** Barbara is not able to see the problem right away. Usually missing an `await` is an issue but in this case, not awaiting on another variable or not polling for ready when using a low-level library may the program incorrect, it is also hard to debug and figure out what is the correct solution. +In a way, some of the fixes "feels like magic". Sometimes polling is required to be done but where? It may make people afraid of using `async/.await` and end up writing safety net code (for example, writing code to do type checking in weakly typed languages in every lines of code to be safe). + +Having these pitfalls in mind, one can easily relate it back to unsafe. If there are unsafe blocks, the user needs to manually audit every specific code block for undefined behaviors. But in the case of async, the situation is someone similar such that the user need to audit the whole async code blocks (which is a lot compared to unsafe) for "undefined behaviors", rather than having when it compiles it works sort of behavior. + ### **What are the sources for this story?** pickfire was experimenting with HTTP client over unix socket and faced this issue as he though it is easy, still a lot thanks to Programatik for helping out with a quick and helpful response. From a90a941529e411e6b0099bfb10f2ffbf3e49ed71 Mon Sep 17 00:00:00 2001 From: Christopher Bunn Date: Mon, 10 May 2021 20:30:55 -0700 Subject: [PATCH 203/347] Update src/vision/status_quo/alan_tries_processing_some_files.md Co-authored-by: Niko Matsakis --- src/vision/status_quo/alan_tries_processing_some_files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/status_quo/alan_tries_processing_some_files.md b/src/vision/status_quo/alan_tries_processing_some_files.md index e742c065..c138ad00 100644 --- a/src/vision/status_quo/alan_tries_processing_some_files.md +++ b/src/vision/status_quo/alan_tries_processing_some_files.md @@ -269,7 +269,7 @@ error[E0308]: `match` arms have incompatible types ### **What are the sources for this story?** I describe my own experience while working on my first Rust project. -### **Why did you choose *NAME* to tell this story?** +### **Why did you choose Alan to tell this story?** I chose Alan to tell this story because I envision him comping from Python. I mostly work in `asyncio` Python by day, which means my exposure to async is shaped by what I'd expect from a language without traits, and one where heap wrangling and memory addressing is abstracted away. ### **How would this story have played out differently for the other characters?** From 7ea56bb405bc60b57b20332f0cd30d58fcb74537 Mon Sep 17 00:00:00 2001 From: Christopher Bunn Date: Mon, 10 May 2021 21:32:06 -0700 Subject: [PATCH 204/347] status quo: files - add async story --- .../status_quo/alan_tries_processing_some_files.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/vision/status_quo/alan_tries_processing_some_files.md b/src/vision/status_quo/alan_tries_processing_some_files.md index c138ad00..4dab34b5 100644 --- a/src/vision/status_quo/alan_tries_processing_some_files.md +++ b/src/vision/status_quo/alan_tries_processing_some_files.md @@ -12,6 +12,17 @@ Alan is new to Rust. He wants to build a program that recurses over all the file Since so much blocking I/O is involved, he chooses async in order to process many files concurrently. +### Async +Alan does some research into `async` Rust. New to the language, he's heard that `async` support has recently landed, so he starts by reading [the release notes](https://blog.rust-lang.org/2019/11/07/Rust-1.39.0.html) and much of the [Async Book](https://rust-lang.github.io/async-book/01_getting_started/01_chapter.html), bookmarking the dense parts about Pinning as something he'll come back to when it makes more sense. Notably, he skips over the [Recursion Workaround](https://rust-lang.github.io/async-book/07_workarounds/04_recursion.html) and other workaround bits. + +As someone who hasn't followed the evolution of `async` Rust closely, the [Ecosystem](https://rust-lang.github.io/async-book/08_ecosystem/00_chapter.html) page of the Async Book provides a critical bit of context that he wishes he'd found first. Coming from Python and Go, where `asyncio` and goroutines are fully supported by the core language, Alan had been unclear exactly what _was_ and what _wasn't_ included in the language. This page puts everything into place. + +The [Popular Runtimes](https://rust-lang.github.io/async-book/08_ecosystem/00_chapter.html#popular-async-runtimes) section makes it clear that he'll need to choose a third party ecosystem. He chooses Tokio because: +- It's the only ecosystem of those listed that he's already heard about. +- It seems to be widely used based on some web searches. +- It has bite-sized, approachable [tutorial pages](https://tokio.rs/tokio/tutorial) that provide higher-level introduction than the average `rustdoc`. +- It provides rich RPC libraries, like Tonic, which he plans to fiddle with in a future project. + ### Recursion Alan starts by writing a recursive function that can call some operation on each regular file in a directory and recurse on each subdirectory. ```rust From 9f931c6a7304aec2de83e3df76f60cc0a121146b Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Tue, 11 May 2021 16:38:43 -0700 Subject: [PATCH 205/347] Add shiny future story for Alan learning async --- .../alan_learns_async_on_his_own.md | 448 ++++++++++++++++++ 1 file changed, 448 insertions(+) create mode 100644 src/vision/shiny_future/alan_learns_async_on_his_own.md diff --git a/src/vision/shiny_future/alan_learns_async_on_his_own.md b/src/vision/shiny_future/alan_learns_async_on_his_own.md new file mode 100644 index 00000000..84342d00 --- /dev/null +++ b/src/vision/shiny_future/alan_learns_async_on_his_own.md @@ -0,0 +1,448 @@ +# ✨ Shiny future stories: Alan learns async on his own + +## 🚧 Warning: Draft status 🚧 + +This is a draft "shiny future" story submitted as part of the +brainstorming period. It is derived from what actual Rust users wish +async Rust should be, and is meant to deal with some of the challenges +that Async Rust programmers face today. + +If you would like to expand on this story, or adjust the answers to the +FAQ, feel free to open a PR making edits (but keep in mind that, as +peoples needs and desires for async Rust may differ greatly, shiny +future stories [cannot be wrong]. At worst they are only useful for a +small set of people or their problems might be better solved with +alternative solutions). Alternatively, you may wish to [add your own +shiny vision story][htvsq]! + +## The story + +[Alan] is trying to pick up Rust, and wants to build a command-line web +scraper since it's a project he's recently written in Go. The program +takes a URL, and recursively downloads all URLs named in all fetched +pages. + +Alan goes to crates.io and searches for "http client", and finds a +library called `reqwest`. He opens its documentation, and see that the +library has him choose between an "async" and a "blocking" client. +Confused, Alan types in "rust async" in his favorite search engine, and +finds the [Rust async book]. On the very first page there's a summary of +where async is useful and where it's not, as well as some of the +downsides of each approach. Alan sees that for "make a single web +request", async is not generally necessary, whereas for "making many +network requests concurrently" async is recommended. Since Alan expects +his crawler to make many requests, he decides he probably wants +async for this application. + +The async book tells Alan that he should mark his `main` function as +`async fn`, so he does. He then follows the `reqwest` async examples, +and is able to successfully make is crawler download a single web page. +Next, he wants to parse each page to extract additional URLs to fetch. +So, he finds a library that can parse HTML, `quick-xml`. He sets up his +application with a `HashSet` to store all the yet-to-be-parsed URLs, and +then writes a loop that pulls out a URL from the set, issues a HTTP +request, awaits the response bytes, and passes them to `quick-xml`. Alan +first tried to give the `http::Response` directly to +`quick_xml::Reader::from_reader`, but the compiler told him: + +```text +error: This type does not implement `Read`, which is required by `Reader::from_reader`. + + let page = Reader::from_reader(request.await?); + ^^^^^^^^^^^^^^ + + help: The type does implement `AsyncRead`, but the method does not support asynchronous inputs. +suggestion: Use a method that supports asynchronous readers or read the data to a `Vec` first, + and then pass that to `Reader::from_reader` instead (`Vec` implements `Read`). +``` + +Alan has his program iterate over all the links on the fetched page, and +add any URLs he finds to the `HashSet`, before he then goes around the +loop again. He is pretty satisfied -- the program seems to work well. +However, it's fairly slow, as it only fetches one page at a time. Alan +looks in the async book he discovered earlier, and sees a chapter titled +"Doing many things at once". The chapter tells Alan that he has three +options: + + - use _select_ to wait for the first of many futures to complete; + - use _join_ to wait on many futures to all complete; and + - use _spawn_ to run a future in the background. + +Alan figures that his program should keep many requests in flight at the +same time, and then parse each one as it finishes, so he goes for the +select approach. He writes: + +```rust +let mut requests = Select::new(); +requests.insert(client.get(start_url).send()); +while !requests.is_empty() { + let response = requests.await; + // Use quick-xml to extract urls from response. + // For each url: + if seen_urls.insert(url.clone()) { + requests.insert(client.get(url).send()); + } +} +``` + +This works, and Alan is delighted. But it seems to work a bit _too_ well +-- his crawler is so fast that it starts getting rate-limited by the +servers he runs it against. So, Alan decides to make his crawler a bit +less aggressive, and adds a call to `std::thread::sleep` after he parses +each page. He compiles his application again, and sees a new warning +from the compiler: + +```text +warning: blocking call in asynchronous code + + std::thread::sleep(Duration::from_secs(1)); + ^^^^^^^^^^^^^^^^^^ + + help: If the thread is put to sleep, other asynchronous code running + on the same thread does not get to run either. +suggestion: Use the asynchronous std::future::sleep method instead of std::thread::sleep in async code. + reading: See the "Blocking in async code" chapter in the Rust async book for more details. +``` + +Alan is happy that the compiler told him about this problem up front, +rather than his downloads being held up during the entire sleep period! +He does as the compiler instructs, and replaces `thread::sleep` with its +asynchronous alternative and an `await`. He then runs his code again, +and the warning is gone, and everything seems to work correctly. + +While looking at his code in his editor, however, Alan notices a little +yellow squiggly line next to his `while` loop. Hovering over it, he sees +a warning from a tool called "Clippy", that says: + +```text +warning: + + while !requests.is_empty() { + ^^^^^^^^^^^^^^^^^^^^^^^^^^ this loop + + let response = requests.await; + ^^^^^^^^^^^^^^ awaits one future from a `Select` + + + std::future::sleep(Duration::from_secs(1)).await; + ^^^^^^^^^^^^^^^^^^ and then pauses, which prevents progress on the `Select` + + + help: Futures do nothing when they're not being awaited, + so while the task is asleep, the `Select` cannot make progress. +suggestion: Consider spawning the futures in the `Select` so they can run in the background. + reading: See the "Doing many things at once" chapter in the Rust async book for more details. +``` + +Alan first searches for "rust clippy" on his search engine of choice, +and learns that it is a linter for Rust that checks for common mistakes +and cases where code can be more idiomatic. He makes a mental note to +always run Clippy from now on. + +Alan recognizes the recommended chapter title from before, and sure +enough, when he looks back on the page that made him choose select, he +sees a box explaining that, as the warning suggests, a `Select` only +makes progress on the asynchronous tasks it contains when it is being +awaited. The same box also suggests to _spawn_ the tasks before placing +them in the `Select` to have them continue to run even after the +`Select` has yielded an item. + +So, Alan modifies his code to spawn each request: + +```rust +// For each url: +if seen_urls.insert(url.clone()) { + requests.insert(std::future::spawn(async { + client.get(url).send().await + })); +} +``` + +But now his code doesn't compile any more: + +```text +error: borrow of `client` does not live long enough: + + let client = request::Client::new(); + ^^^^^^ client is created here + + requests.insert(std::future::spawn(async { + ^^^^^^^^^^^^^^^^^^ spawn requires F: 'static + + client.get(url).send().await + ^^^^^^ this borrow of client makes the `async` block have lifetime 'a + + } + ^ the lifetime 'a ends here when `client` is dropped. + + help: An async block that needs access to local variables cannot be spawned, + since spawned tasks may run past the end of the current function. +suggestion: Consider using `async move` to move `client` if it isn't needed elsewhere, + or keep `client` around forever by using `Arc` for reference-counting, + and then `clone` it before passing it into each call to `spawn`. + reading: See the "Spawning and 'static" chapter in the Rust async book for more details. +``` + +> Author note: the recommendation `Arc` above should be inferred from +> the `Send` bound on `spawn`. If such a bound isn't present, we should +> recommend `Rc` instead. Ideally we would also tailor the suggestion to +> whether changing `async` to `async move` would _actually_ make the +> code compile. + +Alan is amazed at how comprehensive the compiler errors are, and is glad +to see a reference to the async book, which he now realizes he should +probably just make time to read start-to-finish, as it covers everything +he's running into. Alan first tries to change `async` to `async move` as +the compiler suggests, but the compiler then tells him that `client` may +be used again in the next iteration of the loop, which makes Alan +facepalm. Instead, he does as the compiler tells him, and puts the +`client` in an `Arc` and `clone`s that `Arc` for each `spawn`. + +At this point, the code looks a little messy, so Alan decides to open +the referenced chapter in the async book as well. It suggests that +while the pattern he's used is a good fallback, it's often possible to +_construct_ the future outside the spawn, and then `await` it inside the +spawn. Alan gives that a try by removing the `Arc` again and writing: + +```rust +let fut = client.get(url).send(); +requests.insert(std::future::spawn(async move { + fut.await +})); +``` + +> Author note: how would the compiler tell Alan about this +> transformation rather than him having to discover it in the book? + +This works, and Alan is happy! Doubly-so when he notices the yellow +Clippy squiggles telling him that the `async move { fut.await }` can be +simplified to just `fut`. + +Alan runs his crawler again, and this time it doesn't run afoul of any +rate limiting. However, Alan notices that it's still just parsing one +page's HTML at a time, and wonders if he can parallelize that part too. +He figures that since each spawned future runs in the background, he can +just do the XML parsing in there too! So, he refactors the code for +going from a URL to a list of URLs into its own `async fn urls`, and +then writes: + +```rust +async fn urls(client: &Client, url: Url) -> Vec { /* .. */ } + +let mut requests = Select::new(); +requests.insert(spawn(urls(&client, start_url))); +while !requests.is_empty() { + let urls = requests.await; + for url in urls { + if seen_urls.insert(url.clone()) { + requests.insert(spawn(urls(&client, url))); + } + } + sleep(Duration::from_secs(1)).await; +} +``` + +However, to Alan's surprise, this no longer compiles, and is back to the +old `'static` error: + +```text +error: borrow of `client` does not live long enough: + + let client = request::Client::new(); + ^^^^^^ client is created here + + requests.insert(spawn(urls(&client, start_url))); + ^^^^^ spawn requires F: 'static + + requests.insert(spawn(urls(&client, start_url))); + ^^^^^^^ but the provided argument is tied to the lifetime of this borrow + + } + ^ which ends here when `client` is dropped. + + help: When you call an `async fn`, it does nothing until it is first awaited. + For that reason, the `Future` that it returns borrows all of the `async fn`'s arguments. +suggestion: If possible, write the `async fn` (`urls`) as a regular `fn() -> impl Future` that + first uses any arguments that aren't needed after the first `await`, and then + returns an `async move {}` with the remainder of the function body. + + Otherwise, consider making the arguments reference-counted with `Arc` so that the async + function's return value does not borrow anything from its caller. + reading: See the "Spawning and 'static" chapter in the Rust async book for more details. +``` + +With the compiler's helpful explanation, Alan realizes that this is +another instance of the same problem he had earlier, and changes his +`async fn` to: + +```rust +fn urls(client: &Client, url: Url) -> impl Future> { + let fut = client.get(url).send(); + async move { + let response = fut.await; + // Use quick-xml to extract URLs to return. + } +} +``` + +At which point the code once again compiles, and runs faster than ever +before! However, when Alan runs his crawler against a website with +particularly large pages, he notices a new warning in his terminal when +the crawler is running: + +```text +******************** [ Scheduling Delay Detected ] ********************* +The asynchronous runtime has detected that asynchronous tasks are +occasionally prevented from running due to a long-running synchronous +operation holding up the executing thread. + +In particular, the task defined at src/lib.rs:88 can make progress, but +the executor thread that would run it hasn't executed a new asynchronous +task in a while. It was last seen executing at src/lib.rs:96. + +This warning suggests that your program is running a long-running or +blocking operation somewhere inside of an `async fn`, which prevents +that thread from making progress on concurrent asynchronous tasks. In +the worst instance, this can lead to deadlocks if the blocking code +blocks waiting on some asynchronous task that itself cannot make +progress until the thread continues running asynchronous tasks. + +You can find more details about this error in the "Blocking in async +code" chapter of the Rust async book. + +This warning is only displayed in debug mode. +************************************************************************ +``` + +Looking at the indicated lines, Alan sees that line 88 is: + +```rust +requests.insert(spawn(urls(&client, url))); +``` + +And line 96 is the `loop` around: + +```rust +match html_reader.read_event(&mut buf) { + // ... +} +``` + +Alan thinks he understands what the warning is trying to tell him, but +he's not quite sure what he should do to fix it. So he goes to the +indicated chapter in the async book, which says: + +> If you have to run a long-running synchronous operation, or issue a +> blocking system call, you risk holding up the execution of +> asynchronous tasks that the current thread is responsible for +> managing until the long-running operation completes. You have many +> options for mitigating the impact of such synchronous code, each with +> its own set of trade-offs. + +It then suggests: + + - Try to make the synchronous code asynchronous if possible. This could + even just consist of inserting occasional voluntary scheduling points + into long-running loops using `std::future::yield().await` to allow + the thread to continue to make progress on asynchronous tasks. + - Run the synchronous code in a dedicated thread using + `spawn_blocking` and simply `await` the resulting `JoinHandle` in the + asynchronous code. + - Inform the runtime that the current thread (with `block_in_place`) + that it should give away all of its background tasks to other runtime + threads (if applicable), and only then execute the synchronous code. + +The document goes into more detail about the implications of each +choice, but Alan likes the first option the best for this use-case, and +augments his HTML reading loop to occasionally call +`std::future::yield().await`. The runtime warning goes away. + +[Rust async book]: https://rust-lang.github.io/async-book/ + +## 🤔 Frequently Asked Questions + +### What status quo stories are you retelling? + + - [Alan tries to debug a hang](../status_quo/alan_tries_to_debug_a_hang.html) + - [Barbara anguishes over HTTP](../status_quo/barbara_anguishes_over_http.html) + - [Barbara bridges sync and async in perf.rust-lang.org](../status_quo/barbara_bridges_sync_and_async.html) + - [Barbara compares some C++ code](../status_quo/barbara_compares_some_cpp_code.html) + - [Barbara makes their first foray into async](../status_quo/barbara_makes_their_first_steps_into_async.html) + - [Niklaus wants to share knowledge](../status_quo/niklaus_wants_to_share_knowledge.html) + +### What are the key attributes of this shiny future? + + - Not every use-case requires async, and users should be told early on + that that's the case, and enough to make the decision themselves! + - Compiler errors and warnings should recognize _specific_ common + mistakes and recommend good general patterns for solutions. + - Warnings and errors should refer users to more comprehensive + documentation for in-depth explanations and best practices. + - A shared terminology (`AsyncRead`) and standard locations for key + primitives (`sleep`, `spawn`, `Select`) is needed to be able to + provide truly helpful, actionable error messages. + - Async Rust has some very particular problem patterns which are + important to handle correctly. Misleading error messages like "add + `'static` to your `&mut`" or "add `move`" can really throw developers + for a loop by sending them down the wrong rabbit hole. + - Detecting known cases of blocking (even if imperfect) could help + users significantly in avoiding foot-guns. Some cases are: + using `std::thread::sleep`, loops without `.await` in them (or where + all the `.await`s are on `poll_fn` futures), calling methods that + transitively call `block_on`. + +### What is the "most shiny" about this future? + +The ability to detect issues that _would_ be performance problems at +runtime at compile-time. + +### What are some of the potential pitfalls about this future? + +Detecting blocking is tricky, and likely subject to both false-positives +and false-negatives. Users _hate_ false-positive warnings, so we'll have +to be careful about when we give warnings based on what _might_ happen +at runtime. + +### Did anything surprise you when writing this story? Did the story go any place unexpected? + +I wasn't expecting it to end up this long and detailed! + +I also wasn't expecting to have to get into the fact that `async fn`s +capture their arguments, but got their very quickly by just walking +through what I imagine Alan's thought process and development would be +like. + +### What are some variations of this story that you considered, or that you think might be fun to write? Have any variations of this story already been written? + + - How does Alan realize the difference between `Select` (really + `FuturesUnordered`) and `select!` (where the branches are known + statically)? + - Another common pain-point is forgetting to pin futures when using + constructs like `select!`. Can the compiler detect this and suggest + `std::task::pin!` (and can we have that in `std` please)? + - Tools that allow the user to introspect the program state at runtime + and detect things like blocking that way are great, but don't help + newcomers too much. They won't know about the tools, or what to look + for. + - How can we detect and warn about async code that transitively ends up + calling `block_on`? + - This story didn't get into taking a `Mutex` and holding it across an + `.await`, and the associated problems. Nor how a user finds other, + better design patterns to deal with that situation. + - A story where Alan uses the docs to decide he _shouldn't_ use async + would be nice. Including if he then needs to use some library that is + itself `async` -- how does he bridge that gap? And perhaps one where + he then later changes his mind and has to move from sync to async. + - [Barbara plays with async](../status_quo/barbara_plays_with_async.html) + could also use a similar-style "shining future" story. + +### What are some of the things we'll have to figure out to realize this future? What projects besides Rust itself are involved, if any? (Optional) + + - Detecting the async "color" of functions to warn about crossing. + - Detecting long-running code in runtimes. + - Standardizing enough core terminology and mechanisms that the + compiler can both detect specific problems and propose actionable + solutions + +[Alan]: ../characters/alan.md +[htvsq]: ../how_to_vision/shiny_future.md From 667024dfa83b4a30d2380a813c8ff85cbe9a83ca Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Thu, 13 May 2021 09:15:10 -0400 Subject: [PATCH 206/347] Rewrote to put this story in teh future after the features have been added. --- .../shiny_future/barbara_wants_async_rw.md | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/vision/shiny_future/barbara_wants_async_rw.md b/src/vision/shiny_future/barbara_wants_async_rw.md index b64b66f2..4e3ec55c 100644 --- a/src/vision/shiny_future/barbara_wants_async_rw.md +++ b/src/vision/shiny_future/barbara_wants_async_rw.md @@ -10,15 +10,26 @@ If you would like to expand on this story, or adjust the answers to the FAQ, fee Character: Barbara. -Barbara is creating a `sans-io` network protocol library. To make her library as useable as possible, she wants her design to be runtime agnostic: so, she decides that her library will run on generic `AsyncRead`/`AsyncWrite` types. Everything goes as planned and before long she's shipped the first version of her library. - -As she monitors the performance of her library she becomes less and less satisified. She firmly believes that the library is under-performing and she can make it signficantly better. Being a tried and tested Linux developer, Barbara goes right to `strace` to gain information about how her library interacts with the OS. And immediately her suspicions are confirmed: there are a *lot* of read/write syscalls being made. - -She discusses what she found with her friend Grace and decides that the next step is to use buffered IO in order to reduce the total number of syscalls being made. And she is confident that this will greatly improve the performance of her library. - -Unfortunately, Barbara finds that there is no generic buffered equivalents to the `AsyncRead` and `AsyncWrite` her first version was based on. For a buffered `AsyncRead`, she finds an inconsistent ecosystem: there's a `AsyncBufRead` defined in the `futures` crate but only some runtimes implement it, and `tokio` has a completely different `AsyncBufRead` trait. Barbara decides to use the `AsyncBufRead` from `futures` and provide compatibility mechanisms for users of `tokio` which will allow them to the completely different buffered read primitive in `tokio` to her library. - -But, it's even worse for a buffered `AsyncWrite`: with buffered read done, Barbara moves to buffered write and finds out, to her chagrin, that there is no single buffered async writer. Every runtime provides there own, inconsistent, types. And there are no traits for abstraction. Barbara is exhausted; with no provided abstractions for this primitive Barbara will have to write her own abstractions that can unify across all the runtimes. There are so many hurdles to overcome in order to do this, such as the orphan rule, that Barbara feels there is no reasonable path forward. +Barbara is the creator of a `sans-io` library for Rust. She designed her library to +integrate with `async` and her goal was to make it runtime agnostic; so that it could +be as broadly used as possible. Unfortunately, when she first wrote the library `async` +did not have a standard abstraction for Buffered IO. So her first implementation did +not use buffered IO. When she tried to update her library to use buffered IO so as to +improve performance she was confronted with the problem that each runtime had its own +implemenation and abstractions. The result was several unavoidable compromises on her +runtime-agnostic design goals. She was able to achieve her performance improvements +but only with runtime specific implementations; leaving her with a larger more complex +code base. + +But today is a fantastic day for Barbara. The Rust async team has recently released +the latest version of `async` and part of that release was a standard Buffered Async +Read/Write abstraction. Since then, several runtimes have been updated to implement +the new abstraction and Barbara refactored the buffered IO module to use this new +abstraction and she deprecated the runtime specific solutions. Today is the day that +Barbara gets to release her new version of `sans-io` which takes full advantage of the +buffered Async Read/Write abstractions now defined in `async`. The result is a library +that maintains the same performance gains that it had with the runtime specific modules +while greatly reducing the amount of code. ## 🤔 Frequently Asked Questions From c63e41fd44c10255ad591de3a83f406878d757ed Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Thu, 13 May 2021 10:07:11 -0400 Subject: [PATCH 207/347] Rewrote to put this story in the future after the features have been added. --- .../barbara_wants_async_tracing.md | 43 +++++++++++++------ 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/src/vision/shiny_future/barbara_wants_async_tracing.md b/src/vision/shiny_future/barbara_wants_async_tracing.md index 702ac344..3b45ac0c 100644 --- a/src/vision/shiny_future/barbara_wants_async_tracing.md +++ b/src/vision/shiny_future/barbara_wants_async_tracing.md @@ -11,20 +11,35 @@ The problem: When you have a complex network of async tasks it can be difficult to debug issues or investigate behavior because it’s hard to reason through the path of execution just by reading the code. Adding async tracing helps solve this by letting you trace an event through the network and see which async tasks the event executed and when and in what order. Character is Barbara: -This is something an experienced Rust developer will deal with. They know enough to be working with async and be building complex async networks. And they now need tools to help them debug issues that arise in those systems. They probably already build things like this, but providing tracing out of the box would save them time and effort. - -This is Barbara: the experienced Rust developer. - -Story: -Barbara has written a multistage async workflow to solve X - -Barbara is seeing slow performance in one of her services. This service happens to make extensive use of asynchronous workflows and builds a rather complex graph of possible execution paths. Unfortunately, this means that it's hard to intuit what could be causing the slowdown. Perhaps a slow API call or some performance issue in the runtime. What Barbara wants is to be able to see the full path of execution the slow events are taking through her service and be able to see the timing through events. She can add log statements to each task, but how will she be able to link all the log statements to the events which they are associated with? - -To solve this problem, Barbara wants to see what path the slow events are travelling through her service and how much time they spend in each async expression. She decides that the best way to get this information is by having a way to track an event as it moves through her service: from when it first arrives and through every async expression it executes. So, Barbara sets about creating a simple tracing wrapper around the events. This tracing wrapper tags an event with an ID when it first arrives in the service and propagates this ID through every step of execution and through any child events that are created. For this, she tracks a `message id` UUID that gets attached to the start of every asynchronous workflow and which is propagated consistently to any child events that get triggered. With all of her messages now tagged with an ID, she decorates her log events with `message id` of the current event so can now correlate log entries with specific messages. - -Now Barbara is able to run some tests and find a message which demonstrated the performance issue she was investigating and isolate the logs for that message. With this she is able to get the time spent in each subsection of code and compare this to the trace of a message with expected behavior. Now it's obvious that there's one step in the workflow which periodically runs slower than normal and it is the only part of execution path with this issue. Looking at additional traces, Barbara realizes that the issue effects several events all around the same time and is able to deduce that the issue is most likely due to a shared resource performing poorly. - -Barbara is grateful to have found the issue but wishes this tooling and been provided out of the box. Understanding the behavior of a complex async service is difficult: both investigating performance and business logic require a lot of tedious work to reason through the paths an event may travel. Making tracing an essential tool that provides that information immediately. Her dream would be to have a compile time flag, e.g. `cargo build --tracing`, which would instrument her async code with the tracing wrapper and allow her to record tracing data when she runs her application. Even better if there are a set of supplied tools for viewing and analyzing the output data. +Barbara’s team works on a set of services that power the API that powers her company’s website and all the +features their customer’s use. They’ve built the backend for these services in Rust and make heavy use of +`async` to manage IO bound operations and help make concurrency easier to leverage. However, the services +have grown quite a bit and there are a large number of features and data requirements and different internal +systems which they must interact with. The result is a very complex network of `async` expressions that do the +job well and perform great, but, are too complex to easily reason about anymore and can be extraordinarily +intimidating when trying to fix transient small issues. Issues such as infrequent slow requests or a very small number +of requests executing certain actions out of order are very hard to resolve when the network of `async` expressions +is complex. + +Recently, Barbara and her team have been notified about some customers experiencing slow responses on +some features. The lag events are rare but Barbara and her team are determined to fix them. With some work +Barbara is able to recreate the lag reliably in the QA environment; but now she must figure out where in the +complex code base this lag could be coming from and why it’s happening. Fortunately, Rust’s `async` framework +now provides a built in Tracing tool. By building her service with the `tracing` flag on, her code is automatically +instrumented and will start logging trace data to a file for later analysis. + +Barbara runs the instrumented code in QA and recreates the laggy event several times. Then she takes the +generated trace file and looks through the data. She immediately sees where each of the slow requests +actually lagged. Each request experienced a slow down in different async expressions, but each expression +had one thing in common they each queried the same database table. She also noticed that there was a relation +in when the latency occurred: all the laggy requests tended to occur in clusters. From this she was able to identify +that the root cause was some updates made to the database which led to some queries, if they arrived together, +to run relatively slowly. With tracing, Barbara was saved the effort of having to meticulous work through the code +and try to deduce what the cause was and she didn’t have to add in a large amount of logging or other +instrumentation. All the instrumentation and analysis was provided out of the box and required no development +work for Barbara to isolate the cause. + +Barbara can’t believe how much time she saved having this debugging tool provided out of the box. ## 🤔 Frequently Asked Questions From dce2fca139e563432dcef7caf800213d87352233 Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Thu, 13 May 2021 17:24:12 -0400 Subject: [PATCH 208/347] Fixed a punctuation mistake --- src/vision/shiny_future/barbara_wants_async_tracing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vision/shiny_future/barbara_wants_async_tracing.md b/src/vision/shiny_future/barbara_wants_async_tracing.md index 3b45ac0c..aea20c4e 100644 --- a/src/vision/shiny_future/barbara_wants_async_tracing.md +++ b/src/vision/shiny_future/barbara_wants_async_tracing.md @@ -31,7 +31,7 @@ instrumented and will start logging trace data to a file for later analysis. Barbara runs the instrumented code in QA and recreates the laggy event several times. Then she takes the generated trace file and looks through the data. She immediately sees where each of the slow requests actually lagged. Each request experienced a slow down in different async expressions, but each expression -had one thing in common they each queried the same database table. She also noticed that there was a relation +had one thing in common: they each queried the same database table. She also noticed that there was a relation in when the latency occurred: all the laggy requests tended to occur in clusters. From this she was able to identify that the root cause was some updates made to the database which led to some queries, if they arrived together, to run relatively slowly. With tracing, Barbara was saved the effort of having to meticulous work through the code From 8605076bfd447a1e4bd12e0adc77813f5172ccbc Mon Sep 17 00:00:00 2001 From: Erich Gerhard Ess Date: Fri, 14 May 2021 06:39:12 -0400 Subject: [PATCH 209/347] Added more detail for what information is presented by the trace tools --- src/vision/shiny_future/barbara_wants_async_tracing.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vision/shiny_future/barbara_wants_async_tracing.md b/src/vision/shiny_future/barbara_wants_async_tracing.md index aea20c4e..1c332d6f 100644 --- a/src/vision/shiny_future/barbara_wants_async_tracing.md +++ b/src/vision/shiny_future/barbara_wants_async_tracing.md @@ -29,7 +29,12 @@ now provides a built in Tracing tool. By building her service with the `tracing instrumented and will start logging trace data to a file for later analysis. Barbara runs the instrumented code in QA and recreates the laggy event several times. Then she takes the -generated trace file and looks through the data. She immediately sees where each of the slow requests +generated trace file and looks through the data. When she views the trace data with the analysis tools she is given a list +of all the requests from her test, along with a timestamp and duration. She very quickly identifies the slow +requests and chooses to view more detail on one of them. Here she can view a graph of the request's execution: +each async expression is a vertex and edges connect parents to children. Each vertex shows the duration of the +expression and the vertices are arranged vertically by when they started according to the system time. +She immediately sees where each of the slow requests actually lagged. Each request experienced a slow down in different async expressions, but each expression had one thing in common: they each queried the same database table. She also noticed that there was a relation in when the latency occurred: all the laggy requests tended to occur in clusters. From this she was able to identify From 08e5cb6c6a878210dcfff1257d46085032cd0818 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Fri, 14 May 2021 12:12:05 -0400 Subject: [PATCH 210/347] comments from PR --- .../status_quo/aws_engineer/getting_started_with_rust.md | 8 ++++---- .../status_quo/aws_engineer/juggling_error_handling.md | 2 ++ .../missed_waker_leads_to_lost_performance.md | 4 +++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/vision/status_quo/aws_engineer/getting_started_with_rust.md b/src/vision/status_quo/aws_engineer/getting_started_with_rust.md index edcd6178..2999a8b4 100644 --- a/src/vision/status_quo/aws_engineer/getting_started_with_rust.md +++ b/src/vision/status_quo/aws_engineer/getting_started_with_rust.md @@ -1,12 +1,12 @@ # Status quo of an AWS engineer: Getting started with Rust -For his latest project, Alan is working on a new service, [DistriData]. Like many AWS services, they are trying to move on a tight deadline. +For his latest project, Alan is rewriting a core component of [DistriData]. They are trying to move on a tight deadline. -The plan is to implement the new service in Rust. The service that they are rewriting was implemented in Java, but it was having difficulty with high tail latencies and other performance hiccups, and they would like to reduce resource usage by adopting Rust. +The component that they are rewriting was implemented in Java, but it was having difficulty with high tail latencies and other performance hiccups. The team has an idea for a new architecture that will be more efficient, and they would like to reduce resource usage by adopting Rust. -This service is being implemented in Rust. The start is a bit different than what he is used to. There's not much infrastructure. They still define their service interface using the same modeling language, but there is no tooling to generate a server from it. +Getting started with Rust is a bit different than what he is used to. There's not much infrastructure. They still define their service interface using the same modeling language, but there is no tooling to generate a server from it. -[DistriData]: https://rust-lang.github.io/wg-async-foundations/vision/projects/DistriData.html +[DistriData]: ../../projects/DistriData.html ## IDE setup diff --git a/src/vision/status_quo/aws_engineer/juggling_error_handling.md b/src/vision/status_quo/aws_engineer/juggling_error_handling.md index c24270ca..7974b19d 100644 --- a/src/vision/status_quo/aws_engineer/juggling_error_handling.md +++ b/src/vision/status_quo/aws_engineer/juggling_error_handling.md @@ -1,5 +1,7 @@ # Status quo of an AWS engineer: Juggling error handling +[DistriData]: ../../projects/DistriData.html + For example, one day Alan is writing a loop. In this particular part of [DistriData], the data is broken into "shards" and each shard has a number of "chunks". He is connected to various backend storage hosts via HTTP, and he needs to send each chunk out to all of them. He starts by writing some code that uses [`hyper::body::channel`](https://docs.rs/hyper/0.14.7/hyper/body/struct.Body.html#method.channel) to generate a pair of a channel where data can be sent and a resulting HTTP body. He then creates a future for each of those HTTP bodies that will send it to the appropriate host once it is complete. He wants those sends to be executing in the background as the data arrives on the channel, so he creates a [`FuturesUnordered`](https://docs.rs/futures/0.3.14/futures/stream/struct.FuturesOrdered.html) to host them: ```rust diff --git a/src/vision/status_quo/aws_engineer/missed_waker_leads_to_lost_performance.md b/src/vision/status_quo/aws_engineer/missed_waker_leads_to_lost_performance.md index ae827409..bcf6a1f1 100644 --- a/src/vision/status_quo/aws_engineer/missed_waker_leads_to_lost_performance.md +++ b/src/vision/status_quo/aws_engineer/missed_waker_leads_to_lost_performance.md @@ -2,7 +2,9 @@ Once the server is working, Alan starts to benchmark it. He is not really sure what to expect, but he is hoping to see an improvement in performance relative to the baseline service they were using before. To his surprise, it seems to be running slower! -Digging into the problem a bit, he wishes -- not for the first time -- that he had better tools to understand what was happening. This time he doesn't even bother trying to fire up the debugger. He just starts looking at his metrics. He's accumulated a pretty decent set of metrics by now, and he can often get a picture of the state of the runtime from them. +After trying a few common tricks to improve performance without avail, Alan wishes -- not for the first time -- that he had better tools to understand what was happening. He decides instead to add more metrics and logs in his service, to understand where the bottlenecks are. Alan is used to using a well-supported internal tool (or a mature open source project) to collect metrics, where all he needed to do was pull in the library and set up a few configuration parameters. + +However, in Rust, there is no widely-used, battle-tested library inside and outside his company. Even less so in an async code base! So Alan just used what seemed to be the best options: tracing and metrics crate, but he quickly found that they couldn't do a few of the things he wants to do, and somehow invoking the metrics is causing his service to be even slower. Now, Alan has to debug and profile his metrics implementation before he can even fix his service. (Cue another story on how that's difficult...) After a few days of poking at the problem, Alan notices something odd. It seems like there is often a fairly large delay between the completion of a particular event and the execution of the code that is meant to respond to that event. Looking more closely, he realizes that the code for handling that event fails to trigger the `Waker` associated with the future, and hence the future never wakes up. From 3b992b0de862ebf53f4d7eca3b4c0579d5d3632a Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Fri, 14 May 2021 13:02:37 -0400 Subject: [PATCH 211/347] reconcile stories --- docs/404.html | 2 +- docs/acknowledgments.html | 31 +- docs/conversations.html | 2 +- .../2021-02-12-Twitter-Thread.html | 2 +- docs/design_docs.html | 2 +- docs/design_docs/async_closures.html | 2 +- docs/design_docs/async_drop.html | 2 +- docs/design_docs/async_fn_in_traits.html | 2 +- docs/design_docs/async_lifecycle.html | 2 +- docs/design_docs/async_main.html | 2 +- docs/design_docs/async_read_write.html | 2 +- docs/design_docs/channels.html | 2 +- .../design_docs/completion_based_futures.html | 2 +- docs/design_docs/generator_syntax.html | 2 +- docs/design_docs/join.html | 2 +- docs/design_docs/mutex.html | 2 +- docs/design_docs/select.html | 2 +- docs/design_docs/sink_trait.html | 2 +- docs/design_docs/stream.html | 2 +- docs/design_docs/yield_safe.html | 2 +- docs/index.html | 2 +- docs/print.html | 2314 +++++++++++++++-- docs/searchindex.js | 2 +- docs/searchindex.json | 2 +- docs/triage.html | 2 +- docs/vision.html | 2 +- docs/vision/characters.html | 2 +- docs/vision/characters/alan.html | 2 +- docs/vision/characters/barbara.html | 2 +- docs/vision/characters/grace.html | 2 +- docs/vision/characters/niklaus.html | 2 +- docs/vision/how_to_vision.html | 12 +- docs/vision/how_to_vision/awards.html | 2 +- docs/vision/how_to_vision/comment.html | 2 +- docs/vision/how_to_vision/projects.html | 2 +- docs/vision/how_to_vision/shiny_future.html | 2 +- docs/vision/how_to_vision/status_quo.html | 2 +- docs/vision/projects.html | 2 +- docs/vision/projects/DistriData.html | 2 +- docs/vision/projects/MonsterMesh.html | 2 +- docs/vision/projects/SLOW.html | 2 +- docs/vision/projects/TrafficMonitor.html | 2 +- docs/vision/projects/YouBuy.html | 2 +- docs/vision/projects/template.html | 2 +- docs/vision/roadmap.html | 6 +- docs/vision/shiny_future.html | 2 +- .../shiny_future/alan_switches_runtimes.html | 10 +- ...ans_trust_in_the_compiler_is_rewarded.html | 10 +- .../shiny_future/barbara_makes_a_wish.html | 10 +- docs/vision/shiny_future/template.html | 6 +- docs/vision/status_quo.html | 30 +- .../status_quo/alan_builds_a_cache.html | 2 +- .../alan_finds_database_drops_hard.html | 2 +- .../status_quo/alan_has_an_event_loop.html | 2 +- .../alan_hates_writing_a_stream.html | 2 +- .../alan_iteratively_regresses.html | 2 +- .../status_quo/alan_lost_the_world.html | 2 +- .../alan_needs_async_in_traits.html | 2 +- .../status_quo/alan_picks_web_server.html | 2 +- .../alan_runs_into_stack_trouble.html | 2 +- ...ting_the_rust_compiler_but_then_async.html | 2 +- .../alan_thinks_he_needs_async_locks.html | 2 +- .../status_quo/alan_tries_a_socket_sink.html | 3 +- .../alan_tries_to_debug_a_hang.html | 2 +- .../alan_writes_a_web_framework.html | 6 +- .../barbara_anguishes_over_http.html | 10 +- .../barbara_bridges_sync_and_async.html | 8 +- .../barbara_builds_an_async_executor.html | 2 +- ...a_carefully_dismisses_embedded_future.html | 2 +- .../barbara_compares_some_cpp_code.html | 6 +- ...ra_makes_their_first_steps_into_async.html | 6 +- .../barbara_needs_async_helpers.html | 2 +- .../status_quo/barbara_plays_with_async.html | 2 +- .../barbara_tries_async_streams.html | 6 +- .../barbara_trims_a_stacktrace.html | 6 +- .../barbara_wants_async_insights.html | 2 +- .../barbara_wants_to_use_ghostcell.html | 6 +- .../status_quo/grace_deploys_her_service.html | 6 +- .../status_quo/grace_tries_new_libraries.html | 2 +- .../status_quo/grace_waits_for_gdb_next.html | 2 +- .../grace_wants_to_integrate_c_api.html | 6 +- .../niklaus_simulates_hydrodynamics.html | 6 +- .../niklaus_wants_to_share_knowledge.html | 2 +- docs/vision/status_quo/template.html | 2 +- docs/vision/tenets.html | 2 +- docs/welcome.html | 2 +- src/SUMMARY.md | 36 +- .../barbara_wants_async_tracing.md | 1 + 88 files changed, 2272 insertions(+), 399 deletions(-) diff --git a/docs/404.html b/docs/404.html index f2b7f9d2..d01bf120 100644 --- a/docs/404.html +++ b/docs/404.html @@ -97,7 +97,7 @@ diff --git a/docs/acknowledgments.html b/docs/acknowledgments.html index e0b588c3..2b7d0e43 100644 --- a/docs/acknowledgments.html +++ b/docs/acknowledgments.html @@ -95,7 +95,7 @@ @@ -172,7 +172,22 @@

    ❤️ Ackn

    ✍️ Participating in an writing session

    Thanks to everyone who helped writing Stories by participating in one of the Async Rust writing sessions.

    💬 Discussing about stories

    Thanks to everyone who discussed about stories, shiny future and new features.

    @@ -180,7 +195,7 @@

    Ar37-rs

  • broccolihighkicks
  • cortopy
  • -
  • eminence
  • +
  • Darksonn
  • evan-brass
  • farnz
  • FreddieGilbraith
  • @@ -188,23 +203,21 @@

    guswynn
  • jbr
  • jlkiri
  • -
  • jonathandturner
  • -
  • jzrake
  • +
  • jonhoo
  • laurieontech
  • LucioFranco
  • nikomatsakis
  • o0Ignition0o
  • pickfire
  • -
  • pnkfelix
  • -
  • rgreinho
  • rhmoller
  • rylev
  • -
  • sticnarf
  • +
  • seanmonstar
  • Stupremee
  • +
  • taiki-e
  • +
  • tmandry
  • uazu
  • urhein
  • vladinator1000
  • -
  • wesleywiser
  • wraithan
  • y21
  • yoshuawuyts
  • diff --git a/docs/conversations.html b/docs/conversations.html index f617de7e..da1ae7dd 100644 --- a/docs/conversations.html +++ b/docs/conversations.html @@ -95,7 +95,7 @@ diff --git a/docs/conversations/2021-02-12-Twitter-Thread.html b/docs/conversations/2021-02-12-Twitter-Thread.html index 55366c9d..f6869a48 100644 --- a/docs/conversations/2021-02-12-Twitter-Thread.html +++ b/docs/conversations/2021-02-12-Twitter-Thread.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs.html b/docs/design_docs.html index c350907e..fc55c43c 100644 --- a/docs/design_docs.html +++ b/docs/design_docs.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/async_closures.html b/docs/design_docs/async_closures.html index 84342f59..e80255b9 100644 --- a/docs/design_docs/async_closures.html +++ b/docs/design_docs/async_closures.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/async_drop.html b/docs/design_docs/async_drop.html index 11fc14b9..f6116207 100644 --- a/docs/design_docs/async_drop.html +++ b/docs/design_docs/async_drop.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/async_fn_in_traits.html b/docs/design_docs/async_fn_in_traits.html index 9da80552..268bffcd 100644 --- a/docs/design_docs/async_fn_in_traits.html +++ b/docs/design_docs/async_fn_in_traits.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/async_lifecycle.html b/docs/design_docs/async_lifecycle.html index 17dc703e..534fb8ba 100644 --- a/docs/design_docs/async_lifecycle.html +++ b/docs/design_docs/async_lifecycle.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/async_main.html b/docs/design_docs/async_main.html index a908a304..95cd7364 100644 --- a/docs/design_docs/async_main.html +++ b/docs/design_docs/async_main.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/async_read_write.html b/docs/design_docs/async_read_write.html index 72af85de..42ae66e4 100644 --- a/docs/design_docs/async_read_write.html +++ b/docs/design_docs/async_read_write.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/channels.html b/docs/design_docs/channels.html index 62915322..b8d0ec15 100644 --- a/docs/design_docs/channels.html +++ b/docs/design_docs/channels.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/completion_based_futures.html b/docs/design_docs/completion_based_futures.html index 3cc98ae6..115172e9 100644 --- a/docs/design_docs/completion_based_futures.html +++ b/docs/design_docs/completion_based_futures.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/generator_syntax.html b/docs/design_docs/generator_syntax.html index 6bedcc1c..975e198f 100644 --- a/docs/design_docs/generator_syntax.html +++ b/docs/design_docs/generator_syntax.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/join.html b/docs/design_docs/join.html index 4c6d7728..e424e38a 100644 --- a/docs/design_docs/join.html +++ b/docs/design_docs/join.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/mutex.html b/docs/design_docs/mutex.html index d16da2a3..0ef4d87f 100644 --- a/docs/design_docs/mutex.html +++ b/docs/design_docs/mutex.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/select.html b/docs/design_docs/select.html index acb7f437..531d663c 100644 --- a/docs/design_docs/select.html +++ b/docs/design_docs/select.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/sink_trait.html b/docs/design_docs/sink_trait.html index 5b4a9d94..c14c4c80 100644 --- a/docs/design_docs/sink_trait.html +++ b/docs/design_docs/sink_trait.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/stream.html b/docs/design_docs/stream.html index 7233f6d0..e33aa77c 100644 --- a/docs/design_docs/stream.html +++ b/docs/design_docs/stream.html @@ -95,7 +95,7 @@ diff --git a/docs/design_docs/yield_safe.html b/docs/design_docs/yield_safe.html index 6e7d12a2..a174898c 100644 --- a/docs/design_docs/yield_safe.html +++ b/docs/design_docs/yield_safe.html @@ -95,7 +95,7 @@ diff --git a/docs/index.html b/docs/index.html index a9b8745b..769508c5 100644 --- a/docs/index.html +++ b/docs/index.html @@ -95,7 +95,7 @@ diff --git a/docs/print.html b/docs/print.html index 7a3aac35..f025ff29 100644 --- a/docs/print.html +++ b/docs/print.html @@ -97,7 +97,7 @@ @@ -214,17 +214,17 @@

    ❓ How to vision

    How you can help

    - - - - + + + +
    WhenWhat
    Now till 2021-04-30Improve the sample projects
    Now till 2021-04-30Propose new "status quo" stories or comment on existing PRs
    Now till 2021-04-30Propose new "shiny future" stories or comment on existing PRs
    🛑 Starting 2021-04-30Vote for the awards on the status quo and shiny future stories!
    Now till 2021-05-14Improve the sample projects
    Now till 2021-05-14Propose new "status quo" stories or comment on existing PRs
    Now till 2021-05-14Propose new "shiny future" stories or comment on existing PRs
    🛑 Starting 2021-05-14Vote for the awards on the status quo and shiny future stories!

    The big picture

    The process we are using to write the vision doc encourages active collaboration and "positive sum" thinking. It starts with a brainstorming period, during which we aim to collect as many "status quo" and "shiny future" stories as we can.

    This brainstorming period runs for six weeks, until the end of April. For the first two weeks (until 2021-04-02), we are collecting "status quo" stories only. After that, we will accept both "status quo" and "shiny future" stories until the end of the brainstorming period. Finally, to cap off the brainstorming period, we will select winners for awards like "Most Humorous Story" or "Most Supportive Contributor".

    Once the brainstorming period is complete, the working group leads will begin work on assembling the various stories and shiny futures into a coherent draft. This draft will be reviewed by the community and the Rust teams and adjusted based on feedback.

    Brainstorming

    -

    The brainstorming period runs until 2021-04-30:

    +

    The brainstorming period runs until 2021-05-14:

    @@ -809,6 +814,7 @@

    Metanarrative
  • There are often many options for doing things like writing futures or other core concepts; which libraries or patterns are best? @@ -834,6 +840,7 @@

    Metanarrative
  • Sometimes async may not even be the right solution
  • @@ -877,7 +884,7 @@

    Metanarrative

    Why did you choose Alan to tell this story?